Statistics
| Branch: | Tag: | Revision:

root / lib / constants.py @ d7754dad

History | View | Annotate | Download (61 kB)

1
#
2
#
3

    
4
# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Google Inc.
5
#
6
# This program is free software; you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License as published by
8
# the Free Software Foundation; either version 2 of the License, or
9
# (at your option) any later version.
10
#
11
# This program is distributed in the hope that it will be useful, but
12
# WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
# General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with this program; if not, write to the Free Software
18
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
# 02110-1301, USA.
20

    
21

    
22
"""Module holding different constants."""
23

    
24
import re
25
import socket
26

    
27
from ganeti import _constants
28
from ganeti import _vcsversion
29
from ganeti import compat
30
from ganeti import pathutils
31

    
32

    
33
# various versions
34
RELEASE_VERSION = _constants.RELEASE_VERSION
35
OS_API_V10 = _constants.OS_API_V10
36
OS_API_V15 = _constants.OS_API_V15
37
OS_API_V20 = _constants.OS_API_V20
38
OS_API_VERSIONS = _constants.OS_API_VERSIONS
39
VCS_VERSION = _vcsversion.VCS_VERSION
40
EXPORT_VERSION = _constants.EXPORT_VERSION
41
RAPI_VERSION = _constants.RAPI_VERSION
42

    
43
VERSION_MAJOR = _constants.VERSION_MAJOR
44
VERSION_MINOR = _constants.VERSION_MINOR
45
VERSION_REVISION = _constants.VERSION_REVISION
46

    
47
DIR_VERSION = _constants.DIR_VERSION
48

    
49
CONFIG_MAJOR = _constants.CONFIG_MAJOR
50
CONFIG_MINOR = _constants.CONFIG_MINOR
51
CONFIG_REVISION = _constants.CONFIG_REVISION
52
CONFIG_VERSION = _constants.CONFIG_VERSION
53

    
54
#: RPC protocol version
55
PROTOCOL_VERSION = _constants.PROTOCOL_VERSION
56

    
57
# user separation
58
DAEMONS_GROUP = _constants.DAEMONS_GROUP
59
ADMIN_GROUP = _constants.ADMIN_GROUP
60
MASTERD_USER = _constants.MASTERD_USER
61
MASTERD_GROUP = _constants.MASTERD_GROUP
62
RAPI_USER = _constants.RAPI_USER
63
RAPI_GROUP = _constants.RAPI_GROUP
64
CONFD_USER = _constants.CONFD_USER
65
CONFD_GROUP = _constants.CONFD_GROUP
66
LUXID_USER = _constants.LUXID_USER
67
LUXID_GROUP = _constants.LUXID_GROUP
68
NODED_USER = _constants.NODED_USER
69
NODED_GROUP = _constants.NODED_GROUP
70
MOND_USER = _constants.MOND_USER
71
MOND_GROUP = _constants.MOND_GROUP
72
SSH_LOGIN_USER = _constants.SSH_LOGIN_USER
73
SSH_CONSOLE_USER = _constants.SSH_CONSOLE_USER
74

    
75
CPU_PINNING_SEP = _constants.CPU_PINNING_SEP
76
CPU_PINNING_ALL = _constants.CPU_PINNING_ALL
77
CPU_PINNING_ALL_VAL = _constants.CPU_PINNING_ALL_VAL
78
CPU_PINNING_OFF = _constants.CPU_PINNING_OFF
79

    
80
CPU_PINNING_ALL_XEN = _constants.CPU_PINNING_ALL_XEN
81

    
82
CPU_PINNING_ALL_KVM = _constants.CPU_PINNING_ALL_KVM
83

    
84
DD_CMD = _constants.DD_CMD
85
MAX_WIPE_CHUNK = _constants.MAX_WIPE_CHUNK
86
MIN_WIPE_CHUNK_PERCENT = _constants.MIN_WIPE_CHUNK_PERCENT
87

    
88
RUN_DIRS_MODE = _constants.RUN_DIRS_MODE
89
SECURE_DIR_MODE = _constants.SECURE_DIR_MODE
90
SECURE_FILE_MODE = _constants.SECURE_FILE_MODE
91
ADOPTABLE_BLOCKDEV_ROOT = _constants.ADOPTABLE_BLOCKDEV_ROOT
92
ENABLE_CONFD = _constants.ENABLE_CONFD
93
ENABLE_MOND = _constants.ENABLE_MOND
94
ENABLE_SPLIT_QUERY = _constants.ENABLE_SPLIT_QUERY
95
ENABLE_RESTRICTED_COMMANDS = _constants.ENABLE_RESTRICTED_COMMANDS
96

    
97
# SSH constants
98
SSH = _constants.SSH
99
SCP = _constants.SCP
100

    
101
NODED = _constants.NODED
102
CONFD = _constants.CONFD
103
LUXID = _constants.LUXID
104
RAPI = _constants.RAPI
105
MASTERD = _constants.MASTERD
106
MOND = _constants.MOND
107

    
108
DAEMONS = _constants.DAEMONS
109

    
110
DAEMONS_PORTS = _constants.DAEMONS_PORTS
111

    
112
DEFAULT_NODED_PORT = _constants.DEFAULT_NODED_PORT
113
DEFAULT_CONFD_PORT = _constants.DEFAULT_CONFD_PORT
114
DEFAULT_MOND_PORT = _constants.DEFAULT_MOND_PORT
115
DEFAULT_RAPI_PORT = _constants.DEFAULT_RAPI_PORT
116

    
117
FIRST_DRBD_PORT = _constants.FIRST_DRBD_PORT
118
LAST_DRBD_PORT = _constants.LAST_DRBD_PORT
119

    
120
DAEMONS_LOGBASE = _constants.DAEMONS_LOGBASE
121

    
122
DAEMONS_LOGFILES = \
123
    dict((daemon, pathutils.GetLogFilename(DAEMONS_LOGBASE[daemon]))
124
         for daemon in DAEMONS_LOGBASE)
125

    
126
# Some daemons might require more than one logfile.
127
# Specifically, right now only the Haskell http library "snap", used by the
128
# monitoring daemon, requires multiple log files.
129

    
130
# These are the only valid reasons for having an extra logfile
131
EXTRA_LOGREASON_ACCESS = "access"
132
EXTRA_LOGREASON_ERROR = "error"
133

    
134
VALID_EXTRA_LOGREASONS = compat.UniqueFrozenset([
135
  EXTRA_LOGREASON_ACCESS,
136
  EXTRA_LOGREASON_ERROR,
137
  ])
138

    
139
# These are the extra logfiles, grouped by daemon
140
DAEMONS_EXTRA_LOGBASE = {
141
  MOND: {
142
    EXTRA_LOGREASON_ACCESS: _constants.EXTRA_LOGREASON_ACCESS,
143
    EXTRA_LOGREASON_ERROR: _constants.EXTRA_LOGREASON_ERROR,
144
    }
145
  }
146

    
147
DAEMONS_EXTRA_LOGFILES = \
148
  dict((daemon, dict((extra,
149
       pathutils.GetLogFilename(DAEMONS_EXTRA_LOGBASE[daemon][extra]))
150
       for extra in DAEMONS_EXTRA_LOGBASE[daemon]))
151
         for daemon in DAEMONS_EXTRA_LOGBASE)
152

    
153
DEV_CONSOLE = _constants.DEV_CONSOLE
154

    
155
PROC_MOUNTS = _constants.PROC_MOUNTS
156

    
157
LUXI_EOM = _constants.LUXI_EOM
158
LUXI_VERSION = _constants.LUXI_VERSION
159
LUXI_OVERRIDE = _constants.LUXI_OVERRIDE
160
LUXI_OVERRIDE_MASTER = _constants.LUXI_OVERRIDE_MASTER
161
LUXI_OVERRIDE_QUERY = _constants.LUXI_OVERRIDE_QUERY
162
# one of "no", "yes", "only"
163
SYSLOG_USAGE = _constants.SYSLOG_USAGE
164
SYSLOG_NO = _constants.SYSLOG_NO
165
SYSLOG_YES = _constants.SYSLOG_YES
166
SYSLOG_ONLY = _constants.SYSLOG_ONLY
167
SYSLOG_SOCKET = _constants.SYSLOG_SOCKET
168

    
169
EXPORT_CONF_FILE = _constants.EXPORT_CONF_FILE
170

    
171
XEN_BOOTLOADER = _constants.XEN_BOOTLOADER
172
XEN_KERNEL = _constants.XEN_KERNEL
173
XEN_INITRD = _constants.XEN_INITRD
174
XEN_CMD_XM = _constants.XEN_CMD_XM
175
XEN_CMD_XL = _constants.XEN_CMD_XL
176
KNOWN_XEN_COMMANDS = _constants.KNOWN_XEN_COMMANDS
177

    
178
# When the Xen toolstack used is "xl", live migration requires the source host
179
# to connect to the target host via ssh (xl runs this command). We need to pass
180
# the command xl runs some extra info so that it can use Ganeti's key
181
# verification and not fail. Note that this string is incomplete: it must be
182
# filled with the cluster name before being used.
183
XL_SSH_CMD = ("ssh -l %s -oGlobalKnownHostsFile=%s"
184
              " -oUserKnownHostsFile=/dev/null"
185
              " -oCheckHostIp=no -oStrictHostKeyChecking=yes"
186
              " -oHostKeyAlias=%%s") % (SSH_LOGIN_USER,
187
                                        pathutils.SSH_KNOWN_HOSTS_FILE)
188

    
189
KVM_PATH = _constants.KVM_PATH
190
KVM_KERNEL = _constants.KVM_KERNEL
191
SOCAT_PATH = _constants.SOCAT_PATH
192
SOCAT_USE_ESCAPE = _constants.SOCAT_USE_ESCAPE
193
SOCAT_USE_COMPRESS = _constants.SOCAT_USE_COMPRESS
194
SOCAT_ESCAPE_CODE = _constants.SOCAT_ESCAPE_CODE
195

    
196

    
197
CONS_SSH = _constants.CONS_SSH
198
CONS_VNC = _constants.CONS_VNC
199
CONS_SPICE = _constants.CONS_SPICE
200
CONS_MESSAGE = _constants.CONS_MESSAGE
201
CONS_ALL = _constants.CONS_ALL
202

    
203
RSA_KEY_BITS = _constants.RSA_KEY_BITS
204
OPENSSL_CIPHERS = _constants.OPENSSL_CIPHERS
205

    
206
X509_CERT_SIGN_DIGEST = _constants.X509_CERT_SIGN_DIGEST
207
X509_CERT_DEFAULT_VALIDITY = _constants.X509_CERT_DEFAULT_VALIDITY
208
X509_CERT_CN = _constants.X509_CERT_CN
209
X509_CERT_SIGNATURE_HEADER = _constants.X509_CERT_SIGNATURE_HEADER
210

    
211
# Import/export daemon mode
212
IEM_IMPORT = _constants.IEM_IMPORT
213
IEM_EXPORT = _constants.IEM_EXPORT
214

    
215
# Import/export transport compression
216
IEC_NONE = _constants.IEC_NONE
217
IEC_GZIP = _constants.IEC_GZIP
218
IEC_ALL = _constants.IEC_ALL
219

    
220
IE_CUSTOM_SIZE = _constants.IE_CUSTOM_SIZE
221

    
222
IE_MAGIC_RE = re.compile(r"^[-_.a-zA-Z0-9]{5,100}$")
223

    
224
IEIO_FILE = _constants.IEIO_FILE
225
IEIO_RAW_DISK = _constants.IEIO_RAW_DISK
226
IEIO_SCRIPT = _constants.IEIO_SCRIPT
227

    
228
VALUE_DEFAULT = "default"
229
VALUE_AUTO = "auto"
230
VALUE_GENERATE = "generate"
231
VALUE_NONE = "none"
232
VALUE_TRUE = "true"
233
VALUE_FALSE = "false"
234
VALUE_HS_NOTHING = {"Nothing": None}
235

    
236

    
237
# External script validation mask
238
EXT_PLUGIN_MASK = re.compile("^[a-zA-Z0-9_-]+$")
239

    
240
HOOKS_PHASE_PRE = _constants.HOOKS_PHASE_PRE
241
HOOKS_PHASE_POST = _constants.HOOKS_PHASE_POST
242
HOOKS_NAME_CFGUPDATE = _constants.HOOKS_NAME_CFGUPDATE
243
HOOKS_NAME_WATCHER = _constants.HOOKS_NAME_WATCHER
244
HOOKS_VERSION = _constants.HOOKS_VERSION
245
HOOKS_PATH = _constants.HOOKS_PATH
246

    
247
HTYPE_CLUSTER = _constants.HTYPE_CLUSTER
248
HTYPE_NODE = _constants.HTYPE_NODE
249
HTYPE_GROUP = _constants.HTYPE_GROUP
250
HTYPE_INSTANCE = _constants.HTYPE_INSTANCE
251
HTYPE_NETWORK = _constants.HTYPE_NETWORK
252

    
253
HKR_SKIP = _constants.HKR_SKIP
254
HKR_FAIL = _constants.HKR_FAIL
255
HKR_SUCCESS = _constants.HKR_SUCCESS
256

    
257
# Storage types
258
ST_BLOCK = _constants.ST_BLOCK
259
ST_DISKLESS = _constants.ST_DISKLESS
260
ST_EXT = _constants.ST_EXT
261
ST_FILE = _constants.ST_FILE
262
ST_LVM_PV = _constants.ST_LVM_PV
263
ST_LVM_VG = _constants.ST_LVM_VG
264
ST_RADOS = _constants.ST_RADOS
265
STORAGE_TYPES = _constants.STORAGE_TYPES
266
STS_REPORT = _constants.STS_REPORT
267

    
268
# Storage fields
269
# first two are valid in LU context only, not passed to backend
270
SF_NODE = _constants.SF_NODE
271
SF_TYPE = _constants.SF_TYPE
272
# and the rest are valid in backend
273
SF_NAME = _constants.SF_NAME
274
SF_SIZE = _constants.SF_SIZE
275
SF_FREE = _constants.SF_FREE
276
SF_USED = _constants.SF_USED
277
SF_ALLOCATABLE = _constants.SF_ALLOCATABLE
278
VALID_STORAGE_FIELDS = _constants.VALID_STORAGE_FIELDS
279
MODIFIABLE_STORAGE_FIELDS = _constants.MODIFIABLE_STORAGE_FIELDS
280

    
281
SO_FIX_CONSISTENCY = _constants.SO_FIX_CONSISTENCY
282
VALID_STORAGE_OPERATIONS = _constants.VALID_STORAGE_OPERATIONS
283

    
284
VF_DEV = _constants.VF_DEV
285
VF_INSTANCE = _constants.VF_INSTANCE
286
VF_NAME = _constants.VF_NAME
287
VF_NODE = _constants.VF_NODE
288
VF_PHYS = _constants.VF_PHYS
289
VF_SIZE = _constants.VF_SIZE
290
VF_VG = _constants.VF_VG
291

    
292
LDS_OKAY = _constants.LDS_OKAY
293
LDS_UNKNOWN = _constants.LDS_UNKNOWN
294
LDS_FAULTY = _constants.LDS_FAULTY
295
LDS_NAMES = _constants.LDS_NAMES
296

    
297
# disk template types
298
DT_BLOCK = _constants.DT_BLOCK
299
DT_DISKLESS = _constants.DT_DISKLESS
300
DT_DRBD8 = _constants.DT_DRBD8
301
DT_EXT = _constants.DT_EXT
302
DT_FILE = _constants.DT_FILE
303
DT_PLAIN = _constants.DT_PLAIN
304
DT_RBD = _constants.DT_RBD
305
DT_SHARED_FILE = _constants.DT_SHARED_FILE
306
DISK_TEMPLATE_PREFERENCE = _constants.DISK_TEMPLATE_PREFERENCE
307
DISK_TEMPLATES = _constants.DISK_TEMPLATES
308
DEFAULT_ENABLED_DISK_TEMPLATES = _constants.DEFAULT_ENABLED_DISK_TEMPLATES
309

    
310
MAP_DISK_TEMPLATE_STORAGE_TYPE = _constants.MAP_DISK_TEMPLATE_STORAGE_TYPE
311

    
312
DTS_INT_MIRROR = _constants.DTS_INT_MIRROR
313
DTS_EXT_MIRROR = _constants.DTS_EXT_MIRROR
314
DTS_NOT_LVM = _constants.DTS_NOT_LVM
315
DTS_GROWABLE = _constants.DTS_GROWABLE
316
DTS_MAY_ADOPT = _constants.DTS_MAY_ADOPT
317
DTS_MUST_ADOPT = _constants.DTS_MUST_ADOPT
318
DTS_MIRRORED = _constants.DTS_MIRRORED
319
DTS_FILEBASED = _constants.DTS_FILEBASED
320
DTS_COPYABLE = _constants.DTS_COPYABLE
321
DTS_EXCL_STORAGE = _constants.DTS_EXCL_STORAGE
322
DTS_NO_FREE_SPACE_CHECK = _constants.DTS_NO_FREE_SPACE_CHECK
323
DTS_BLOCK = _constants.DTS_BLOCK
324

    
325
DRBD_HMAC_ALG = _constants.DRBD_HMAC_ALG
326
DRBD_DEFAULT_NET_PROTOCOL = _constants.DRBD_DEFAULT_NET_PROTOCOL
327
DRBD_MIGRATION_NET_PROTOCOL = _constants.DRBD_MIGRATION_NET_PROTOCOL
328
DRBD_STATUS_FILE = _constants.DRBD_STATUS_FILE
329
DRBD_META_SIZE = _constants.DRBD_META_SIZE
330

    
331
DRBD_B_NONE = _constants.DRBD_B_NONE
332
DRBD_B_DISK_BARRIERS = _constants.DRBD_B_DISK_BARRIERS
333
DRBD_B_DISK_DRAIN = _constants.DRBD_B_DISK_DRAIN
334
DRBD_B_DISK_FLUSH = _constants.DRBD_B_DISK_FLUSH
335

    
336
# Valid barrier combinations: "n" or any non-null subset of "bfd"
337
DRBD_VALID_BARRIER_OPT = compat.UniqueFrozenset([
338
  frozenset([DRBD_B_NONE]),
339
  frozenset([DRBD_B_DISK_BARRIERS]),
340
  frozenset([DRBD_B_DISK_DRAIN]),
341
  frozenset([DRBD_B_DISK_FLUSH]),
342
  frozenset([DRBD_B_DISK_DRAIN, DRBD_B_DISK_FLUSH]),
343
  frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_DRAIN]),
