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

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

# 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
184
185
186
187
188

# Storage types
ST_FILE = "file"
ST_LVM_PV = "lvm-pv"
ST_LVM_VG = "lvm-vg"
Iustin Pop's avatar
Iustin Pop committed
189
190
191
192

# disk template types
DT_DISKLESS = "diskless"
DT_PLAIN = "plain"
193
DT_DRBD8 = "drbd"
194
DT_FILE = "file"
195
196

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

199
200
201
# the set of non-lvm-based disk templates
DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE])

202
203
# logical disk types
LD_LV = "lvm"
204
LD_DRBD8 = "drbd8"
205
LD_FILE = "file"
206
LDS_BLOCK = frozenset([LD_LV, LD_DRBD8])
207

Iustin Pop's avatar
Iustin Pop committed
208
209
# drbd constants
DRBD_HMAC_ALG = "md5"
210
DRBD_NET_PROTOCOL = "C"
Iustin Pop's avatar
Iustin Pop committed
211

212
213
214
# file backend driver
FD_LOOP = "loop"
FD_BLKTAP = "blktap"
215
216

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

219
# disk access mode
220
221
DISK_RDONLY = "ro"
DISK_RDWR = "rw"
222
223
DISK_ACCESS_SET = frozenset([DISK_RDONLY, DISK_RDWR])

224
# disk replacement mode
225
226
227
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
228

229
230
# lock recalculate mode
LOCKS_REPLACE = 'replace'
231
LOCKS_APPEND = 'append'
232

233
# instance creation modes
Iustin Pop's avatar
Iustin Pop committed
234
235
236
237
INSTANCE_CREATE = "create"
INSTANCE_IMPORT = "import"

DISK_TEMPLATES = frozenset([DT_DISKLESS, DT_PLAIN,
238
239
240
                            DT_DRBD8, DT_FILE])

FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP])
Iustin Pop's avatar
Iustin Pop committed
241
242
243
244

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

246
247
248
249
250
# dynamic device modification

DDM_ADD = 'add'
DDM_REMOVE = 'remove'

251
# common exit codes
Iustin Pop's avatar
Iustin Pop committed
252
EXIT_SUCCESS = 0
253
EXIT_FAILURE = 1
254
EXIT_NOTCLUSTER = 5
255
EXIT_NOTMASTER = 11
256
EXIT_NODESETUP_ERROR = 12
Iustin Pop's avatar
Iustin Pop committed
257
EXIT_CONFIRMATION = 13 # need user confirmation
258

259
260
261
262
263
264
265
# tags
TAG_CLUSTER = "cluster"
TAG_NODE = "node"
TAG_INSTANCE = "instance"
MAX_TAG_LEN = 128
MAX_TAGS_PER_OBJ = 4096

266
267
# others
DEFAULT_BRIDGE = "xen-br0"
Iustin Pop's avatar
Iustin Pop committed
268
SYNC_SPEED = 60 * 1024
Iustin Pop's avatar
Iustin Pop committed
269
LOCALHOST_IP_ADDRESS = "127.0.0.1"
270
TCP_PING_TIMEOUT = 10
271
GANETI_RUNAS = "root"
272
DEFAULT_VG = "xenvg"
273
BIND_ADDRESS_GLOBAL = "0.0.0.0"
274
MIN_VG_SIZE = 20480
275
DEFAULT_MAC_PREFIX = "aa:00:00"
276
LVM_STRIPECOUNT = _autoconf.LVM_STRIPECOUNT
277

278
279
280
281
# RPC constants
(RPC_ENCODING_NONE,
 RPC_ENCODING_ZLIB_BASE64) = range(2)

282
283
284
285
286
# 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
287
OS_SCRIPTS = frozenset([OS_SCRIPT_CREATE, OS_SCRIPT_IMPORT,
288
                        OS_SCRIPT_EXPORT, OS_SCRIPT_RENAME])
289

290
# ssh constants
291
SSH_INITD_SCRIPT = _autoconf.SSH_INITD_SCRIPT
292
293
294
295
296
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"
297
298
SSH = "ssh"
SCP = "scp"
299
300
301
302
303

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

305
306
307
308
REBOOT_TYPES = frozenset([INSTANCE_REBOOT_SOFT,
                          INSTANCE_REBOOT_HARD,
                          INSTANCE_REBOOT_FULL])

309
310
311
312
313
314
315
316
317
318
319
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,
                      ])

