Statistics
| Branch: | Tag: | Revision:

root / lib / constants.py @ 5c8f186c

History | View | Annotate | Download (61.3 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_SCRIPT_CREATE = _constants.OS_SCRIPT_CREATE
467
OS_SCRIPT_IMPORT = _constants.OS_SCRIPT_IMPORT
468
OS_SCRIPT_EXPORT = _constants.OS_SCRIPT_EXPORT
469
OS_SCRIPT_RENAME = _constants.OS_SCRIPT_RENAME
470
OS_SCRIPT_VERIFY = _constants.OS_SCRIPT_VERIFY
471
OS_SCRIPTS = _constants.OS_SCRIPTS
472

    
473
OS_API_FILE = _constants.OS_API_FILE
474
OS_VARIANTS_FILE = _constants.OS_VARIANTS_FILE
475
OS_PARAMETERS_FILE = _constants.OS_PARAMETERS_FILE
476

    
477
OS_VALIDATE_PARAMETERS = _constants.OS_VALIDATE_PARAMETERS
478
OS_VALIDATE_CALLS = _constants.OS_VALIDATE_CALLS
479

    
480
ES_ACTION_CREATE = _constants.ES_ACTION_CREATE
481
ES_ACTION_REMOVE = _constants.ES_ACTION_REMOVE
482
ES_ACTION_GROW = _constants.ES_ACTION_GROW
483
ES_ACTION_ATTACH = _constants.ES_ACTION_ATTACH
484
ES_ACTION_DETACH = _constants.ES_ACTION_DETACH
485
ES_ACTION_SETINFO = _constants.ES_ACTION_SETINFO
486
ES_ACTION_VERIFY = _constants.ES_ACTION_VERIFY
487

    
488
ES_SCRIPT_CREATE = _constants.ES_SCRIPT_CREATE
489
ES_SCRIPT_REMOVE = _constants.ES_SCRIPT_REMOVE
490
ES_SCRIPT_GROW = _constants.ES_SCRIPT_GROW
491
ES_SCRIPT_ATTACH = _constants.ES_SCRIPT_ATTACH
492
ES_SCRIPT_DETACH = _constants.ES_SCRIPT_DETACH
493
ES_SCRIPT_SETINFO = _constants.ES_SCRIPT_SETINFO
494
ES_SCRIPT_VERIFY = _constants.ES_SCRIPT_VERIFY
495
ES_SCRIPTS = _constants.ES_SCRIPTS
496

    
497
ES_PARAMETERS_FILE = _constants.ES_PARAMETERS_FILE
498

    
499
# reboot types
500
INSTANCE_REBOOT_SOFT = _constants.INSTANCE_REBOOT_SOFT
501
INSTANCE_REBOOT_HARD = _constants.INSTANCE_REBOOT_HARD
502
INSTANCE_REBOOT_FULL = _constants.INSTANCE_REBOOT_FULL
503
REBOOT_TYPES = _constants.REBOOT_TYPES
504

    
505
INSTANCE_REBOOT_ALLOWED = _constants.INSTANCE_REBOOT_ALLOWED
506
INSTANCE_REBOOT_EXIT = _constants.INSTANCE_REBOOT_EXIT
507
REBOOT_BEHAVIORS = _constants.REBOOT_BEHAVIORS
508

    
509
VTYPE_STRING = _constants.VTYPE_STRING
510
VTYPE_MAYBE_STRING = _constants.VTYPE_MAYBE_STRING
511
VTYPE_BOOL = _constants.VTYPE_BOOL
512
VTYPE_SIZE = _constants.VTYPE_SIZE
513
VTYPE_INT = _constants.VTYPE_INT
514
ENFORCEABLE_TYPES = _constants.ENFORCEABLE_TYPES
515

    
516
IFACE_NO_IP_VERSION_SPECIFIED = _constants.IFACE_NO_IP_VERSION_SPECIFIED
517

    
518
VALID_SERIAL_SPEEDS = _constants.VALID_SERIAL_SPEEDS
519

    
520
HV_BOOT_ORDER = _constants.HV_BOOT_ORDER
521
HV_CDROM_IMAGE_PATH = _constants.HV_CDROM_IMAGE_PATH
522
HV_KVM_CDROM2_IMAGE_PATH = _constants.HV_KVM_CDROM2_IMAGE_PATH
523
HV_KVM_FLOPPY_IMAGE_PATH = _constants.HV_KVM_FLOPPY_IMAGE_PATH
524
HV_NIC_TYPE = _constants.HV_NIC_TYPE
525
HV_DISK_TYPE = _constants.HV_DISK_TYPE
526
HV_KVM_CDROM_DISK_TYPE = _constants.HV_KVM_CDROM_DISK_TYPE
527
HV_VNC_BIND_ADDRESS = _constants.HV_VNC_BIND_ADDRESS
528
HV_VNC_PASSWORD_FILE = _constants.HV_VNC_PASSWORD_FILE
529
HV_VNC_TLS = _constants.HV_VNC_TLS
530
HV_VNC_X509 = _constants.HV_VNC_X509
531
HV_VNC_X509_VERIFY = _constants.HV_VNC_X509_VERIFY
532
HV_KVM_SPICE_BIND = _constants.HV_KVM_SPICE_BIND
533
HV_KVM_SPICE_IP_VERSION = _constants.HV_KVM_SPICE_IP_VERSION
534
HV_KVM_SPICE_PASSWORD_FILE = _constants.HV_KVM_SPICE_PASSWORD_FILE
535
HV_KVM_SPICE_LOSSLESS_IMG_COMPR = _constants.HV_KVM_SPICE_LOSSLESS_IMG_COMPR
536
HV_KVM_SPICE_JPEG_IMG_COMPR = _constants.HV_KVM_SPICE_JPEG_IMG_COMPR
537
HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR = _constants.HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR
538
HV_KVM_SPICE_STREAMING_VIDEO_DETECTION = \
539
  _constants.HV_KVM_SPICE_STREAMING_VIDEO_DETECTION
540
HV_KVM_SPICE_AUDIO_COMPR = _constants.HV_KVM_SPICE_AUDIO_COMPR
541
HV_KVM_SPICE_USE_TLS = _constants.HV_KVM_SPICE_USE_TLS
542
HV_KVM_SPICE_TLS_CIPHERS = _constants.HV_KVM_SPICE_TLS_CIPHERS
543
HV_KVM_SPICE_USE_VDAGENT = _constants.HV_KVM_SPICE_USE_VDAGENT
544
HV_ACPI = _constants.HV_ACPI
545
HV_PAE = _constants.HV_PAE
546
HV_USE_BOOTLOADER = _constants.HV_USE_BOOTLOADER
547
HV_BOOTLOADER_ARGS = _constants.HV_BOOTLOADER_ARGS
548
HV_BOOTLOADER_PATH = _constants.HV_BOOTLOADER_PATH
549
HV_KERNEL_ARGS = _constants.HV_KERNEL_ARGS
550
HV_KERNEL_PATH = _constants.HV_KERNEL_PATH
551
HV_INITRD_PATH = _constants.HV_INITRD_PATH
552
HV_ROOT_PATH = _constants.HV_ROOT_PATH
553
HV_SERIAL_CONSOLE = _constants.HV_SERIAL_CONSOLE
554
HV_SERIAL_SPEED = _constants.HV_SERIAL_SPEED
555
HV_USB_MOUSE = _constants.HV_USB_MOUSE
556
HV_KEYMAP = _constants.HV_KEYMAP
557
HV_DEVICE_MODEL = _constants.HV_DEVICE_MODEL
558
HV_INIT_SCRIPT = _constants.HV_INIT_SCRIPT
559
HV_MIGRATION_PORT = _constants.HV_MIGRATION_PORT
560
HV_MIGRATION_BANDWIDTH = _constants.HV_MIGRATION_BANDWIDTH
561
HV_MIGRATION_DOWNTIME = _constants.HV_MIGRATION_DOWNTIME
562
HV_MIGRATION_MODE = _constants.HV_MIGRATION_MODE
563
HV_USE_LOCALTIME = _constants.HV_USE_LOCALTIME
564
HV_DISK_CACHE = _constants.HV_DISK_CACHE
565
HV_SECURITY_MODEL = _constants.HV_SECURITY_MODEL
566
HV_SECURITY_DOMAIN = _constants.HV_SECURITY_DOMAIN
567
HV_KVM_FLAG = _constants.HV_KVM_FLAG
568
HV_VHOST_NET = _constants.HV_VHOST_NET
569
HV_KVM_USE_CHROOT = _constants.HV_KVM_USE_CHROOT
570
HV_CPU_MASK = _constants.HV_CPU_MASK
571
HV_MEM_PATH = _constants.HV_MEM_PATH
572
HV_PASSTHROUGH = _constants.HV_PASSTHROUGH
573
HV_BLOCKDEV_PREFIX = _constants.HV_BLOCKDEV_PREFIX
574
HV_REBOOT_BEHAVIOR = _constants.HV_REBOOT_BEHAVIOR
575
HV_CPU_TYPE = _constants.HV_CPU_TYPE
576
HV_CPU_CAP = _constants.HV_CPU_CAP
577
HV_CPU_WEIGHT = _constants.HV_CPU_WEIGHT
578
HV_CPU_CORES = _constants.HV_CPU_CORES
579
HV_CPU_THREADS = _constants.HV_CPU_THREADS
580
HV_CPU_SOCKETS = _constants.HV_CPU_SOCKETS
581
HV_SOUNDHW = _constants.HV_SOUNDHW
582
HV_USB_DEVICES = _constants.HV_USB_DEVICES
583
HV_VGA = _constants.HV_VGA
584
HV_KVM_EXTRA = _constants.HV_KVM_EXTRA
585
HV_KVM_MACHINE_VERSION = _constants.HV_KVM_MACHINE_VERSION
586
HV_KVM_PATH = _constants.HV_KVM_PATH
587
HV_VIF_TYPE = _constants.HV_VIF_TYPE
588
HV_VIF_SCRIPT = _constants.HV_VIF_SCRIPT
589
HV_XEN_CMD = _constants.HV_XEN_CMD
590
HV_XEN_CPUID = _constants.HV_XEN_CPUID
591
HV_VNET_HDR = _constants.HV_VNET_HDR
592
HV_VIRIDIAN = _constants.HV_VIRIDIAN
593

    
594
HVS_PARAMETER_TYPES = {
595
  HV_KVM_PATH: VTYPE_STRING,
596
  HV_BOOT_ORDER: VTYPE_STRING,
597
  HV_KVM_FLOPPY_IMAGE_PATH: VTYPE_STRING,
598
  HV_CDROM_IMAGE_PATH: VTYPE_STRING,
599
  HV_KVM_CDROM2_IMAGE_PATH: VTYPE_STRING,
600
  HV_NIC_TYPE: VTYPE_STRING,
601
  HV_DISK_TYPE: VTYPE_STRING,
602
  HV_KVM_CDROM_DISK_TYPE: VTYPE_STRING,
603
  HV_VNC_PASSWORD_FILE: VTYPE_STRING,
604
  HV_VNC_BIND_ADDRESS: VTYPE_STRING,
605
  HV_VNC_TLS: VTYPE_BOOL,
606
  HV_VNC_X509: VTYPE_STRING,
607
  HV_VNC_X509_VERIFY: VTYPE_BOOL,
608
  HV_KVM_SPICE_BIND: VTYPE_STRING,
609
  HV_KVM_SPICE_IP_VERSION: VTYPE_INT,
610
  HV_KVM_SPICE_PASSWORD_FILE: VTYPE_STRING,
611
  HV_KVM_SPICE_LOSSLESS_IMG_COMPR: VTYPE_STRING,
612
  HV_KVM_SPICE_JPEG_IMG_COMPR: VTYPE_STRING,
613
  HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR: VTYPE_STRING,
614
  HV_KVM_SPICE_STREAMING_VIDEO_DETECTION: VTYPE_STRING,
615
  HV_KVM_SPICE_AUDIO_COMPR: VTYPE_BOOL,
616
  HV_KVM_SPICE_USE_TLS: VTYPE_BOOL,
617
  HV_KVM_SPICE_TLS_CIPHERS: VTYPE_STRING,
618
  HV_KVM_SPICE_USE_VDAGENT: VTYPE_BOOL,
619
  HV_ACPI: VTYPE_BOOL,
620
  HV_PAE: VTYPE_BOOL,
621
  HV_USE_BOOTLOADER: VTYPE_BOOL,
622
  HV_BOOTLOADER_PATH: VTYPE_STRING,
623
  HV_BOOTLOADER_ARGS: VTYPE_STRING,
624
  HV_KERNEL_PATH: VTYPE_STRING,
625
  HV_KERNEL_ARGS: VTYPE_STRING,
626
  HV_INITRD_PATH: VTYPE_STRING,
627
  HV_ROOT_PATH: VTYPE_MAYBE_STRING,
628
  HV_SERIAL_CONSOLE: VTYPE_BOOL,
629
  HV_SERIAL_SPEED: VTYPE_INT,
630
  HV_USB_MOUSE: VTYPE_STRING,
631
  HV_KEYMAP: VTYPE_STRING,
632
  HV_DEVICE_MODEL: VTYPE_STRING,
633
  HV_INIT_SCRIPT: VTYPE_STRING,
634
  HV_MIGRATION_PORT: VTYPE_INT,
635
  HV_MIGRATION_BANDWIDTH: VTYPE_INT,
636
  HV_MIGRATION_DOWNTIME: VTYPE_INT,
637
  HV_MIGRATION_MODE: VTYPE_STRING,
638
  HV_USE_LOCALTIME: VTYPE_BOOL,
639
  HV_DISK_CACHE: VTYPE_STRING,
640
  HV_SECURITY_MODEL: VTYPE_STRING,
641
  HV_SECURITY_DOMAIN: VTYPE_STRING,
642
  HV_KVM_FLAG: VTYPE_STRING,
643
  HV_VHOST_NET: VTYPE_BOOL,
644
  HV_KVM_USE_CHROOT: VTYPE_BOOL,
645
  HV_CPU_MASK: VTYPE_STRING,
646
  HV_MEM_PATH: VTYPE_STRING,
647
  HV_PASSTHROUGH: VTYPE_STRING,
648
  HV_BLOCKDEV_PREFIX: VTYPE_STRING,
649
  HV_REBOOT_BEHAVIOR: VTYPE_STRING,
650
  HV_CPU_TYPE: VTYPE_STRING,
651
  HV_CPU_CAP: VTYPE_INT,
652
  HV_CPU_WEIGHT: VTYPE_INT,
653
  HV_CPU_CORES: VTYPE_INT,
654
  HV_CPU_THREADS: VTYPE_INT,
655
  HV_CPU_SOCKETS: VTYPE_INT,
656
  HV_SOUNDHW: VTYPE_STRING,
657
  HV_USB_DEVICES: VTYPE_STRING,
658
  HV_VGA: VTYPE_STRING,
659
  HV_KVM_EXTRA: VTYPE_STRING,
660
  HV_KVM_MACHINE_VERSION: VTYPE_STRING,
661
  HV_VIF_TYPE: VTYPE_STRING,
662
  HV_VIF_SCRIPT: VTYPE_STRING,
663
  HV_XEN_CMD: VTYPE_STRING,
664
  HV_XEN_CPUID: VTYPE_STRING,
665
  HV_VNET_HDR: VTYPE_BOOL,
666
  HV_VIRIDIAN: VTYPE_BOOL,
667
  }
668

    
669
HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
670

    
671
HVS_PARAMETER_TITLES = _constants.HVS_PARAMETER_TITLES
672
# Migration statuses
673
HV_MIGRATION_COMPLETED = "completed"
674
HV_MIGRATION_ACTIVE = "active"
675
HV_MIGRATION_FAILED = "failed"
676
HV_MIGRATION_CANCELLED = "cancelled"
677

    
678
HV_MIGRATION_VALID_STATUSES = compat.UniqueFrozenset([
679
  HV_MIGRATION_COMPLETED,
680
  HV_MIGRATION_ACTIVE,
681
  HV_MIGRATION_FAILED,
682
  HV_MIGRATION_CANCELLED,
683
  ])
684

    
685
HV_MIGRATION_FAILED_STATUSES = compat.UniqueFrozenset([
686
  HV_MIGRATION_FAILED,
687
  HV_MIGRATION_CANCELLED,
688
  ])
689

    
690
# KVM-specific statuses
691
HV_KVM_MIGRATION_VALID_STATUSES = HV_MIGRATION_VALID_STATUSES
692

    
693
# Node info keys
694
HV_NODEINFO_KEY_VERSION = "hv_version"
695

    
696
# Hypervisor state
697
HVST_MEMORY_TOTAL = "mem_total"
698
HVST_MEMORY_NODE = "mem_node"
699
HVST_MEMORY_HV = "mem_hv"
700
HVST_CPU_TOTAL = "cpu_total"
701
HVST_CPU_NODE = "cpu_node"
702

    
703
HVST_DEFAULTS = {
704
  HVST_MEMORY_TOTAL: 0,
705
  HVST_MEMORY_NODE: 0,
706
  HVST_MEMORY_HV: 0,
707
  HVST_CPU_TOTAL: 1,
708
  HVST_CPU_NODE: 1,
709
  }
710

    
711
HVSTS_PARAMETER_TYPES = {
712
  HVST_MEMORY_TOTAL: VTYPE_INT,
713
  HVST_MEMORY_NODE: VTYPE_INT,
714
  HVST_MEMORY_HV: VTYPE_INT,
715
  HVST_CPU_TOTAL: VTYPE_INT,
716
  HVST_CPU_NODE: VTYPE_INT,
717
  }
718

    
719
HVSTS_PARAMETERS = frozenset(HVSTS_PARAMETER_TYPES.keys())
720

    
721
# Disk state
722
DS_DISK_TOTAL = "disk_total"
723
DS_DISK_RESERVED = "disk_reserved"
724
DS_DISK_OVERHEAD = "disk_overhead"
725

    
726
DS_DEFAULTS = {
727
  DS_DISK_TOTAL: 0,
728
  DS_DISK_RESERVED: 0,
729
  DS_DISK_OVERHEAD: 0,
730
  }
731

    
732
ISPEC_MEM_SIZE = _constants.ISPEC_MEM_SIZE
733
ISPEC_CPU_COUNT = _constants.ISPEC_CPU_COUNT
734
ISPEC_DISK_COUNT = _constants.ISPEC_DISK_COUNT
735
ISPEC_DISK_SIZE = _constants.ISPEC_DISK_SIZE
736
ISPEC_NIC_COUNT = _constants.ISPEC_NIC_COUNT
737
ISPEC_SPINDLE_USE = _constants.ISPEC_SPINDLE_USE
738
ISPECS_PARAMETER_TYPES = _constants.ISPECS_PARAMETER_TYPES
739
ISPECS_PARAMETERS = _constants.ISPECS_PARAMETERS
740

    
741
ISPECS_MINMAX = _constants.ISPECS_MINMAX
742
ISPECS_MIN = _constants.ISPECS_MIN
743
ISPECS_MAX = _constants.ISPECS_MAX
744
ISPECS_STD = _constants.ISPECS_STD
745
IPOLICY_DTS = _constants.IPOLICY_DTS
746
IPOLICY_VCPU_RATIO = _constants.IPOLICY_VCPU_RATIO
747
IPOLICY_SPINDLE_RATIO = _constants.IPOLICY_SPINDLE_RATIO
748
ISPECS_MINMAX_KEYS = _constants.ISPECS_MINMAX_KEYS
749
IPOLICY_PARAMETERS = _constants.IPOLICY_PARAMETERS
750
IPOLICY_ALL_KEYS = _constants.IPOLICY_ALL_KEYS
751

    
752
ND_OOB_PROGRAM = _constants.ND_OOB_PROGRAM
753
ND_SPINDLE_COUNT = _constants.ND_SPINDLE_COUNT
754
ND_EXCLUSIVE_STORAGE = _constants.ND_EXCLUSIVE_STORAGE
755
ND_OVS = _constants.ND_OVS
756
ND_OVS_NAME = _constants.ND_OVS_NAME
757
ND_OVS_LINK = _constants.ND_OVS_LINK
758

    
759
NDS_PARAMETER_TYPES = _constants.NDS_PARAMETER_TYPES
760
NDS_PARAMETERS = _constants.NDS_PARAMETERS
761
NDS_PARAMETER_TITLES = _constants.NDS_PARAMETER_TITLES
762
DSS_PARAMETER_TYPES = {
763
  DS_DISK_TOTAL: VTYPE_INT,
764
  DS_DISK_RESERVED: VTYPE_INT,
765
  DS_DISK_OVERHEAD: VTYPE_INT,
766
  }
767

    
768
DSS_PARAMETERS = frozenset(DSS_PARAMETER_TYPES.keys())
769
DS_VALID_TYPES = compat.UniqueFrozenset([DT_PLAIN])
770

    
771
# Backend parameter names
772
BE_MEMORY = "memory" # deprecated and replaced by max and min mem
773
BE_MAXMEM = "maxmem"
774
BE_MINMEM = "minmem"
775
BE_VCPUS = "vcpus"
776
BE_AUTO_BALANCE = "auto_balance"
777
BE_ALWAYS_FAILOVER = "always_failover"
778
BE_SPINDLE_USE = "spindle_use"
779

    
780
BES_PARAMETER_TYPES = {
781
  BE_MAXMEM: VTYPE_SIZE,
782
  BE_MINMEM: VTYPE_SIZE,
783
  BE_VCPUS: VTYPE_INT,
784
  BE_AUTO_BALANCE: VTYPE_BOOL,
785
  BE_ALWAYS_FAILOVER: VTYPE_BOOL,
786
  BE_SPINDLE_USE: VTYPE_INT,
787
  }
788

    
789
BES_PARAMETER_TITLES = {
790
  BE_AUTO_BALANCE: "Auto_balance",
791
  BE_MAXMEM: "ConfigMaxMem",
792
  BE_MINMEM: "ConfigMinMem",
793
  BE_VCPUS: "ConfigVCPUs",
794
  }
795

    
796
BES_PARAMETER_COMPAT = {
797
  BE_MEMORY: VTYPE_SIZE,
798
  }
799
BES_PARAMETER_COMPAT.update(BES_PARAMETER_TYPES)
800

    
801
BES_PARAMETERS = frozenset(BES_PARAMETER_TYPES.keys())
802

    
803
# Logical Disks parameters
804
LDP_RESYNC_RATE = "resync-rate"
805
LDP_STRIPES = "stripes"
806
LDP_BARRIERS = "disabled-barriers"
807
LDP_NO_META_FLUSH = "disable-meta-flush"
808
LDP_DEFAULT_METAVG = "default-metavg"
809
LDP_DISK_CUSTOM = "disk-custom"
810
LDP_NET_CUSTOM = "net-custom"
811
LDP_PROTOCOL = "protocol"
812
LDP_DYNAMIC_RESYNC = "dynamic-resync"
813
LDP_PLAN_AHEAD = "c-plan-ahead"
814
LDP_FILL_TARGET = "c-fill-target"
815
LDP_DELAY_TARGET = "c-delay-target"
816
LDP_MAX_RATE = "c-max-rate"
817
LDP_MIN_RATE = "c-min-rate"
818
LDP_POOL = "pool"
819
LDP_ACCESS = "access"
820
DISK_LD_TYPES = {
821
  LDP_RESYNC_RATE: VTYPE_INT,
822
  LDP_STRIPES: VTYPE_INT,
823
  LDP_BARRIERS: VTYPE_STRING,
824
  LDP_NO_META_FLUSH: VTYPE_BOOL,
825
  LDP_DEFAULT_METAVG: VTYPE_STRING,
826
  LDP_DISK_CUSTOM: VTYPE_STRING,
827
  LDP_NET_CUSTOM: VTYPE_STRING,
828
  LDP_PROTOCOL: VTYPE_STRING,
829
  LDP_DYNAMIC_RESYNC: VTYPE_BOOL,
830
  LDP_PLAN_AHEAD: VTYPE_INT,
831
  LDP_FILL_TARGET: VTYPE_INT,
832
  LDP_DELAY_TARGET: VTYPE_INT,
833
  LDP_MAX_RATE: VTYPE_INT,
834
  LDP_MIN_RATE: VTYPE_INT,
835
  LDP_POOL: VTYPE_STRING,
836
  LDP_ACCESS: VTYPE_STRING,
837
  }
838
DISK_LD_PARAMETERS = frozenset(DISK_LD_TYPES.keys())
839

    
840
# Disk template parameters (can be set/changed by the user via gnt-cluster and
841
# gnt-group)
842
DRBD_RESYNC_RATE = "resync-rate"
843
DRBD_DATA_STRIPES = "data-stripes"
844
DRBD_META_STRIPES = "meta-stripes"
845
DRBD_DISK_BARRIERS = "disk-barriers"
846
DRBD_META_BARRIERS = "meta-barriers"
847
DRBD_DEFAULT_METAVG = "metavg"
848
DRBD_DISK_CUSTOM = "disk-custom"
849
DRBD_NET_CUSTOM = "net-custom"
850
DRBD_PROTOCOL = "protocol"
851
DRBD_DYNAMIC_RESYNC = "dynamic-resync"
852
DRBD_PLAN_AHEAD = "c-plan-ahead"
853
DRBD_FILL_TARGET = "c-fill-target"
854
DRBD_DELAY_TARGET = "c-delay-target"
855
DRBD_MAX_RATE = "c-max-rate"
856
DRBD_MIN_RATE = "c-min-rate"
857
LV_STRIPES = "stripes"
858
RBD_POOL = "pool"
859
RBD_ACCESS = "access"
860
DISK_DT_TYPES = {
861
  DRBD_RESYNC_RATE: VTYPE_INT,
862
  DRBD_DATA_STRIPES: VTYPE_INT,
863
  DRBD_META_STRIPES: VTYPE_INT,
864
  DRBD_DISK_BARRIERS: VTYPE_STRING,
865
  DRBD_META_BARRIERS: VTYPE_BOOL,
866
  DRBD_DEFAULT_METAVG: VTYPE_STRING,
867
  DRBD_DISK_CUSTOM: VTYPE_STRING,
868
  DRBD_NET_CUSTOM: VTYPE_STRING,
869
  DRBD_PROTOCOL: VTYPE_STRING,
870
  DRBD_DYNAMIC_RESYNC: VTYPE_BOOL,
871
  DRBD_PLAN_AHEAD: VTYPE_INT,
872
  DRBD_FILL_TARGET: VTYPE_INT,
873
  DRBD_DELAY_TARGET: VTYPE_INT,
874
  DRBD_MAX_RATE: VTYPE_INT,
875
  DRBD_MIN_RATE: VTYPE_INT,
876
  LV_STRIPES: VTYPE_INT,
877
  RBD_POOL: VTYPE_STRING,
878
  RBD_ACCESS: VTYPE_STRING,
879
  }
880

    
881
DISK_DT_PARAMETERS = frozenset(DISK_DT_TYPES.keys())
882

    
883
# dynamic disk parameters
884
DDP_LOCAL_IP = "local-ip"
885
DDP_REMOTE_IP = "remote-ip"
886
DDP_PORT = "port"
887
DDP_LOCAL_MINOR = "local-minor"
888
DDP_REMOTE_MINOR = "remote-minor"
889

    
890
# OOB supported commands
891
OOB_POWER_ON = _constants.OOB_POWER_ON
892
OOB_POWER_OFF = _constants.OOB_POWER_OFF
893
OOB_POWER_CYCLE = _constants.OOB_POWER_CYCLE
894
OOB_POWER_STATUS = _constants.OOB_POWER_STATUS
895
OOB_HEALTH = _constants.OOB_HEALTH
896
OOB_COMMANDS = _constants.OOB_COMMANDS
897

    
898
OOB_POWER_STATUS_POWERED = _constants.OOB_POWER_STATUS_POWERED
899

    
900
OOB_TIMEOUT = _constants.OOB_TIMEOUT
901
OOB_POWER_DELAY = _constants.OOB_POWER_DELAY
902

    
903
OOB_STATUS_OK = _constants.OOB_STATUS_OK
904
OOB_STATUS_WARNING = _constants.OOB_STATUS_WARNING
905
OOB_STATUS_CRITICAL = _constants.OOB_STATUS_CRITICAL
906
OOB_STATUS_UNKNOWN = _constants.OOB_STATUS_UNKNOWN
907
OOB_STATUSES = _constants.OOB_STATUSES
908

    
909
# Instance Parameters Profile
910
PP_DEFAULT = "default"
911

    
912
# NIC_* constants are used inside the ganeti config
913
NIC_MODE = _constants.NIC_MODE
914
NIC_LINK = _constants.NIC_LINK
915
NIC_VLAN = _constants.NIC_VLAN
916

    
917
NIC_MODE_BRIDGED = _constants.NIC_MODE_BRIDGED
918
NIC_MODE_ROUTED = _constants.NIC_MODE_ROUTED
919
NIC_MODE_OVS = _constants.NIC_MODE_OVS
920
NIC_IP_POOL = _constants.NIC_IP_POOL
921
NIC_VALID_MODES = _constants.NIC_VALID_MODES
922

    
923
RESERVE_ACTION = "reserve"
924
RELEASE_ACTION = "release"
925

    
926
NICS_PARAMETER_TYPES = {
927
  NIC_MODE: VTYPE_STRING,
928
  NIC_LINK: VTYPE_STRING,
929
  NIC_VLAN: VTYPE_MAYBE_STRING,
930
  }
931

    
932
NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys())
933

    
934
# IDISK_* constants are used in opcodes, to create/change disks
935
IDISK_SIZE = "size"
936
IDISK_SPINDLES = "spindles"
937
IDISK_MODE = "mode"
938
IDISK_ADOPT = "adopt"
939
IDISK_VG = "vg"
940
IDISK_METAVG = "metavg"
941
IDISK_PROVIDER = "provider"
942
IDISK_NAME = "name"
943
IDISK_PARAMS_TYPES = {
944
  IDISK_SIZE: VTYPE_SIZE,
945
  IDISK_SPINDLES: VTYPE_INT,
946
  IDISK_MODE: VTYPE_STRING,
947
  IDISK_ADOPT: VTYPE_STRING,
948
  IDISK_VG: VTYPE_STRING,
949
  IDISK_METAVG: VTYPE_STRING,
950
  IDISK_PROVIDER: VTYPE_STRING,
951
  IDISK_NAME: VTYPE_MAYBE_STRING,
952
  }