344
  frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_FLUSH]),
345
  frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_FLUSH, DRBD_B_DISK_DRAIN]),
346
  ])
347

    
348
RBD_CMD = _constants.RBD_CMD
349

    
350
FD_BLKTAP = _constants.FD_BLKTAP
351
FD_LOOP = _constants.FD_LOOP
352
FILE_DRIVER = _constants.FILE_DRIVER
353

    
354
LDS_DRBD = _constants.LDS_DRBD
355

    
356
# disk access mode
357
DISK_RDONLY = _constants.DISK_RDONLY
358
DISK_RDWR = _constants.DISK_RDWR
359
DISK_ACCESS_SET = _constants.DISK_ACCESS_SET
360
DISK_USERSPACE = _constants.DISK_USERSPACE
361
DISK_KERNELSPACE = _constants.DISK_KERNELSPACE
362
DISK_VALID_ACCESS_MODES = _constants.DISK_VALID_ACCESS_MODES
363

    
364
REPLACE_DISK_PRI = _constants.REPLACE_DISK_PRI
365
REPLACE_DISK_SEC = _constants.REPLACE_DISK_SEC
366
REPLACE_DISK_CHG = _constants.REPLACE_DISK_CHG
367
REPLACE_DISK_AUTO = _constants.REPLACE_DISK_AUTO
368
REPLACE_MODES = _constants.REPLACE_MODES
369

    
370
# Instance export mode
371
EXPORT_MODE_LOCAL = _constants.EXPORT_MODE_LOCAL
372
EXPORT_MODE_REMOTE = _constants.EXPORT_MODE_REMOTE
373
EXPORT_MODES = _constants.EXPORT_MODES
374

    
375
# instance creation modes
376
INSTANCE_CREATE = _constants.INSTANCE_CREATE
377
INSTANCE_IMPORT = _constants.INSTANCE_IMPORT
378
INSTANCE_REMOTE_IMPORT = _constants.INSTANCE_REMOTE_IMPORT
379
INSTANCE_CREATE_MODES = _constants.INSTANCE_CREATE_MODES
380

    
381
RIE_VERSION = _constants.RIE_VERSION
382
RIE_HANDSHAKE = _constants.RIE_HANDSHAKE
383
RIE_CERT_VALIDITY = _constants.RIE_CERT_VALIDITY
384
RIE_CONNECT_TIMEOUT = _constants.RIE_CONNECT_TIMEOUT
385
RIE_CONNECT_ATTEMPT_TIMEOUT = _constants.RIE_CONNECT_ATTEMPT_TIMEOUT
386
RIE_CONNECT_RETRIES = _constants.RIE_CONNECT_RETRIES
387
CHILD_LINGER_TIMEOUT = _constants.CHILD_LINGER_TIMEOUT
388

    
389
INISECT_EXP = _constants.INISECT_EXP
390
INISECT_INS = _constants.INISECT_INS
391
INISECT_HYP = _constants.INISECT_HYP
392
INISECT_BEP = _constants.INISECT_BEP
393
INISECT_OSP = _constants.INISECT_OSP
394

    
395
# dynamic device modification
396
DDM_ADD = _constants.DDM_ADD
397
DDM_MODIFY = _constants.DDM_MODIFY
398
DDM_REMOVE = _constants.DDM_REMOVE
399
DDMS_VALUES = _constants.DDMS_VALUES
400
DDMS_VALUES_WITH_MODIFY = _constants.DDMS_VALUES_WITH_MODIFY
401
# TODO: DDM_SWAP, DDM_MOVE?
402

    
403
# common exit codes
404
EXIT_SUCCESS = _constants.EXIT_SUCCESS
405
EXIT_FAILURE = _constants.EXIT_FAILURE
406
EXIT_NOTCLUSTER = _constants.EXIT_NOTCLUSTER
407
EXIT_NOTMASTER = _constants.EXIT_NOTMASTER
408
EXIT_NODESETUP_ERROR = _constants.EXIT_NODESETUP_ERROR
409
EXIT_CONFIRMATION = _constants.EXIT_CONFIRMATION
410
EXIT_UNKNOWN_FIELD = _constants.EXIT_UNKNOWN_FIELD
411

    
412
# tags
413
TAG_CLUSTER = _constants.TAG_CLUSTER
414
TAG_NODEGROUP = _constants.TAG_NODEGROUP
415
TAG_NODE = _constants.TAG_NODE
416
TAG_INSTANCE = _constants.TAG_INSTANCE
417
TAG_NETWORK = _constants.TAG_NETWORK
418
VALID_TAG_TYPES = _constants.VALID_TAG_TYPES
419

    
420
MAX_TAG_LEN = _constants.MAX_TAG_LEN
421
MAX_TAGS_PER_OBJ = _constants.MAX_TAGS_PER_OBJ
422

    
423
# others
424
DEFAULT_BRIDGE = _constants.DEFAULT_BRIDGE
425
DEFAULT_OVS = _constants.DEFAULT_OVS
426
CLASSIC_DRBD_SYNC_SPEED = _constants.CLASSIC_DRBD_SYNC_SPEED
427
IP4_ADDRESS_LOCALHOST = _constants.IP4_ADDRESS_LOCALHOST
428
IP4_ADDRESS_ANY = _constants.IP4_ADDRESS_ANY
429
IP6_ADDRESS_LOCALHOST = _constants.IP6_ADDRESS_LOCALHOST
430
IP6_ADDRESS_ANY = _constants.IP6_ADDRESS_ANY
431
IP4_VERSION = _constants.IP4_VERSION
432
IP6_VERSION = _constants.IP6_VERSION
433
VALID_IP_VERSIONS = _constants.VALID_IP_VERSIONS
434
# for export to htools
435
IP4_FAMILY = socket.AF_INET
436
IP6_FAMILY = socket.AF_INET6
437

    
438
TCP_PING_TIMEOUT = _constants.TCP_PING_TIMEOUT
439
DEFAULT_VG = _constants.DEFAULT_VG
440
DEFAULT_DRBD_HELPER = _constants.DEFAULT_DRBD_HELPER
441
MIN_VG_SIZE = _constants.MIN_VG_SIZE
442
DEFAULT_MAC_PREFIX = _constants.DEFAULT_MAC_PREFIX
443
DEFAULT_SHUTDOWN_TIMEOUT = _constants.DEFAULT_SHUTDOWN_TIMEOUT
444
NODE_MAX_CLOCK_SKEW = _constants.NODE_MAX_CLOCK_SKEW
445
DISK_TRANSFER_CONNECT_TIMEOUT = _constants.DISK_TRANSFER_CONNECT_TIMEOUT
446
DISK_SEPARATOR = _constants.DISK_SEPARATOR
447
IP_COMMAND_PATH = _constants.IP_COMMAND_PATH
448
JOB_IDS_KEY = _constants.JOB_IDS_KEY
449

    
450
RUNPARTS_SKIP = _constants.RUNPARTS_SKIP
451
RUNPARTS_RUN = _constants.RUNPARTS_RUN
452
RUNPARTS_ERR = _constants.RUNPARTS_ERR
453
RUNPARTS_STATUS = _constants.RUNPARTS_STATUS
454

    
455
RPC_ENCODING_NONE = _constants.RPC_ENCODING_NONE
456
RPC_ENCODING_ZLIB_BASE64 = _constants.RPC_ENCODING_ZLIB_BASE64
457

    
458
RPC_TMO_URGENT = _constants.RPC_TMO_URGENT
459
RPC_TMO_FAST = _constants.RPC_TMO_FAST
460
RPC_TMO_NORMAL = _constants.RPC_TMO_NORMAL
461
RPC_TMO_SLOW = _constants.RPC_TMO_SLOW
462
RPC_TMO_4HRS = _constants.RPC_TMO_4HRS
463
RPC_TMO_1DAY = _constants.RPC_TMO_1DAY
464
RPC_CONNECT_TIMEOUT = _constants.RPC_CONNECT_TIMEOUT
465

    
466
# os related constants
467
OS_SCRIPT_CREATE = "create"
468
OS_SCRIPT_IMPORT = "import"
469
OS_SCRIPT_EXPORT = "export"
470
OS_SCRIPT_RENAME = "rename"
471
OS_SCRIPT_VERIFY = "verify"
472
OS_SCRIPTS = compat.UniqueFrozenset([
473
  OS_SCRIPT_CREATE,
474
  OS_SCRIPT_IMPORT,
475
  OS_SCRIPT_EXPORT,
476
  OS_SCRIPT_RENAME,
477
  OS_SCRIPT_VERIFY,
478
  ])
479

    
480
OS_API_FILE = "ganeti_api_version"
481
OS_VARIANTS_FILE = "variants.list"
482
OS_PARAMETERS_FILE = "parameters.list"
483

    
484
OS_VALIDATE_PARAMETERS = "parameters"
485
OS_VALIDATE_CALLS = compat.UniqueFrozenset([OS_VALIDATE_PARAMETERS])
486

    
487
# External Storage (ES) related constants
488
ES_ACTION_CREATE = "create"
489
ES_ACTION_REMOVE = "remove"
490
ES_ACTION_GROW = "grow"
491
ES_ACTION_ATTACH = "attach"
492
ES_ACTION_DETACH = "detach"
493
ES_ACTION_SETINFO = "setinfo"
494
ES_ACTION_VERIFY = "verify"
495

    
496
ES_SCRIPT_CREATE = ES_ACTION_CREATE
497
ES_SCRIPT_REMOVE = ES_ACTION_REMOVE
498
ES_SCRIPT_GROW = ES_ACTION_GROW
499
ES_SCRIPT_ATTACH = ES_ACTION_ATTACH
500
ES_SCRIPT_DETACH = ES_ACTION_DETACH
501
ES_SCRIPT_SETINFO = ES_ACTION_SETINFO
502
ES_SCRIPT_VERIFY = ES_ACTION_VERIFY
503
ES_SCRIPTS = frozenset([
504
  ES_SCRIPT_CREATE,
505
  ES_SCRIPT_REMOVE,
506
  ES_SCRIPT_GROW,
507
  ES_SCRIPT_ATTACH,
508
  ES_SCRIPT_DETACH,
509
  ES_SCRIPT_SETINFO,
510
  ES_SCRIPT_VERIFY
511
  ])
