constants.py 16 KB
Newer Older
Iustin Pop's avatar
Iustin Pop committed
1
#
Iustin Pop's avatar
Iustin Pop committed
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#

# Copyright (C) 2006, 2007 Google Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.


"""Module holding different constants."""

24
from ganeti import _autoconf
25

Iustin Pop's avatar
Iustin Pop committed
26
# various versions
27
PROTOCOL_VERSION = 20
28
RELEASE_VERSION = _autoconf.PACKAGE_VERSION
Guido Trotter's avatar
Guido Trotter committed
29
30
31
OS_API_V10 = 10
OS_API_V15 = 15
OS_API_VERSIONS = frozenset([OS_API_V10, OS_API_V15])
Iustin Pop's avatar
Iustin Pop committed
32
EXPORT_VERSION = 0
33
RAPI_VERSION = 2
Iustin Pop's avatar
Iustin Pop committed
34

35

36
37
38
39
40
41
42
43
# Format for CONFIG_VERSION:
#   01 03 0123 = 01030123
#   ^^ ^^ ^^^^
#   |  |  + Configuration version/revision
#   |  + Minor version
#   + Major version
#
# It stored as an integer. Make sure not to write an octal number.
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

# BuildVersion and SplitVersion must be in here because we can't import other
# modules. The cfgupgrade tool must be able to read and write version numbers
# and thus requires these functions. To avoid code duplication, they're kept in
# here.

def BuildVersion(major, minor, revision):
  """Calculates int version number from major, minor and revision numbers.

  Returns: int representing version number

  """
  assert isinstance(major, int)
  assert isinstance(minor, int)
  assert isinstance(revision, int)
  return (1000000 * major +
            10000 * minor +
                1 * revision)


def SplitVersion(version):
  """Splits version number stored in an int.

  Returns: tuple; (major, minor, revision)

  """
  assert isinstance(version, int)

  (major, remainder) = divmod(version, 1000000)
  (minor, revision) = divmod(remainder, 10000)

  return (major, minor, revision)


78
79
80
CONFIG_MAJOR = int(_autoconf.VERSION_MAJOR)
CONFIG_MINOR = int(_autoconf.VERSION_MINOR)
CONFIG_REVISION = 0
81
CONFIG_VERSION = BuildVersion(CONFIG_MAJOR, CONFIG_MINOR, CONFIG_REVISION)
Iustin Pop's avatar
Iustin Pop committed
82
83

# file paths
84
DATA_DIR = _autoconf.LOCALSTATEDIR + "/lib/ganeti"
85
RUN_DIR = _autoconf.LOCALSTATEDIR + "/run"
86
RUN_GANETI_DIR = RUN_DIR + "/ganeti"
87
BDEV_CACHE_DIR = RUN_GANETI_DIR + "/bdev-cache"
88
DISK_LINKS_DIR = RUN_GANETI_DIR + "/instance-disks"
89
RUN_DIRS_MODE = 0755
Guido Trotter's avatar
Guido Trotter committed
90
SOCKET_DIR = RUN_GANETI_DIR + "/socket"
Guido Trotter's avatar
Guido Trotter committed
91
SOCKET_DIR_MODE = 0700
92
93
94
# keep RUN_GANETI_DIR first here, to make sure all get created when the node
# daemon is started (this takes care of RUN_DIR being tmpfs)
SUB_RUN_DIRS = [ RUN_GANETI_DIR, BDEV_CACHE_DIR, DISK_LINKS_DIR ]
Iustin Pop's avatar
Iustin Pop committed
95
LOCK_DIR = _autoconf.LOCALSTATEDIR + "/lock"
96
SSCONF_LOCK_FILE = LOCK_DIR + "/ganeti-ssconf.lock"
Iustin Pop's avatar
Iustin Pop committed
97
98
CLUSTER_CONF_FILE = DATA_DIR + "/config.data"
SSL_CERT_FILE = DATA_DIR + "/server.pem"
99
RAPI_CERT_FILE = DATA_DIR + "/rapi.pem"
100
HMAC_CLUSTER_KEY = DATA_DIR + "/hmac.key"
101
WATCHER_STATEFILE = DATA_DIR + "/watcher.data"
102
INSTANCE_UPFILE = RUN_GANETI_DIR + "/instance-status"
Iustin Pop's avatar
Iustin Pop committed
103
SSH_KNOWN_HOSTS_FILE = DATA_DIR + "/known_hosts"
104
RAPI_USERS_FILE = DATA_DIR + "/rapi_users"
105
QUEUE_DIR = DATA_DIR + "/queue"
106
ETC_HOSTS = "/etc/hosts"
107
DEFAULT_FILE_STORAGE_DIR = _autoconf.FILE_STORAGE_DIR
108
SYSCONFDIR = _autoconf.SYSCONFDIR
109

