constants.py 15.7 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

# disk template types
DT_DISKLESS = "diskless"
DT_PLAIN = "plain"
207
DT_DRBD8 = "drbd"
208
DT_FILE = "file"
209
210

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

213
214
215
# the set of non-lvm-based disk templates
DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE])

216
217
# logical disk types
LD_LV = "lvm"
218
LD_DRBD8 = "drbd8"
219
LD_FILE = "file"
220
LDS_BLOCK = frozenset([LD_LV, LD_DRBD8])
221

Iustin Pop's avatar
Iustin Pop committed
222
223
# drbd constants
DRBD_HMAC_ALG = "md5"
224
DRBD_NET_PROTOCOL = "C"
Iustin Pop's avatar
Iustin Pop committed
225

226
227
228
# file backend driver
FD_LOOP = "loop"
FD_BLKTAP = "blktap"
229
230

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

233
# disk access mode
234
235
DISK_RDONLY = "ro"
DISK_RDWR = "rw"
236
237
DISK_ACCESS_SET = frozenset([DISK_RDONLY, DISK_RDWR])

238
# disk replacement mode
239
240
241
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
242

243
244
# lock recalculate mode
LOCKS_REPLACE = 'replace'
245
LOCKS_APPEND = 'append'
246

247
# instance creation modes
Iustin Pop's avatar
Iustin Pop committed
248
249
250
251
INSTANCE_CREATE = "create"
INSTANCE_IMPORT = "import"

DISK_TEMPLATES = frozenset([DT_DISKLESS, DT_PLAIN,
252
253
254
                            DT_DRBD8, DT_FILE])

FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP])
Iustin Pop's avatar
Iustin Pop committed
255
256
257
258

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

260
261
262
263
264
# dynamic device modification

DDM_ADD = 'add'
DDM_REMOVE = 'remove'

265
# common exit codes
Iustin Pop's avatar
Iustin Pop committed
266
EXIT_SUCCESS = 0
267
EXIT_FAILURE = 1
268
EXIT_NOTCLUSTER = 5
269
EXIT_NOTMASTER = 11
270
EXIT_NODESETUP_ERROR = 12
Iustin Pop's avatar
Iustin Pop committed
271
EXIT_CONFIRMATION = 13 # need user confirmation
272

273
274
275
276
277
278
279
# tags
TAG_CLUSTER = "cluster"
TAG_NODE = "node"
TAG_INSTANCE = "instance"
MAX_TAG_LEN = 128
MAX_TAGS_PER_OBJ = 4096

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

292
293
294
295
# RPC constants
(RPC_ENCODING_NONE,
 RPC_ENCODING_ZLIB_BASE64) = range(2)

296
297
298
299
300
# 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
301
OS_SCRIPTS = frozenset([OS_SCRIPT_CREATE, OS_SCRIPT_IMPORT,
302
                        OS_SCRIPT_EXPORT, OS_SCRIPT_RENAME])
303

304
# ssh constants
305
SSH_INITD_SCRIPT = _autoconf.SSH_INITD_SCRIPT
306
307
308
309
310
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"
311
312
SSH = "ssh"
SCP = "scp"
313
314
315
316
317

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

319
320
321
322
REBOOT_TYPES = frozenset([INSTANCE_REBOOT_SOFT,
                          INSTANCE_REBOOT_HARD,
                          INSTANCE_REBOOT_FULL])

323
324
325
326
327
328
329
330
331
332
333
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,
                      ])

334
335
336
337
338
339
# 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"
340
341
342
HV_VNC_TLS = "vnc_tls"
HV_VNC_X509 = "vnc_x509_path"
HV_VNC_X509_VERIFY = "vnc_x509_verify"
343
344
HV_ACPI = "acpi"
HV_PAE = "pae"
345
HV_KERNEL_ARGS = "kernel_args"
346
347
HV_KERNEL_PATH = "kernel_path"
HV_INITRD_PATH = "initrd_path"
348
HV_ROOT_PATH = "root_path"
349
HV_SERIAL_CONSOLE = "serial_console"
350
HV_USB_MOUSE = "usb_mouse"
351
HV_DEVICE_MODEL = "device_model"
352
HV_INIT_SCRIPT = "init_script"
353

354
355
356
357
358
359
360
361
362
363
364
365
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,
366
  HV_KERNEL_ARGS: VTYPE_STRING,
367
368
369
370
  HV_INITRD_PATH: VTYPE_STRING,
  HV_ROOT_PATH: VTYPE_STRING,
  HV_SERIAL_CONSOLE: VTYPE_BOOL,
  HV_USB_MOUSE: VTYPE_STRING,
371
  HV_DEVICE_MODEL: VTYPE_STRING,
372
  HV_INIT_SCRIPT: VTYPE_STRING,
373
374
375
  }

HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
376

377
# BE parameter names
Iustin Pop's avatar
Iustin Pop committed
378
BE_MEMORY = "memory"
379
BE_VCPUS = "vcpus"
380
BE_AUTO_BALANCE = "auto_balance"
381

382
383
384
385
386
387
388
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
389

390
391
# Instance Parameters Profile
PP_DEFAULT = "default"
392

Guido Trotter's avatar
Guido Trotter committed
393
394
395
396
397
398
399
400
401
402
403
404
405
406
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())
407