512

    
513
ES_PARAMETERS_FILE = "parameters.list"
514

    
515
# reboot types
516
INSTANCE_REBOOT_SOFT = _constants.INSTANCE_REBOOT_SOFT
517
INSTANCE_REBOOT_HARD = _constants.INSTANCE_REBOOT_HARD
518
INSTANCE_REBOOT_FULL = _constants.INSTANCE_REBOOT_FULL
519
REBOOT_TYPES = _constants.REBOOT_TYPES
520

    
521
# instance reboot behaviors
522
INSTANCE_REBOOT_ALLOWED = "reboot"
523
INSTANCE_REBOOT_EXIT = "exit"
524

    
525
REBOOT_BEHAVIORS = compat.UniqueFrozenset([
526
  INSTANCE_REBOOT_ALLOWED,
527
  INSTANCE_REBOOT_EXIT,
528
  ])
529

    
530
VTYPE_STRING = _constants.VTYPE_STRING
531
VTYPE_MAYBE_STRING = _constants.VTYPE_MAYBE_STRING
532
VTYPE_BOOL = _constants.VTYPE_BOOL
533
VTYPE_SIZE = _constants.VTYPE_SIZE
534
VTYPE_INT = _constants.VTYPE_INT
535
ENFORCEABLE_TYPES = _constants.ENFORCEABLE_TYPES
536

    
537
# Constant representing that the user does not specify any IP version
538
IFACE_NO_IP_VERSION_SPECIFIED = 0
539

    
540
VALID_SERIAL_SPEEDS = compat.UniqueFrozenset([
541
  75,
542
  110,
543
  300,
544
  600,
545
  1200,
546
  1800,
547
  2400,
548
  4800,
549
  9600,
550
  14400,
551
  19200,
552
  28800,
553
  38400,
554
  57600,
555
  115200,
556
  230400,
557
  345600,
558
  460800,
559
  ])
560

    
561
# HV parameter names (global namespace)
562
HV_BOOT_ORDER = "boot_order"
563
HV_CDROM_IMAGE_PATH = "cdrom_image_path"
564
HV_KVM_CDROM2_IMAGE_PATH = "cdrom2_image_path"
565
HV_KVM_FLOPPY_IMAGE_PATH = "floppy_image_path"
566
HV_NIC_TYPE = "nic_type"
567
HV_DISK_TYPE = "disk_type"
568
HV_KVM_CDROM_DISK_TYPE = "cdrom_disk_type"
569
HV_VNC_BIND_ADDRESS = "vnc_bind_address"
570
HV_VNC_PASSWORD_FILE = "vnc_password_file"
571
HV_VNC_TLS = "vnc_tls"
572
HV_VNC_X509 = "vnc_x509_path"
573
HV_VNC_X509_VERIFY = "vnc_x509_verify"
574
HV_KVM_SPICE_BIND = "spice_bind"
575
HV_KVM_SPICE_IP_VERSION = "spice_ip_version"
576
HV_KVM_SPICE_PASSWORD_FILE = "spice_password_file"
577
HV_KVM_SPICE_LOSSLESS_IMG_COMPR = "spice_image_compression"
578
HV_KVM_SPICE_JPEG_IMG_COMPR = "spice_jpeg_wan_compression"
579
HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR = "spice_zlib_glz_wan_compression"
580
HV_KVM_SPICE_STREAMING_VIDEO_DETECTION = "spice_streaming_video"
581
HV_KVM_SPICE_AUDIO_COMPR = "spice_playback_compression"
582
HV_KVM_SPICE_USE_TLS = "spice_use_tls"
583
HV_KVM_SPICE_TLS_CIPHERS = "spice_tls_ciphers"
584
HV_KVM_SPICE_USE_VDAGENT = "spice_use_vdagent"
585
HV_ACPI = "acpi"
586
HV_PAE = "pae"
587
HV_USE_BOOTLOADER = "use_bootloader"
588
HV_BOOTLOADER_ARGS = "bootloader_args"
589
HV_BOOTLOADER_PATH = "bootloader_path"
590
HV_KERNEL_ARGS = "kernel_args"
591
HV_KERNEL_PATH = "kernel_path"
592
HV_INITRD_PATH = "initrd_path"
593
HV_ROOT_PATH = "root_path"
594
HV_SERIAL_CONSOLE = "serial_console"
595
HV_SERIAL_SPEED = "serial_speed"
596
HV_USB_MOUSE = "usb_mouse"
597
HV_KEYMAP = "keymap"
598
HV_DEVICE_MODEL = "device_model"
599
HV_INIT_SCRIPT = "init_script"
600
HV_MIGRATION_PORT = "migration_port"
601
HV_MIGRATION_BANDWIDTH = "migration_bandwidth"
602
HV_MIGRATION_DOWNTIME = "migration_downtime"
603
HV_MIGRATION_MODE = "migration_mode"
604
HV_USE_LOCALTIME = "use_localtime"
605
HV_DISK_CACHE = "disk_cache"
606
HV_SECURITY_MODEL = "security_model"
607
HV_SECURITY_DOMAIN = "security_domain"
608
HV_KVM_FLAG = "kvm_flag"
609
HV_VHOST_NET = "vhost_net"
610
HV_KVM_USE_CHROOT = "use_chroot"
611
HV_CPU_MASK = "cpu_mask"
612
HV_MEM_PATH = "mem_path"
613
HV_PASSTHROUGH = "pci_pass"
614
HV_BLOCKDEV_PREFIX = "blockdev_prefix"
615
HV_REBOOT_BEHAVIOR = "reboot_behavior"
616
HV_CPU_TYPE = "cpu_type"
617
HV_CPU_CAP = "cpu_cap"
618
HV_CPU_WEIGHT = "cpu_weight"
619
HV_CPU_CORES = "cpu_cores"
620
HV_CPU_THREADS = "cpu_threads"
621
HV_CPU_SOCKETS = "cpu_sockets"
622
HV_SOUNDHW = "soundhw"
623
HV_USB_DEVICES = "usb_devices"
624
HV_VGA = "vga"
625
HV_KVM_EXTRA = "kvm_extra"
626
HV_KVM_MACHINE_VERSION = "machine_version"
627
HV_KVM_PATH = "kvm_path"
628
HV_VIF_TYPE = "vif_type"
629
HV_VIF_SCRIPT = "vif_script"
630
HV_XEN_CMD = "xen_cmd"
631
HV_XEN_CPUID = "cpuid"
632
HV_VNET_HDR = "vnet_hdr"
633
HV_VIRIDIAN = "viridian"
634

    
635

    
636
HVS_PARAMETER_TYPES = {
637
  HV_KVM_PATH: VTYPE_STRING,
638
  HV_BOOT_ORDER: VTYPE_STRING,
639
  HV_KVM_FLOPPY_IMAGE_PATH: VTYPE_STRING,
640
  HV_CDROM_IMAGE_PATH: VTYPE_STRING,
641
  HV_KVM_CDROM2_IMAGE_PATH: VTYPE_STRING,
642
  HV_NIC_TYPE: VTYPE_STRING,
643
  HV_DISK_TYPE: VTYPE_STRING,
644
  HV_KVM_CDROM_DISK_TYPE: VTYPE_STRING,
645
  HV_VNC_PASSWORD_FILE: VTYPE_STRING,
646
  HV_VNC_BIND_ADDRESS: VTYPE_STRING,
647
  HV_VNC_TLS: VTYPE_BOOL,
648
  HV_VNC_X509: VTYPE_STRING,
649
  HV_VNC_X509_VERIFY: VTYPE_BOOL,
650
  HV_KVM_SPICE_BIND: VTYPE_STRING,
651
  HV_KVM_SPICE_IP_VERSION: VTYPE_INT,
652
  HV_KVM_SPICE_PASSWORD_FILE: VTYPE_STRING,
653
  HV_KVM_SPICE_LOSSLESS_IMG_COMPR: VTYPE_STRING,
654
  HV_KVM_SPICE_JPEG_IMG_COMPR: VTYPE_STRING,
655
  HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR: VTYPE_STRING,
656
  HV_KVM_SPICE_STREAMING_VIDEO_DETECTION: VTYPE_STRING,
657
  HV_KVM_SPICE_AUDIO_COMPR: VTYPE_BOOL,
658
  HV_KVM_SPICE_USE_TLS: VTYPE_BOOL,
659
  HV_KVM_SPICE_TLS_CIPHERS: VTYPE_STRING,
660
  HV_KVM_SPICE_USE_VDAGENT: VTYPE_BOOL,
661
  HV_ACPI: VTYPE_BOOL,
662
  HV_PAE: VTYPE_BOOL,
663
  HV_USE_BOOTLOADER: VTYPE_BOOL,
664
  HV_BOOTLOADER_PATH: VTYPE_STRING,
665
  HV_BOOTLOADER_ARGS: VTYPE_STRING,
666
  HV_KERNEL_PATH: VTYPE_STRING,
667
  HV_KERNEL_ARGS: VTYPE_STRING,
668
  HV_INITRD_PATH: VTYPE_STRING,
669
  HV_ROOT_PATH: VTYPE_MAYBE_STRING,
670
  HV_SERIAL_CONSOLE: VTYPE_BOOL,
671
  HV_SERIAL_SPEED: VTYPE_INT,
672
  HV_USB_MOUSE: VTYPE_STRING,
673
  HV_KEYMAP: VTYPE_STRING,
674
  HV_DEVICE_MODEL: VTYPE_STRING,
675
  HV_INIT_SCRIPT: VTYPE_STRING,
676
  HV_MIGRATION_PORT: VTYPE_INT,
677
  HV_MIGRATION_BANDWIDTH: VTYPE_INT,
678
  HV_MIGRATION_DOWNTIME: VTYPE_INT,
679
  HV_MIGRATION_MODE: VTYPE_STRING,
680
  HV_USE_LOCALTIME: VTYPE_BOOL,
681
  HV_DISK_CACHE: VTYPE_STRING,
682
  HV_SECURITY_MODEL: VTYPE_STRING,
683
  HV_SECURITY_DOMAIN: VTYPE_STRING,
684
  HV_KVM_FLAG: VTYPE_STRING,
685
  HV_VHOST_NET: VTYPE_BOOL,
686
  HV_KVM_USE_CHROOT: VTYPE_BOOL,
687
  HV_CPU_MASK: VTYPE_STRING,
688
  HV_MEM_PATH: VTYPE_STRING,
689
  HV_PASSTHROUGH: VTYPE_STRING,
690
  HV_BLOCKDEV_PREFIX: VTYPE_STRING,
691
  HV_REBOOT_BEHAVIOR: VTYPE_STRING,
692
  HV_CPU_TYPE: VTYPE_STRING,
693
  HV_CPU_CAP: VTYPE_INT,
694
  HV_CPU_WEIGHT: VTYPE_INT,
695
  HV_CPU_CORES: VTYPE_INT,
696
  HV_CPU_THREADS: VTYPE_INT,
697
  HV_CPU_SOCKETS: VTYPE_INT,
698
  HV_SOUNDHW: VTYPE_STRING,
699
  HV_USB_DEVICES: VTYPE_STRING,
700
  HV_VGA: VTYPE_STRING,
701
  HV_KVM_EXTRA: VTYPE_STRING,
702
  HV_KVM_MACHINE_VERSION: VTYPE_STRING,
703
  HV_VIF_TYPE: VTYPE_STRING,
704
  HV_VIF_SCRIPT: VTYPE_STRING,
705
  HV_XEN_CMD: VTYPE_STRING,
706
  HV_XEN_CPUID: VTYPE_STRING,
707
  HV_VNET_HDR: VTYPE_BOOL,
708
  HV_VIRIDIAN: VTYPE_BOOL,
709
  }
710

    
711
HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
712

    
713
HVS_PARAMETER_TITLES = {
714
  HV_ACPI: "ACPI",
715
  HV_BOOT_ORDER: "Boot_order",
716
  HV_CDROM_IMAGE_PATH: "CDROM_image_path",
717
  HV_DISK_TYPE: "Disk_type",
718
  HV_INITRD_PATH: "Initrd_path",
719
  HV_KERNEL_PATH: "Kernel_path",
720
  HV_NIC_TYPE: "NIC_type",
721
  HV_PAE: "PAE",
722
  HV_VNC_BIND_ADDRESS: "VNC_bind_address",
723
  HV_PASSTHROUGH: "pci_pass",
724
  HV_CPU_TYPE: "cpu_type",
725
  }
726

    
727
# Migration statuses
728
HV_MIGRATION_COMPLETED = "completed"
729
HV_MIGRATION_ACTIVE = "active"
730
HV_MIGRATION_FAILED = "failed"
731
HV_MIGRATION_CANCELLED = "cancelled"
732

    
733
HV_MIGRATION_VALID_STATUSES = compat.UniqueFrozenset([
734
  HV_MIGRATION_COMPLETED,
735
  HV_MIGRATION_ACTIVE,
736
  HV_MIGRATION_FAILED,
737
  HV_MIGRATION_CANCELLED,
738
  ])
739

    
740
HV_MIGRATION_FAILED_STATUSES = compat.UniqueFrozenset([
741
  HV_MIGRATION_FAILED,
742
  HV_MIGRATION_CANCELLED,
743
  ])
744

    
745
# KVM-specific statuses
746
HV_KVM_MIGRATION_VALID_STATUSES = HV_MIGRATION_VALID_STATUSES
747

    
748
# Node info keys
749
HV_NODEINFO_KEY_VERSION = "hv_version"
750

    
751
# Hypervisor state
752
HVST_MEMORY_TOTAL = "mem_total"
753
HVST_MEMORY_NODE = "mem_node"
754
HVST_MEMORY_HV = "mem_hv"
755
HVST_CPU_TOTAL = "cpu_total"
756
HVST_CPU_NODE = "cpu_node"
757

    
758
HVST_DEFAULTS = {
759
  HVST_MEMORY_TOTAL: 0,
760
  HVST_MEMORY_NODE: 0,
761
  HVST_MEMORY_HV: 0,
762
  HVST_CPU_TOTAL: 1,
763
  HVST_CPU_NODE: 1,
764
  }