953
IDISK_PARAMS = frozenset(IDISK_PARAMS_TYPES.keys())
954

    
955
# INIC_* constants are used in opcodes, to create/change nics
956
INIC_MAC = "mac"
957
INIC_IP = "ip"
958
INIC_MODE = "mode"
959
INIC_LINK = "link"
960
INIC_NETWORK = "network"
961
INIC_NAME = "name"
962
INIC_VLAN = "vlan"
963
INIC_BRIDGE = "bridge"
964
INIC_PARAMS_TYPES = {
965
  INIC_IP: VTYPE_MAYBE_STRING,
966
  INIC_LINK: VTYPE_STRING,
967
  INIC_MAC: VTYPE_STRING,
968
  INIC_MODE: VTYPE_STRING,
969
  INIC_NETWORK: VTYPE_MAYBE_STRING,
970
  INIC_NAME: VTYPE_MAYBE_STRING,
971
  INIC_VLAN: VTYPE_MAYBE_STRING,
972
  INIC_BRIDGE: VTYPE_MAYBE_STRING
973
  }
974
INIC_PARAMS = frozenset(INIC_PARAMS_TYPES.keys())
975

    
976
# Hypervisor constants
977
HT_XEN_PVM = _constants.HT_XEN_PVM
978
HT_FAKE = _constants.HT_FAKE
979
HT_XEN_HVM = _constants.HT_XEN_HVM
980
HT_KVM = _constants.HT_KVM
981
HT_CHROOT = _constants.HT_CHROOT
982
HT_LXC = _constants.HT_LXC
983
HYPER_TYPES = _constants.HYPER_TYPES
984
HTS_REQ_PORT = _constants.HTS_REQ_PORT
985

    
986
VNC_BASE_PORT = 5900
987
VNC_DEFAULT_BIND_ADDRESS = IP4_ADDRESS_ANY
988

    
989
# NIC types
990
HT_NIC_RTL8139 = "rtl8139"
991
HT_NIC_NE2K_PCI = "ne2k_pci"
992
HT_NIC_NE2K_ISA = "ne2k_isa"
993
HT_NIC_I82551 = "i82551"
994
HT_NIC_I85557B = "i82557b"
995
HT_NIC_I8259ER = "i82559er"
996
HT_NIC_PCNET = "pcnet"
997
HT_NIC_E1000 = "e1000"
998
HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
999

    
1000
HT_HVM_VALID_NIC_TYPES = compat.UniqueFrozenset([
1001
  HT_NIC_RTL8139,
1002
  HT_NIC_NE2K_PCI,
1003
  HT_NIC_E1000,
1004
  HT_NIC_NE2K_ISA,
1005
  HT_NIC_PARAVIRTUAL,
1006
  ])