408
# Hypervisor constants
Iustin Pop's avatar
Iustin Pop committed
409
HT_XEN_PVM = "xen-pvm"
410
HT_FAKE = "fake"
Iustin Pop's avatar
Iustin Pop committed
411
HT_XEN_HVM = "xen-hvm"
Guido Trotter's avatar
Guido Trotter committed
412
HT_KVM = "kvm"
413
414
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
415
HTS_REQ_PORT = frozenset([HT_XEN_HVM, HT_KVM])
416

417
VNC_BASE_PORT = 5900
418
VNC_PASSWORD_FILE = _autoconf.SYSCONFDIR + "/ganeti/vnc-cluster-password"
419
VNC_DEFAULT_BIND_ADDRESS = '0.0.0.0'
420

421
# NIC types
422
423
424
HT_NIC_RTL8139 = "rtl8139"
HT_NIC_NE2K_PCI = "ne2k_pci"
HT_NIC_NE2K_ISA = "ne2k_isa"
425
426
427
428
429
HT_NIC_I82551 = "i82551"
HT_NIC_I85557B = "i82557b"
HT_NIC_I8259ER = "i82559er"
HT_NIC_PCNET = "pcnet"
HT_NIC_E1000 = "e1000"
430
HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
431

432
433
HT_HVM_VALID_NIC_TYPES = frozenset([HT_NIC_RTL8139, HT_NIC_NE2K_PCI,
                                    HT_NIC_NE2K_ISA, HT_NIC_PARAVIRTUAL])
434
435
436
437
438
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])
439
440
441
442
443
444
445
446
447
# 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])
448
449
450
HT_KVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IDE,
                                     HT_DISK_SCSI, HT_DISK_SD, HT_DISK_MTD,
                                     HT_DISK_PFLASH])
451

452
453
454
455
456
457
458
459
460
461
462
463
464
# 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])

465
466
467
468
# Cluster Verify steps
VERIFY_NPLUSONE_MEM = 'nplusone_mem'
VERIFY_OPTIONAL_CHECKS = frozenset([VERIFY_NPLUSONE_MEM])

469
470
471
472
473
474
475
476
477
478
# 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"
479
NV_DRBDLIST = "drbd-list"
480

481
# Allocator framework constants
482
IALLOCATOR_VERSION = 2
483
484
485
486
487
IALLOCATOR_DIR_IN = "in"
IALLOCATOR_DIR_OUT = "out"
IALLOCATOR_MODE_ALLOC = "allocate"
IALLOCATOR_MODE_RELOC = "relocate"
IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH
488

489
490
491
492
493
# 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"
494
JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive"
495
JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain"
Michael Hanselmann's avatar
Michael Hanselmann committed
496
497
JOB_QUEUE_SIZE_HARD_LIMIT = 5000
JOB_QUEUE_SIZE_SOFT_LIMIT = JOB_QUEUE_SIZE_HARD_LIMIT * 0.8
498

499
500
JOB_ID_TEMPLATE = r"\d+"

501
502
503
# unchanged job return
JOB_NOTCHANGED = "nochange"

504
505
# Job status
JOB_STATUS_QUEUED = "queued"
Iustin Pop's avatar
Iustin Pop committed
506
JOB_STATUS_WAITLOCK = "waiting"
507
JOB_STATUS_CANCELING = "canceling"
508
509
510
511
512
JOB_STATUS_RUNNING = "running"
JOB_STATUS_CANCELED = "canceled"
JOB_STATUS_SUCCESS = "success"
JOB_STATUS_ERROR = "error"

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

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

531
# max dynamic devices
532
533
534
MAX_NICS = 8
MAX_DISKS = 16

Iustin Pop's avatar
Iustin Pop committed
535
536
# SSCONF keys
SS_CLUSTER_NAME = "cluster_name"
537
SS_CLUSTER_TAGS = "cluster_tags"
Iustin Pop's avatar
Iustin Pop committed
538
SS_FILE_STORAGE_DIR = "file_storage_dir"
539
SS_MASTER_CANDIDATES = "master_candidates"
Iustin Pop's avatar
Iustin Pop committed
540
541
542
543
SS_MASTER_IP = "master_ip"
SS_MASTER_NETDEV = "master_netdev"
SS_MASTER_NODE = "master_node"
SS_NODE_LIST = "node_list"
544
SS_OFFLINE_NODES = "offline_nodes"
545
546
SS_ONLINE_NODES = "online_nodes"
SS_INSTANCE_LIST = "instance_list"
547
SS_RELEASE_VERSION = "release_version"
Iustin Pop's avatar
Iustin Pop committed
548

549
550
551
552
# cluster wide default parameters
DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM

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

BEC_DEFAULTS = {
595
596
597
598
  BE_MEMORY: 128,
  BE_VCPUS: 1,
  BE_AUTO_BALANCE: True,
  }
599

Guido Trotter's avatar
Guido Trotter committed
600
601
602
603
604
NICC_DEFAULTS = {
  NIC_MODE: NIC_MODE_BRIDGED,
  NIC_LINK: DEFAULT_BRIDGE,
  }

605
MASTER_POOL_SIZE_DEFAULT = 10