constants.py 17.1 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
216
217
218
# 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
219
220
221
# disk template types
DT_DISKLESS = "diskless"
DT_PLAIN = "plain"
222
DT_DRBD8 = "drbd"
223
DT_FILE = "file"
224
225

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

228
229
230
# the set of non-lvm-based disk templates
DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE])

231
232
# logical disk types
LD_LV = "lvm"
233
LD_DRBD8 = "drbd8"
234
LD_FILE = "file"
235
LDS_BLOCK = frozenset([LD_LV, LD_DRBD8])
236

Iustin Pop's avatar
Iustin Pop committed
237
238
# drbd constants
DRBD_HMAC_ALG = "md5"
239
DRBD_NET_PROTOCOL = "C"
Iustin Pop's avatar
Iustin Pop committed
240

241
242
243
# file backend driver
FD_LOOP = "loop"
FD_BLKTAP = "blktap"
244
245

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

248
# disk access mode
249
250
DISK_RDONLY = "ro"
DISK_RDWR = "rw"
251
252
DISK_ACCESS_SET = frozenset([DISK_RDONLY, DISK_RDWR])

253
# disk replacement mode
254
255
256
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
257
REPLACE_DISK_AUTO = "replace_auto"
258

259
260
# lock recalculate mode
LOCKS_REPLACE = 'replace'
261
LOCKS_APPEND = 'append'
262

263
# instance creation modes
Iustin Pop's avatar
Iustin Pop committed
264
265
266
267
INSTANCE_CREATE = "create"
INSTANCE_IMPORT = "import"

DISK_TEMPLATES = frozenset([DT_DISKLESS, DT_PLAIN,
268
269
270
                            DT_DRBD8, DT_FILE])

FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP])
Iustin Pop's avatar
Iustin Pop committed
271
272
273
274

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

276
277
278
279
280
# dynamic device modification

DDM_ADD = 'add'
DDM_REMOVE = 'remove'

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

290
291
292
293
294
295
296
# tags
TAG_CLUSTER = "cluster"
TAG_NODE = "node"
TAG_INSTANCE = "instance"
MAX_TAG_LEN = 128
MAX_TAGS_PER_OBJ = 4096

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

309
310
311
312
# RPC constants
(RPC_ENCODING_NONE,
 RPC_ENCODING_ZLIB_BASE64) = range(2)

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

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

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

336
337
338
339
REBOOT_TYPES = frozenset([INSTANCE_REBOOT_SOFT,
                          INSTANCE_REBOOT_HARD,
                          INSTANCE_REBOOT_FULL])

340
341
342
343
344
345
346
347
348
349
350
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,
                      ])

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

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

HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
393

394
# BE parameter names
Iustin Pop's avatar
Iustin Pop committed
395
BE_MEMORY = "memory"
396
BE_VCPUS = "vcpus"
397
BE_AUTO_BALANCE = "auto_balance"
398

399
400
401
402
403
404
405
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
406

407
408
# Instance Parameters Profile
PP_DEFAULT = "default"
409

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

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

434
VNC_BASE_PORT = 5900
435
VNC_PASSWORD_FILE = CONF_DIR + "/vnc-cluster-password"
436
VNC_DEFAULT_BIND_ADDRESS = '0.0.0.0'
437

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

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

469
470
471
472
473
474
475
476
477
478
479
480
481
# 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])

482
483
484
485
# Cluster Verify steps
VERIFY_NPLUSONE_MEM = 'nplusone_mem'
VERIFY_OPTIONAL_CHECKS = frozenset([VERIFY_NPLUSONE_MEM])

486
487
488
489
490
491
492
493
494
495
# 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"
496
NV_DRBDLIST = "drbd-list"
497

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

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

516
517
JOB_ID_TEMPLATE = r"\d+"

518
519
520
# unchanged job return
JOB_NOTCHANGED = "nochange"

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

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

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

548
# max dynamic devices
549
550
551
MAX_NICS = 8
MAX_DISKS = 16

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

569
570
571
572
# cluster wide default parameters
DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM

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

BEC_DEFAULTS = {
615
616
617
618
  BE_MEMORY: 128,
  BE_VCPUS: 1,
  BE_AUTO_BALANCE: True,
  }
619

Guido Trotter's avatar
Guido Trotter committed
620
621
622
623
624
NICC_DEFAULTS = {
  NIC_MODE: NIC_MODE_BRIDGED,
  NIC_LINK: DEFAULT_BRIDGE,
  }

625
MASTER_POOL_SIZE_DEFAULT = 10
Guido Trotter's avatar
Guido Trotter committed
626
627
628

CONFD_PROTOCOL_VERSION = 1

629
CONFD_REQ_PING = 0
Guido Trotter's avatar
Guido Trotter committed
630
631
632
633
CONFD_REQ_NODE_ROLE_BYNAME = 1
CONFD_REQ_NODE_PIP_BY_INSTANCE_IP = 2

CONFD_REQS = frozenset([
634
  CONFD_REQ_PING,
Guido Trotter's avatar
Guido Trotter committed
635
636
637
638
  CONFD_REQ_NODE_ROLE_BYNAME,
  CONFD_REQ_NODE_PIP_BY_INSTANCE_IP,
  ])

639
640
641
642
643
644
645
646
647
648
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
649
650
651
(CONFD_NODE_ROLE_MASTER,
 CONFD_NODE_ROLE_CANDIDATE,
 CONFD_NODE_ROLE_OFFLINE,
Guido Trotter's avatar
Guido Trotter committed
652
653
654
 CONFD_NODE_ROLE_DRAINED,
 CONFD_NODE_ROLE_REGULAR,
 ) = range(5)
Guido Trotter's avatar
Guido Trotter committed
655

656
657
# A few common errors for confd
CONFD_ERROR_UNKNOWN_ENTRY = 1
658
CONFD_ERROR_INTERNAL = 2
659

Guido Trotter's avatar
Guido Trotter committed
660
661
662
663
# 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