1007
HT_KVM_VALID_NIC_TYPES = compat.UniqueFrozenset([
1008
  HT_NIC_RTL8139,
1009
  HT_NIC_NE2K_PCI,
1010
  HT_NIC_NE2K_ISA,
1011
  HT_NIC_I82551,
1012
  HT_NIC_I85557B,
1013
  HT_NIC_I8259ER,
1014
  HT_NIC_PCNET,
1015
  HT_NIC_E1000,
1016
  HT_NIC_PARAVIRTUAL,
1017
  ])
1018

    
1019
# Vif types
1020
# default vif type in xen-hvm
1021
HT_HVM_VIF_IOEMU = "ioemu"
1022
HT_HVM_VIF_VIF = "vif"
1023
HT_HVM_VALID_VIF_TYPES = compat.UniqueFrozenset([
1024
  HT_HVM_VIF_IOEMU,
1025
  HT_HVM_VIF_VIF,
1026
  ])
1027

    
1028
# Disk types
1029
HT_DISK_IOEMU = "ioemu"
1030
HT_DISK_IDE = "ide"
1031
HT_DISK_SCSI = "scsi"
1032
HT_DISK_SD = "sd"
1033
HT_DISK_MTD = "mtd"
1034
HT_DISK_PFLASH = "pflash"
1035

    
1036
HT_CACHE_DEFAULT = "default"
1037
HT_CACHE_NONE = "none"
1038
HT_CACHE_WTHROUGH = "writethrough"
1039
HT_CACHE_WBACK = "writeback"
1040
HT_VALID_CACHE_TYPES = compat.UniqueFrozenset([
1041
  HT_CACHE_DEFAULT,
1042
  HT_CACHE_NONE,
1043
  HT_CACHE_WTHROUGH,
1044
  HT_CACHE_WBACK,
1045
  ])