765

    
766
HVSTS_PARAMETER_TYPES = {
767
  HVST_MEMORY_TOTAL: VTYPE_INT,
768
  HVST_MEMORY_NODE: VTYPE_INT,
769
  HVST_MEMORY_HV: VTYPE_INT,
770
  HVST_CPU_TOTAL: VTYPE_INT,
771
  HVST_CPU_NODE: VTYPE_INT,
772
  }
773

    
774
HVSTS_PARAMETERS = frozenset(HVSTS_PARAMETER_TYPES.keys())
775

    
776
# Disk state
777
DS_DISK_TOTAL = "disk_total"
778
DS_DISK_RESERVED = "disk_reserved"
779
DS_DISK_OVERHEAD = "disk_overhead"
780

    
781
DS_DEFAULTS = {
782
  DS_DISK_TOTAL: 0,
783
  DS_DISK_RESERVED: 0,
784
  DS_DISK_OVERHEAD: 0,
785
  }
786

    
787
ISPEC_MEM_SIZE = _constants.ISPEC_MEM_SIZE
788
ISPEC_CPU_COUNT = _constants.ISPEC_CPU_COUNT
789
ISPEC_DISK_COUNT = _constants.ISPEC_DISK_COUNT
790
ISPEC_DISK_SIZE = _constants.ISPEC_DISK_SIZE
791
ISPEC_NIC_COUNT = _constants.ISPEC_NIC_COUNT
792
ISPEC_SPINDLE_USE = _constants.ISPEC_SPINDLE_USE
793
ISPECS_PARAMETER_TYPES = _constants.ISPECS_PARAMETER_TYPES
794
ISPECS_PARAMETERS = _constants.ISPECS_PARAMETERS
795

    
796
ISPECS_MINMAX = _constants.ISPECS_MINMAX
797
ISPECS_MIN = _constants.ISPECS_MIN
798
ISPECS_MAX = _constants.ISPECS_MAX
799
ISPECS_STD = _constants.ISPECS_STD
800
IPOLICY_DTS = _constants.IPOLICY_DTS
801
IPOLICY_VCPU_RATIO = _constants.IPOLICY_VCPU_RATIO
802
IPOLICY_SPINDLE_RATIO = _constants.IPOLICY_SPINDLE_RATIO
803
ISPECS_MINMAX_KEYS = _constants.ISPECS_MINMAX_KEYS
804
IPOLICY_PARAMETERS = _constants.IPOLICY_PARAMETERS
805
IPOLICY_ALL_KEYS = _constants.IPOLICY_ALL_KEYS
806

    
807
ND_OOB_PROGRAM = _constants.ND_OOB_PROGRAM
808
ND_SPINDLE_COUNT = _constants.ND_SPINDLE_COUNT
809
ND_EXCLUSIVE_STORAGE = _constants.ND_EXCLUSIVE_STORAGE
810
ND_OVS = _constants.ND_OVS
811
ND_OVS_NAME = _constants.ND_OVS_NAME
812
ND_OVS_LINK = _constants.ND_OVS_LINK
813

    
814
NDS_PARAMETER_TYPES = _constants.NDS_PARAMETER_TYPES
815
NDS_PARAMETERS = _constants.NDS_PARAMETERS
816
NDS_PARAMETER_TITLES = _constants.NDS_PARAMETER_TITLES
817
DSS_PARAMETER_TYPES = {
818
  DS_DISK_TOTAL: VTYPE_INT,
819
  DS_DISK_RESERVED: VTYPE_INT,
820
  DS_DISK_OVERHEAD: VTYPE_INT,
821
  }
822

    
823
DSS_PARAMETERS = frozenset(DSS_PARAMETER_TYPES.keys())
824
DS_VALID_TYPES = compat.UniqueFrozenset([DT_PLAIN])
825

    
826
# Backend parameter names
827
BE_MEMORY = "memory" # deprecated and replaced by max and min mem
828
BE_MAXMEM = "maxmem"
829
BE_MINMEM = "minmem"
830
BE_VCPUS = "vcpus"
831
BE_AUTO_BALANCE = "auto_balance"
832
BE_ALWAYS_FAILOVER = "always_failover"
833
BE_SPINDLE_USE = "spindle_use"
834

    
835
BES_PARAMETER_TYPES = {
836
  BE_MAXMEM: VTYPE_SIZE,
837
  BE_MINMEM: VTYPE_SIZE,
838
  BE_VCPUS: VTYPE_INT,
839
  BE_AUTO_BALANCE: VTYPE_BOOL,
840
  BE_ALWAYS_FAILOVER: VTYPE_BOOL,
841
  BE_SPINDLE_USE: VTYPE_INT,
842
  }
843

    
844
BES_PARAMETER_TITLES = {
845
  BE_AUTO_BALANCE: "Auto_balance",
846
  BE_MAXMEM: "ConfigMaxMem",
847
  BE_MINMEM: "ConfigMinMem",
848
  BE_VCPUS: "ConfigVCPUs",
849
  }
850

    
851
BES_PARAMETER_COMPAT = {
852
  BE_MEMORY: VTYPE_SIZE,
853
  }
854
BES_PARAMETER_COMPAT.update(BES_PARAMETER_TYPES)
855

    
856
BES_PARAMETERS = frozenset(BES_PARAMETER_TYPES.keys())
857

    
858
# Logical Disks parameters
859
LDP_RESYNC_RATE = "resync-rate"
860
LDP_STRIPES = "stripes"
861
LDP_BARRIERS = "disabled-barriers"
862
LDP_NO_META_FLUSH = "disable-meta-flush"
863
LDP_DEFAULT_METAVG = "default-metavg"
864
LDP_DISK_CUSTOM = "disk-custom"
865
LDP_NET_CUSTOM = "net-custom"
866
LDP_PROTOCOL = "protocol"
867
LDP_DYNAMIC_RESYNC = "dynamic-resync"
868
LDP_PLAN_AHEAD = "c-plan-ahead"
869
LDP_FILL_TARGET = "c-fill-target"
870
LDP_DELAY_TARGET = "c-delay-target"
871
LDP_MAX_RATE = "c-max-rate"
872
LDP_MIN_RATE = "c-min-rate"
873
LDP_POOL = "pool"
874
LDP_ACCESS = "access"
875
DISK_LD_TYPES = {
876
  LDP_RESYNC_RATE: VTYPE_INT,
877
  LDP_STRIPES: VTYPE_INT,
878
  LDP_BARRIERS: VTYPE_STRING,
879
  LDP_NO_META_FLUSH: VTYPE_BOOL,
880
  LDP_DEFAULT_METAVG: VTYPE_STRING,
881
  LDP_DISK_CUSTOM: VTYPE_STRING,
882
  LDP_NET_CUSTOM: VTYPE_STRING,
883
  LDP_PROTOCOL: VTYPE_STRING,
884
  LDP_DYNAMIC_RESYNC: VTYPE_BOOL,
885
  LDP_PLAN_AHEAD: VTYPE_INT,
886
  LDP_FILL_TARGET: VTYPE_INT,
887
  LDP_DELAY_TARGET: VTYPE_INT,
888
  LDP_MAX_RATE: VTYPE_INT,
889
  LDP_MIN_RATE: VTYPE_INT,
890
  LDP_POOL: VTYPE_STRING,
891
  LDP_ACCESS: VTYPE_STRING,
892
  }
893
DISK_LD_PARAMETERS = frozenset(DISK_LD_TYPES.keys())
894

    
895
# Disk template parameters (can be set/changed by the user via gnt-cluster and
896
# gnt-group)
897
DRBD_RESYNC_RATE = "resync-rate"
898
DRBD_DATA_STRIPES = "data-stripes"
899
DRBD_META_STRIPES = "meta-stripes"
900
DRBD_DISK_BARRIERS = "disk-barriers"
901
DRBD_META_BARRIERS = "meta-barriers"
902
DRBD_DEFAULT_METAVG = "metavg"
903
DRBD_DISK_CUSTOM = "disk-custom"
904
DRBD_NET_CUSTOM = "net-custom"
905
DRBD_PROTOCOL = "protocol"
906
DRBD_DYNAMIC_RESYNC = "dynamic-resync"
907
DRBD_PLAN_AHEAD = "c-plan-ahead"
908
DRBD_FILL_TARGET = "c-fill-target"
909
DRBD_DELAY_TARGET = "c-delay-target"
910
DRBD_MAX_RATE = "c-max-rate"
911
DRBD_MIN_RATE = "c-min-rate"
912
LV_STRIPES = "stripes"
913
RBD_POOL = "pool"
914
RBD_ACCESS = "access"
915
DISK_DT_TYPES = {
916
  DRBD_RESYNC_RATE: VTYPE_INT,
917
  DRBD_DATA_STRIPES: VTYPE_INT,
918
  DRBD_META_STRIPES: VTYPE_INT,
919
  DRBD_DISK_BARRIERS: VTYPE_STRING,
920
  DRBD_META_BARRIERS: VTYPE_BOOL,
921
  DRBD_DEFAULT_METAVG: VTYPE_STRING,
922
  DRBD_DISK_CUSTOM: VTYPE_STRING,
923
  DRBD_NET_CUSTOM: VTYPE_STRING,
924
  DRBD_PROTOCOL: VTYPE_STRING,
925
  DRBD_DYNAMIC_RESYNC: VTYPE_BOOL,
926
  DRBD_PLAN_AHEAD: VTYPE_INT,
927
  DRBD_FILL_TARGET: VTYPE_INT,
928
  DRBD_DELAY_TARGET: VTYPE_INT,
929
  DRBD_MAX_RATE: VTYPE_INT,
930
  DRBD_MIN_RATE: VTYPE_INT,
931
  LV_STRIPES: VTYPE_INT,
932
  RBD_POOL: VTYPE_STRING,
933
  RBD_ACCESS: VTYPE_STRING,
934
  }
935

    
936
DISK_DT_PARAMETERS = frozenset(DISK_DT_TYPES.keys())
937

    
938
# dynamic disk parameters
939
DDP_LOCAL_IP = "local-ip"
940
DDP_REMOTE_IP = "remote-ip"
941
DDP_PORT = "port"
942
DDP_LOCAL_MINOR = "local-minor"
943
DDP_REMOTE_MINOR = "remote-minor"
944

    
945
# OOB supported commands
946
OOB_POWER_ON = _constants.OOB_POWER_ON
947
OOB_POWER_OFF = _constants.OOB_POWER_OFF
948
OOB_POWER_CYCLE = _constants.OOB_POWER_CYCLE
949
OOB_POWER_STATUS = _constants.OOB_POWER_STATUS
950
OOB_HEALTH = _constants.OOB_HEALTH
951
OOB_COMMANDS = _constants.OOB_COMMANDS
952

    
953
OOB_POWER_STATUS_POWERED = _constants.OOB_POWER_STATUS_POWERED
954

    
955
OOB_TIMEOUT = _constants.OOB_TIMEOUT
956
OOB_POWER_DELAY = _constants.OOB_POWER_DELAY
957

    
958
OOB_STATUS_OK = _constants.OOB_STATUS_OK
959
OOB_STATUS_WARNING = _constants.OOB_STATUS_WARNING
960
OOB_STATUS_CRITICAL = _constants.OOB_STATUS_CRITICAL
961
OOB_STATUS_UNKNOWN = _constants.OOB_STATUS_UNKNOWN
962
OOB_STATUSES = _constants.OOB_STATUSES
963

    
964
# Instance Parameters Profile
965
PP_DEFAULT = "default"
966

    
967
# NIC_* constants are used inside the ganeti config
968
NIC_MODE = _constants.NIC_MODE
969
NIC_LINK = _constants.NIC_LINK
970
NIC_VLAN = _constants.NIC_VLAN
971

    
972
NIC_MODE_BRIDGED = _constants.NIC_MODE_BRIDGED
973
NIC_MODE_ROUTED = _constants.NIC_MODE_ROUTED
974
NIC_MODE_OVS = _constants.NIC_MODE_OVS
975
NIC_IP_POOL = _constants.NIC_IP_POOL
976
NIC_VALID_MODES = _constants.NIC_VALID_MODES
977

    
978
RESERVE_ACTION = "reserve"
979
RELEASE_ACTION = "release"
980

    
981
NICS_PARAMETER_TYPES = {
982
  NIC_MODE: VTYPE_STRING,
983
  NIC_LINK: VTYPE_STRING,
984
  NIC_VLAN: VTYPE_MAYBE_STRING,
985
  }
986

    
987
NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys())
988

    
989
# IDISK_* constants are used in opcodes, to create/change disks
990
IDISK_SIZE = "size"
991
IDISK_SPINDLES = "spindles"
992
IDISK_MODE = "mode"
993
IDISK_ADOPT = "adopt"
994
IDISK_VG = "vg"
995
IDISK_METAVG = "metavg"
996
IDISK_PROVIDER = "provider"
997
IDISK_NAME = "name"
998
IDISK_PARAMS_TYPES = {
999
  IDISK_SIZE: VTYPE_SIZE,
1000
  IDISK_SPINDLES: VTYPE_INT,
1001
  IDISK_MODE: VTYPE_STRING,
1002
  IDISK_ADOPT: VTYPE_STRING,
1003
  IDISK_VG: VTYPE_STRING,
1004
  IDISK_METAVG: VTYPE_STRING,
1005
  IDISK_PROVIDER: VTYPE_STRING,
1006
  IDISK_NAME: VTYPE_MAYBE_STRING,
1007
  }