110
MASTER_SOCKET = SOCKET_DIR + "/ganeti-master"
Iustin Pop's avatar
Iustin Pop committed
111

112
NODE_INITD_SCRIPT = _autoconf.SYSCONFDIR + "/init.d/ganeti"
113
114

NODED = "ganeti-noded"
Guido Trotter's avatar
Guido Trotter committed
115
RAPI = "ganeti-rapi"
116
MASTERD = "ganeti-masterd"
117

118
119
MULTITHREADED_DAEMONS = frozenset([MASTERD])

120
121
122
123
124
125
DAEMONS_SSL = {
  # daemon-name: (default-cert-path, default-key-path)
  NODED: (SSL_CERT_FILE, SSL_CERT_FILE),
  RAPI: (RAPI_CERT_FILE, RAPI_CERT_FILE),
}

126
127
128
DAEMONS_PORTS = {
  # daemon-name: ("proto", "default-port")
  NODED: ("tcp", 1811),
Guido Trotter's avatar
Guido Trotter committed
129
  RAPI: ("tcp", 5080),
130
131
}
DEFAULT_NODED_PORT = DAEMONS_PORTS[NODED][1]
Guido Trotter's avatar
Guido Trotter committed
132
DEFAULT_RAPI_PORT = DAEMONS_PORTS[RAPI][1]
133

Iustin Pop's avatar
Iustin Pop committed
134
135
FIRST_DRBD_PORT = 11000
LAST_DRBD_PORT = 14999
136
MASTER_SCRIPT = "ganeti-master"
Iustin Pop's avatar
Iustin Pop committed
137

138
LOG_DIR = _autoconf.LOCALSTATEDIR + "/log/ganeti/"
139
140
141
142
143
144
DAEMONS_LOGFILES = {
 # "daemon-name": "logfile"
 NODED: LOG_DIR + "node-daemon.log",
 RAPI: LOG_DIR + "rapi-daemon.log",
 MASTERD: LOG_DIR + "master-daemon.log",
}
145
146
147
LOG_OS_DIR = LOG_DIR + "os"
LOG_WATCHER = LOG_DIR + "watcher.log"
LOG_COMMANDS = LOG_DIR + "commands.log"
Iustin Pop's avatar
Iustin Pop committed
148
LOG_BURNIN = LOG_DIR + "burnin.log"
Iustin Pop's avatar
Iustin Pop committed
149

150
OS_SEARCH_PATH = _autoconf.OS_SEARCH_PATH
151
EXPORT_DIR = _autoconf.EXPORT_DIR
Iustin Pop's avatar
Iustin Pop committed
152
153
154

EXPORT_CONF_FILE = "config.ini"

155
156
157
XEN_KERNEL = _autoconf.XEN_KERNEL
XEN_INITRD = _autoconf.XEN_INITRD

158
KVM_PATH = _autoconf.KVM_PATH
Guido Trotter's avatar
Guido Trotter committed
159
SOCAT_PATH = _autoconf.SOCAT_PATH
Guido Trotter's avatar
Guido Trotter committed
160
KVM_MIGRATION_PORT = _autoconf.KVM_MIGRATION_PORT
161

162
VALUE_DEFAULT = "default"
163
164
VALUE_AUTO = "auto"
VALUE_GENERATE = "generate"
165
VALUE_NONE = "none"
166
167
VALUE_TRUE = "true"
VALUE_FALSE = "false"
168

Iustin Pop's avatar
Iustin Pop committed
169
# hooks-related constants
170
HOOKS_BASE_DIR = _autoconf.SYSCONFDIR + "/ganeti/hooks"
Iustin Pop's avatar
Iustin Pop committed
171
172
HOOKS_PHASE_PRE = "pre"
HOOKS_PHASE_POST = "post"
173
HOOKS_NAME_CFGUPDATE = "config-update"
174
HOOKS_VERSION = 2
Iustin Pop's avatar
Iustin Pop committed
175
176
177
178
179
180
181
182
183
184