1046

    
1047
HT_HVM_VALID_DISK_TYPES = compat.UniqueFrozenset([
1048
  HT_DISK_PARAVIRTUAL,
1049
  HT_DISK_IOEMU,
1050
  ])
1051
HT_KVM_VALID_DISK_TYPES = compat.UniqueFrozenset([
1052
  HT_DISK_PARAVIRTUAL,
1053
  HT_DISK_IDE,
1054
  HT_DISK_SCSI,
1055
  HT_DISK_SD,
1056
  HT_DISK_MTD,
1057
  HT_DISK_PFLASH,
1058
  ])
1059

    
1060
# Mouse types:
1061
HT_MOUSE_MOUSE = "mouse"
1062
HT_MOUSE_TABLET = "tablet"
1063

    
1064
HT_KVM_VALID_MOUSE_TYPES = compat.UniqueFrozenset([
1065
  HT_MOUSE_MOUSE,
1066
  HT_MOUSE_TABLET,
1067
  ])
1068

    
1069
# Boot order
1070
HT_BO_FLOPPY = "floppy"
1071
HT_BO_CDROM = "cdrom"
1072
HT_BO_DISK = "disk"
1073
HT_BO_NETWORK = "network"
1074

    
1075
HT_KVM_VALID_BO_TYPES = compat.UniqueFrozenset([
1076
  HT_BO_FLOPPY,
1077
  HT_BO_CDROM,
1078
  HT_BO_DISK,
1079
  HT_BO_NETWORK,
1080
  ])
1081

    
1082
# SPICE lossless image compression options
1083
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ = "auto_glz"
1084
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ = "auto_lz"
1085
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC = "quic"
1086
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ = "glz"
1087
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ = "lz"
1088
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF = "off"
1089

    
1090
HT_KVM_SPICE_VALID_LOSSLESS_IMG_COMPR_OPTIONS = compat.UniqueFrozenset([
1091
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ,
1092
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ,
1093
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC,
1094
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ,
1095
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ,
1096
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF,
1097
  ])
1098

    
1099
# SPICE lossy image compression options (valid for both jpeg and zlib-glz)
1100
HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO = "auto"
1101
HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER = "never"
1102
HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS = "always"
1103

    
1104
HT_KVM_SPICE_VALID_LOSSY_IMG_COMPR_OPTIONS = compat.UniqueFrozenset([
1105
  HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO,
1106
  HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER,
1107
  HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS,
1108
  ])
1109

    
1110
# SPICE video stream detection
1111
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF = "off"
1112
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL = "all"
1113
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER = "filter"
1114

    
1115
HT_KVM_SPICE_VALID_VIDEO_STREAM_DETECTION_OPTIONS = compat.UniqueFrozenset([
1116
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF,
1117
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL,
1118
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER,
1119
  ])
1120

    
1121
# Security models
1122
HT_SM_NONE = "none"
1123
HT_SM_USER = "user"
1124
HT_SM_POOL = "pool"
1125

    
1126
HT_KVM_VALID_SM_TYPES = compat.UniqueFrozenset([
1127
  HT_SM_NONE,
1128
  HT_SM_USER,
1129
  HT_SM_POOL,
1130
  ])
1131

    
1132
# Kvm flag values
1133
HT_KVM_ENABLED = "enabled"
1134
HT_KVM_DISABLED = "disabled"
1135

    
1136
HT_KVM_FLAG_VALUES = compat.UniqueFrozenset([HT_KVM_ENABLED, HT_KVM_DISABLED])
1137

    
1138
# Migration type
1139
HT_MIGRATION_LIVE = _constants.HT_MIGRATION_LIVE
1140
HT_MIGRATION_NONLIVE = _constants.HT_MIGRATION_NONLIVE
1141
HT_MIGRATION_MODES = _constants.HT_MIGRATION_MODES
1142

    
1143
# Cluster Verify steps
1144
VERIFY_NPLUSONE_MEM = _constants.VERIFY_NPLUSONE_MEM
1145
VERIFY_OPTIONAL_CHECKS = _constants.VERIFY_OPTIONAL_CHECKS
1146

    
1147
# Cluster Verify error classes
1148
CV_TCLUSTER = _constants.CV_TCLUSTER
1149
CV_TGROUP = _constants.CV_TGROUP
1150
CV_TNODE = _constants.CV_TNODE
1151
CV_TINSTANCE = _constants.CV_TINSTANCE
1152

    
1153
# Cluster Verify error codes and documentation
1154
CV_ECLUSTERCFG = _constants.CV_ECLUSTERCFG
1155
CV_ECLUSTERCERT = _constants.CV_ECLUSTERCERT
1156
CV_ECLUSTERFILECHECK = _constants.CV_ECLUSTERFILECHECK
1157
CV_ECLUSTERDANGLINGNODES = _constants.CV_ECLUSTERDANGLINGNODES
1158
CV_ECLUSTERDANGLINGINST = _constants.CV_ECLUSTERDANGLINGINST
1159
CV_EGROUPDIFFERENTPVSIZE = _constants.CV_EGROUPDIFFERENTPVSIZE
1160
CV_EINSTANCEBADNODE = _constants.CV_EINSTANCEBADNODE
1161
CV_EINSTANCEDOWN = _constants.CV_EINSTANCEDOWN
1162
CV_EINSTANCELAYOUT = _constants.CV_EINSTANCELAYOUT
1163
CV_EINSTANCEMISSINGDISK = _constants.CV_EINSTANCEMISSINGDISK
1164
CV_EINSTANCEFAULTYDISK = _constants.CV_EINSTANCEFAULTYDISK
1165
CV_EINSTANCEWRONGNODE = _constants.CV_EINSTANCEWRONGNODE
1166
CV_EINSTANCESPLITGROUPS = _constants.CV_EINSTANCESPLITGROUPS
1167
CV_EINSTANCEPOLICY = _constants.CV_EINSTANCEPOLICY
1168
CV_EINSTANCEUNSUITABLENODE = _constants.CV_EINSTANCEUNSUITABLENODE
1169
CV_EINSTANCEMISSINGCFGPARAMETER = _constants.CV_EINSTANCEMISSINGCFGPARAMETER
1170
CV_ENODEDRBD = _constants.CV_ENODEDRBD
1171
CV_ENODEDRBDVERSION = _constants.CV_ENODEDRBDVERSION
1172
CV_ENODEDRBDHELPER = _constants.CV_ENODEDRBDHELPER
1173
CV_ENODEFILECHECK = _constants.CV_ENODEFILECHECK
1174
CV_ENODEHOOKS = _constants.CV_ENODEHOOKS
1175
CV_ENODEHV = _constants.CV_ENODEHV
1176
CV_ENODELVM = _constants.CV_ENODELVM
1177
CV_ENODEN1 = _constants.CV_ENODEN1
1178
CV_ENODENET = _constants.CV_ENODENET
1179
CV_ENODEOS = _constants.CV_ENODEOS
1180
CV_ENODEORPHANINSTANCE = _constants.CV_ENODEORPHANINSTANCE
1181
CV_ENODEORPHANLV = _constants.CV_ENODEORPHANLV
1182
CV_ENODERPC = _constants.CV_ENODERPC
1183
CV_ENODESSH = _constants.CV_ENODESSH
1184
CV_ENODEVERSION = _constants.CV_ENODEVERSION
1185
CV_ENODESETUP = _constants.CV_ENODESETUP
1186
CV_ENODETIME = _constants.CV_ENODETIME
1187
CV_ENODEOOBPATH = _constants.CV_ENODEOOBPATH
1188
CV_ENODEUSERSCRIPTS = _constants.CV_ENODEUSERSCRIPTS
1189
CV_ENODEFILESTORAGEPATHS = _constants.CV_ENODEFILESTORAGEPATHS
1190
CV_ENODEFILESTORAGEPATHUNUSABLE = _constants.CV_ENODEFILESTORAGEPATHUNUSABLE
1191
CV_ENODESHAREDFILESTORAGEPATHUNUSABLE = \
1192
  _constants.CV_ENODESHAREDFILESTORAGEPATHUNUSABLE
