constants.py 17.2 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
CONF_DIR = SYSCONFDIR + "/ganeti"
110

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

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

NODED = "ganeti-noded"
Guido Trotter's avatar
Guido Trotter committed
116
CONFD = "ganeti-confd"
Guido Trotter's avatar
Guido Trotter committed
117
RAPI = "ganeti-rapi"
118
MASTERD = "ganeti-masterd"
119

120
121
MULTITHREADED_DAEMONS = frozenset([MASTERD])

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

128
129
130
DAEMONS_PORTS = {
  # daemon-name: ("proto", "default-port")
  NODED: ("tcp", 1811),
Guido Trotter's avatar
Guido Trotter committed
131
  CONFD: ("udp", 1814),
Guido Trotter's avatar
Guido Trotter committed
132
  RAPI: ("tcp", 5080),
133
134
}
DEFAULT_NODED_PORT = DAEMONS_PORTS[NODED][1]
Guido Trotter's avatar
Guido Trotter committed
135
DEFAULT_CONFD_PORT = DAEMONS_PORTS[CONFD][1]
Guido Trotter's avatar
Guido Trotter committed
136
DEFAULT_RAPI_PORT = DAEMONS_PORTS[RAPI][1]
137

Iustin Pop's avatar
Iustin Pop committed
138
139
FIRST_DRBD_PORT = 11000
LAST_DRBD_PORT = 14999
140
MASTER_SCRIPT = "ganeti-master"
Iustin Pop's avatar
Iustin Pop committed
141

142
LOG_DIR = _autoconf.LOCALSTATEDIR + "/log/ganeti/"
143
144
145
DAEMONS_LOGFILES = {
 # "daemon-name": "logfile"
 NODED: LOG_DIR + "node-daemon.log",
Guido Trotter's avatar
Guido Trotter committed
146
 CONFD: LOG_DIR + "conf-daemon.log",
147
148
149
 RAPI: LOG_DIR + "rapi-daemon.log",
 MASTERD: LOG_DIR + "master-daemon.log",
}
150
151
152
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
153
LOG_BURNIN = LOG_DIR + "burnin.log"
Iustin Pop's avatar
Iustin Pop committed
154

155
OS_SEARCH_PATH = _autoconf.OS_SEARCH_PATH
156
EXPORT_DIR = _autoconf.EXPORT_DIR
Iustin Pop's avatar
Iustin Pop committed
157
158
159

EXPORT_CONF_FILE = "config.ini"

160
161
162
XEN_KERNEL = _autoconf.XEN_KERNEL
XEN_INITRD = _autoconf.XEN_INITRD

163
KVM_PATH = _autoconf.KVM_PATH
Guido Trotter's avatar
Guido Trotter committed
164
SOCAT_PATH = _autoconf.SOCAT_PATH
Guido Trotter's avatar
Guido Trotter committed
165
KVM_MIGRATION_PORT = _autoconf.KVM_MIGRATION_PORT
166

167
VALUE_DEFAULT = "default"
168
169
VALUE_AUTO = "auto"
VALUE_GENERATE = "generate"
170
VALUE_NONE = "none"
171
172
VALUE_TRUE = "true"
VALUE_FALSE = "false"
173

Iustin Pop's avatar
Iustin Pop committed
174
# hooks-related constants
175
HOOKS_BASE_DIR = CONF_DIR + "/hooks"
Iustin Pop's avatar
Iustin Pop committed
176
177
HOOKS_PHASE_PRE = "pre"
HOOKS_PHASE_POST = "post"
178
HOOKS_NAME_CFGUPDATE = "config-update"
179
HOOKS_VERSION = 2
Iustin Pop's avatar
Iustin Pop committed
180
181
182
183
184
185
186
187
188
189

# 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

190
191
192
193
# Storage types
ST_FILE = "file"
ST_LVM_PV = "lvm-pv"
ST_LVM_VG = "lvm-vg"
194
195
196
197
198
199
200
201
202
203
204
205
206
207

# 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
208

209
210
211
212
MODIFIABLE_STORAGE_FIELDS = {
  ST_LVM_PV: frozenset([SF_ALLOCATABLE]),
  }