# hooks subject type (what object type does the LU deal with)
HTYPE_CLUSTER = "CLUSTER"
HTYPE_NODE = "NODE"
HTYPE_INSTANCE = "INSTANCE"

HKR_SKIP = 0
HKR_FAIL = 1
HKR_SUCCESS = 2

185
186
187
188
# Storage types
ST_FILE = "file"
ST_LVM_PV = "lvm-pv"
ST_LVM_VG = "lvm-vg"
189
190
191
192
193
194
195
196
197
198
199
200
201
202

# Storage fields
SF_NAME = "name"
SF_SIZE = "size"
SF_FREE = "free"
SF_USED = "used"
SF_ALLOCATABLE = "allocatable"

# Available fields per storage type
VALID_STORAGE_FIELDS = {
  ST_FILE: frozenset([SF_NAME, SF_USED, SF_FREE]),
  ST_LVM_PV: frozenset([SF_NAME, SF_SIZE, SF_USED, SF_FREE, SF_ALLOCATABLE]),
  ST_LVM_VG: frozenset([SF_NAME, SF_SIZE]),
  }
Iustin Pop's avatar
Iustin Pop committed
203

204
205
206
207
MODIFIABLE_STORAGE_FIELDS = {
  ST_LVM_PV: frozenset([SF_ALLOCATABLE]),
  }

Iustin Pop's avatar
Iustin Pop committed
208
209
210
# disk template types
DT_DISKLESS = "diskless"
DT_PLAIN = "plain"
211
DT_DRBD8 = "drbd"
212
DT_FILE = "file"
213
214

# the set of network-mirrored disk templates
215
DTS_NET_MIRROR = frozenset([DT_DRBD8])
Iustin Pop's avatar
Iustin Pop committed
216

217
218
219
# the set of non-lvm-based disk templates
DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE])

220
221
# logical disk types
LD_LV = "lvm"
222
LD_DRBD8 = "drbd8"
223
LD_FILE = "file"
224
LDS_BLOCK = frozenset([LD_LV, LD_DRBD8])
225

Iustin Pop's avatar
Iustin Pop committed
226
227
# drbd constants
DRBD_HMAC_ALG = "md5"
228
DRBD_NET_PROTOCOL = "C"
Iustin Pop's avatar
Iustin Pop committed
229

230
231
232
# file backend driver
FD_LOOP = "loop"
FD_BLKTAP = "blktap"
233
234

# the set of drbd-like disk types
235
LDS_DRBD = frozenset([LD_DRBD8])
236

237
# disk access mode
238
239
DISK_RDONLY = "ro"
DISK_RDWR = "rw"
240
241
DISK_ACCESS_SET = frozenset([DISK_RDONLY, DISK_RDWR])

242
# disk replacement mode
243
244
245
REPLACE_DISK_PRI = "replace_on_primary"    # replace disks on primary
REPLACE_DISK_SEC = "replace_on_secondary"  # replace disks on secondary
REPLACE_DISK_CHG = "replace_new_secondary" # change secondary node
246

247
248
# lock recalculate mode
LOCKS_REPLACE = 'replace'
249
LOCKS_APPEND = 'append'
250

251
# instance creation modes
Iustin Pop's avatar
Iustin Pop committed
252
253
254
255
INSTANCE_CREATE = "create"
INSTANCE_IMPORT = "import"

DISK_TEMPLATES = frozenset([DT_DISKLESS, DT_PLAIN,
256
257
258
                            DT_DRBD8, DT_FILE])

FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP])
Iustin Pop's avatar
Iustin Pop committed
259
260
261
262

# import/export config options
INISECT_EXP = "export"
INISECT_INS = "instance"
263

264
265
266
267
268
# dynamic device modification

DDM_ADD = 'add'
DDM_REMOVE = 'remove'

269
# common exit codes
Iustin Pop's avatar
Iustin Pop committed
270
EXIT_SUCCESS = 0
271
EXIT_FAILURE = 1
272
EXIT_NOTCLUSTER = 5
273
EXIT_NOTMASTER = 11
274
EXIT_NODESETUP_ERROR = 12
Iustin Pop's avatar
Iustin Pop committed
275
EXIT_CONFIRMATION = 13 # need user confirmation
276