1193

    
1194
CV_ALL_ECODES = _constants.CV_ALL_ECODES
1195
CV_ALL_ECODES_STRINGS = _constants.CV_ALL_ECODES_STRINGS
1196

    
1197
# Node verify constants
1198
NV_BRIDGES = "bridges"
1199
NV_DRBDHELPER = "drbd-helper"
1200
NV_DRBDVERSION = "drbd-version"
1201
NV_DRBDLIST = "drbd-list"
1202
NV_EXCLUSIVEPVS = "exclusive-pvs"
1203
NV_FILELIST = "filelist"
1204
NV_ACCEPTED_STORAGE_PATHS = "allowed-file-storage-paths"
1205
NV_FILE_STORAGE_PATH = "file-storage-path"
1206
NV_SHARED_FILE_STORAGE_PATH = "shared-file-storage-path"
1207
NV_HVINFO = "hvinfo"
1208
NV_HVPARAMS = "hvparms"
1209
NV_HYPERVISOR = "hypervisor"
1210
NV_INSTANCELIST = "instancelist"
1211
NV_LVLIST = "lvlist"
1212
NV_MASTERIP = "master-ip"
1213
NV_NODELIST = "nodelist"
1214
NV_NODENETTEST = "node-net-test"
1215
NV_NODESETUP = "nodesetup"
1216
NV_OOB_PATHS = "oob-paths"
1217
NV_OSLIST = "oslist"
1218
NV_PVLIST = "pvlist"
1219
NV_TIME = "time"
1220
NV_USERSCRIPTS = "user-scripts"
1221
NV_VERSION = "version"
1222
NV_VGLIST = "vglist"
1223
NV_VMNODES = "vmnodes"
1224

    
1225
# Instance status
1226
INSTST_RUNNING = _constants.INSTST_RUNNING
1227
INSTST_ADMINDOWN = _constants.INSTST_ADMINDOWN
1228
INSTST_ADMINOFFLINE = _constants.INSTST_ADMINOFFLINE
1229
INSTST_NODEOFFLINE = _constants.INSTST_NODEOFFLINE
1230
INSTST_NODEDOWN = _constants.INSTST_NODEDOWN
1231
INSTST_WRONGNODE = _constants.INSTST_WRONGNODE
1232
INSTST_ERRORUP = _constants.INSTST_ERRORUP
1233
INSTST_ERRORDOWN = _constants.INSTST_ERRORDOWN
1234
INSTST_ALL = _constants.INSTST_ALL
1235

    
1236
# Admin states
1237
ADMINST_UP = _constants.ADMINST_UP
1238
ADMINST_DOWN = _constants.ADMINST_DOWN
1239
ADMINST_OFFLINE = _constants.ADMINST_OFFLINE
1240
ADMINST_ALL = _constants.ADMINST_ALL
1241

    
1242
# Node roles
1243
NR_REGULAR = _constants.NR_REGULAR
1244
NR_MASTER = _constants.NR_MASTER
1245
NR_MCANDIDATE = _constants.NR_MCANDIDATE
1246
NR_DRAINED = _constants.NR_DRAINED
1247
NR_OFFLINE = _constants.NR_OFFLINE
1248
NR_ALL = _constants.NR_ALL
1249

    
1250
# SSL certificate check constants (in days)
1251
SSL_CERT_EXPIRATION_WARN = 30
1252
SSL_CERT_EXPIRATION_ERROR = 7
1253

    
1254
# Allocator framework constants
1255
IALLOCATOR_VERSION = _constants.IALLOCATOR_VERSION
1256
IALLOCATOR_DIR_IN = _constants.IALLOCATOR_DIR_IN
1257
IALLOCATOR_DIR_OUT = _constants.IALLOCATOR_DIR_OUT
1258
VALID_IALLOCATOR_DIRECTIONS = _constants.VALID_IALLOCATOR_DIRECTIONS
1259

    
1260
IALLOCATOR_MODE_ALLOC = _constants.IALLOCATOR_MODE_ALLOC
1261
IALLOCATOR_MODE_RELOC = _constants.IALLOCATOR_MODE_RELOC
1262
IALLOCATOR_MODE_CHG_GROUP = _constants.IALLOCATOR_MODE_CHG_GROUP
1263
IALLOCATOR_MODE_NODE_EVAC = _constants.IALLOCATOR_MODE_NODE_EVAC
1264
IALLOCATOR_MODE_MULTI_ALLOC = _constants.IALLOCATOR_MODE_MULTI_ALLOC
1265
VALID_IALLOCATOR_MODES = _constants.VALID_IALLOCATOR_MODES
1266

    
1267
IALLOCATOR_SEARCH_PATH = _constants.IALLOCATOR_SEARCH_PATH
1268
DEFAULT_IALLOCATOR_SHORTCUT = _constants.DEFAULT_IALLOCATOR_SHORTCUT
1269

    
1270
# Node evacuation
1271
NODE_EVAC_PRI = _constants.NODE_EVAC_PRI
1272
NODE_EVAC_SEC = _constants.NODE_EVAC_SEC
1273
NODE_EVAC_ALL = _constants.NODE_EVAC_ALL
1274
NODE_EVAC_MODES = _constants.NODE_EVAC_MODES
1275

    
1276
# Job queue
1277
JOB_QUEUE_VERSION = 1
1278
JOB_QUEUE_SIZE_HARD_LIMIT = 5000
1279
JOB_QUEUE_FILES_PERMS = 0640
1280

    
1281
JOB_ID_TEMPLATE = r"\d+"
1282
JOB_FILE_RE = re.compile(r"^job-(%s)$" % JOB_ID_TEMPLATE)
1283

    
1284
# unchanged job return
1285
JOB_NOTCHANGED = "nochange"
1286

    
1287
# Job status
1288
JOB_STATUS_QUEUED = _constants.JOB_STATUS_QUEUED
1289
JOB_STATUS_WAITING = _constants.JOB_STATUS_WAITING
1290
JOB_STATUS_CANCELING = _constants.JOB_STATUS_CANCELING
1291
JOB_STATUS_RUNNING = _constants.JOB_STATUS_RUNNING
1292
JOB_STATUS_CANCELED = _constants.JOB_STATUS_CANCELED
1293
JOB_STATUS_SUCCESS = _constants.JOB_STATUS_SUCCESS
1294
JOB_STATUS_ERROR = _constants.JOB_STATUS_ERROR
1295
JOBS_PENDING = _constants.JOBS_PENDING
1296
JOBS_FINALIZED = _constants.JOBS_FINALIZED
1297
JOB_STATUS_ALL = _constants.JOB_STATUS_ALL
1298

    
1299
# OpCode status
1300
# not yet finalized
1301
OP_STATUS_QUEUED = _constants.OP_STATUS_QUEUED
1302
OP_STATUS_WAITING = _constants.OP_STATUS_WAITING
1303
OP_STATUS_CANCELING = _constants.OP_STATUS_CANCELING
1304
OP_STATUS_RUNNING = _constants.OP_STATUS_RUNNING
1305
# finalized
1306
OP_STATUS_CANCELED = _constants.OP_STATUS_CANCELED
1307
OP_STATUS_SUCCESS = _constants.OP_STATUS_SUCCESS
1308
OP_STATUS_ERROR = _constants.OP_STATUS_ERROR
1309
OPS_FINALIZED = _constants.OPS_FINALIZED
1310

    
1311
# OpCode priority
1312
OP_PRIO_LOWEST = _constants.OP_PRIO_LOWEST
1313
OP_PRIO_HIGHEST = _constants.OP_PRIO_HIGHEST
1314
OP_PRIO_LOW = _constants.OP_PRIO_LOW
1315
OP_PRIO_NORMAL = _constants.OP_PRIO_NORMAL
1316
OP_PRIO_HIGH = _constants.OP_PRIO_HIGH
1317
OP_PRIO_SUBMIT_VALID = _constants.OP_PRIO_SUBMIT_VALID
1318
OP_PRIO_DEFAULT = _constants.OP_PRIO_DEFAULT
1319

    
1320
# Lock recalculate mode
1321
LOCKS_REPLACE = "replace"
1322
LOCKS_APPEND = "append"
1323

    
1324
# Lock timeout (sum) before we should go into blocking acquire (still
1325
# can be reset by priority change); computed as max time (10 hours)
1326
# before we should actually go into blocking acquire given that we
1327
# start from default priority level; in seconds
1328
# TODO
1329
LOCK_ATTEMPTS_TIMEOUT = 10 * 3600 / (OP_PRIO_DEFAULT - OP_PRIO_HIGHEST)
1330
LOCK_ATTEMPTS_MAXWAIT = 15.0
1331
LOCK_ATTEMPTS_MINWAIT = 1.0
1332

    
1333
# Execution log types
1334
ELOG_MESSAGE = _constants.ELOG_MESSAGE
1335
ELOG_REMOTE_IMPORT = _constants.ELOG_REMOTE_IMPORT
1336
ELOG_JQUEUE_TEST = _constants.ELOG_JQUEUE_TEST
1337

    
1338
# /etc/hosts modification
1339
ETC_HOSTS_ADD = "add"
1340
ETC_HOSTS_REMOVE = "remove"
1341

    
1342
# Job queue test
1343
JQT_MSGPREFIX = "TESTMSG="
1344
JQT_EXPANDNAMES = "expandnames"
1345
JQT_EXEC = "exec"
1346
JQT_LOGMSG = "logmsg"
1347
JQT_STARTMSG = "startmsg"
1348
JQT_ALL = compat.UniqueFrozenset([
1349
  JQT_EXPANDNAMES,
1350
  JQT_EXEC,
1351
  JQT_LOGMSG,
1352
  JQT_STARTMSG,
1353
  ])
1354

    
1355
# Query resources
1356
QR_CLUSTER = "cluster"
1357
QR_INSTANCE = "instance"
1358
QR_NODE = "node"
1359
QR_LOCK = "lock"
1360
QR_GROUP = "group"
1361
QR_OS = "os"
1362
QR_JOB = "job"
1363
QR_EXPORT = "export"
1364
QR_NETWORK = "network"
1365
QR_EXTSTORAGE = "extstorage"
1366

    
1367
#: List of resources which can be queried using L{opcodes.OpQuery}
1368
QR_VIA_OP = compat.UniqueFrozenset([
1369
  QR_CLUSTER,
1370
  QR_INSTANCE,
1371
  QR_NODE,
1372
  QR_GROUP,
1373
  QR_OS,
1374
  QR_EXPORT,
1375
  QR_NETWORK,
1376
  QR_EXTSTORAGE,
1377
  ])
1378

    
1379
#: List of resources which can be queried using Local UniX Interface
1380
QR_VIA_LUXI = QR_VIA_OP.union([
1381
  QR_LOCK,
1382
  QR_JOB,
1383
  ])
1384

    
1385
#: List of resources which can be queried using RAPI
1386
QR_VIA_RAPI = QR_VIA_LUXI
1387

    
1388
# Query field types
1389
QFT_UNKNOWN = "unknown"
1390
QFT_TEXT = "text"
1391
QFT_BOOL = "bool"
1392
QFT_NUMBER = "number"
1393
QFT_UNIT = "unit"
1394
QFT_TIMESTAMP = "timestamp"
1395
QFT_OTHER = "other"
1396

    
1397
#: All query field types
1398
QFT_ALL = compat.UniqueFrozenset([
1399
  QFT_UNKNOWN,
1400
  QFT_TEXT,
1401
  QFT_BOOL,
1402
  QFT_NUMBER,
1403
  QFT_UNIT,
1404
  QFT_TIMESTAMP,
1405
  QFT_OTHER,
1406
  ])