1008
IDISK_PARAMS = frozenset(IDISK_PARAMS_TYPES.keys())
1009

    
1010
# INIC_* constants are used in opcodes, to create/change nics
1011
INIC_MAC = "mac"
1012
INIC_IP = "ip"
1013
INIC_MODE = "mode"
1014
INIC_LINK = "link"
1015
INIC_NETWORK = "network"
1016
INIC_NAME = "name"
1017
INIC_VLAN = "vlan"
1018
INIC_BRIDGE = "bridge"
1019
INIC_PARAMS_TYPES = {
1020
  INIC_IP: VTYPE_MAYBE_STRING,
1021
  INIC_LINK: VTYPE_STRING,
1022
  INIC_MAC: VTYPE_STRING,
1023
  INIC_MODE: VTYPE_STRING,
1024
  INIC_NETWORK: VTYPE_MAYBE_STRING,
1025
  INIC_NAME: VTYPE_MAYBE_STRING,
1026
  INIC_VLAN: VTYPE_MAYBE_STRING,
1027
  INIC_BRIDGE: VTYPE_MAYBE_STRING
1028
  }
1029
INIC_PARAMS = frozenset(INIC_PARAMS_TYPES.keys())
1030

    
1031
# Hypervisor constants
1032
HT_XEN_PVM = _constants.HT_XEN_PVM
1033
HT_FAKE = _constants.HT_FAKE
1034
HT_XEN_HVM = _constants.HT_XEN_HVM
1035
HT_KVM = _constants.HT_KVM
1036
HT_CHROOT = _constants.HT_CHROOT
1037
HT_LXC = _constants.HT_LXC
1038
HYPER_TYPES = _constants.HYPER_TYPES
1039
HTS_REQ_PORT = _constants.HTS_REQ_PORT
1040

    
1041
VNC_BASE_PORT = 5900
1042
VNC_DEFAULT_BIND_ADDRESS = IP4_ADDRESS_ANY
1043

    
1044
# NIC types
1045
HT_NIC_RTL8139 = "rtl8139"
1046
HT_NIC_NE2K_PCI = "ne2k_pci"
1047
HT_NIC_NE2K_ISA = "ne2k_isa"
1048
HT_NIC_I82551 = "i82551"
1049
HT_NIC_I85557B = "i82557b"
1050
HT_NIC_I8259ER = "i82559er"
1051
HT_NIC_PCNET = "pcnet"
1052
HT_NIC_E1000 = "e1000"
1053
HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
1054

    
1055
HT_HVM_VALID_NIC_TYPES = compat.UniqueFrozenset([
1056
  HT_NIC_RTL8139,
1057
  HT_NIC_NE2K_PCI,
1058
  HT_NIC_E1000,
1059
  HT_NIC_NE2K_ISA,
1060
  HT_NIC_PARAVIRTUAL,
1061
  ])
1062
HT_KVM_VALID_NIC_TYPES = compat.UniqueFrozenset([
1063
  HT_NIC_RTL8139,
1064
  HT_NIC_NE2K_PCI,
1065
  HT_NIC_NE2K_ISA,
1066
  HT_NIC_I82551,
1067
  HT_NIC_I85557B,
1068
  HT_NIC_I8259ER,
1069
  HT_NIC_PCNET,
1070
  HT_NIC_E1000,
1071
  HT_NIC_PARAVIRTUAL,
1072
  ])
1073

    
1074
# Vif types
1075
# default vif type in xen-hvm
1076
HT_HVM_VIF_IOEMU = "ioemu"
1077
HT_HVM_VIF_VIF = "vif"
1078
HT_HVM_VALID_VIF_TYPES = compat.UniqueFrozenset([
1079
  HT_HVM_VIF_IOEMU,
1080
  HT_HVM_VIF_VIF,
1081
  ])
1082

    
1083
# Disk types
1084
HT_DISK_IOEMU = "ioemu"
1085
HT_DISK_IDE = "ide"
1086
HT_DISK_SCSI = "scsi"
1087
HT_DISK_SD = "sd"
1088
HT_DISK_MTD = "mtd"
1089
HT_DISK_PFLASH = "pflash"
1090

    
1091
HT_CACHE_DEFAULT = "default"
1092
HT_CACHE_NONE = "none"
1093
HT_CACHE_WTHROUGH = "writethrough"
1094
HT_CACHE_WBACK = "writeback"
1095
HT_VALID_CACHE_TYPES = compat.UniqueFrozenset([
1096
  HT_CACHE_DEFAULT,
1097
  HT_CACHE_NONE,
1098
  HT_CACHE_WTHROUGH,
1099
  HT_CACHE_WBACK,
1100
  ])
1101

    
1102
HT_HVM_VALID_DISK_TYPES = compat.UniqueFrozenset([
1103
  HT_DISK_PARAVIRTUAL,
1104
  HT_DISK_IOEMU,
1105
  ])
1106
HT_KVM_VALID_DISK_TYPES = compat.UniqueFrozenset([
1107
  HT_DISK_PARAVIRTUAL,
1108
  HT_DISK_IDE,
1109
  HT_DISK_SCSI,
1110
  HT_DISK_SD,
1111
  HT_DISK_MTD,
1112
  HT_DISK_PFLASH,
1113
  ])
1114

    
1115
# Mouse types:
1116
HT_MOUSE_MOUSE = "mouse"
1117
HT_MOUSE_TABLET = "tablet"
1118

    
1119
HT_KVM_VALID_MOUSE_TYPES = compat.UniqueFrozenset([
1120
  HT_MOUSE_MOUSE,
1121
  HT_MOUSE_TABLET,
1122
  ])
1123

    
1124
# Boot order
1125
HT_BO_FLOPPY = "floppy"
1126
HT_BO_CDROM = "cdrom"
1127
HT_BO_DISK = "disk"
1128
HT_BO_NETWORK = "network"
1129

    
1130
HT_KVM_VALID_BO_TYPES = compat.UniqueFrozenset([
1131
  HT_BO_FLOPPY,
1132
  HT_BO_CDROM,
1133
  HT_BO_DISK,
1134
  HT_BO_NETWORK,
1135
  ])
1136

    
1137
# SPICE lossless image compression options
1138
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ = "auto_glz"
1139
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ = "auto_lz"
1140
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC = "quic"
1141
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ = "glz"
1142
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ = "lz"
1143
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF = "off"
1144

    
1145
HT_KVM_SPICE_VALID_LOSSLESS_IMG_COMPR_OPTIONS = compat.UniqueFrozenset([
1146
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ,
1147
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ,
1148
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC,
1149
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ,
1150
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ,
1151
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF,
1152
  ])
1153

    
1154
# SPICE lossy image compression options (valid for both jpeg and zlib-glz)
1155
HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO = "auto"
1156
HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER = "never"
1157
HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS = "always"
1158

    
1159
HT_KVM_SPICE_VALID_LOSSY_IMG_COMPR_OPTIONS = compat.UniqueFrozenset([
1160
  HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO,
1161
  HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER,
1162
  HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS,
1163
  ])
1164

    
1165
# SPICE video stream detection
1166
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF = "off"
1167
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL = "all"
1168
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER = "filter"
1169

    
1170
HT_KVM_SPICE_VALID_VIDEO_STREAM_DETECTION_OPTIONS = compat.UniqueFrozenset([
1171
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF,
1172
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL,
1173
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER,
1174
  ])
1175

    
1176
# Security models
1177
HT_SM_NONE = "none"
1178
HT_SM_USER = "user"
1179
HT_SM_POOL = "pool"
1180

    
1181
HT_KVM_VALID_SM_TYPES = compat.UniqueFrozenset([
1182
  HT_SM_NONE,
1183
  HT_SM_USER,
1184
  HT_SM_POOL,
1185
  ])
1186

    
1187
# Kvm flag values
1188
HT_KVM_ENABLED = "enabled"
1189
HT_KVM_DISABLED = "disabled"
1190

    
1191
HT_KVM_FLAG_VALUES = compat.UniqueFrozenset([HT_KVM_ENABLED, HT_KVM_DISABLED])
1192

    
1193
# Migration type
1194
HT_MIGRATION_LIVE = _constants.HT_MIGRATION_LIVE
1195
HT_MIGRATION_NONLIVE = _constants.HT_MIGRATION_NONLIVE
1196
HT_MIGRATION_MODES = _constants.HT_MIGRATION_MODES
1197

    
1198
# Cluster Verify steps
1199
VERIFY_NPLUSONE_MEM = _constants.VERIFY_NPLUSONE_MEM
1200
VERIFY_OPTIONAL_CHECKS = _constants.VERIFY_OPTIONAL_CHECKS
1201

    
1202
# Cluster Verify error classes
1203
CV_TCLUSTER = _constants.CV_TCLUSTER
1204
CV_TGROUP = _constants.CV_TGROUP
1205
CV_TNODE = _constants.CV_TNODE
1206
CV_TINSTANCE = _constants.CV_TINSTANCE
1207

    
1208
# Cluster Verify error codes and documentation
1209
CV_ECLUSTERCFG = _constants.CV_ECLUSTERCFG
1210
CV_ECLUSTERCERT = _constants.CV_ECLUSTERCERT
1211
CV_ECLUSTERFILECHECK = _constants.CV_ECLUSTERFILECHECK
1212
CV_ECLUSTERDANGLINGNODES = _constants.CV_ECLUSTERDANGLINGNODES
1213
CV_ECLUSTERDANGLINGINST = _constants.CV_ECLUSTERDANGLINGINST
1214
CV_EGROUPDIFFERENTPVSIZE = _constants.CV_EGROUPDIFFERENTPVSIZE
1215
CV_EINSTANCEBADNODE = _constants.CV_EINSTANCEBADNODE
1216
CV_EINSTANCEDOWN = _constants.CV_EINSTANCEDOWN
1217
CV_EINSTANCELAYOUT = _constants.CV_EINSTANCELAYOUT
1218
CV_EINSTANCEMISSINGDISK = _constants.CV_EINSTANCEMISSINGDISK
1219
CV_EINSTANCEFAULTYDISK = _constants.CV_EINSTANCEFAULTYDISK
1220
CV_EINSTANCEWRONGNODE = _constants.CV_EINSTANCEWRONGNODE
1221
CV_EINSTANCESPLITGROUPS = _constants.CV_EINSTANCESPLITGROUPS
1222
CV_EINSTANCEPOLICY = _constants.CV_EINSTANCEPOLICY
1223
CV_EINSTANCEUNSUITABLENODE = _constants.CV_EINSTANCEUNSUITABLENODE
1224
CV_EINSTANCEMISSINGCFGPARAMETER = _constants.CV_EINSTANCEMISSINGCFGPARAMETER
1225
CV_ENODEDRBD = _constants.CV_ENODEDRBD
1226
CV_ENODEDRBDVERSION = _constants.CV_ENODEDRBDVERSION
1227
CV_ENODEDRBDHELPER = _constants.CV_ENODEDRBDHELPER
1228
CV_ENODEFILECHECK = _constants.CV_ENODEFILECHECK
1229
CV_ENODEHOOKS = _constants.CV_ENODEHOOKS
1230
CV_ENODEHV = _constants.CV_ENODEHV
1231
CV_ENODELVM = _constants.CV_ENODELVM
1232
CV_ENODEN1 = _constants.CV_ENODEN1
1233
CV_ENODENET = _constants.CV_ENODENET
1234
CV_ENODEOS = _constants.CV_ENODEOS
1235
CV_ENODEORPHANINSTANCE = _constants.CV_ENODEORPHANINSTANCE
1236
CV_ENODEORPHANLV = _constants.CV_ENODEORPHANLV
1237
CV_ENODERPC = _constants.CV_ENODERPC
1238
CV_ENODESSH = _constants.CV_ENODESSH
1239
CV_ENODEVERSION = _constants.CV_ENODEVERSION
1240
CV_ENODESETUP = _constants.CV_ENODESETUP
1241
CV_ENODETIME = _constants.CV_ENODETIME
1242
CV_ENODEOOBPATH = _constants.CV_ENODEOOBPATH
1243
CV_ENODEUSERSCRIPTS = _constants.CV_ENODEUSERSCRIPTS
1244
CV_ENODEFILESTORAGEPATHS = _constants.CV_ENODEFILESTORAGEPATHS
1245
CV_ENODEFILESTORAGEPATHUNUSABLE = _constants.CV_ENODEFILESTORAGEPATHUNUSABLE
1246
CV_ENODESHAREDFILESTORAGEPATHUNUSABLE = \
1247
  _constants.CV_ENODESHAREDFILESTORAGEPATHUNUSABLE