277
278
279
280
281
282
283
# tags
TAG_CLUSTER = "cluster"
TAG_NODE = "node"
TAG_INSTANCE = "instance"
MAX_TAG_LEN = 128
MAX_TAGS_PER_OBJ = 4096

284
285
# others
DEFAULT_BRIDGE = "xen-br0"
Iustin Pop's avatar
Iustin Pop committed
286
SYNC_SPEED = 60 * 1024
Iustin Pop's avatar
Iustin Pop committed
287
LOCALHOST_IP_ADDRESS = "127.0.0.1"
288
TCP_PING_TIMEOUT = 10
289
GANETI_RUNAS = "root"
290
DEFAULT_VG = "xenvg"
291
BIND_ADDRESS_GLOBAL = "0.0.0.0"
292
MIN_VG_SIZE = 20480
293
DEFAULT_MAC_PREFIX = "aa:00:00"
294
LVM_STRIPECOUNT = _autoconf.LVM_STRIPECOUNT
295

296
297
298
299
# RPC constants
(RPC_ENCODING_NONE,
 RPC_ENCODING_ZLIB_BASE64) = range(2)

300
301
302
303
304
# os related constants
OS_SCRIPT_CREATE = 'create'
OS_SCRIPT_IMPORT = 'import'
OS_SCRIPT_EXPORT = 'export'
OS_SCRIPT_RENAME = 'rename'
Iustin Pop's avatar
Iustin Pop committed
305
OS_SCRIPTS = frozenset([OS_SCRIPT_CREATE, OS_SCRIPT_IMPORT,
306
                        OS_SCRIPT_EXPORT, OS_SCRIPT_RENAME])
307

308
# ssh constants
309
SSH_INITD_SCRIPT = _autoconf.SSH_INITD_SCRIPT
310
311
312
313
314
SSH_CONFIG_DIR = "/etc/ssh/"
SSH_HOST_DSA_PRIV = SSH_CONFIG_DIR + "ssh_host_dsa_key"
SSH_HOST_DSA_PUB = SSH_HOST_DSA_PRIV + ".pub"
SSH_HOST_RSA_PRIV = SSH_CONFIG_DIR + "ssh_host_rsa_key"
SSH_HOST_RSA_PUB = SSH_HOST_RSA_PRIV + ".pub"
315
316
SSH = "ssh"
SCP = "scp"
317
318
319
320
321

# reboot types
INSTANCE_REBOOT_SOFT = "soft"
INSTANCE_REBOOT_HARD = "hard"
INSTANCE_REBOOT_FULL = "full"
322

323
324
325
326
REBOOT_TYPES = frozenset([INSTANCE_REBOOT_SOFT,
                          INSTANCE_REBOOT_HARD,
                          INSTANCE_REBOOT_FULL])

327
328
329
330
331
332
333
334
335
336
337
VTYPE_STRING = 'string'
VTYPE_BOOL = 'bool'
VTYPE_SIZE = 'size' # size, in MiBs
VTYPE_INT = 'int'
ENFORCEABLE_TYPES = frozenset([
                      VTYPE_STRING,
                      VTYPE_BOOL,
                      VTYPE_SIZE,
                      VTYPE_INT,
                      ])

338
339
340
341
342
343
# HV parameter names (global namespace)
HV_BOOT_ORDER = "boot_order"
HV_CDROM_IMAGE_PATH = "cdrom_image_path"
HV_NIC_TYPE = "nic_type"
HV_DISK_TYPE = "disk_type"
HV_VNC_BIND_ADDRESS = "vnc_bind_address"
344
345
346
HV_VNC_TLS = "vnc_tls"
HV_VNC_X509 = "vnc_x509_path"
HV_VNC_X509_VERIFY = "vnc_x509_verify"
347
348
HV_ACPI = "acpi"
HV_PAE = "pae"
349
HV_KERNEL_ARGS = "kernel_args"
350
351
HV_KERNEL_PATH = "kernel_path"
HV_INITRD_PATH = "initrd_path"
352
HV_ROOT_PATH = "root_path"
353
HV_SERIAL_CONSOLE = "serial_console"
354
HV_USB_MOUSE = "usb_mouse"
355
HV_DEVICE_MODEL = "device_model"
356
HV_INIT_SCRIPT = "init_script"
357