1407

    
1408
# Query result field status (don't change or reuse values as they're used by
1409
# clients)
1410
#: Normal field status
1411
RS_NORMAL = 0
1412
#: Unknown field
1413
RS_UNKNOWN = 1
1414
#: No data (e.g. RPC error), can be used instead of L{RS_OFFLINE}
1415
RS_NODATA = 2
1416
#: Value unavailable/unsupported for item; if this field is supported
1417
#: but we cannot get the data for the moment, RS_NODATA or
1418
#: RS_OFFLINE should be used
1419
RS_UNAVAIL = 3
1420
#: Resource marked offline
1421
RS_OFFLINE = 4
1422

    
1423
RS_ALL = compat.UniqueFrozenset([
1424
  RS_NORMAL,
1425
  RS_UNKNOWN,
1426
  RS_NODATA,
1427
  RS_UNAVAIL,
1428
  RS_OFFLINE,
1429
  ])
1430

    
1431
#: Dictionary with special field cases and their verbose/terse formatting
1432
RSS_DESCRIPTION = {
1433
  RS_UNKNOWN: ("(unknown)", "??"),
1434
  RS_NODATA: ("(nodata)", "?"),
1435
  RS_OFFLINE: ("(offline)", "*"),
1436
  RS_UNAVAIL: ("(unavail)", "-"),
1437
  }
1438

    
1439
# max dynamic devices
1440
MAX_NICS = 8
1441
MAX_DISKS = 16
1442

    
1443
# SSCONF file prefix
1444
SSCONF_FILEPREFIX = "ssconf_"
1445
# SSCONF keys
1446
SS_CLUSTER_NAME = "cluster_name"
1447
SS_CLUSTER_TAGS = "cluster_tags"
1448
SS_FILE_STORAGE_DIR = "file_storage_dir"
1449
SS_SHARED_FILE_STORAGE_DIR = "shared_file_storage_dir"
1450
SS_MASTER_CANDIDATES = "master_candidates"
1451
SS_MASTER_CANDIDATES_IPS = "master_candidates_ips"
1452
SS_MASTER_IP = "master_ip"
1453
SS_MASTER_NETDEV = "master_netdev"
1454
SS_MASTER_NETMASK = "master_netmask"
1455
SS_MASTER_NODE = "master_node"
1456
SS_NODE_LIST = "node_list"
1457
SS_NODE_PRIMARY_IPS = "node_primary_ips"
1458
SS_NODE_SECONDARY_IPS = "node_secondary_ips"
1459
SS_OFFLINE_NODES = "offline_nodes"
1460
SS_ONLINE_NODES = "online_nodes"
1461
SS_PRIMARY_IP_FAMILY = "primary_ip_family"
1462
SS_INSTANCE_LIST = "instance_list"
1463
SS_RELEASE_VERSION = "release_version"
1464
SS_HYPERVISOR_LIST = "hypervisor_list"
1465
SS_MAINTAIN_NODE_HEALTH = "maintain_node_health"
1466
SS_UID_POOL = "uid_pool"
1467
SS_NODEGROUPS = "nodegroups"
1468
SS_NETWORKS = "networks"
1469

    
1470
# This is not a complete SSCONF key, but the prefix for the hypervisor keys
1471
SS_HVPARAMS_PREF = "hvparams_"
1472

    
1473
# Hvparams keys:
1474
SS_HVPARAMS_XEN_PVM = SS_HVPARAMS_PREF + HT_XEN_PVM
1475
SS_HVPARAMS_XEN_FAKE = SS_HVPARAMS_PREF + HT_FAKE
1476
SS_HVPARAMS_XEN_HVM = SS_HVPARAMS_PREF + HT_XEN_HVM
1477
SS_HVPARAMS_XEN_KVM = SS_HVPARAMS_PREF + HT_KVM
1478
SS_HVPARAMS_XEN_CHROOT = SS_HVPARAMS_PREF + HT_CHROOT
1479
SS_HVPARAMS_XEN_LXC = SS_HVPARAMS_PREF + HT_LXC
1480

    
1481
VALID_SS_HVPARAMS_KEYS = compat.UniqueFrozenset([
1482
  SS_HVPARAMS_XEN_PVM,
1483
  SS_HVPARAMS_XEN_FAKE,
1484
  SS_HVPARAMS_XEN_HVM,
1485
  SS_HVPARAMS_XEN_KVM,
1486
  SS_HVPARAMS_XEN_CHROOT,
1487
  SS_HVPARAMS_XEN_LXC,
1488
  ])
1489

    
1490
SS_FILE_PERMS = 0444
1491

    
1492
# cluster wide default parameters
1493
DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM
1494

    
1495
HVC_DEFAULTS = {
1496
  HT_XEN_PVM: {
1497
    HV_USE_BOOTLOADER: False,
1498
    HV_BOOTLOADER_PATH: XEN_BOOTLOADER,
1499
    HV_BOOTLOADER_ARGS: "",
1500
    HV_KERNEL_PATH: XEN_KERNEL,
1501
    HV_INITRD_PATH: "",
1502
    HV_ROOT_PATH: "/dev/xvda1",
1503
    HV_KERNEL_ARGS: "ro",
1504
    HV_MIGRATION_PORT: 8002,
1505
    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1506
    HV_BLOCKDEV_PREFIX: "sd",
1507
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1508
    HV_CPU_MASK: CPU_PINNING_ALL,
1509
    HV_CPU_CAP: 0,
1510
    HV_CPU_WEIGHT: 256,
1511
    HV_VIF_SCRIPT: "",
1512
    HV_XEN_CMD: XEN_CMD_XM,
1513
    HV_XEN_CPUID: "",
1514
    HV_SOUNDHW: "",
1515
    },
1516
  HT_XEN_HVM: {
1517
    HV_BOOT_ORDER: "cd",
1518
    HV_CDROM_IMAGE_PATH: "",
1519
    HV_NIC_TYPE: HT_NIC_RTL8139,
1520
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1521
    HV_VNC_BIND_ADDRESS: IP4_ADDRESS_ANY,
1522
    HV_VNC_PASSWORD_FILE: pathutils.VNC_PASSWORD_FILE,
1523
    HV_ACPI: True,
1524
    HV_PAE: True,
1525
    HV_KERNEL_PATH: "/usr/lib/xen/boot/hvmloader",
1526
    HV_DEVICE_MODEL: "/usr/lib/xen/bin/qemu-dm",
1527
    HV_MIGRATION_PORT: 8002,
1528
    HV_MIGRATION_MODE: HT_MIGRATION_NONLIVE,
1529
    HV_USE_LOCALTIME: False,
1530
    HV_BLOCKDEV_PREFIX: "hd",
1531
    HV_PASSTHROUGH: "",
1532
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1533
    HV_CPU_MASK: CPU_PINNING_ALL,
1534
    HV_CPU_CAP: 0,
1535
    HV_CPU_WEIGHT: 256,
1536
    HV_VIF_TYPE: HT_HVM_VIF_IOEMU,
1537
    HV_VIF_SCRIPT: "",
1538
    HV_VIRIDIAN: False,
1539
    HV_XEN_CMD: XEN_CMD_XM,
1540
    HV_XEN_CPUID: "",
1541
    HV_SOUNDHW: "",
1542
    },
1543
  HT_KVM: {
1544
    HV_KVM_PATH: KVM_PATH,
1545
    HV_KERNEL_PATH: KVM_KERNEL,
1546
    HV_INITRD_PATH: "",
1547
    HV_KERNEL_ARGS: "ro",
1548
    HV_ROOT_PATH: "/dev/vda1",
1549
    HV_ACPI: True,
1550
    HV_SERIAL_CONSOLE: True,
1551
    HV_SERIAL_SPEED: 38400,
1552
    HV_VNC_BIND_ADDRESS: "",
1553
    HV_VNC_TLS: False,
1554
    HV_VNC_X509: "",
1555
    HV_VNC_X509_VERIFY: False,
1556
    HV_VNC_PASSWORD_FILE: "",
1557
    HV_KVM_SPICE_BIND: "",
1558
    HV_KVM_SPICE_IP_VERSION: IFACE_NO_IP_VERSION_SPECIFIED,
1559
    HV_KVM_SPICE_PASSWORD_FILE: "",
1560
    HV_KVM_SPICE_LOSSLESS_IMG_COMPR: "",
1561
    HV_KVM_SPICE_JPEG_IMG_COMPR: "",
1562
    HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR: "",
1563
    HV_KVM_SPICE_STREAMING_VIDEO_DETECTION: "",
1564
    HV_KVM_SPICE_AUDIO_COMPR: True,
1565
    HV_KVM_SPICE_USE_TLS: False,
1566
    HV_KVM_SPICE_TLS_CIPHERS: OPENSSL_CIPHERS,
1567
    HV_KVM_SPICE_USE_VDAGENT: True,
1568
    HV_KVM_FLOPPY_IMAGE_PATH: "",
1569
    HV_CDROM_IMAGE_PATH: "",
1570
    HV_KVM_CDROM2_IMAGE_PATH: "",
1571
    HV_BOOT_ORDER: HT_BO_DISK,
1572
    HV_NIC_TYPE: HT_NIC_PARAVIRTUAL,
1573
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1574
    HV_KVM_CDROM_DISK_TYPE: "",
1575
    HV_USB_MOUSE: "",
1576
    HV_KEYMAP: "",
1577
    HV_MIGRATION_PORT: 8102,
1578
    HV_MIGRATION_BANDWIDTH: 32, # MiB/s
1579
    HV_MIGRATION_DOWNTIME: 30,  # ms
1580
    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1581
    HV_USE_LOCALTIME: False,
1582
    HV_DISK_CACHE: HT_CACHE_DEFAULT,
1583
    HV_SECURITY_MODEL: HT_SM_NONE,
1584
    HV_SECURITY_DOMAIN: "",
1585
    HV_KVM_FLAG: "",
1586
    HV_VHOST_NET: False,
1587
    HV_KVM_USE_CHROOT: False,
1588
    HV_MEM_PATH: "",
1589
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1590
    HV_CPU_MASK: CPU_PINNING_ALL,
1591
    HV_CPU_TYPE: "",
1592
    HV_CPU_CORES: 0,
1593
    HV_CPU_THREADS: 0,
1594
    HV_CPU_SOCKETS: 0,
1595
    HV_SOUNDHW: "",
1596
    HV_USB_DEVICES: "",
1597
    HV_VGA: "",
1598
    HV_KVM_EXTRA: "",
1599
    HV_KVM_MACHINE_VERSION: "",
1600
    HV_VNET_HDR: True,
1601
    },
1602
  HT_FAKE: {
1603
    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1604
  },
1605
  HT_CHROOT: {
1606
    HV_INIT_SCRIPT: "/ganeti-chroot",
1607
    },
1608
  HT_LXC: {
1609
    HV_CPU_MASK: "",
1610
    },
1611
  }