1248

    
1249
CV_ALL_ECODES = _constants.CV_ALL_ECODES
1250
CV_ALL_ECODES_STRINGS = _constants.CV_ALL_ECODES_STRINGS
1251

    
1252
# Node verify constants
1253
NV_BRIDGES = "bridges"
1254
NV_DRBDHELPER = "drbd-helper"
1255
NV_DRBDVERSION = "drbd-version"
1256
NV_DRBDLIST = "drbd-list"
1257
NV_EXCLUSIVEPVS = "exclusive-pvs"
1258
NV_FILELIST = "filelist"
1259
NV_ACCEPTED_STORAGE_PATHS = "allowed-file-storage-paths"
1260
NV_FILE_STORAGE_PATH = "file-storage-path"
1261
NV_SHARED_FILE_STORAGE_PATH = "shared-file-storage-path"
1262
NV_HVINFO = "hvinfo"
1263
NV_HVPARAMS = "hvparms"
1264
NV_HYPERVISOR = "hypervisor"
1265
NV_INSTANCELIST = "instancelist"
1266
NV_LVLIST = "lvlist"
1267
NV_MASTERIP = "master-ip"
1268
NV_NODELIST = "nodelist"
1269
NV_NODENETTEST = "node-net-test"
1270
NV_NODESETUP = "nodesetup"
1271
NV_OOB_PATHS = "oob-paths"
1272
NV_OSLIST = "oslist"
1273
NV_PVLIST = "pvlist"
1274
NV_TIME = "time"
1275
NV_USERSCRIPTS = "user-scripts"
1276
NV_VERSION = "version"
1277
NV_VGLIST = "vglist"
1278
NV_VMNODES = "vmnodes"
1279

    
1280
# Instance status
1281
INSTST_RUNNING = _constants.INSTST_RUNNING
1282
INSTST_ADMINDOWN = _constants.INSTST_ADMINDOWN
1283
INSTST_ADMINOFFLINE = _constants.INSTST_ADMINOFFLINE
1284
INSTST_NODEOFFLINE = _constants.INSTST_NODEOFFLINE
1285
INSTST_NODEDOWN = _constants.INSTST_NODEDOWN
1286
INSTST_WRONGNODE = _constants.INSTST_WRONGNODE
1287
INSTST_ERRORUP = _constants.INSTST_ERRORUP
1288
INSTST_ERRORDOWN = _constants.INSTST_ERRORDOWN
1289
INSTST_ALL = _constants.INSTST_ALL
1290

    
1291
# Admin states
1292
ADMINST_UP = _constants.ADMINST_UP
1293
ADMINST_DOWN = _constants.ADMINST_DOWN
1294
ADMINST_OFFLINE = _constants.ADMINST_OFFLINE
1295
ADMINST_ALL = _constants.ADMINST_ALL
1296

    
1297
# Node roles
1298
NR_REGULAR = _constants.NR_REGULAR
1299
NR_MASTER = _constants.NR_MASTER
1300
NR_MCANDIDATE = _constants.NR_MCANDIDATE
1301
NR_DRAINED = _constants.NR_DRAINED
1302
NR_OFFLINE = _constants.NR_OFFLINE
1303
NR_ALL = _constants.NR_ALL
1304

    
1305
# SSL certificate check constants (in days)
1306
SSL_CERT_EXPIRATION_WARN = 30
1307
SSL_CERT_EXPIRATION_ERROR = 7
1308

    
1309
# Allocator framework constants
1310
IALLOCATOR_VERSION = _constants.IALLOCATOR_VERSION
1311
IALLOCATOR_DIR_IN = _constants.IALLOCATOR_DIR_IN
1312
IALLOCATOR_DIR_OUT = _constants.IALLOCATOR_DIR_OUT
1313
VALID_IALLOCATOR_DIRECTIONS = _constants.VALID_IALLOCATOR_DIRECTIONS
1314

    
1315
IALLOCATOR_MODE_ALLOC = _constants.IALLOCATOR_MODE_ALLOC
1316
IALLOCATOR_MODE_RELOC = _constants.IALLOCATOR_MODE_RELOC
1317
IALLOCATOR_MODE_CHG_GROUP = _constants.IALLOCATOR_MODE_CHG_GROUP
1318
IALLOCATOR_MODE_NODE_EVAC = _constants.IALLOCATOR_MODE_NODE_EVAC
1319
IALLOCATOR_MODE_MULTI_ALLOC = _constants.IALLOCATOR_MODE_MULTI_ALLOC
1320
VALID_IALLOCATOR_MODES = _constants.VALID_IALLOCATOR_MODES
1321

    
1322
IALLOCATOR_SEARCH_PATH = _constants.IALLOCATOR_SEARCH_PATH
1323
DEFAULT_IALLOCATOR_SHORTCUT = _constants.DEFAULT_IALLOCATOR_SHORTCUT
1324

    
1325
# Node evacuation
1326
NODE_EVAC_PRI = _constants.NODE_EVAC_PRI
1327
NODE_EVAC_SEC = _constants.NODE_EVAC_SEC
1328
NODE_EVAC_ALL = _constants.NODE_EVAC_ALL
1329
NODE_EVAC_MODES = _constants.NODE_EVAC_MODES
1330

    
1331
# Job queue
1332
JOB_QUEUE_VERSION = 1
1333
JOB_QUEUE_SIZE_HARD_LIMIT = 5000
1334
JOB_QUEUE_FILES_PERMS = 0640
1335

    
1336
JOB_ID_TEMPLATE = r"\d+"
1337
JOB_FILE_RE = re.compile(r"^job-(%s)$" % JOB_ID_TEMPLATE)
1338

    
1339
# unchanged job return
1340
JOB_NOTCHANGED = "nochange"
1341

    
1342
# Job status
1343
JOB_STATUS_QUEUED = _constants.JOB_STATUS_QUEUED
1344
JOB_STATUS_WAITING = _constants.JOB_STATUS_WAITING
1345
JOB_STATUS_CANCELING = _constants.JOB_STATUS_CANCELING
1346
JOB_STATUS_RUNNING = _constants.JOB_STATUS_RUNNING
1347
JOB_STATUS_CANCELED = _constants.JOB_STATUS_CANCELED
1348
JOB_STATUS_SUCCESS = _constants.JOB_STATUS_SUCCESS
1349
JOB_STATUS_ERROR = _constants.JOB_STATUS_ERROR
1350
JOBS_PENDING = _constants.JOBS_PENDING
1351
JOBS_FINALIZED = _constants.JOBS_FINALIZED
1352
JOB_STATUS_ALL = _constants.JOB_STATUS_ALL
1353

    
1354
# OpCode status
1355
# not yet finalized
1356
OP_STATUS_QUEUED = _constants.OP_STATUS_QUEUED
1357
OP_STATUS_WAITING = _constants.OP_STATUS_WAITING
1358
OP_STATUS_CANCELING = _constants.OP_STATUS_CANCELING
1359
OP_STATUS_RUNNING = _constants.OP_STATUS_RUNNING
1360
# finalized
1361
OP_STATUS_CANCELED = _constants.OP_STATUS_CANCELED
1362
OP_STATUS_SUCCESS = _constants.OP_STATUS_SUCCESS
1363
OP_STATUS_ERROR = _constants.OP_STATUS_ERROR
1364
OPS_FINALIZED = _constants.OPS_FINALIZED
1365

    
1366
# OpCode priority
1367
OP_PRIO_LOWEST = _constants.OP_PRIO_LOWEST
1368
OP_PRIO_HIGHEST = _constants.OP_PRIO_HIGHEST
1369
OP_PRIO_LOW = _constants.OP_PRIO_LOW
1370
OP_PRIO_NORMAL = _constants.OP_PRIO_NORMAL
1371
OP_PRIO_HIGH = _constants.OP_PRIO_HIGH
1372
OP_PRIO_SUBMIT_VALID = _constants.OP_PRIO_SUBMIT_VALID
1373
OP_PRIO_DEFAULT = _constants.OP_PRIO_DEFAULT
1374

    
1375
# Lock recalculate mode
1376
LOCKS_REPLACE = "replace"
1377
LOCKS_APPEND = "append"
1378

    
1379
# Lock timeout (sum) before we should go into blocking acquire (still
1380
# can be reset by priority change); computed as max time (10 hours)
1381
# before we should actually go into blocking acquire given that we
1382
# start from default priority level; in seconds
1383
# TODO
1384
LOCK_ATTEMPTS_TIMEOUT = 10 * 3600 / (OP_PRIO_DEFAULT - OP_PRIO_HIGHEST)
1385
LOCK_ATTEMPTS_MAXWAIT = 15.0
1386
LOCK_ATTEMPTS_MINWAIT = 1.0
1387

    
1388
# Execution log types
1389
ELOG_MESSAGE = _constants.ELOG_MESSAGE
1390
ELOG_REMOTE_IMPORT = _constants.ELOG_REMOTE_IMPORT
1391
ELOG_JQUEUE_TEST = _constants.ELOG_JQUEUE_TEST
1392

    
1393
# /etc/hosts modification
1394
ETC_HOSTS_ADD = "add"
1395
ETC_HOSTS_REMOVE = "remove"
1396

    
1397
# Job queue test
1398
JQT_MSGPREFIX = "TESTMSG="
1399
JQT_EXPANDNAMES = "expandnames"
1400
JQT_EXEC = "exec"
1401
JQT_LOGMSG = "logmsg"
1402
JQT_STARTMSG = "startmsg"
1403
JQT_ALL = compat.UniqueFrozenset([
1404
  JQT_EXPANDNAMES,
1405
  JQT_EXEC,
1406
  JQT_LOGMSG,
1407
  JQT_STARTMSG,
1408
  ])
1409

    
1410
# Query resources
1411
QR_CLUSTER = "cluster"
1412
QR_INSTANCE = "instance"
1413
QR_NODE = "node"
1414
QR_LOCK = "lock"
1415
QR_GROUP = "group"
1416
QR_OS = "os"
1417
QR_JOB = "job"
1418
QR_EXPORT = "export"
1419
QR_NETWORK = "network"
1420
QR_EXTSTORAGE = "extstorage"
1421

    
1422
#: List of resources which can be queried using L{opcodes.OpQuery}
1423
QR_VIA_OP = compat.UniqueFrozenset([
1424
  QR_CLUSTER,
1425
  QR_INSTANCE,
1426
  QR_NODE,
1427
  QR_GROUP,
1428
  QR_OS,
1429
  QR_EXPORT,
1430
  QR_NETWORK,
1431
  QR_EXTSTORAGE,
1432
  ])
1433

    
1434
#: List of resources which can be queried using Local UniX Interface
1435
QR_VIA_LUXI = QR_VIA_OP.union([
1436
  QR_LOCK,
1437
  QR_JOB,
1438
  ])
1439

    
1440
#: List of resources which can be queried using RAPI
1441
QR_VIA_RAPI = QR_VIA_LUXI
1442

    
1443
# Query field types
1444
QFT_UNKNOWN = "unknown"
1445
QFT_TEXT = "text"
1446
QFT_BOOL = "bool"
1447
QFT_NUMBER = "number"
1448
QFT_UNIT = "unit"
1449
QFT_TIMESTAMP = "timestamp"
1450
QFT_OTHER = "other"
1451

    
1452
#: All query field types
1453
QFT_ALL = compat.UniqueFrozenset([
1454
  QFT_UNKNOWN,
1455
  QFT_TEXT,
1456
  QFT_BOOL,
1457
  QFT_NUMBER,
1458
  QFT_UNIT,
1459
  QFT_TIMESTAMP,
1460
  QFT_OTHER,
1461
  ])
1462

    
1463
# Query result field status (don't change or reuse values as they're used by
1464
# clients)
1465
#: Normal field status
1466
RS_NORMAL = 0
1467
#: Unknown field
1468
RS_UNKNOWN = 1
1469
#: No data (e.g. RPC error), can be used instead of L{RS_OFFLINE}
1470
RS_NODATA = 2
1471
#: Value unavailable/unsupported for item; if this field is supported
1472
#: but we cannot get the data for the moment, RS_NODATA or
1473
#: RS_OFFLINE should be used
1474
RS_UNAVAIL = 3
1475
#: Resource marked offline
1476
RS_OFFLINE = 4
1477

    
1478
RS_ALL = compat.UniqueFrozenset([
1479
  RS_NORMAL,
1480
  RS_UNKNOWN,
1481
  RS_NODATA,
1482
  RS_UNAVAIL,
1483
  RS_OFFLINE,
1484
  ])
1485

    
1486
#: Dictionary with special field cases and their verbose/terse formatting
1487
RSS_DESCRIPTION = {
1488
  RS_UNKNOWN: ("(unknown)", "??"),
1489
  RS_NODATA: ("(nodata)", "?"),
1490
  RS_OFFLINE: ("(offline)", "*"),
1491
  RS_UNAVAIL: ("(unavail)", "-"),
1492
  }
1493

    
1494
# max dynamic devices
1495
MAX_NICS = 8
1496
MAX_DISKS = 16
1497

    
1498
# SSCONF file prefix
1499
SSCONF_FILEPREFIX = "ssconf_"
1500
# SSCONF keys
1501
SS_CLUSTER_NAME = "cluster_name"
1502
SS_CLUSTER_TAGS = "cluster_tags"
1503
SS_FILE_STORAGE_DIR = "file_storage_dir"
1504
SS_SHARED_FILE_STORAGE_DIR = "shared_file_storage_dir"
1505
SS_MASTER_CANDIDATES = "master_candidates"
1506
SS_MASTER_CANDIDATES_IPS = "master_candidates_ips"
1507
SS_MASTER_IP = "master_ip"
1508
SS_MASTER_NETDEV = "master_netdev"
1509
SS_MASTER_NETMASK = "master_netmask"
1510
SS_MASTER_NODE = "master_node"
1511
SS_NODE_LIST = "node_list"
1512
SS_NODE_PRIMARY_IPS = "node_primary_ips"
1513
SS_NODE_SECONDARY_IPS = "node_secondary_ips"
1514
SS_OFFLINE_NODES = "offline_nodes"
1515
SS_ONLINE_NODES = "online_nodes"
1516
SS_PRIMARY_IP_FAMILY = "primary_ip_family"
1517
SS_INSTANCE_LIST = "instance_list"
1518
SS_RELEASE_VERSION = "release_version"
1519
SS_HYPERVISOR_LIST = "hypervisor_list"
1520
SS_MAINTAIN_NODE_HEALTH = "maintain_node_health"
1521
SS_UID_POOL = "uid_pool"
1522
SS_NODEGROUPS = "nodegroups"
1523
SS_NETWORKS = "networks"
1524

    
1525
# This is not a complete SSCONF key, but the prefix for the hypervisor keys
1526
SS_HVPARAMS_PREF = "hvparams_"
1527

    
1528
# Hvparams keys:
1529
SS_HVPARAMS_XEN_PVM = SS_HVPARAMS_PREF + HT_XEN_PVM
1530
SS_HVPARAMS_XEN_FAKE = SS_HVPARAMS_PREF + HT_FAKE
1531
SS_HVPARAMS_XEN_HVM = SS_HVPARAMS_PREF + HT_XEN_HVM
1532
SS_HVPARAMS_XEN_KVM = SS_HVPARAMS_PREF + HT_KVM
1533
SS_HVPARAMS_XEN_CHROOT = SS_HVPARAMS_PREF + HT_CHROOT
1534
SS_HVPARAMS_XEN_LXC = SS_HVPARAMS_PREF + HT_LXC
1535

    
1536
VALID_SS_HVPARAMS_KEYS = compat.UniqueFrozenset([
1537
  SS_HVPARAMS_XEN_PVM,
1538
  SS_HVPARAMS_XEN_FAKE,
1539
  SS_HVPARAMS_XEN_HVM,
1540
  SS_HVPARAMS_XEN_KVM,
1541
  SS_HVPARAMS_XEN_CHROOT,
1542
  SS_HVPARAMS_XEN_LXC,
1543
  ])