320
321
322
323
324
325
# 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"
326
327
328
HV_VNC_TLS = "vnc_tls"
HV_VNC_X509 = "vnc_x509_path"
HV_VNC_X509_VERIFY = "vnc_x509_verify"
329
330
HV_ACPI = "acpi"
HV_PAE = "pae"
331
HV_KERNEL_ARGS = "kernel_args"
332
333
HV_KERNEL_PATH = "kernel_path"
HV_INITRD_PATH = "initrd_path"
334
HV_ROOT_PATH = "root_path"
335
HV_SERIAL_CONSOLE = "serial_console"
336
HV_USB_MOUSE = "usb_mouse"
337
HV_DEVICE_MODEL = "device_model"
338

339
340
341
342
343
344
345
346
347
348
349
350
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,
351
  HV_KERNEL_ARGS: VTYPE_STRING,
352
353
354
355
  HV_INITRD_PATH: VTYPE_STRING,
  HV_ROOT_PATH: VTYPE_STRING,
  HV_SERIAL_CONSOLE: VTYPE_BOOL,
  HV_USB_MOUSE: VTYPE_STRING,
356
  HV_DEVICE_MODEL: VTYPE_STRING,
357
358
359
  }

HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
360

361
# BE parameter names
Iustin Pop's avatar
Iustin Pop committed
362
BE_MEMORY = "memory"
363
BE_VCPUS = "vcpus"
364
BE_AUTO_BALANCE = "auto_balance"
365

366
367
368
369
370
371
372
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
373

374
375
# Instance Parameters Profile
PP_DEFAULT = "default"
376

Guido Trotter's avatar
Guido Trotter committed
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
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())

392
# Hypervisor constants
Iustin Pop's avatar
Iustin Pop committed
393
HT_XEN_PVM = "xen-pvm"
394
HT_FAKE = "fake"
Iustin Pop's avatar
Iustin Pop committed
395
HT_XEN_HVM = "xen-hvm"
Guido Trotter's avatar
Guido Trotter committed
396
HT_KVM = "kvm"
Iustin Pop's avatar
Iustin Pop committed
397
HYPER_TYPES = frozenset([HT_XEN_PVM, HT_FAKE, HT_XEN_HVM, HT_KVM])
Guido Trotter's avatar
Guido Trotter committed
398
HTS_REQ_PORT = frozenset([HT_XEN_HVM, HT_KVM])
399

400
VNC_BASE_PORT = 5900
401
VNC_PASSWORD_FILE = _autoconf.SYSCONFDIR + "/ganeti/vnc-cluster-password"
402
VNC_DEFAULT_BIND_ADDRESS = '0.0.0.0'
403

404
# NIC types
405
406
407
HT_NIC_RTL8139 = "rtl8139"
HT_NIC_NE2K_PCI = "ne2k_pci"
HT_NIC_NE2K_ISA = "ne2k_isa"
408
409
410
411
412
HT_NIC_I82551 = "i82551"
HT_NIC_I85557B = "i82557b"
HT_NIC_I8259ER = "i82559er"
HT_NIC_PCNET = "pcnet"
HT_NIC_E1000 = "e1000"
413
HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
414

415
416
HT_HVM_VALID_NIC_TYPES = frozenset([HT_NIC_RTL8139, HT_NIC_NE2K_PCI,
                                    HT_NIC_NE2K_ISA, HT_NIC_PARAVIRTUAL])
417
418
419
420
421
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])
422
423
424
425
426
427
428
429
430
# 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])
431
432
433
HT_KVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IDE,
                                     HT_DISK_SCSI, HT_DISK_SD, HT_DISK_MTD,
                                     HT_DISK_PFLASH])
434

435
436
437
438
439
440
441
442
443
444
445
446
447
# 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])

448
449
450
451
# Cluster Verify steps
VERIFY_NPLUSONE_MEM = 'nplusone_mem'
VERIFY_OPTIONAL_CHECKS = frozenset([VERIFY_NPLUSONE_MEM])

452
453
454
455
456
457
458
459
460
461
# 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"
462
NV_DRBDLIST = "drbd-list"
463

464
# Allocator framework constants
465
IALLOCATOR_VERSION = 2
466
467
468
469
470
IALLOCATOR_DIR_IN = "in"
IALLOCATOR_DIR_OUT = "out"
IALLOCATOR_MODE_ALLOC = "allocate"
IALLOCATOR_MODE_RELOC = "relocate"
IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH
471

472
473
474
475
476
# 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"
477
JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive"
478
JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain"
Michael Hanselmann's avatar
Michael Hanselmann committed
479
480
JOB_QUEUE_SIZE_HARD_LIMIT = 5000
JOB_QUEUE_SIZE_SOFT_LIMIT = JOB_QUEUE_SIZE_HARD_LIMIT * 0.8
481