358
359
360
361
362
363
364
365
366
367
368
369
HVS_PARAMETER_TYPES = {
  HV_BOOT_ORDER: VTYPE_STRING,
  HV_CDROM_IMAGE_PATH: VTYPE_STRING,
  HV_NIC_TYPE: VTYPE_STRING,
  HV_DISK_TYPE: VTYPE_STRING,
  HV_VNC_BIND_ADDRESS: VTYPE_STRING,
  HV_VNC_TLS: VTYPE_BOOL,
  HV_VNC_X509: VTYPE_STRING,
  HV_VNC_X509_VERIFY: VTYPE_BOOL,
  HV_ACPI: VTYPE_BOOL,
  HV_PAE: VTYPE_BOOL,
  HV_KERNEL_PATH: VTYPE_STRING,
370
  HV_KERNEL_ARGS: VTYPE_STRING,
371
372
373
374
  HV_INITRD_PATH: VTYPE_STRING,
  HV_ROOT_PATH: VTYPE_STRING,
  HV_SERIAL_CONSOLE: VTYPE_BOOL,
  HV_USB_MOUSE: VTYPE_STRING,
375
  HV_DEVICE_MODEL: VTYPE_STRING,
376
  HV_INIT_SCRIPT: VTYPE_STRING,
377
378
379
  }

HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
380

381
# BE parameter names
Iustin Pop's avatar
Iustin Pop committed
382
BE_MEMORY = "memory"
383
BE_VCPUS = "vcpus"
384
BE_AUTO_BALANCE = "auto_balance"
385

386
387
388
389
390
391
392
BES_PARAMETER_TYPES = {
    BE_MEMORY: VTYPE_SIZE,
    BE_VCPUS: VTYPE_INT,
    BE_AUTO_BALANCE: VTYPE_BOOL,
    }

BES_PARAMETERS = frozenset(BES_PARAMETER_TYPES.keys())
Iustin Pop's avatar
Iustin Pop committed
393

394
395
# Instance Parameters Profile
PP_DEFAULT = "default"
396

Guido Trotter's avatar
Guido Trotter committed
397
398
399
400
401
402
403
404
405
406
407
408
409
410
NIC_MODE = "mode"
NIC_LINK = "link"

NIC_MODE_BRIDGED = "bridged"
NIC_MODE_ROUTED = "routed"

NIC_VALID_MODES = frozenset([NIC_MODE_BRIDGED, NIC_MODE_ROUTED])

NICS_PARAMETER_TYPES = {
    NIC_MODE: VTYPE_STRING,
    NIC_LINK: VTYPE_STRING,
    }

NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys())
411

412
# Hypervisor constants
Iustin Pop's avatar
Iustin Pop committed
413
HT_XEN_PVM = "xen-pvm"
414
HT_FAKE = "fake"
Iustin Pop's avatar
Iustin Pop committed
415
HT_XEN_HVM = "xen-hvm"
Guido Trotter's avatar
Guido Trotter committed
416
HT_KVM = "kvm"
417
418
HT_CHROOT = "chroot"
HYPER_TYPES = frozenset([HT_XEN_PVM, HT_FAKE, HT_XEN_HVM, HT_KVM, HT_CHROOT])
Guido Trotter's avatar
Guido Trotter committed
419
HTS_REQ_PORT = frozenset([HT_XEN_HVM, HT_KVM])
420

421
VNC_BASE_PORT = 5900
422
VNC_PASSWORD_FILE = _autoconf.SYSCONFDIR + "/ganeti/vnc-cluster-password"
423
VNC_DEFAULT_BIND_ADDRESS = '0.0.0.0'
424

425
# NIC types
426
427
428
HT_NIC_RTL8139 = "rtl8139"
HT_NIC_NE2K_PCI = "ne2k_pci"
HT_NIC_NE2K_ISA = "ne2k_isa"
429
430
431
432
433
HT_NIC_I82551 = "i82551"
HT_NIC_I85557B = "i82557b"
HT_NIC_I8259ER = "i82559er"
HT_NIC_PCNET = "pcnet"
HT_NIC_E1000 = "e1000"
434
HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
435

