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

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

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

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

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

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

275
276
277
278
279
# dynamic device modification

DDM_ADD = 'add'
DDM_REMOVE = 'remove'

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

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

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

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

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

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

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

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

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

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

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

HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
392

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

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

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

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

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

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

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

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

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

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

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

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

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

515
516
JOB_ID_TEMPLATE = r"\d+"

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

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

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

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

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

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

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

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

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

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

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

CONFD_PROTOCOL_VERSION = 1

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

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

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

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

Guido Trotter's avatar
Guido Trotter committed
659
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