1544

    
1545
SS_FILE_PERMS = 0444
1546

    
1547
# cluster wide default parameters
1548
DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM
1549

    
1550
HVC_DEFAULTS = {
1551
  HT_XEN_PVM: {
1552
    HV_USE_BOOTLOADER: False,
1553
    HV_BOOTLOADER_PATH: XEN_BOOTLOADER,
1554
    HV_BOOTLOADER_ARGS: "",
1555
    HV_KERNEL_PATH: XEN_KERNEL,
1556
    HV_INITRD_PATH: "",
1557
    HV_ROOT_PATH: "/dev/xvda1",
1558
    HV_KERNEL_ARGS: "ro",
1559
    HV_MIGRATION_PORT: 8002,
1560
    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1561
    HV_BLOCKDEV_PREFIX: "sd",
1562
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1563
    HV_CPU_MASK: CPU_PINNING_ALL,
1564
    HV_CPU_CAP: 0,
1565
    HV_CPU_WEIGHT: 256,
1566
    HV_VIF_SCRIPT: "",
1567
    HV_XEN_CMD: XEN_CMD_XM,
1568
    HV_XEN_CPUID: "",
1569
    HV_SOUNDHW: "",
1570
    },
1571
  HT_XEN_HVM: {
1572
    HV_BOOT_ORDER: "cd",
1573
    HV_CDROM_IMAGE_PATH: "",
1574
    HV_NIC_TYPE: HT_NIC_RTL8139,
1575
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1576
    HV_VNC_BIND_ADDRESS: IP4_ADDRESS_ANY,
1577
    HV_VNC_PASSWORD_FILE: pathutils.VNC_PASSWORD_FILE,
1578
    HV_ACPI: True,
1579
    HV_PAE: True,
1580
    HV_KERNEL_PATH: "/usr/lib/xen/boot/hvmloader",
1581
    HV_DEVICE_MODEL: "/usr/lib/xen/bin/qemu-dm",
1582
    HV_MIGRATION_PORT: 8002,
1583
    HV_MIGRATION_MODE: HT_MIGRATION_NONLIVE,
1584
    HV_USE_LOCALTIME: False,
1585
    HV_BLOCKDEV_PREFIX: "hd",
1586
    HV_PASSTHROUGH: "",
1587
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1588
    HV_CPU_MASK: CPU_PINNING_ALL,
1589
    HV_CPU_CAP: 0,
1590
    HV_CPU_WEIGHT: 256,
1591
    HV_VIF_TYPE: HT_HVM_VIF_IOEMU,
1592
    HV_VIF_SCRIPT: "",
1593
    HV_VIRIDIAN: False,
1594
    HV_XEN_CMD: XEN_CMD_XM,
1595
    HV_XEN_CPUID: "",
1596
    HV_SOUNDHW: "",
1597
    },
1598
  HT_KVM: {
1599
    HV_KVM_PATH: KVM_PATH,
1600
    HV_KERNEL_PATH: KVM_KERNEL,
1601
    HV_INITRD_PATH: "",
1602
    HV_KERNEL_ARGS: "ro",
1603
    HV_ROOT_PATH: "/dev/vda1",
1604
    HV_ACPI: True,
1605
    HV_SERIAL_CONSOLE: True,
1606
    HV_SERIAL_SPEED: 38400,
1607
    HV_VNC_BIND_ADDRESS: "",
1608
    HV_VNC_TLS: False,
1609
    HV_VNC_X509: "",
1610
    HV_VNC_X509_VERIFY: False,
1611
    HV_VNC_PASSWORD_FILE: "",
1612
    HV_KVM_SPICE_BIND: "",
1613
    HV_KVM_SPICE_IP_VERSION: IFACE_NO_IP_VERSION_SPECIFIED,
1614
    HV_KVM_SPICE_PASSWORD_FILE: "",
1615
    HV_KVM_SPICE_LOSSLESS_IMG_COMPR: "",
1616
    HV_KVM_SPICE_JPEG_IMG_COMPR: "",
1617
    HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR: "",
1618
    HV_KVM_SPICE_STREAMING_VIDEO_DETECTION: "",
1619
    HV_KVM_SPICE_AUDIO_COMPR: True,
1620
    HV_KVM_SPICE_USE_TLS: False,
1621
    HV_KVM_SPICE_TLS_CIPHERS: OPENSSL_CIPHERS,
1622
    HV_KVM_SPICE_USE_VDAGENT: True,
1623
    HV_KVM_FLOPPY_IMAGE_PATH: "",
1624
    HV_CDROM_IMAGE_PATH: "",
1625
    HV_KVM_CDROM2_IMAGE_PATH: "",
1626
    HV_BOOT_ORDER: HT_BO_DISK,
1627
    HV_NIC_TYPE: HT_NIC_PARAVIRTUAL,
1628
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1629
    HV_KVM_CDROM_DISK_TYPE: "",
1630
    HV_USB_MOUSE: "",
1631
    HV_KEYMAP: "",
1632
    HV_MIGRATION_PORT: 8102,
1633
    HV_MIGRATION_BANDWIDTH: 32, # MiB/s
1634
    HV_MIGRATION_DOWNTIME: 30,  # ms
1635
    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1636
    HV_USE_LOCALTIME: False,
1637
    HV_DISK_CACHE: HT_CACHE_DEFAULT,
1638
    HV_SECURITY_MODEL: HT_SM_NONE,
1639
    HV_SECURITY_DOMAIN: "",
1640
    HV_KVM_FLAG: "",
1641
    HV_VHOST_NET: False,
1642
    HV_KVM_USE_CHROOT: False,
1643
    HV_MEM_PATH: "",
1644
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1645
    HV_CPU_MASK: CPU_PINNING_ALL,
1646
    HV_CPU_TYPE: "",
1647
    HV_CPU_CORES: 0,
1648
    HV_CPU_THREADS: 0,
1649
    HV_CPU_SOCKETS: 0,
1650
    HV_SOUNDHW: "",
1651
    HV_USB_DEVICES: "",
1652
    HV_VGA: "",
1653
    HV_KVM_EXTRA: "",
1654
    HV_KVM_MACHINE_VERSION: "",
1655
    HV_VNET_HDR: True,
1656
    },
1657
  HT_FAKE: {
1658
    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1659
  },
1660
  HT_CHROOT: {
1661
    HV_INIT_SCRIPT: "/ganeti-chroot",
1662
    },
1663
  HT_LXC: {
1664
    HV_CPU_MASK: "",
1665
    },
1666
  }
1667

    
1668
HVC_GLOBALS = compat.UniqueFrozenset([
1669
  HV_MIGRATION_PORT,
1670
  HV_MIGRATION_BANDWIDTH,
1671
  HV_MIGRATION_MODE,
1672
  HV_XEN_CMD,
1673
  ])
1674

    
1675
BEC_DEFAULTS = {
1676
  BE_MINMEM: 128,
1677
  BE_MAXMEM: 128,
1678
  BE_VCPUS: 1,
1679
  BE_AUTO_BALANCE: True,
1680
  BE_ALWAYS_FAILOVER: False,
1681
  BE_SPINDLE_USE: 1,
1682
  }
1683

    
1684
NDC_DEFAULTS = {
1685
  ND_OOB_PROGRAM: "",
1686
  ND_SPINDLE_COUNT: 1,
1687
  ND_EXCLUSIVE_STORAGE: False,
1688
  ND_OVS: False,
1689
  ND_OVS_NAME: DEFAULT_OVS,
1690
  ND_OVS_LINK: ""
1691
  }
1692

    
1693
NDC_GLOBALS = compat.UniqueFrozenset([
1694
  ND_EXCLUSIVE_STORAGE,
1695
  ])
1696

    
1697
DISK_LD_DEFAULTS = {
1698
  DT_DRBD8: {
1699
    LDP_RESYNC_RATE: CLASSIC_DRBD_SYNC_SPEED,
1700
    LDP_BARRIERS: _constants.DRBD_BARRIERS,
1701
    LDP_NO_META_FLUSH: _constants.DRBD_NO_META_FLUSH,
1702
    LDP_DEFAULT_METAVG: DEFAULT_VG,
1703
    LDP_DISK_CUSTOM: "",
1704
    LDP_NET_CUSTOM: "",
1705
    LDP_PROTOCOL: DRBD_DEFAULT_NET_PROTOCOL,
1706
    LDP_DYNAMIC_RESYNC: False,
1707

    
1708
    # The default values for the DRBD dynamic resync speed algorithm
1709
    # are taken from the drbsetup 8.3.11 man page, except for
1710
    # c-plan-ahead (that we don't need to set to 0, because we have a
1711
    # separate option to enable it) and for c-max-rate, that we cap to
1712
    # the default value for the static resync rate.
1713
    LDP_PLAN_AHEAD: 20, # ds
1714
    LDP_FILL_TARGET: 0, # sectors
1715
    LDP_DELAY_TARGET: 1, # ds
1716
    LDP_MAX_RATE: CLASSIC_DRBD_SYNC_SPEED, # KiB/s
1717
    LDP_MIN_RATE: 4 * 1024, # KiB/s
1718
    },
1719
  DT_PLAIN: {
1720
    LDP_STRIPES: _constants.LVM_STRIPECOUNT
1721
    },
1722
  DT_FILE: {},
1723
  DT_SHARED_FILE: {},
1724
  DT_BLOCK: {},
1725
  DT_RBD: {
1726
    LDP_POOL: "rbd",
1727
    LDP_ACCESS: DISK_KERNELSPACE,
1728
    },
1729
  DT_EXT: {},
1730
  }
1731

    
1732
# readability shortcuts
1733
_LV_DEFAULTS = DISK_LD_DEFAULTS[DT_PLAIN]
1734
_DRBD_DEFAULTS = DISK_LD_DEFAULTS[DT_DRBD8]
1735

    
1736
DISK_DT_DEFAULTS = {
1737
  DT_PLAIN: {
1738
    LV_STRIPES: DISK_LD_DEFAULTS[DT_PLAIN][LDP_STRIPES],
1739
    },
1740
  DT_DRBD8: {
1741
    DRBD_RESYNC_RATE: _DRBD_DEFAULTS[LDP_RESYNC_RATE],
1742
    DRBD_DATA_STRIPES: _LV_DEFAULTS[LDP_STRIPES],
1743
    DRBD_META_STRIPES: _LV_DEFAULTS[LDP_STRIPES],
1744
    DRBD_DISK_BARRIERS: _DRBD_DEFAULTS[LDP_BARRIERS],
1745
    DRBD_META_BARRIERS: _DRBD_DEFAULTS[LDP_NO_META_FLUSH],
1746
    DRBD_DEFAULT_METAVG: _DRBD_DEFAULTS[LDP_DEFAULT_METAVG],
1747
    DRBD_DISK_CUSTOM: _DRBD_DEFAULTS[LDP_DISK_CUSTOM],
1748
    DRBD_NET_CUSTOM: _DRBD_DEFAULTS[LDP_NET_CUSTOM],
1749
    DRBD_PROTOCOL: _DRBD_DEFAULTS[LDP_PROTOCOL],
1750
    DRBD_DYNAMIC_RESYNC: _DRBD_DEFAULTS[LDP_DYNAMIC_RESYNC],
1751
    DRBD_PLAN_AHEAD: _DRBD_DEFAULTS[LDP_PLAN_AHEAD],
1752
    DRBD_FILL_TARGET: _DRBD_DEFAULTS[LDP_FILL_TARGET],
1753
    DRBD_DELAY_TARGET: _DRBD_DEFAULTS[LDP_DELAY_TARGET],
1754
    DRBD_MAX_RATE: _DRBD_DEFAULTS[LDP_MAX_RATE],
1755
    DRBD_MIN_RATE: _DRBD_DEFAULTS[LDP_MIN_RATE],
1756
    },
1757
  DT_DISKLESS: {},
1758
  DT_FILE: {},
1759
  DT_SHARED_FILE: {},
1760
  DT_BLOCK: {},
1761
  DT_RBD: {
1762
    RBD_POOL: DISK_LD_DEFAULTS[DT_RBD][LDP_POOL],
1763
    RBD_ACCESS: DISK_LD_DEFAULTS[DT_RBD][LDP_ACCESS],
1764
    },
1765
  DT_EXT: {},
1766
  }
1767

    
1768
# we don't want to export the shortcuts
1769
del _LV_DEFAULTS, _DRBD_DEFAULTS
1770

    
1771
NICC_DEFAULTS = {
1772
  NIC_MODE: NIC_MODE_BRIDGED,
1773
  NIC_LINK: DEFAULT_BRIDGE,
1774
  NIC_VLAN: VALUE_HS_NOTHING,
1775
  }
1776

    
1777
# All of the following values are quite arbitrarily - there are no
1778
# "good" defaults, these must be customised per-site
1779
ISPECS_MINMAX_DEFAULTS = {
1780
  ISPECS_MIN: {
1781
    ISPEC_MEM_SIZE: 128,
1782
    ISPEC_CPU_COUNT: 1,
1783
    ISPEC_DISK_COUNT: 1,
1784
    ISPEC_DISK_SIZE: 1024,
1785
    ISPEC_NIC_COUNT: 1,
1786
    ISPEC_SPINDLE_USE: 1,
1787
    },
1788
  ISPECS_MAX: {
1789
    ISPEC_MEM_SIZE: 32768,
1790
    ISPEC_CPU_COUNT: 8,
1791
    ISPEC_DISK_COUNT: MAX_DISKS,
1792
    ISPEC_DISK_SIZE: 1024 * 1024,
1793
    ISPEC_NIC_COUNT: MAX_NICS,
1794
    ISPEC_SPINDLE_USE: 12,
1795
    },
1796
  }
1797
IPOLICY_DEFAULTS = {
1798
  ISPECS_MINMAX: [ISPECS_MINMAX_DEFAULTS],
1799
  ISPECS_STD: {
1800
    ISPEC_MEM_SIZE: 128,
1801
    ISPEC_CPU_COUNT: 1,
1802
    ISPEC_DISK_COUNT: 1,
1803
    ISPEC_DISK_SIZE: 1024,
1804
    ISPEC_NIC_COUNT: 1,
1805
    ISPEC_SPINDLE_USE: 1,
1806
    },
1807
  IPOLICY_DTS: list(DISK_TEMPLATES),
1808
  IPOLICY_VCPU_RATIO: 4.0,
1809
  IPOLICY_SPINDLE_RATIO: 32.0,
1810
  }