1612

    
1613
HVC_GLOBALS = compat.UniqueFrozenset([
1614
  HV_MIGRATION_PORT,
1615
  HV_MIGRATION_BANDWIDTH,
1616
  HV_MIGRATION_MODE,
1617
  HV_XEN_CMD,
1618
  ])
1619

    
1620
BEC_DEFAULTS = {
1621
  BE_MINMEM: 128,
1622
  BE_MAXMEM: 128,
1623
  BE_VCPUS: 1,
1624
  BE_AUTO_BALANCE: True,
1625
  BE_ALWAYS_FAILOVER: False,
1626
  BE_SPINDLE_USE: 1,
1627
  }
1628

    
1629
NDC_DEFAULTS = {
1630
  ND_OOB_PROGRAM: "",
1631
  ND_SPINDLE_COUNT: 1,
1632
  ND_EXCLUSIVE_STORAGE: False,
1633
  ND_OVS: False,
1634
  ND_OVS_NAME: DEFAULT_OVS,
1635
  ND_OVS_LINK: ""
1636
  }
1637

    
1638
NDC_GLOBALS = compat.UniqueFrozenset([
1639
  ND_EXCLUSIVE_STORAGE,
1640
  ])
1641

    
1642
DISK_LD_DEFAULTS = {
1643
  DT_DRBD8: {
1644
    LDP_RESYNC_RATE: CLASSIC_DRBD_SYNC_SPEED,
1645
    LDP_BARRIERS: _constants.DRBD_BARRIERS,
1646
    LDP_NO_META_FLUSH: _constants.DRBD_NO_META_FLUSH,
1647
    LDP_DEFAULT_METAVG: DEFAULT_VG,
1648
    LDP_DISK_CUSTOM: "",
1649
    LDP_NET_CUSTOM: "",
1650
    LDP_PROTOCOL: DRBD_DEFAULT_NET_PROTOCOL,
1651
    LDP_DYNAMIC_RESYNC: False,
1652

    
1653
    # The default values for the DRBD dynamic resync speed algorithm
1654
    # are taken from the drbsetup 8.3.11 man page, except for
1655
    # c-plan-ahead (that we don't need to set to 0, because we have a
1656
    # separate option to enable it) and for c-max-rate, that we cap to
1657
    # the default value for the static resync rate.
1658
    LDP_PLAN_AHEAD: 20, # ds
1659
    LDP_FILL_TARGET: 0, # sectors
1660
    LDP_DELAY_TARGET: 1, # ds
1661
    LDP_MAX_RATE: CLASSIC_DRBD_SYNC_SPEED, # KiB/s
1662
    LDP_MIN_RATE: 4 * 1024, # KiB/s
1663
    },
1664
  DT_PLAIN: {
1665
    LDP_STRIPES: _constants.LVM_STRIPECOUNT
1666
    },
1667
  DT_FILE: {},
1668
  DT_SHARED_FILE: {},
1669
  DT_BLOCK: {},
1670
  DT_RBD: {
1671
    LDP_POOL: "rbd",
1672
    LDP_ACCESS: DISK_KERNELSPACE,
1673
    },
1674
  DT_EXT: {},
1675
  }
1676

    
1677
# readability shortcuts
1678
_LV_DEFAULTS = DISK_LD_DEFAULTS[DT_PLAIN]
1679
_DRBD_DEFAULTS = DISK_LD_DEFAULTS[DT_DRBD8]
1680

    
1681
DISK_DT_DEFAULTS = {
1682
  DT_PLAIN: {
1683
    LV_STRIPES: DISK_LD_DEFAULTS[DT_PLAIN][LDP_STRIPES],
1684
    },
1685
  DT_DRBD8: {
1686
    DRBD_RESYNC_RATE: _DRBD_DEFAULTS[LDP_RESYNC_RATE],
1687
    DRBD_DATA_STRIPES: _LV_DEFAULTS[LDP_STRIPES],
1688
    DRBD_META_STRIPES: _LV_DEFAULTS[LDP_STRIPES],
1689
    DRBD_DISK_BARRIERS: _DRBD_DEFAULTS[LDP_BARRIERS],
1690
    DRBD_META_BARRIERS: _DRBD_DEFAULTS[LDP_NO_META_FLUSH],
1691
    DRBD_DEFAULT_METAVG: _DRBD_DEFAULTS[LDP_DEFAULT_METAVG],
1692
    DRBD_DISK_CUSTOM: _DRBD_DEFAULTS[LDP_DISK_CUSTOM],
1693
    DRBD_NET_CUSTOM: _DRBD_DEFAULTS[LDP_NET_CUSTOM],
1694
    DRBD_PROTOCOL: _DRBD_DEFAULTS[LDP_PROTOCOL],
1695
    DRBD_DYNAMIC_RESYNC: _DRBD_DEFAULTS[LDP_DYNAMIC_RESYNC],
1696
    DRBD_PLAN_AHEAD: _DRBD_DEFAULTS[LDP_PLAN_AHEAD],
1697
    DRBD_FILL_TARGET: _DRBD_DEFAULTS[LDP_FILL_TARGET],
1698
    DRBD_DELAY_TARGET: _DRBD_DEFAULTS[LDP_DELAY_TARGET],
1699
    DRBD_MAX_RATE: _DRBD_DEFAULTS[LDP_MAX_RATE],
1700
    DRBD_MIN_RATE: _DRBD_DEFAULTS[LDP_MIN_RATE],
1701
    },
1702
  DT_DISKLESS: {},
1703
  DT_FILE: {},
1704
  DT_SHARED_FILE: {},
1705
  DT_BLOCK: {},
1706
  DT_RBD: {
1707
    RBD_POOL: DISK_LD_DEFAULTS[DT_RBD][LDP_POOL],
1708
    RBD_ACCESS: DISK_LD_DEFAULTS[DT_RBD][LDP_ACCESS],
1709
    },
1710
  DT_EXT: {},
1711
  }
1712

    
1713
# we don't want to export the shortcuts
1714
del _LV_DEFAULTS, _DRBD_DEFAULTS
1715

    
1716
NICC_DEFAULTS = {
1717
  NIC_MODE: NIC_MODE_BRIDGED,
1718
  NIC_LINK: DEFAULT_BRIDGE,
1719
  NIC_VLAN: VALUE_HS_NOTHING,
1720
  }
1721

    
1722
# All of the following values are quite arbitrarily - there are no
1723
# "good" defaults, these must be customised per-site
1724
ISPECS_MINMAX_DEFAULTS = {
1725
  ISPECS_MIN: {
1726
    ISPEC_MEM_SIZE: 128,
1727
    ISPEC_CPU_COUNT: 1,
1728
    ISPEC_DISK_COUNT: 1,
1729
    ISPEC_DISK_SIZE: 1024,
1730
    ISPEC_NIC_COUNT: 1,
1731
    ISPEC_SPINDLE_USE: 1,
1732
    },
1733
  ISPECS_MAX: {
1734
    ISPEC_MEM_SIZE: 32768,
1735
    ISPEC_CPU_COUNT: 8,
1736
    ISPEC_DISK_COUNT: MAX_DISKS,
1737
    ISPEC_DISK_SIZE: 1024 * 1024,
1738
    ISPEC_NIC_COUNT: MAX_NICS,
1739
    ISPEC_SPINDLE_USE: 12,
1740
    },
1741
  }
1742
IPOLICY_DEFAULTS = {
1743
  ISPECS_MINMAX: [ISPECS_MINMAX_DEFAULTS],
1744
  ISPECS_STD: {
1745
    ISPEC_MEM_SIZE: 128,
1746
    ISPEC_CPU_COUNT: 1,
1747
    ISPEC_DISK_COUNT: 1,
1748
    ISPEC_DISK_SIZE: 1024,
1749
    ISPEC_NIC_COUNT: 1,
1750
    ISPEC_SPINDLE_USE: 1,
1751
    },
1752
  IPOLICY_DTS: list(DISK_TEMPLATES),
1753
  IPOLICY_VCPU_RATIO: 4.0,
1754
  IPOLICY_SPINDLE_RATIO: 32.0,
1755
  }