436
437
HT_HVM_VALID_NIC_TYPES = frozenset([HT_NIC_RTL8139, HT_NIC_NE2K_PCI,
                                    HT_NIC_NE2K_ISA, HT_NIC_PARAVIRTUAL])
438
439
440
441
442
HT_KVM_VALID_NIC_TYPES = frozenset([HT_NIC_RTL8139, HT_NIC_NE2K_PCI,
                                    HT_NIC_NE2K_ISA, HT_NIC_I82551,
                                    HT_NIC_I85557B, HT_NIC_I8259ER,
                                    HT_NIC_PCNET, HT_NIC_E1000,
                                    HT_NIC_PARAVIRTUAL])
443
444
445
446
447
448
449
450
451
# Disk types
HT_DISK_IOEMU = "ioemu"
HT_DISK_IDE = "ide"
HT_DISK_SCSI = "scsi"
HT_DISK_SD = "sd"
HT_DISK_MTD = "mtd"
HT_DISK_PFLASH = "pflash"

HT_HVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IOEMU])
452
453
454
HT_KVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IDE,
                                     HT_DISK_SCSI, HT_DISK_SD, HT_DISK_MTD,
                                     HT_DISK_PFLASH])
455

456
457
458
459
460
461
462
463
464
465
466
467
468
# Mouse types:
HT_MOUSE_MOUSE = "mouse"
HT_MOUSE_TABLET = "tablet"

HT_KVM_VALID_MOUSE_TYPES = frozenset([HT_MOUSE_MOUSE, HT_MOUSE_TABLET])

# Boot order
HT_BO_CDROM = "cdrom"
HT_BO_DISK = "disk"
HT_BO_NETWORK = "network"

HT_KVM_VALID_BO_TYPES = frozenset([HT_BO_CDROM, HT_BO_DISK, HT_BO_NETWORK])

469
470
471
472
# Cluster Verify steps
VERIFY_NPLUSONE_MEM = 'nplusone_mem'
VERIFY_OPTIONAL_CHECKS = frozenset([VERIFY_NPLUSONE_MEM])

473
474
475
476
477
478
479
480
481
482
# Node verify constants
NV_FILELIST = "filelist"
NV_HVINFO = "hvinfo"
NV_HYPERVISOR = "hypervisor"
NV_INSTANCELIST = "instancelist"
NV_LVLIST = "lvlist"
NV_NODELIST = "nodelist"
NV_NODENETTEST = "node-net-test"
NV_VERSION = "version"
NV_VGLIST = "vglist"
483
NV_DRBDLIST = "drbd-list"
484

485
# Allocator framework constants
486
IALLOCATOR_VERSION = 2
487
488
489
490
491
IALLOCATOR_DIR_IN = "in"
IALLOCATOR_DIR_OUT = "out"
IALLOCATOR_MODE_ALLOC = "allocate"
IALLOCATOR_MODE_RELOC = "relocate"
IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH
492

493
494
495
496
497
# Job queue
JOB_QUEUE_VERSION = 1
JOB_QUEUE_LOCK_FILE = QUEUE_DIR + "/lock"
JOB_QUEUE_VERSION_FILE = QUEUE_DIR + "/version"
JOB_QUEUE_SERIAL_FILE = QUEUE_DIR + "/serial"
498
JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive"
499
JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain"
Michael Hanselmann's avatar
Michael Hanselmann committed
500
501
JOB_QUEUE_SIZE_HARD_LIMIT = 5000
JOB_QUEUE_SIZE_SOFT_LIMIT = JOB_QUEUE_SIZE_HARD_LIMIT * 0.8
502

503
504
JOB_ID_TEMPLATE = r"\d+"

505
506
507
# unchanged job return
JOB_NOTCHANGED = "nochange"

508
509
# Job status
JOB_STATUS_QUEUED = "queued"
Iustin Pop's avatar
Iustin Pop committed
510
JOB_STATUS_WAITLOCK = "waiting"
511
JOB_STATUS_CANCELING = "canceling"
512
513
514
515
516
JOB_STATUS_RUNNING = "running"
JOB_STATUS_CANCELED = "canceled"
JOB_STATUS_SUCCESS = "success"
JOB_STATUS_ERROR = "error"