1811

    
1812
MASTER_POOL_SIZE_DEFAULT = 10
1813

    
1814
# Exclusive storage:
1815
# Error margin used to compare physical disks
1816
PART_MARGIN = .01
1817
# Space reserved when creating instance disks
1818
PART_RESERVED = .02
1819

    
1820
CONFD_PROTOCOL_VERSION = _constants.CONFD_PROTOCOL_VERSION
1821

    
1822
CONFD_REQ_PING = _constants.CONFD_REQ_PING
1823
CONFD_REQ_NODE_ROLE_BYNAME = _constants.CONFD_REQ_NODE_ROLE_BYNAME
1824
CONFD_REQ_NODE_PIP_BY_INSTANCE_IP = _constants.CONFD_REQ_NODE_PIP_BY_INSTANCE_IP
1825
CONFD_REQ_CLUSTER_MASTER = _constants.CONFD_REQ_CLUSTER_MASTER
1826
CONFD_REQ_NODE_PIP_LIST = _constants.CONFD_REQ_NODE_PIP_LIST
1827
CONFD_REQ_MC_PIP_LIST = _constants.CONFD_REQ_MC_PIP_LIST
1828
CONFD_REQ_INSTANCES_IPS_LIST = _constants.CONFD_REQ_INSTANCES_IPS_LIST
1829
CONFD_REQ_NODE_DRBD = _constants.CONFD_REQ_NODE_DRBD
1830
CONFD_REQ_NODE_INSTANCES = _constants.CONFD_REQ_NODE_INSTANCES
1831
CONFD_REQS = _constants.CONFD_REQS
1832

    
1833
# Confd request query fields. These are used to narrow down queries.
1834
# These must be strings rather than integers, because json-encoding
1835
# converts them to strings anyway, as they're used as dict-keys.
1836
CONFD_REQQ_LINK = _constants.CONFD_REQQ_LINK
1837
CONFD_REQQ_IP = _constants.CONFD_REQQ_IP
1838
CONFD_REQQ_IPLIST = _constants.CONFD_REQQ_IPLIST
1839
CONFD_REQQ_FIELDS = _constants.CONFD_REQQ_FIELDS
1840

    
1841
# FIXME: perhaps update code that uses these constants to deal with
1842
# integers instead of strings
1843
CONFD_REQFIELD_NAME = str(_constants.CONFD_REQFIELD_NAME)
1844
CONFD_REQFIELD_IP = str(_constants.CONFD_REQFIELD_IP)
1845
CONFD_REQFIELD_MNODE_PIP = str(_constants.CONFD_REQFIELD_MNODE_PIP)
1846

    
1847
CONFD_REPL_STATUS_OK = _constants.CONFD_REPL_STATUS_OK
1848
CONFD_REPL_STATUS_ERROR = _constants.CONFD_REPL_STATUS_ERROR
1849
CONFD_REPL_STATUS_NOTIMPLEMENTED = _constants.CONFD_REPL_STATUS_NOTIMPLEMENTED
1850
CONFD_REPL_STATUSES = _constants.CONFD_REPL_STATUSES
1851

    
1852
CONFD_NODE_ROLE_MASTER = _constants.CONFD_NODE_ROLE_MASTER
1853
CONFD_NODE_ROLE_CANDIDATE = _constants.CONFD_NODE_ROLE_CANDIDATE
1854
CONFD_NODE_ROLE_OFFLINE = _constants.CONFD_NODE_ROLE_OFFLINE
1855
CONFD_NODE_ROLE_DRAINED = _constants.CONFD_NODE_ROLE_DRAINED
1856
CONFD_NODE_ROLE_REGULAR = _constants.CONFD_NODE_ROLE_REGULAR
1857

    
1858
CONFD_ERROR_UNKNOWN_ENTRY = _constants.CONFD_ERROR_UNKNOWN_ENTRY
1859
CONFD_ERROR_INTERNAL = _constants.CONFD_ERROR_INTERNAL
1860
CONFD_ERROR_ARGUMENT = _constants.CONFD_ERROR_ARGUMENT
1861

    
1862
# Each request is "salted" by the current timestamp.
1863
# This constants decides how many seconds of skew to accept.
1864
# TODO: make this a default and allow the value to be more configurable
1865
CONFD_MAX_CLOCK_SKEW = _constants.CONFD_MAX_CLOCK_SKEW
1866

    
1867
# When we haven't reloaded the config for more than this amount of
1868
# seconds, we force a test to see if inotify is betraying us. Using a
1869
# prime number to ensure we get less chance of 'same wakeup' with
1870
# other processes.
1871
CONFD_CONFIG_RELOAD_TIMEOUT = _constants.CONFD_CONFIG_RELOAD_TIMEOUT
1872

    
1873
# If we receive more than one update in this amount of microseconds,
1874
# we move to polling every RATELIMIT seconds, rather than relying on
1875
# inotify, to be able to serve more requests.
1876
CONFD_CONFIG_RELOAD_RATELIMIT = _constants.CONFD_CONFIG_RELOAD_RATELIMIT
1877

    
1878
# Magic number prepended to all confd queries.
1879
# This allows us to distinguish different types of confd protocols and handle
1880
# them. For example by changing this we can move the whole payload to be
1881
# compressed, or move away from json.
1882
CONFD_MAGIC_FOURCC = _constants.CONFD_MAGIC_FOURCC
1883

    
1884
# By default a confd request is sent to the minimum between this number and all
1885
# MCs. 6 was chosen because even in the case of a disastrous 50% response rate,
1886
# we should have enough answers to be able to compare more than one.
1887
CONFD_DEFAULT_REQ_COVERAGE = _constants.CONFD_DEFAULT_REQ_COVERAGE
1888

    
1889
# Timeout in seconds to expire pending query request in the confd client
1890
# library. We don't actually expect any answer more than 10 seconds after we
1891
# sent a request.
1892
CONFD_CLIENT_EXPIRE_TIMEOUT = _constants.CONFD_CLIENT_EXPIRE_TIMEOUT
1893

    
1894
# Maximum UDP datagram size.
1895
# On IPv4: 64K - 20 (ip header size) - 8 (udp header size) = 65507
1896
# On IPv6: 64K - 40 (ip6 header size) - 8 (udp header size) = 65487
1897
#   (assuming we can't use jumbo frames)
1898
# We just set this to 60K, which should be enough
1899
MAX_UDP_DATA_SIZE = 61440
1900

    
1901
# User-id pool minimum/maximum acceptable user-ids.
1902
UIDPOOL_UID_MIN = 0
1903
UIDPOOL_UID_MAX = 2 ** 32 - 1 # Assuming 32 bit user-ids
1904

    
1905
# Name or path of the pgrep command
1906
PGREP = "pgrep"
1907

    
1908
# Name of the node group that gets created at cluster init or upgrade
1909
INITIAL_NODE_GROUP_NAME = "default"
1910

    
1911
# Possible values for NodeGroup.alloc_policy
1912
ALLOC_POLICY_PREFERRED = _constants.ALLOC_POLICY_PREFERRED
1913
ALLOC_POLICY_LAST_RESORT = _constants.ALLOC_POLICY_LAST_RESORT
1914
ALLOC_POLICY_UNALLOCABLE = _constants.ALLOC_POLICY_UNALLOCABLE
1915
VALID_ALLOC_POLICIES = _constants.VALID_ALLOC_POLICIES
1916

    
1917
# Temporary external/shared storage parameters
1918
BLOCKDEV_DRIVER_MANUAL = _constants.BLOCKDEV_DRIVER_MANUAL
1919

    
1920
# qemu-img path, required for ovfconverter
1921
QEMUIMG_PATH = _constants.QEMUIMG_PATH
1922

    
1923
# Whether htools was enabled at compilation time
1924
HTOOLS = _constants.HTOOLS
1925
# The hail iallocator
1926
IALLOC_HAIL = "hail"
1927

    
1928
# Fake opcodes for functions that have hooks attached to them via
1929
# backend.RunLocalHooks
1930
FAKE_OP_MASTER_TURNUP = "OP_CLUSTER_IP_TURNUP"
1931
FAKE_OP_MASTER_TURNDOWN = "OP_CLUSTER_IP_TURNDOWN"
1932

    
1933
# SSH key types
1934
SSHK_RSA = "rsa"
1935
SSHK_DSA = "dsa"
1936
SSHK_ALL = compat.UniqueFrozenset([SSHK_RSA, SSHK_DSA])
1937

    
1938
# SSH authorized key types
1939
SSHAK_RSA = "ssh-rsa"
1940
SSHAK_DSS = "ssh-dss"
1941
SSHAK_ALL = compat.UniqueFrozenset([SSHAK_RSA, SSHAK_DSS])
1942

    
1943
# SSH setup
1944
SSHS_CLUSTER_NAME = "cluster_name"
1945
SSHS_SSH_HOST_KEY = "ssh_host_key"
1946
SSHS_SSH_ROOT_KEY = "ssh_root_key"
1947
SSHS_NODE_DAEMON_CERTIFICATE = "node_daemon_certificate"
1948

    
1949
#: Key files for SSH daemon
1950
SSH_DAEMON_KEYFILES = {
1951
  SSHK_RSA: (pathutils.SSH_HOST_RSA_PRIV, pathutils.SSH_HOST_RSA_PUB),
1952
  SSHK_DSA: (pathutils.SSH_HOST_DSA_PRIV, pathutils.SSH_HOST_DSA_PUB),
1953
  }
1954

    
1955
# Node daemon setup
1956
NDS_CLUSTER_NAME = "cluster_name"
1957
NDS_NODE_DAEMON_CERTIFICATE = "node_daemon_certificate"
1958
NDS_SSCONF = "ssconf"
1959
NDS_START_NODE_DAEMON = "start_node_daemon"
1960

    
1961
# Path generating random UUID
1962
RANDOM_UUID_FILE = _constants.RANDOM_UUID_FILE
1963

    
1964
# Regex string for verifying a UUID
1965
UUID_REGEX = "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"
1966

    
1967
# Auto-repair tag prefixes
1968
AUTO_REPAIR_TAG_PREFIX = _constants.AUTO_REPAIR_TAG_PREFIX
1969
AUTO_REPAIR_TAG_ENABLED = _constants.AUTO_REPAIR_TAG_ENABLED
1970
AUTO_REPAIR_TAG_SUSPENDED = _constants.AUTO_REPAIR_TAG_SUSPENDED
1971
AUTO_REPAIR_TAG_PENDING = _constants.AUTO_REPAIR_TAG_PENDING
1972
AUTO_REPAIR_TAG_RESULT = _constants.AUTO_REPAIR_TAG_RESULT
1973

    
1974
# Auto-repair levels
1975
AUTO_REPAIR_FIX_STORAGE = _constants.AUTO_REPAIR_FIX_STORAGE
1976
AUTO_REPAIR_MIGRATE = _constants.AUTO_REPAIR_MIGRATE
1977
AUTO_REPAIR_FAILOVER = _constants.AUTO_REPAIR_FAILOVER
1978
AUTO_REPAIR_REINSTALL = _constants.AUTO_REPAIR_REINSTALL
1979
AUTO_REPAIR_ALL_TYPES = _constants.AUTO_REPAIR_ALL_TYPES
1980

    
1981
# Auto-repair results
1982
AUTO_REPAIR_SUCCESS = _constants.AUTO_REPAIR_SUCCESS
1983
AUTO_REPAIR_FAILURE = _constants.AUTO_REPAIR_FAILURE
1984
AUTO_REPAIR_ENOPERM = _constants.AUTO_REPAIR_ENOPERM
1985
AUTO_REPAIR_ALL_RESULTS = _constants.AUTO_REPAIR_ALL_RESULTS
1986

    
1987
# The version identifier for builtin data collectors
1988
BUILTIN_DATA_COLLECTOR_VERSION = _constants.BUILTIN_DATA_COLLECTOR_VERSION
1989

    
1990
# The reason trail opcode parameter name
1991
OPCODE_REASON = _constants.OPCODE_REASON
1992

    
1993
# The source reasons for the execution of an OpCode
1994
OPCODE_REASON_SRC_CLIENT = "gnt:client"
1995
OPCODE_REASON_SRC_NODED = "gnt:daemon:noded"
1996
OPCODE_REASON_SRC_OPCODE = "gnt:opcode"
1997
OPCODE_REASON_SRC_RLIB2 = "gnt:library:rlib2"
1998
OPCODE_REASON_SRC_USER = "gnt:user"
1999

    
2000
OPCODE_REASON_SOURCES = compat.UniqueFrozenset([
2001
  OPCODE_REASON_SRC_CLIENT,
2002
  OPCODE_REASON_SRC_NODED,
2003
  OPCODE_REASON_SRC_OPCODE,
2004
  OPCODE_REASON_SRC_RLIB2,
2005
  OPCODE_REASON_SRC_USER,
2006
  ])
2007

    
2008
DISKSTATS_FILE = _constants.DISKSTATS_FILE
2009

    
2010
# CPU load collector variables
2011
STAT_FILE = _constants.STAT_FILE
2012
CPUAVGLOAD_BUFFER_SIZE = _constants.CPUAVGLOAD_BUFFER_SIZE
2013
CPUAVGLOAD_WINDOW_SIZE = _constants.CPUAVGLOAD_WINDOW_SIZE
2014

    
2015
# Mond's variable for periodical data collection
2016
MOND_TIME_INTERVAL = _constants.MOND_TIME_INTERVAL
2017

    
2018
# MonD's latest API version
2019
MOND_LATEST_API_VERSION = 1
2020

    
2021
# Timeouts for upgrades
2022

    
2023
UPGRADE_QUEUE_DRAIN_TIMEOUT = _constants.UPGRADE_QUEUE_DRAIN_TIMEOUT
2024
UPGRADE_QUEUE_POLL_INTERVAL = _constants.UPGRADE_QUEUE_POLL_INTERVAL
2025

    
2026
# Do not re-export imported modules
2027
del re, _vcsversion, _constants, socket, pathutils, compat
2028

    
2029

    
2030
ALLOCATABLE_KEY = "allocatable"
2031
FAILED_KEY = "failed"