1756

    
1757
MASTER_POOL_SIZE_DEFAULT = 10
1758

    
1759
# Exclusive storage:
1760
# Error margin used to compare physical disks
1761
PART_MARGIN = .01
1762
# Space reserved when creating instance disks
1763
PART_RESERVED = .02
1764

    
1765
CONFD_PROTOCOL_VERSION = _constants.CONFD_PROTOCOL_VERSION
1766

    
1767
CONFD_REQ_PING = _constants.CONFD_REQ_PING
1768
CONFD_REQ_NODE_ROLE_BYNAME = _constants.CONFD_REQ_NODE_ROLE_BYNAME
1769
CONFD_REQ_NODE_PIP_BY_INSTANCE_IP = _constants.CONFD_REQ_NODE_PIP_BY_INSTANCE_IP
1770
CONFD_REQ_CLUSTER_MASTER = _constants.CONFD_REQ_CLUSTER_MASTER
1771
CONFD_REQ_NODE_PIP_LIST = _constants.CONFD_REQ_NODE_PIP_LIST
1772
CONFD_REQ_MC_PIP_LIST = _constants.CONFD_REQ_MC_PIP_LIST
1773
CONFD_REQ_INSTANCES_IPS_LIST = _constants.CONFD_REQ_INSTANCES_IPS_LIST
1774
CONFD_REQ_NODE_DRBD = _constants.CONFD_REQ_NODE_DRBD
1775
CONFD_REQ_NODE_INSTANCES = _constants.CONFD_REQ_NODE_INSTANCES
1776
CONFD_REQS = _constants.CONFD_REQS
1777

    
1778
# Confd request query fields. These are used to narrow down queries.
1779
# These must be strings rather than integers, because json-encoding
1780
# converts them to strings anyway, as they're used as dict-keys.
1781
CONFD_REQQ_LINK = _constants.CONFD_REQQ_LINK
1782
CONFD_REQQ_IP = _constants.CONFD_REQQ_IP
1783
CONFD_REQQ_IPLIST = _constants.CONFD_REQQ_IPLIST
1784
CONFD_REQQ_FIELDS = _constants.CONFD_REQQ_FIELDS
1785

    
1786
# FIXME: perhaps update code that uses these constants to deal with
1787
# integers instead of strings
1788
CONFD_REQFIELD_NAME = str(_constants.CONFD_REQFIELD_NAME)
1789
CONFD_REQFIELD_IP = str(_constants.CONFD_REQFIELD_IP)
1790
CONFD_REQFIELD_MNODE_PIP = str(_constants.CONFD_REQFIELD_MNODE_PIP)
1791

    
1792
CONFD_REPL_STATUS_OK = _constants.CONFD_REPL_STATUS_OK
1793
CONFD_REPL_STATUS_ERROR = _constants.CONFD_REPL_STATUS_ERROR
1794
CONFD_REPL_STATUS_NOTIMPLEMENTED = _constants.CONFD_REPL_STATUS_NOTIMPLEMENTED
1795
CONFD_REPL_STATUSES = _constants.CONFD_REPL_STATUSES
1796

    
1797
CONFD_NODE_ROLE_MASTER = _constants.CONFD_NODE_ROLE_MASTER
1798
CONFD_NODE_ROLE_CANDIDATE = _constants.CONFD_NODE_ROLE_CANDIDATE
1799
CONFD_NODE_ROLE_OFFLINE = _constants.CONFD_NODE_ROLE_OFFLINE
1800
CONFD_NODE_ROLE_DRAINED = _constants.CONFD_NODE_ROLE_DRAINED
1801
CONFD_NODE_ROLE_REGULAR = _constants.CONFD_NODE_ROLE_REGULAR
1802

    
1803
CONFD_ERROR_UNKNOWN_ENTRY = _constants.CONFD_ERROR_UNKNOWN_ENTRY
1804
CONFD_ERROR_INTERNAL = _constants.CONFD_ERROR_INTERNAL
1805
CONFD_ERROR_ARGUMENT = _constants.CONFD_ERROR_ARGUMENT
1806

    
1807
# Each request is "salted" by the current timestamp.
1808
# This constants decides how many seconds of skew to accept.
1809
# TODO: make this a default and allow the value to be more configurable
1810
CONFD_MAX_CLOCK_SKEW = _constants.CONFD_MAX_CLOCK_SKEW
1811

    
1812
# When we haven't reloaded the config for more than this amount of
1813
# seconds, we force a test to see if inotify is betraying us. Using a
1814
# prime number to ensure we get less chance of 'same wakeup' with
1815
# other processes.
1816
CONFD_CONFIG_RELOAD_TIMEOUT = _constants.CONFD_CONFIG_RELOAD_TIMEOUT
1817

    
1818
# If we receive more than one update in this amount of microseconds,
1819
# we move to polling every RATELIMIT seconds, rather than relying on
1820
# inotify, to be able to serve more requests.
1821
CONFD_CONFIG_RELOAD_RATELIMIT = _constants.CONFD_CONFIG_RELOAD_RATELIMIT
1822

    
1823
# Magic number prepended to all confd queries.
1824
# This allows us to distinguish different types of confd protocols and handle
1825
# them. For example by changing this we can move the whole payload to be
1826
# compressed, or move away from json.
1827
CONFD_MAGIC_FOURCC = _constants.CONFD_MAGIC_FOURCC
1828

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

    
1834
# Timeout in seconds to expire pending query request in the confd client
1835
# library. We don't actually expect any answer more than 10 seconds after we
1836
# sent a request.
1837
CONFD_CLIENT_EXPIRE_TIMEOUT = _constants.CONFD_CLIENT_EXPIRE_TIMEOUT
1838

    
1839
# Maximum UDP datagram size.
1840
# On IPv4: 64K - 20 (ip header size) - 8 (udp header size) = 65507
1841
# On IPv6: 64K - 40 (ip6 header size) - 8 (udp header size) = 65487
1842
#   (assuming we can't use jumbo frames)
1843
# We just set this to 60K, which should be enough
1844
MAX_UDP_DATA_SIZE = 61440
1845

    
1846
# User-id pool minimum/maximum acceptable user-ids.
1847
UIDPOOL_UID_MIN = 0
1848
UIDPOOL_UID_MAX = 2 ** 32 - 1 # Assuming 32 bit user-ids
1849

    
1850
# Name or path of the pgrep command
1851
PGREP = "pgrep"
1852

    
1853
# Name of the node group that gets created at cluster init or upgrade
1854
INITIAL_NODE_GROUP_NAME = "default"
1855

    
1856
# Possible values for NodeGroup.alloc_policy
1857
ALLOC_POLICY_PREFERRED = _constants.ALLOC_POLICY_PREFERRED
1858
ALLOC_POLICY_LAST_RESORT = _constants.ALLOC_POLICY_LAST_RESORT
1859
ALLOC_POLICY_UNALLOCABLE = _constants.ALLOC_POLICY_UNALLOCABLE
1860
VALID_ALLOC_POLICIES = _constants.VALID_ALLOC_POLICIES
1861

    
1862
# Temporary external/shared storage parameters
1863
BLOCKDEV_DRIVER_MANUAL = _constants.BLOCKDEV_DRIVER_MANUAL
1864

    
1865
# qemu-img path, required for ovfconverter
1866
QEMUIMG_PATH = _constants.QEMUIMG_PATH
1867

    
1868
# Whether htools was enabled at compilation time
1869
HTOOLS = _constants.HTOOLS
1870
# The hail iallocator
1871
IALLOC_HAIL = "hail"
1872

    
1873
# Fake opcodes for functions that have hooks attached to them via
1874
# backend.RunLocalHooks
1875
FAKE_OP_MASTER_TURNUP = "OP_CLUSTER_IP_TURNUP"
1876
FAKE_OP_MASTER_TURNDOWN = "OP_CLUSTER_IP_TURNDOWN"
1877

    
1878
# SSH key types
1879
SSHK_RSA = "rsa"
1880
SSHK_DSA = "dsa"
1881
SSHK_ALL = compat.UniqueFrozenset([SSHK_RSA, SSHK_DSA])
1882

    
1883
# SSH authorized key types
1884
SSHAK_RSA = "ssh-rsa"
1885
SSHAK_DSS = "ssh-dss"
1886
SSHAK_ALL = compat.UniqueFrozenset([SSHAK_RSA, SSHAK_DSS])
1887

    
1888
# SSH setup
1889
SSHS_CLUSTER_NAME = "cluster_name"
1890
SSHS_SSH_HOST_KEY = "ssh_host_key"
1891
SSHS_SSH_ROOT_KEY = "ssh_root_key"
1892
SSHS_NODE_DAEMON_CERTIFICATE = "node_daemon_certificate"
1893

    
1894
#: Key files for SSH daemon
1895
SSH_DAEMON_KEYFILES = {
1896
  SSHK_RSA: (pathutils.SSH_HOST_RSA_PRIV, pathutils.SSH_HOST_RSA_PUB),
1897
  SSHK_DSA: (pathutils.SSH_HOST_DSA_PRIV, pathutils.SSH_HOST_DSA_PUB),
1898
  }
1899

    
1900
# Node daemon setup
1901
NDS_CLUSTER_NAME = "cluster_name"
1902
NDS_NODE_DAEMON_CERTIFICATE = "node_daemon_certificate"
1903
NDS_SSCONF = "ssconf"
1904
NDS_START_NODE_DAEMON = "start_node_daemon"
1905

    
1906
# Path generating random UUID
1907
RANDOM_UUID_FILE = _constants.RANDOM_UUID_FILE
1908

    
1909
# Regex string for verifying a UUID
1910
UUID_REGEX = "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"
1911

    
1912
# Auto-repair tag prefixes
1913
AUTO_REPAIR_TAG_PREFIX = _constants.AUTO_REPAIR_TAG_PREFIX
1914
AUTO_REPAIR_TAG_ENABLED = _constants.AUTO_REPAIR_TAG_ENABLED
1915
AUTO_REPAIR_TAG_SUSPENDED = _constants.AUTO_REPAIR_TAG_SUSPENDED
1916
AUTO_REPAIR_TAG_PENDING = _constants.AUTO_REPAIR_TAG_PENDING
1917
AUTO_REPAIR_TAG_RESULT = _constants.AUTO_REPAIR_TAG_RESULT
1918

    
1919
# Auto-repair levels
1920
AUTO_REPAIR_FIX_STORAGE = _constants.AUTO_REPAIR_FIX_STORAGE
1921
AUTO_REPAIR_MIGRATE = _constants.AUTO_REPAIR_MIGRATE
1922
AUTO_REPAIR_FAILOVER = _constants.AUTO_REPAIR_FAILOVER
1923
AUTO_REPAIR_REINSTALL = _constants.AUTO_REPAIR_REINSTALL
1924
AUTO_REPAIR_ALL_TYPES = _constants.AUTO_REPAIR_ALL_TYPES
1925

    
1926
# Auto-repair results
1927
AUTO_REPAIR_SUCCESS = _constants.AUTO_REPAIR_SUCCESS
1928
AUTO_REPAIR_FAILURE = _constants.AUTO_REPAIR_FAILURE
1929
AUTO_REPAIR_ENOPERM = _constants.AUTO_REPAIR_ENOPERM
1930
AUTO_REPAIR_ALL_RESULTS = _constants.AUTO_REPAIR_ALL_RESULTS
1931

    
1932
# The version identifier for builtin data collectors
1933
BUILTIN_DATA_COLLECTOR_VERSION = _constants.BUILTIN_DATA_COLLECTOR_VERSION
1934

    
1935
# The reason trail opcode parameter name
1936
OPCODE_REASON = _constants.OPCODE_REASON
1937

    
1938
# The source reasons for the execution of an OpCode
1939
OPCODE_REASON_SRC_CLIENT = "gnt:client"
1940
OPCODE_REASON_SRC_NODED = "gnt:daemon:noded"
1941
OPCODE_REASON_SRC_OPCODE = "gnt:opcode"
1942
OPCODE_REASON_SRC_RLIB2 = "gnt:library:rlib2"
1943
OPCODE_REASON_SRC_USER = "gnt:user"
1944

    
1945
OPCODE_REASON_SOURCES = compat.UniqueFrozenset([
1946
  OPCODE_REASON_SRC_CLIENT,
1947
  OPCODE_REASON_SRC_NODED,
1948
  OPCODE_REASON_SRC_OPCODE,
1949
  OPCODE_REASON_SRC_RLIB2,
1950
  OPCODE_REASON_SRC_USER,
1951
  ])
1952

    
1953
DISKSTATS_FILE = _constants.DISKSTATS_FILE
1954

    
1955
# CPU load collector variables
1956
STAT_FILE = _constants.STAT_FILE
1957
CPUAVGLOAD_BUFFER_SIZE = _constants.CPUAVGLOAD_BUFFER_SIZE
1958
CPUAVGLOAD_WINDOW_SIZE = _constants.CPUAVGLOAD_WINDOW_SIZE
1959

    
1960
# Mond's variable for periodical data collection
1961
MOND_TIME_INTERVAL = _constants.MOND_TIME_INTERVAL
1962

    
1963
# MonD's latest API version
1964
MOND_LATEST_API_VERSION = 1
1965

    
1966
# Timeouts for upgrades
1967

    
1968
UPGRADE_QUEUE_DRAIN_TIMEOUT = _constants.UPGRADE_QUEUE_DRAIN_TIMEOUT
1969
UPGRADE_QUEUE_POLL_INTERVAL = _constants.UPGRADE_QUEUE_POLL_INTERVAL
1970

    
1971
# Do not re-export imported modules
1972
del re, _vcsversion, _constants, socket, pathutils, compat
1973

    
1974

    
1975
ALLOCATABLE_KEY = "allocatable"
1976
FAILED_KEY = "failed"