517
518
# OpCode status
# not yet finalized
519
OP_STATUS_QUEUED = "queued"
Iustin Pop's avatar
Iustin Pop committed
520
OP_STATUS_WAITLOCK = "waiting"
521
OP_STATUS_CANCELING = "canceling"
522
OP_STATUS_RUNNING = "running"
523
# finalized
524
OP_STATUS_CANCELED = "canceled"
525
526
OP_STATUS_SUCCESS = "success"
OP_STATUS_ERROR = "error"
527
528
529
OPS_FINALIZED = frozenset([OP_STATUS_CANCELED,
                           OP_STATUS_SUCCESS,
                           OP_STATUS_ERROR])
530
531
532
533

# Execution log types
ELOG_MESSAGE = "message"
ELOG_PROGRESS = "progress"
534

535
# max dynamic devices
536
537
538
MAX_NICS = 8
MAX_DISKS = 16

Iustin Pop's avatar
Iustin Pop committed
539
540
# SSCONF keys
SS_CLUSTER_NAME = "cluster_name"
541
SS_CLUSTER_TAGS = "cluster_tags"
Iustin Pop's avatar
Iustin Pop committed
542
SS_FILE_STORAGE_DIR = "file_storage_dir"
543
SS_MASTER_CANDIDATES = "master_candidates"
544
SS_MASTER_CANDIDATES_IPS = "master_candidates_ips"
Iustin Pop's avatar
Iustin Pop committed
545
546
547
548
SS_MASTER_IP = "master_ip"
SS_MASTER_NETDEV = "master_netdev"
SS_MASTER_NODE = "master_node"
SS_NODE_LIST = "node_list"
549
550
SS_NODE_PRIMARY_IPS = "node_primary_ips"
SS_NODE_SECONDARY_IPS = "node_secondary_ips"
551
SS_OFFLINE_NODES = "offline_nodes"
552
553
SS_ONLINE_NODES = "online_nodes"
SS_INSTANCE_LIST = "instance_list"
554
SS_RELEASE_VERSION = "release_version"
Iustin Pop's avatar
Iustin Pop committed
555

556
557
558
559
# cluster wide default parameters
DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM

HVC_DEFAULTS = {
560
561
  HT_XEN_PVM: {
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-xenU",
562
    HV_INITRD_PATH: '',
563
    HV_ROOT_PATH: '/dev/sda1',
564
    HV_KERNEL_ARGS: 'ro',
565
566
567
    },
  HT_XEN_HVM: {
    HV_BOOT_ORDER: "cd",
568
    HV_CDROM_IMAGE_PATH: '',
569
    HV_NIC_TYPE: HT_NIC_RTL8139,
570
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
571
572
573
    HV_VNC_BIND_ADDRESS: '0.0.0.0',
    HV_ACPI: True,
    HV_PAE: True,
574
    HV_KERNEL_PATH: "/usr/lib/xen/boot/hvmloader",
575
    HV_DEVICE_MODEL: "/usr/lib/xen/bin/qemu-dm",
576
577
578
    },
  HT_KVM: {
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-kvmU",
579
    HV_INITRD_PATH: '',
580
    HV_KERNEL_ARGS: 'ro',
581
    HV_ROOT_PATH: '/dev/vda1',
582
583
    HV_ACPI: True,
    HV_SERIAL_CONSOLE: True,
584
    HV_VNC_BIND_ADDRESS: '',
585
586
587
    HV_VNC_TLS: False,
    HV_VNC_X509: '',
    HV_VNC_X509_VERIFY: False,
588
    HV_CDROM_IMAGE_PATH: '',
589
    HV_BOOT_ORDER: HT_BO_DISK,
590
591
    HV_NIC_TYPE: HT_NIC_PARAVIRTUAL,
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
592
    HV_USB_MOUSE: '',
593
594
595
    },
  HT_FAKE: {
    },
596
597
598
  HT_CHROOT: {
    HV_INIT_SCRIPT: "/ganeti-chroot",
    },
599
  }
600
601

BEC_DEFAULTS = {
602
603
604
605
  BE_MEMORY: 128,
  BE_VCPUS: 1,
  BE_AUTO_BALANCE: True,
  }
606

Guido Trotter's avatar
Guido Trotter committed
607
608
609
610
611
NICC_DEFAULTS = {
  NIC_MODE: NIC_MODE_BRIDGED,
  NIC_LINK: DEFAULT_BRIDGE,
  }

612
MASTER_POOL_SIZE_DEFAULT = 10