213
214
215
VALID_STORAGE_OPERATIONS = {
  }

216
217
218
219
220
221
# Local disk status
# Note: Code depends on LDS_OKAY < LDS_UNKNOWN < LDS_FAULTY
(LDS_OKAY,
 LDS_UNKNOWN,
 LDS_FAULTY) = range(1, 4)

Iustin Pop's avatar
Iustin Pop committed
222
223
224
# disk template types
DT_DISKLESS = "diskless"
DT_PLAIN = "plain"
225
DT_DRBD8 = "drbd"
226
DT_FILE = "file"
227
228

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

231
232
233
# the set of non-lvm-based disk templates
DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE])

234
235
# logical disk types
LD_LV = "lvm"
236
LD_DRBD8 = "drbd8"
237
LD_FILE = "file"
238
LDS_BLOCK = frozenset([LD_LV, LD_DRBD8])
239

Iustin Pop's avatar
Iustin Pop committed
240
241
# drbd constants
DRBD_HMAC_ALG = "md5"
242
DRBD_NET_PROTOCOL = "C"
Iustin Pop's avatar
Iustin Pop committed
243

244
245
246
# file backend driver
FD_LOOP = "loop"
FD_BLKTAP = "blktap"
247
248

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

251
# disk access mode
252
253
DISK_RDONLY = "ro"
DISK_RDWR = "rw"
254
255
DISK_ACCESS_SET = frozenset([DISK_RDONLY, DISK_RDWR])

256
# disk replacement mode
257
258
259
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
260
REPLACE_DISK_AUTO = "replace_auto"
261

262
263
# lock recalculate mode
LOCKS_REPLACE = 'replace'
264
LOCKS_APPEND = 'append'
265

266
# instance creation modes
Iustin Pop's avatar
Iustin Pop committed
267
268
269
270
INSTANCE_CREATE = "create"
INSTANCE_IMPORT = "import"

DISK_TEMPLATES = frozenset([DT_DISKLESS, DT_PLAIN,
271
272
273
                            DT_DRBD8, DT_FILE])

FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP])
Iustin Pop's avatar
Iustin Pop committed
274
275
276
277

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

279
280
281
282
283
# dynamic device modification

DDM_ADD = 'add'
DDM_REMOVE = 'remove'

284
# common exit codes
Iustin Pop's avatar
Iustin Pop committed
285
EXIT_SUCCESS = 0
286
EXIT_FAILURE = 1
287
EXIT_NOTCLUSTER = 5
288
EXIT_NOTMASTER = 11
289
EXIT_NODESETUP_ERROR = 12
Iustin Pop's avatar
Iustin Pop committed
290
EXIT_CONFIRMATION = 13 # need user confirmation
Guido Trotter's avatar
Guido Trotter committed
291
EXIT_NOTCANDIDATE = 14
292

293
294
295
296
297
298
299
# tags
TAG_CLUSTER = "cluster"
TAG_NODE = "node"
TAG_INSTANCE = "instance"
MAX_TAG_LEN = 128
MAX_TAGS_PER_OBJ = 4096

300
301
# others
DEFAULT_BRIDGE = "xen-br0"
Iustin Pop's avatar
Iustin Pop committed
302
SYNC_SPEED = 60 * 1024
Iustin Pop's avatar
Iustin Pop committed
303
LOCALHOST_IP_ADDRESS = "127.0.0.1"
304
TCP_PING_TIMEOUT = 10
305
GANETI_RUNAS = "root"
306
DEFAULT_VG = "xenvg"
307
BIND_ADDRESS_GLOBAL = "0.0.0.0"
308
MIN_VG_SIZE = 20480
309
DEFAULT_MAC_PREFIX = "aa:00:00"
310
LVM_STRIPECOUNT = _autoconf.LVM_STRIPECOUNT
311

312
313
314
315
# RPC constants
(RPC_ENCODING_NONE,
 RPC_ENCODING_ZLIB_BASE64) = range(2)

316
317
318
319
320
# 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
321
OS_SCRIPTS = frozenset([OS_SCRIPT_CREATE, OS_SCRIPT_IMPORT,
322
                        OS_SCRIPT_EXPORT, OS_SCRIPT_RENAME])