482
483
JOB_ID_TEMPLATE = r"\d+"

484
485
486
# unchanged job return
JOB_NOTCHANGED = "nochange"

487
488
# Job status
JOB_STATUS_QUEUED = "queued"
Iustin Pop's avatar
Iustin Pop committed
489
JOB_STATUS_WAITLOCK = "waiting"
490
JOB_STATUS_CANCELING = "canceling"
491
492
493
494
495
JOB_STATUS_RUNNING = "running"
JOB_STATUS_CANCELED = "canceled"
JOB_STATUS_SUCCESS = "success"
JOB_STATUS_ERROR = "error"

496
497
# OpCode status
# not yet finalized
498
OP_STATUS_QUEUED = "queued"
Iustin Pop's avatar
Iustin Pop committed
499
OP_STATUS_WAITLOCK = "waiting"
500
OP_STATUS_CANCELING = "canceling"
501
OP_STATUS_RUNNING = "running"
502
# finalized
503
OP_STATUS_CANCELED = "canceled"
504
505
OP_STATUS_SUCCESS = "success"
OP_STATUS_ERROR = "error"
506
507
508
OPS_FINALIZED = frozenset([OP_STATUS_CANCELED,
                           OP_STATUS_SUCCESS,
                           OP_STATUS_ERROR])
509
510
511
512

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

514
# max dynamic devices
515
516
517
MAX_NICS = 8
MAX_DISKS = 16

Iustin Pop's avatar
Iustin Pop committed
518
519
# SSCONF keys
SS_CLUSTER_NAME = "cluster_name"
520
SS_CLUSTER_TAGS = "cluster_tags"
Iustin Pop's avatar
Iustin Pop committed
521
SS_FILE_STORAGE_DIR = "file_storage_dir"
522
SS_MASTER_CANDIDATES = "master_candidates"
Iustin Pop's avatar
Iustin Pop committed
523
524
525
526
SS_MASTER_IP = "master_ip"
SS_MASTER_NETDEV = "master_netdev"
SS_MASTER_NODE = "master_node"
SS_NODE_LIST = "node_list"
527
SS_OFFLINE_NODES = "offline_nodes"
528
529
SS_ONLINE_NODES = "online_nodes"
SS_INSTANCE_LIST = "instance_list"
530
SS_RELEASE_VERSION = "release_version"
Iustin Pop's avatar
Iustin Pop committed
531

532
533
534
535
# cluster wide default parameters
DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM

HVC_DEFAULTS = {
536
537
  HT_XEN_PVM: {
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-xenU",
538
    HV_INITRD_PATH: '',
539
    HV_ROOT_PATH: '/dev/sda1',
540
    HV_KERNEL_ARGS: 'ro',
541
542
543
    },
  HT_XEN_HVM: {
    HV_BOOT_ORDER: "cd",
544
    HV_CDROM_IMAGE_PATH: '',
545
    HV_NIC_TYPE: HT_NIC_RTL8139,
546
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
547
548
549
    HV_VNC_BIND_ADDRESS: '0.0.0.0',
    HV_ACPI: True,
    HV_PAE: True,
550
    HV_KERNEL_PATH: "/usr/lib/xen/boot/hvmloader",
551
    HV_DEVICE_MODEL: "/usr/lib/xen/bin/qemu-dm",
552
553
554
    },
  HT_KVM: {
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-kvmU",
555
    HV_INITRD_PATH: '',
556
    HV_KERNEL_ARGS: 'ro',
557
    HV_ROOT_PATH: '/dev/vda1',
558
559
    HV_ACPI: True,
    HV_SERIAL_CONSOLE: True,
560
    HV_VNC_BIND_ADDRESS: '',
561
562
563
    HV_VNC_TLS: False,
    HV_VNC_X509: '',
    HV_VNC_X509_VERIFY: False,
564
    HV_CDROM_IMAGE_PATH: '',
565
    HV_BOOT_ORDER: HT_BO_DISK,
566
567
    HV_NIC_TYPE: HT_NIC_PARAVIRTUAL,
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
568
    HV_USB_MOUSE: '',
569
570
571
572
    },
  HT_FAKE: {
    },
  }
573
574

BEC_DEFAULTS = {
575
576
577
578
  BE_MEMORY: 128,
  BE_VCPUS: 1,
  BE_AUTO_BALANCE: True,
  }
579

Guido Trotter's avatar
Guido Trotter committed
580
581
582
583
584
NICC_DEFAULTS = {
  NIC_MODE: NIC_MODE_BRIDGED,
  NIC_LINK: DEFAULT_BRIDGE,
  }

585
MASTER_POOL_SIZE_DEFAULT = 10