323

324
# ssh constants
325
SSH_INITD_SCRIPT = _autoconf.SSH_INITD_SCRIPT
326
327
328
329
330
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"
331
332
SSH = "ssh"
SCP = "scp"
333
334
335
336
337

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

339
340
341
342
REBOOT_TYPES = frozenset([INSTANCE_REBOOT_SOFT,
                          INSTANCE_REBOOT_HARD,
                          INSTANCE_REBOOT_FULL])

343
344
345
346
347
348
349
350
351
352
353
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,
                      ])

354
355
356
357
358
359
# 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"
360
361
362
HV_VNC_TLS = "vnc_tls"
HV_VNC_X509 = "vnc_x509_path"
HV_VNC_X509_VERIFY = "vnc_x509_verify"
363
364
HV_ACPI = "acpi"
HV_PAE = "pae"
365
HV_KERNEL_ARGS = "kernel_args"
366
367
HV_KERNEL_PATH = "kernel_path"
HV_INITRD_PATH = "initrd_path"
368
HV_ROOT_PATH = "root_path"
369
HV_SERIAL_CONSOLE = "serial_console"
370
HV_USB_MOUSE = "usb_mouse"
371
HV_DEVICE_MODEL = "device_model"
372
HV_INIT_SCRIPT = "init_script"
373

374
375
376
377
378
379
380
381
382
383
384
385
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,
386
  HV_KERNEL_ARGS: VTYPE_STRING,
387
388
389
390
  HV_INITRD_PATH: VTYPE_STRING,
  HV_ROOT_PATH: VTYPE_STRING,
  HV_SERIAL_CONSOLE: VTYPE_BOOL,
  HV_USB_MOUSE: VTYPE_STRING,
391
  HV_DEVICE_MODEL: VTYPE_STRING,
392
  HV_INIT_SCRIPT: VTYPE_STRING,
393
394
395
  }

HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
396

397
# BE parameter names
Iustin Pop's avatar
Iustin Pop committed
398
BE_MEMORY = "memory"
399
BE_VCPUS = "vcpus"
400
BE_AUTO_BALANCE = "auto_balance"
401

402
403
404
405
406
407
408
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
409

410
411
# Instance Parameters Profile
PP_DEFAULT = "default"
412

Guido Trotter's avatar
Guido Trotter committed
413
414
415
416
417
418
419
420
421
422
423
424
425
426
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())
427

428
# Hypervisor constants
Iustin Pop's avatar
Iustin Pop committed
429
HT_XEN_PVM = "xen-pvm"
430
HT_FAKE = "fake"
Iustin Pop's avatar
Iustin Pop committed
431
HT_XEN_HVM = "xen-hvm"
Guido Trotter's avatar
Guido Trotter committed
432
HT_KVM = "kvm"
433
434
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
435
HTS_REQ_PORT = frozenset([HT_XEN_HVM, HT_KVM])
436

437
VNC_BASE_PORT = 5900
438
VNC_PASSWORD_FILE = CONF_DIR + "/vnc-cluster-password"
439
VNC_DEFAULT_BIND_ADDRESS = '0.0.0.0'
440

441
# NIC types
442
443
444
HT_NIC_RTL8139 = "rtl8139"
HT_NIC_NE2K_PCI = "ne2k_pci"
HT_NIC_NE2K_ISA = "ne2k_isa"
445
446
447
448
449
HT_NIC_I82551 = "i82551"
HT_NIC_I85557B = "i82557b"
HT_NIC_I8259ER = "i82559er"
HT_NIC_PCNET = "pcnet"
HT_NIC_E1000 = "e1000"
450
HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
451

452
453
HT_HVM_VALID_NIC_TYPES = frozenset([HT_NIC_RTL8139, HT_NIC_NE2K_PCI,
                                    HT_NIC_NE2K_ISA, HT_NIC_PARAVIRTUAL])
454
455
456
457
458
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])
459
460
461
462
463
464
465
466
467
# 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])
468
469
470
HT_KVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IDE,
                                     HT_DISK_SCSI, HT_DISK_SD, HT_DISK_MTD,
                                     HT_DISK_PFLASH])
471

472
473
474
475
476
477
478
479
480
481
482
483
484
# 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])

485
486
487
488
# Cluster Verify steps
VERIFY_NPLUSONE_MEM = 'nplusone_mem'
VERIFY_OPTIONAL_CHECKS = frozenset([VERIFY_NPLUSONE_MEM])

489
490
491
492
493
494
495
496
497
498
# 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"
499
NV_DRBDLIST = "drbd-list"
500

501
# Allocator framework constants
502
IALLOCATOR_VERSION = 2
503
504
505
506
507
IALLOCATOR_DIR_IN = "in"
IALLOCATOR_DIR_OUT = "out"
IALLOCATOR_MODE_ALLOC = "allocate"
IALLOCATOR_MODE_RELOC = "relocate"
IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH
508

509
510
511
512
513
# 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"
514
JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive"
515
JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain"
Michael Hanselmann's avatar
Michael Hanselmann committed
516
517
JOB_QUEUE_SIZE_HARD_LIMIT = 5000
JOB_QUEUE_SIZE_SOFT_LIMIT = JOB_QUEUE_SIZE_HARD_LIMIT * 0.8
518

519
520
JOB_ID_TEMPLATE = r"\d+"

521
522
523
# unchanged job return
JOB_NOTCHANGED = "nochange"

524
525
# Job status
JOB_STATUS_QUEUED = "queued"
Iustin Pop's avatar
Iustin Pop committed
526
JOB_STATUS_WAITLOCK = "waiting"
527
JOB_STATUS_CANCELING = "canceling"
528
529
530
531
532
JOB_STATUS_RUNNING = "running"
JOB_STATUS_CANCELED = "canceled"
JOB_STATUS_SUCCESS = "success"
JOB_STATUS_ERROR = "error"

533
534
# OpCode status
# not yet finalized
535
OP_STATUS_QUEUED = "queued"
Iustin Pop's avatar
Iustin Pop committed
536
OP_STATUS_WAITLOCK = "waiting"
537
OP_STATUS_CANCELING = "canceling"
538
OP_STATUS_RUNNING = "running"
539
# finalized
540
OP_STATUS_CANCELED = "canceled"
541
542
OP_STATUS_SUCCESS = "success"
OP_STATUS_ERROR = "error"
543
544
545
OPS_FINALIZED = frozenset([OP_STATUS_CANCELED,
                           OP_STATUS_SUCCESS,
                           OP_STATUS_ERROR])
546
547
548
549

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

551
# max dynamic devices
552
553
554
MAX_NICS = 8
MAX_DISKS = 16

Iustin Pop's avatar
Iustin Pop committed
555
556
# SSCONF keys
SS_CLUSTER_NAME = "cluster_name"
557
SS_CLUSTER_TAGS = "cluster_tags"
Iustin Pop's avatar
Iustin Pop committed
558
SS_FILE_STORAGE_DIR = "file_storage_dir"
559
SS_MASTER_CANDIDATES = "master_candidates"
560
SS_MASTER_CANDIDATES_IPS = "master_candidates_ips"
Iustin Pop's avatar
Iustin Pop committed
561
562
563
564
SS_MASTER_IP = "master_ip"
SS_MASTER_NETDEV = "master_netdev"
SS_MASTER_NODE = "master_node"
SS_NODE_LIST = "node_list"
565
566
SS_NODE_PRIMARY_IPS = "node_primary_ips"
SS_NODE_SECONDARY_IPS = "node_secondary_ips"
567
SS_OFFLINE_NODES = "offline_nodes"
568
569
SS_ONLINE_NODES = "online_nodes"
SS_INSTANCE_LIST = "instance_list"
570
SS_RELEASE_VERSION = "release_version"
Iustin Pop's avatar
Iustin Pop committed
571

572
573
574
575
# cluster wide default parameters
DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM

HVC_DEFAULTS = {
576
577
  HT_XEN_PVM: {
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-xenU",
578
    HV_INITRD_PATH: '',
579
    HV_ROOT_PATH: '/dev/sda1',
580
    HV_KERNEL_ARGS: 'ro',
581
582
583
    },
  HT_XEN_HVM: {
    HV_BOOT_ORDER: "cd",
584
    HV_CDROM_IMAGE_PATH: '',
585
    HV_NIC_TYPE: HT_NIC_RTL8139,
586
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
587
588
589
    HV_VNC_BIND_ADDRESS: '0.0.0.0',
    HV_ACPI: True,
    HV_PAE: True,
590
    HV_KERNEL_PATH: "/usr/lib/xen/boot/hvmloader",
591
    HV_DEVICE_MODEL: "/usr/lib/xen/bin/qemu-dm",
592
593
594
    },
  HT_KVM: {
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-kvmU",
595
    HV_INITRD_PATH: '',
596
    HV_KERNEL_ARGS: 'ro',
597
    HV_ROOT_PATH: '/dev/vda1',
598
599
    HV_ACPI: True,
    HV_SERIAL_CONSOLE: True,
600
    HV_VNC_BIND_ADDRESS: '',
601
602
603
    HV_VNC_TLS: False,
    HV_VNC_X509: '',
    HV_VNC_X509_VERIFY: False,
604
    HV_CDROM_IMAGE_PATH: '',
605
    HV_BOOT_ORDER: HT_BO_DISK,
606
607
    HV_NIC_TYPE: HT_NIC_PARAVIRTUAL,
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
608
    HV_USB_MOUSE: '',
609
610
611
    },
  HT_FAKE: {
    },
612
613
614
  HT_CHROOT: {
    HV_INIT_SCRIPT: "/ganeti-chroot",
    },
615
  }
616
617

BEC_DEFAULTS = {
618
619
620
621
  BE_MEMORY: 128,
  BE_VCPUS: 1,
  BE_AUTO_BALANCE: True,
  }
622

Guido Trotter's avatar
Guido Trotter committed
623
624
625
626
627
NICC_DEFAULTS = {
  NIC_MODE: NIC_MODE_BRIDGED,
  NIC_LINK: DEFAULT_BRIDGE,
  }

628
MASTER_POOL_SIZE_DEFAULT = 10
Guido Trotter's avatar
Guido Trotter committed
629
630
631

CONFD_PROTOCOL_VERSION = 1

632
CONFD_REQ_PING = 0
Guido Trotter's avatar
Guido Trotter committed
633
634
635
636
CONFD_REQ_NODE_ROLE_BYNAME = 1
CONFD_REQ_NODE_PIP_BY_INSTANCE_IP = 2

CONFD_REQS = frozenset([
637
  CONFD_REQ_PING,
Guido Trotter's avatar
Guido Trotter committed
638
639
640
641
  CONFD_REQ_NODE_ROLE_BYNAME,
  CONFD_REQ_NODE_PIP_BY_INSTANCE_IP,
  ])

642
643
644
645
646
647
648
649
650
651
CONFD_REPL_STATUS_OK = 0
CONFD_REPL_STATUS_ERROR = 1
CONFD_REPL_STATUS_NOTIMPLEMENTED = 2

CONFD_REPL_STATUSES = frozenset([
  CONFD_REPL_STATUS_OK,
  CONFD_REPL_STATUS_ERROR,
  CONFD_REPL_STATUS_NOTIMPLEMENTED,
  ])

Guido Trotter's avatar
Guido Trotter committed
652
653
654
(CONFD_NODE_ROLE_MASTER,
 CONFD_NODE_ROLE_CANDIDATE,
 CONFD_NODE_ROLE_OFFLINE,
Guido Trotter's avatar
Guido Trotter committed
655
656
657
 CONFD_NODE_ROLE_DRAINED,
 CONFD_NODE_ROLE_REGULAR,
 ) = range(5)
Guido Trotter's avatar
Guido Trotter committed
658

659
660
# A few common errors for confd
CONFD_ERROR_UNKNOWN_ENTRY = 1
661
CONFD_ERROR_INTERNAL = 2
662

Guido Trotter's avatar
Guido Trotter committed
663
664
665
666
# Each request is "salted" by the current timestamp.
# This constants decides how many seconds of skew to accept.
# TODO: make this a default and allow the value to be more configurable
CONFD_MAX_CLOCK_SKEW = 300