Statistics
| Branch: | Tag: | Revision:

root / lib / constants.py @ 52d4f735

History | View | Annotate | Download (60.9 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

    
449
RPC_TMO_URGENT = _constants.RPC_TMO_URGENT
450
RPC_TMO_FAST = _constants.RPC_TMO_FAST
451
RPC_TMO_NORMAL = _constants.RPC_TMO_NORMAL
452
RPC_TMO_SLOW = _constants.RPC_TMO_SLOW
453
RPC_TMO_4HRS = _constants.RPC_TMO_4HRS
454
RPC_TMO_1DAY = _constants.RPC_TMO_1DAY
455
RPC_CONNECT_TIMEOUT = _constants.RPC_CONNECT_TIMEOUT
456

    
457
#: Key for job IDs in opcode result
458
JOB_IDS_KEY = "jobs"
459

    
460
# runparts results
461
(RUNPARTS_SKIP,
462
 RUNPARTS_RUN,
463
 RUNPARTS_ERR) = range(3)
464

    
465
RUNPARTS_STATUS = compat.UniqueFrozenset([
466
  RUNPARTS_SKIP,
467
  RUNPARTS_RUN,
468
  RUNPARTS_ERR,
469
  ])
470

    
471
# RPC constants
472
(RPC_ENCODING_NONE,
473
 RPC_ENCODING_ZLIB_BASE64) = range(2)
474

    
475
# os related constants
476
OS_SCRIPT_CREATE = "create"
477
OS_SCRIPT_IMPORT = "import"
478
OS_SCRIPT_EXPORT = "export"
479
OS_SCRIPT_RENAME = "rename"
480
OS_SCRIPT_VERIFY = "verify"
481
OS_SCRIPTS = compat.UniqueFrozenset([
482
  OS_SCRIPT_CREATE,
483
  OS_SCRIPT_IMPORT,
484
  OS_SCRIPT_EXPORT,
485
  OS_SCRIPT_RENAME,
486
  OS_SCRIPT_VERIFY,
487
  ])
488

    
489
OS_API_FILE = "ganeti_api_version"
490
OS_VARIANTS_FILE = "variants.list"
491
OS_PARAMETERS_FILE = "parameters.list"
492

    
493
OS_VALIDATE_PARAMETERS = "parameters"
494
OS_VALIDATE_CALLS = compat.UniqueFrozenset([OS_VALIDATE_PARAMETERS])
495

    
496
# External Storage (ES) related constants
497
ES_ACTION_CREATE = "create"
498
ES_ACTION_REMOVE = "remove"
499
ES_ACTION_GROW = "grow"
500
ES_ACTION_ATTACH = "attach"
501
ES_ACTION_DETACH = "detach"
502
ES_ACTION_SETINFO = "setinfo"
503
ES_ACTION_VERIFY = "verify"
504

    
505
ES_SCRIPT_CREATE = ES_ACTION_CREATE
506
ES_SCRIPT_REMOVE = ES_ACTION_REMOVE
507
ES_SCRIPT_GROW = ES_ACTION_GROW
508
ES_SCRIPT_ATTACH = ES_ACTION_ATTACH
509
ES_SCRIPT_DETACH = ES_ACTION_DETACH
510
ES_SCRIPT_SETINFO = ES_ACTION_SETINFO
511
ES_SCRIPT_VERIFY = ES_ACTION_VERIFY
512
ES_SCRIPTS = frozenset([
513
  ES_SCRIPT_CREATE,
514
  ES_SCRIPT_REMOVE,
515
  ES_SCRIPT_GROW,
516
  ES_SCRIPT_ATTACH,
517
  ES_SCRIPT_DETACH,
518
  ES_SCRIPT_SETINFO,
519
  ES_SCRIPT_VERIFY
520
  ])
521

    
522
ES_PARAMETERS_FILE = "parameters.list"
523

    
524
# reboot types
525
INSTANCE_REBOOT_SOFT = _constants.INSTANCE_REBOOT_SOFT
526
INSTANCE_REBOOT_HARD = _constants.INSTANCE_REBOOT_HARD
527
INSTANCE_REBOOT_FULL = _constants.INSTANCE_REBOOT_FULL
528
REBOOT_TYPES = _constants.REBOOT_TYPES
529

    
530
# instance reboot behaviors
531
INSTANCE_REBOOT_ALLOWED = "reboot"
532
INSTANCE_REBOOT_EXIT = "exit"
533

    
534
REBOOT_BEHAVIORS = compat.UniqueFrozenset([
535
  INSTANCE_REBOOT_ALLOWED,
536
  INSTANCE_REBOOT_EXIT,
537
  ])
538

    
539
VTYPE_STRING = _constants.VTYPE_STRING
540
VTYPE_MAYBE_STRING = _constants.VTYPE_MAYBE_STRING
541
VTYPE_BOOL = _constants.VTYPE_BOOL
542
VTYPE_SIZE = _constants.VTYPE_SIZE
543
VTYPE_INT = _constants.VTYPE_INT
544
ENFORCEABLE_TYPES = _constants.ENFORCEABLE_TYPES
545

    
546
# Constant representing that the user does not specify any IP version
547
IFACE_NO_IP_VERSION_SPECIFIED = 0
548

    
549
VALID_SERIAL_SPEEDS = compat.UniqueFrozenset([
550
  75,
551
  110,
552
  300,
553
  600,
554
  1200,
555
  1800,
556
  2400,
557
  4800,
558
  9600,
559
  14400,
560
  19200,
561
  28800,
562
  38400,
563
  57600,
564
  115200,
565
  230400,
566
  345600,
567
  460800,
568
  ])
569

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

    
644

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

    
720
HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
721

    
722
HVS_PARAMETER_TITLES = {
723
  HV_ACPI: "ACPI",
724
  HV_BOOT_ORDER: "Boot_order",
725
  HV_CDROM_IMAGE_PATH: "CDROM_image_path",
726
  HV_DISK_TYPE: "Disk_type",
727
  HV_INITRD_PATH: "Initrd_path",
728
  HV_KERNEL_PATH: "Kernel_path",
729
  HV_NIC_TYPE: "NIC_type",
730
  HV_PAE: "PAE",
731
  HV_VNC_BIND_ADDRESS: "VNC_bind_address",
732
  HV_PASSTHROUGH: "pci_pass",
733
  HV_CPU_TYPE: "cpu_type",
734
  }
735

    
736
# Migration statuses
737
HV_MIGRATION_COMPLETED = "completed"
738
HV_MIGRATION_ACTIVE = "active"
739
HV_MIGRATION_FAILED = "failed"
740
HV_MIGRATION_CANCELLED = "cancelled"
741

    
742
HV_MIGRATION_VALID_STATUSES = compat.UniqueFrozenset([
743
  HV_MIGRATION_COMPLETED,
744
  HV_MIGRATION_ACTIVE,
745
  HV_MIGRATION_FAILED,
746
  HV_MIGRATION_CANCELLED,
747
  ])
748

    
749
HV_MIGRATION_FAILED_STATUSES = compat.UniqueFrozenset([
750
  HV_MIGRATION_FAILED,
751
  HV_MIGRATION_CANCELLED,
752
  ])
753

    
754
# KVM-specific statuses
755
HV_KVM_MIGRATION_VALID_STATUSES = HV_MIGRATION_VALID_STATUSES
756

    
757
# Node info keys
758
HV_NODEINFO_KEY_VERSION = "hv_version"
759

    
760
# Hypervisor state
761
HVST_MEMORY_TOTAL = "mem_total"
762
HVST_MEMORY_NODE = "mem_node"
763
HVST_MEMORY_HV = "mem_hv"
764
HVST_CPU_TOTAL = "cpu_total"
765
HVST_CPU_NODE = "cpu_node"
766

    
767
HVST_DEFAULTS = {
768
  HVST_MEMORY_TOTAL: 0,
769
  HVST_MEMORY_NODE: 0,
770
  HVST_MEMORY_HV: 0,
771
  HVST_CPU_TOTAL: 1,
772
  HVST_CPU_NODE: 1,
773
  }
774

    
775
HVSTS_PARAMETER_TYPES = {
776
  HVST_MEMORY_TOTAL: VTYPE_INT,
777
  HVST_MEMORY_NODE: VTYPE_INT,
778
  HVST_MEMORY_HV: VTYPE_INT,
779
  HVST_CPU_TOTAL: VTYPE_INT,
780
  HVST_CPU_NODE: VTYPE_INT,
781
  }
782

    
783
HVSTS_PARAMETERS = frozenset(HVSTS_PARAMETER_TYPES.keys())
784

    
785
# Disk state
786
DS_DISK_TOTAL = "disk_total"
787
DS_DISK_RESERVED = "disk_reserved"
788
DS_DISK_OVERHEAD = "disk_overhead"
789

    
790
DS_DEFAULTS = {
791
  DS_DISK_TOTAL: 0,
792
  DS_DISK_RESERVED: 0,
793
  DS_DISK_OVERHEAD: 0,
794
  }
795

    
796
ISPEC_MEM_SIZE = _constants.ISPEC_MEM_SIZE
797
ISPEC_CPU_COUNT = _constants.ISPEC_CPU_COUNT
798
ISPEC_DISK_COUNT = _constants.ISPEC_DISK_COUNT
799
ISPEC_DISK_SIZE = _constants.ISPEC_DISK_SIZE
800
ISPEC_NIC_COUNT = _constants.ISPEC_NIC_COUNT
801
ISPEC_SPINDLE_USE = _constants.ISPEC_SPINDLE_USE
802
ISPECS_PARAMETER_TYPES = _constants.ISPECS_PARAMETER_TYPES
803
ISPECS_PARAMETERS = _constants.ISPECS_PARAMETERS
804

    
805
ISPECS_MINMAX = _constants.ISPECS_MINMAX
806
ISPECS_MIN = _constants.ISPECS_MIN
807
ISPECS_MAX = _constants.ISPECS_MAX
808
ISPECS_STD = _constants.ISPECS_STD
809
IPOLICY_DTS = _constants.IPOLICY_DTS
810
IPOLICY_VCPU_RATIO = _constants.IPOLICY_VCPU_RATIO
811
IPOLICY_SPINDLE_RATIO = _constants.IPOLICY_SPINDLE_RATIO
812
ISPECS_MINMAX_KEYS = _constants.ISPECS_MINMAX_KEYS
813
IPOLICY_PARAMETERS = _constants.IPOLICY_PARAMETERS
814
IPOLICY_ALL_KEYS = _constants.IPOLICY_ALL_KEYS
815

    
816
ND_OOB_PROGRAM = _constants.ND_OOB_PROGRAM
817
ND_SPINDLE_COUNT = _constants.ND_SPINDLE_COUNT
818
ND_EXCLUSIVE_STORAGE = _constants.ND_EXCLUSIVE_STORAGE
819
ND_OVS = _constants.ND_OVS
820
ND_OVS_NAME = _constants.ND_OVS_NAME
821
ND_OVS_LINK = _constants.ND_OVS_LINK
822

    
823
NDS_PARAMETER_TYPES = _constants.NDS_PARAMETER_TYPES
824
NDS_PARAMETERS = _constants.NDS_PARAMETERS
825
NDS_PARAMETER_TITLES = _constants.NDS_PARAMETER_TITLES
826
DSS_PARAMETER_TYPES = {
827
  DS_DISK_TOTAL: VTYPE_INT,
828
  DS_DISK_RESERVED: VTYPE_INT,
829
  DS_DISK_OVERHEAD: VTYPE_INT,
830
  }
831

    
832
DSS_PARAMETERS = frozenset(DSS_PARAMETER_TYPES.keys())
833
DS_VALID_TYPES = compat.UniqueFrozenset([DT_PLAIN])
834

    
835
# Backend parameter names
836
BE_MEMORY = "memory" # deprecated and replaced by max and min mem
837
BE_MAXMEM = "maxmem"
838
BE_MINMEM = "minmem"
839
BE_VCPUS = "vcpus"
840
BE_AUTO_BALANCE = "auto_balance"
841
BE_ALWAYS_FAILOVER = "always_failover"
842
BE_SPINDLE_USE = "spindle_use"
843

    
844
BES_PARAMETER_TYPES = {
845
  BE_MAXMEM: VTYPE_SIZE,
846
  BE_MINMEM: VTYPE_SIZE,
847
  BE_VCPUS: VTYPE_INT,
848
  BE_AUTO_BALANCE: VTYPE_BOOL,
849
  BE_ALWAYS_FAILOVER: VTYPE_BOOL,
850
  BE_SPINDLE_USE: VTYPE_INT,
851
  }
852

    
853
BES_PARAMETER_TITLES = {
854
  BE_AUTO_BALANCE: "Auto_balance",
855
  BE_MAXMEM: "ConfigMaxMem",
856
  BE_MINMEM: "ConfigMinMem",
857
  BE_VCPUS: "ConfigVCPUs",
858
  }
859

    
860
BES_PARAMETER_COMPAT = {
861
  BE_MEMORY: VTYPE_SIZE,
862
  }
863
BES_PARAMETER_COMPAT.update(BES_PARAMETER_TYPES)
864

    
865
BES_PARAMETERS = frozenset(BES_PARAMETER_TYPES.keys())
866

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

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

    
945
DISK_DT_PARAMETERS = frozenset(DISK_DT_TYPES.keys())
946

    
947
# dynamic disk parameters
948
DDP_LOCAL_IP = "local-ip"
949
DDP_REMOTE_IP = "remote-ip"
950
DDP_PORT = "port"
951
DDP_LOCAL_MINOR = "local-minor"
952
DDP_REMOTE_MINOR = "remote-minor"
953

    
954
# OOB supported commands
955
OOB_POWER_ON = _constants.OOB_POWER_ON
956
OOB_POWER_OFF = _constants.OOB_POWER_OFF
957
OOB_POWER_CYCLE = _constants.OOB_POWER_CYCLE
958
OOB_POWER_STATUS = _constants.OOB_POWER_STATUS
959
OOB_HEALTH = _constants.OOB_HEALTH
960
OOB_COMMANDS = _constants.OOB_COMMANDS
961

    
962
OOB_POWER_STATUS_POWERED = _constants.OOB_POWER_STATUS_POWERED
963

    
964
OOB_TIMEOUT = _constants.OOB_TIMEOUT
965
OOB_POWER_DELAY = _constants.OOB_POWER_DELAY
966

    
967
OOB_STATUS_OK = _constants.OOB_STATUS_OK
968
OOB_STATUS_WARNING = _constants.OOB_STATUS_WARNING
969
OOB_STATUS_CRITICAL = _constants.OOB_STATUS_CRITICAL
970
OOB_STATUS_UNKNOWN = _constants.OOB_STATUS_UNKNOWN
971
OOB_STATUSES = _constants.OOB_STATUSES
972

    
973
# Instance Parameters Profile
974
PP_DEFAULT = "default"
975

    
976
# NIC_* constants are used inside the ganeti config
977
NIC_MODE = _constants.NIC_MODE
978
NIC_LINK = _constants.NIC_LINK
979
NIC_VLAN = _constants.NIC_VLAN
980

    
981
NIC_MODE_BRIDGED = _constants.NIC_MODE_BRIDGED
982
NIC_MODE_ROUTED = _constants.NIC_MODE_ROUTED
983
NIC_MODE_OVS = _constants.NIC_MODE_OVS
984
NIC_IP_POOL = _constants.NIC_IP_POOL
985
NIC_VALID_MODES = _constants.NIC_VALID_MODES
986

    
987
RESERVE_ACTION = "reserve"
988
RELEASE_ACTION = "release"
989

    
990
NICS_PARAMETER_TYPES = {
991
  NIC_MODE: VTYPE_STRING,
992
  NIC_LINK: VTYPE_STRING,
993
  NIC_VLAN: VTYPE_MAYBE_STRING,
994
  }
995

    
996
NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys())
997

    
998
# IDISK_* constants are used in opcodes, to create/change disks
999
IDISK_SIZE = "size"
1000
IDISK_SPINDLES = "spindles"
1001
IDISK_MODE = "mode"
1002
IDISK_ADOPT = "adopt"
1003
IDISK_VG = "vg"
1004
IDISK_METAVG = "metavg"
1005
IDISK_PROVIDER = "provider"
1006
IDISK_NAME = "name"
1007
IDISK_PARAMS_TYPES = {
1008
  IDISK_SIZE: VTYPE_SIZE,
1009
  IDISK_SPINDLES: VTYPE_INT,
1010
  IDISK_MODE: VTYPE_STRING,
1011
  IDISK_ADOPT: VTYPE_STRING,
1012
  IDISK_VG: VTYPE_STRING,
1013
  IDISK_METAVG: VTYPE_STRING,
1014
  IDISK_PROVIDER: VTYPE_STRING,
1015
  IDISK_NAME: VTYPE_MAYBE_STRING,
1016
  }
1017
IDISK_PARAMS = frozenset(IDISK_PARAMS_TYPES.keys())
1018

    
1019
# INIC_* constants are used in opcodes, to create/change nics
1020
INIC_MAC = "mac"
1021
INIC_IP = "ip"
1022
INIC_MODE = "mode"
1023
INIC_LINK = "link"
1024
INIC_NETWORK = "network"
1025
INIC_NAME = "name"
1026
INIC_VLAN = "vlan"
1027
INIC_BRIDGE = "bridge"
1028
INIC_PARAMS_TYPES = {
1029
  INIC_IP: VTYPE_MAYBE_STRING,
1030
  INIC_LINK: VTYPE_STRING,
1031
  INIC_MAC: VTYPE_STRING,
1032
  INIC_MODE: VTYPE_STRING,
1033
  INIC_NETWORK: VTYPE_MAYBE_STRING,
1034
  INIC_NAME: VTYPE_MAYBE_STRING,
1035
  INIC_VLAN: VTYPE_MAYBE_STRING,
1036
  INIC_BRIDGE: VTYPE_MAYBE_STRING
1037
  }
1038
INIC_PARAMS = frozenset(INIC_PARAMS_TYPES.keys())
1039

    
1040
# Hypervisor constants
1041
HT_XEN_PVM = _constants.HT_XEN_PVM
1042
HT_FAKE = _constants.HT_FAKE
1043
HT_XEN_HVM = _constants.HT_XEN_HVM
1044
HT_KVM = _constants.HT_KVM
1045
HT_CHROOT = _constants.HT_CHROOT
1046
HT_LXC = _constants.HT_LXC
1047
HYPER_TYPES = _constants.HYPER_TYPES
1048
HTS_REQ_PORT = _constants.HTS_REQ_PORT
1049

    
1050
VNC_BASE_PORT = 5900
1051
VNC_DEFAULT_BIND_ADDRESS = IP4_ADDRESS_ANY
1052

    
1053
# NIC types
1054
HT_NIC_RTL8139 = "rtl8139"
1055
HT_NIC_NE2K_PCI = "ne2k_pci"
1056
HT_NIC_NE2K_ISA = "ne2k_isa"
1057
HT_NIC_I82551 = "i82551"
1058
HT_NIC_I85557B = "i82557b"
1059
HT_NIC_I8259ER = "i82559er"
1060
HT_NIC_PCNET = "pcnet"
1061
HT_NIC_E1000 = "e1000"
1062
HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
1063

    
1064
HT_HVM_VALID_NIC_TYPES = compat.UniqueFrozenset([
1065
  HT_NIC_RTL8139,
1066
  HT_NIC_NE2K_PCI,
1067
  HT_NIC_E1000,
1068
  HT_NIC_NE2K_ISA,
1069
  HT_NIC_PARAVIRTUAL,
1070
  ])
1071
HT_KVM_VALID_NIC_TYPES = compat.UniqueFrozenset([
1072
  HT_NIC_RTL8139,
1073
  HT_NIC_NE2K_PCI,
1074
  HT_NIC_NE2K_ISA,
1075
  HT_NIC_I82551,
1076
  HT_NIC_I85557B,
1077
  HT_NIC_I8259ER,
1078
  HT_NIC_PCNET,
1079
  HT_NIC_E1000,
1080
  HT_NIC_PARAVIRTUAL,
1081
  ])
1082

    
1083
# Vif types
1084
# default vif type in xen-hvm
1085
HT_HVM_VIF_IOEMU = "ioemu"
1086
HT_HVM_VIF_VIF = "vif"
1087
HT_HVM_VALID_VIF_TYPES = compat.UniqueFrozenset([
1088
  HT_HVM_VIF_IOEMU,
1089
  HT_HVM_VIF_VIF,
1090
  ])
1091

    
1092
# Disk types
1093
HT_DISK_IOEMU = "ioemu"
1094
HT_DISK_IDE = "ide"
1095
HT_DISK_SCSI = "scsi"
1096
HT_DISK_SD = "sd"
1097
HT_DISK_MTD = "mtd"
1098
HT_DISK_PFLASH = "pflash"
1099

    
1100
HT_CACHE_DEFAULT = "default"
1101
HT_CACHE_NONE = "none"
1102
HT_CACHE_WTHROUGH = "writethrough"
1103
HT_CACHE_WBACK = "writeback"
1104
HT_VALID_CACHE_TYPES = compat.UniqueFrozenset([
1105
  HT_CACHE_DEFAULT,
1106
  HT_CACHE_NONE,
1107
  HT_CACHE_WTHROUGH,
1108
  HT_CACHE_WBACK,
1109
  ])
1110

    
1111
HT_HVM_VALID_DISK_TYPES = compat.UniqueFrozenset([
1112
  HT_DISK_PARAVIRTUAL,
1113
  HT_DISK_IOEMU,
1114
  ])
1115
HT_KVM_VALID_DISK_TYPES = compat.UniqueFrozenset([
1116
  HT_DISK_PARAVIRTUAL,
1117
  HT_DISK_IDE,
1118
  HT_DISK_SCSI,
1119
  HT_DISK_SD,
1120
  HT_DISK_MTD,
1121
  HT_DISK_PFLASH,
1122
  ])
1123

    
1124
# Mouse types:
1125
HT_MOUSE_MOUSE = "mouse"
1126
HT_MOUSE_TABLET = "tablet"
1127

    
1128
HT_KVM_VALID_MOUSE_TYPES = compat.UniqueFrozenset([
1129
  HT_MOUSE_MOUSE,
1130
  HT_MOUSE_TABLET,
1131
  ])
1132

    
1133
# Boot order
1134
HT_BO_FLOPPY = "floppy"
1135
HT_BO_CDROM = "cdrom"
1136
HT_BO_DISK = "disk"
1137
HT_BO_NETWORK = "network"
1138

    
1139
HT_KVM_VALID_BO_TYPES = compat.UniqueFrozenset([
1140
  HT_BO_FLOPPY,
1141
  HT_BO_CDROM,
1142
  HT_BO_DISK,
1143
  HT_BO_NETWORK,
1144
  ])
1145

    
1146
# SPICE lossless image compression options
1147
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ = "auto_glz"
1148
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ = "auto_lz"
1149
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC = "quic"
1150
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ = "glz"
1151
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ = "lz"
1152
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF = "off"
1153

    
1154
HT_KVM_SPICE_VALID_LOSSLESS_IMG_COMPR_OPTIONS = compat.UniqueFrozenset([
1155
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ,
1156
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ,
1157
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC,
1158
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ,
1159
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ,
1160
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF,
1161
  ])
1162

    
1163
# SPICE lossy image compression options (valid for both jpeg and zlib-glz)
1164
HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO = "auto"
1165
HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER = "never"
1166
HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS = "always"
1167

    
1168
HT_KVM_SPICE_VALID_LOSSY_IMG_COMPR_OPTIONS = compat.UniqueFrozenset([
1169
  HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO,
1170
  HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER,
1171
  HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS,
1172
  ])
1173

    
1174
# SPICE video stream detection
1175
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF = "off"
1176
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL = "all"
1177
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER = "filter"
1178

    
1179
HT_KVM_SPICE_VALID_VIDEO_STREAM_DETECTION_OPTIONS = compat.UniqueFrozenset([
1180
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF,
1181
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL,
1182
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER,
1183
  ])
1184

    
1185
# Security models
1186
HT_SM_NONE = "none"
1187
HT_SM_USER = "user"
1188
HT_SM_POOL = "pool"
1189

    
1190
HT_KVM_VALID_SM_TYPES = compat.UniqueFrozenset([
1191
  HT_SM_NONE,
1192
  HT_SM_USER,
1193
  HT_SM_POOL,
1194
  ])
1195

    
1196
# Kvm flag values
1197
HT_KVM_ENABLED = "enabled"
1198
HT_KVM_DISABLED = "disabled"
1199

    
1200
HT_KVM_FLAG_VALUES = compat.UniqueFrozenset([HT_KVM_ENABLED, HT_KVM_DISABLED])
1201

    
1202
# Migration type
1203
HT_MIGRATION_LIVE = _constants.HT_MIGRATION_LIVE
1204
HT_MIGRATION_NONLIVE = _constants.HT_MIGRATION_NONLIVE
1205
HT_MIGRATION_MODES = _constants.HT_MIGRATION_MODES
1206

    
1207
# Cluster Verify steps
1208
VERIFY_NPLUSONE_MEM = _constants.VERIFY_NPLUSONE_MEM
1209
VERIFY_OPTIONAL_CHECKS = _constants.VERIFY_OPTIONAL_CHECKS
1210

    
1211
# Cluster Verify error classes
1212
CV_TCLUSTER = _constants.CV_TCLUSTER
1213
CV_TGROUP = _constants.CV_TGROUP
1214
CV_TNODE = _constants.CV_TNODE
1215
CV_TINSTANCE = _constants.CV_TINSTANCE
1216

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

    
1258
CV_ALL_ECODES = _constants.CV_ALL_ECODES
1259
CV_ALL_ECODES_STRINGS = _constants.CV_ALL_ECODES_STRINGS
1260

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

    
1289
# Instance status
1290
INSTST_RUNNING = _constants.INSTST_RUNNING
1291
INSTST_ADMINDOWN = _constants.INSTST_ADMINDOWN
1292
INSTST_ADMINOFFLINE = _constants.INSTST_ADMINOFFLINE
1293
INSTST_NODEOFFLINE = _constants.INSTST_NODEOFFLINE
1294
INSTST_NODEDOWN = _constants.INSTST_NODEDOWN
1295
INSTST_WRONGNODE = _constants.INSTST_WRONGNODE
1296
INSTST_ERRORUP = _constants.INSTST_ERRORUP
1297
INSTST_ERRORDOWN = _constants.INSTST_ERRORDOWN
1298
INSTST_ALL = _constants.INSTST_ALL
1299

    
1300
# Admin states
1301
ADMINST_UP = _constants.ADMINST_UP
1302
ADMINST_DOWN = _constants.ADMINST_DOWN
1303
ADMINST_OFFLINE = _constants.ADMINST_OFFLINE
1304
ADMINST_ALL = _constants.ADMINST_ALL
1305

    
1306
# Node roles
1307
NR_REGULAR = _constants.NR_REGULAR
1308
NR_MASTER = _constants.NR_MASTER
1309
NR_MCANDIDATE = _constants.NR_MCANDIDATE
1310
NR_DRAINED = _constants.NR_DRAINED
1311
NR_OFFLINE = _constants.NR_OFFLINE
1312
NR_ALL = _constants.NR_ALL
1313

    
1314
# SSL certificate check constants (in days)
1315
SSL_CERT_EXPIRATION_WARN = 30
1316
SSL_CERT_EXPIRATION_ERROR = 7
1317

    
1318
# Allocator framework constants
1319
IALLOCATOR_VERSION = _constants.IALLOCATOR_VERSION
1320
IALLOCATOR_DIR_IN = _constants.IALLOCATOR_DIR_IN
1321
IALLOCATOR_DIR_OUT = _constants.IALLOCATOR_DIR_OUT
1322
VALID_IALLOCATOR_DIRECTIONS = _constants.VALID_IALLOCATOR_DIRECTIONS
1323

    
1324
IALLOCATOR_MODE_ALLOC = _constants.IALLOCATOR_MODE_ALLOC
1325
IALLOCATOR_MODE_RELOC = _constants.IALLOCATOR_MODE_RELOC
1326
IALLOCATOR_MODE_CHG_GROUP = _constants.IALLOCATOR_MODE_CHG_GROUP
1327
IALLOCATOR_MODE_NODE_EVAC = _constants.IALLOCATOR_MODE_NODE_EVAC
1328
IALLOCATOR_MODE_MULTI_ALLOC = _constants.IALLOCATOR_MODE_MULTI_ALLOC
1329
VALID_IALLOCATOR_MODES = _constants.VALID_IALLOCATOR_MODES
1330

    
1331
IALLOCATOR_SEARCH_PATH = _constants.IALLOCATOR_SEARCH_PATH
1332
DEFAULT_IALLOCATOR_SHORTCUT = _constants.DEFAULT_IALLOCATOR_SHORTCUT
1333

    
1334
# Node evacuation
1335
NODE_EVAC_PRI = _constants.NODE_EVAC_PRI
1336
NODE_EVAC_SEC = _constants.NODE_EVAC_SEC
1337
NODE_EVAC_ALL = _constants.NODE_EVAC_ALL
1338
NODE_EVAC_MODES = _constants.NODE_EVAC_MODES
1339

    
1340
# Job queue
1341
JOB_QUEUE_VERSION = 1
1342
JOB_QUEUE_SIZE_HARD_LIMIT = 5000
1343
JOB_QUEUE_FILES_PERMS = 0640
1344

    
1345
JOB_ID_TEMPLATE = r"\d+"
1346
JOB_FILE_RE = re.compile(r"^job-(%s)$" % JOB_ID_TEMPLATE)
1347

    
1348
# unchanged job return
1349
JOB_NOTCHANGED = "nochange"
1350

    
1351
# Job status
1352
JOB_STATUS_QUEUED = _constants.JOB_STATUS_QUEUED
1353
JOB_STATUS_WAITING = _constants.JOB_STATUS_WAITING
1354
JOB_STATUS_CANCELING = _constants.JOB_STATUS_CANCELING
1355
JOB_STATUS_RUNNING = _constants.JOB_STATUS_RUNNING
1356
JOB_STATUS_CANCELED = _constants.JOB_STATUS_CANCELED
1357
JOB_STATUS_SUCCESS = _constants.JOB_STATUS_SUCCESS
1358
JOB_STATUS_ERROR = _constants.JOB_STATUS_ERROR
1359
JOBS_PENDING = _constants.JOBS_PENDING
1360
JOBS_FINALIZED = _constants.JOBS_FINALIZED
1361
JOB_STATUS_ALL = _constants.JOB_STATUS_ALL
1362

    
1363
# OpCode status
1364
# not yet finalized
1365
OP_STATUS_QUEUED = _constants.OP_STATUS_QUEUED
1366
OP_STATUS_WAITING = _constants.OP_STATUS_WAITING
1367
OP_STATUS_CANCELING = _constants.OP_STATUS_CANCELING
1368
OP_STATUS_RUNNING = _constants.OP_STATUS_RUNNING
1369
# finalized
1370
OP_STATUS_CANCELED = _constants.OP_STATUS_CANCELED
1371
OP_STATUS_SUCCESS = _constants.OP_STATUS_SUCCESS
1372
OP_STATUS_ERROR = _constants.OP_STATUS_ERROR
1373
OPS_FINALIZED = _constants.OPS_FINALIZED
1374

    
1375
# OpCode priority
1376
OP_PRIO_LOWEST = _constants.OP_PRIO_LOWEST
1377
OP_PRIO_HIGHEST = _constants.OP_PRIO_HIGHEST
1378
OP_PRIO_LOW = _constants.OP_PRIO_LOW
1379
OP_PRIO_NORMAL = _constants.OP_PRIO_NORMAL
1380
OP_PRIO_HIGH = _constants.OP_PRIO_HIGH
1381
OP_PRIO_SUBMIT_VALID = _constants.OP_PRIO_SUBMIT_VALID
1382
OP_PRIO_DEFAULT = _constants.OP_PRIO_DEFAULT
1383

    
1384
# Lock recalculate mode
1385
LOCKS_REPLACE = "replace"
1386
LOCKS_APPEND = "append"
1387

    
1388
# Lock timeout (sum) before we should go into blocking acquire (still
1389
# can be reset by priority change); computed as max time (10 hours)
1390
# before we should actually go into blocking acquire given that we
1391
# start from default priority level; in seconds
1392
# TODO
1393
LOCK_ATTEMPTS_TIMEOUT = 10 * 3600 / (OP_PRIO_DEFAULT - OP_PRIO_HIGHEST)
1394
LOCK_ATTEMPTS_MAXWAIT = 15.0
1395
LOCK_ATTEMPTS_MINWAIT = 1.0
1396

    
1397
# Execution log types
1398
ELOG_MESSAGE = _constants.ELOG_MESSAGE
1399
ELOG_REMOTE_IMPORT = _constants.ELOG_REMOTE_IMPORT
1400
ELOG_JQUEUE_TEST = _constants.ELOG_JQUEUE_TEST
1401

    
1402
# /etc/hosts modification
1403
ETC_HOSTS_ADD = "add"
1404
ETC_HOSTS_REMOVE = "remove"
1405

    
1406
# Job queue test
1407
JQT_MSGPREFIX = "TESTMSG="
1408
JQT_EXPANDNAMES = "expandnames"
1409
JQT_EXEC = "exec"
1410
JQT_LOGMSG = "logmsg"
1411
JQT_STARTMSG = "startmsg"
1412
JQT_ALL = compat.UniqueFrozenset([
1413
  JQT_EXPANDNAMES,
1414
  JQT_EXEC,
1415
  JQT_LOGMSG,
1416
  JQT_STARTMSG,
1417
  ])
1418

    
1419
# Query resources
1420
QR_CLUSTER = "cluster"
1421
QR_INSTANCE = "instance"
1422
QR_NODE = "node"
1423
QR_LOCK = "lock"
1424
QR_GROUP = "group"
1425
QR_OS = "os"
1426
QR_JOB = "job"
1427
QR_EXPORT = "export"
1428
QR_NETWORK = "network"
1429
QR_EXTSTORAGE = "extstorage"
1430

    
1431
#: List of resources which can be queried using L{opcodes.OpQuery}
1432
QR_VIA_OP = compat.UniqueFrozenset([
1433
  QR_CLUSTER,
1434
  QR_INSTANCE,
1435
  QR_NODE,
1436
  QR_GROUP,
1437
  QR_OS,
1438
  QR_EXPORT,
1439
  QR_NETWORK,
1440
  QR_EXTSTORAGE,
1441
  ])
1442

    
1443
#: List of resources which can be queried using Local UniX Interface
1444
QR_VIA_LUXI = QR_VIA_OP.union([
1445
  QR_LOCK,
1446
  QR_JOB,
1447
  ])
1448

    
1449
#: List of resources which can be queried using RAPI
1450
QR_VIA_RAPI = QR_VIA_LUXI
1451

    
1452
# Query field types
1453
QFT_UNKNOWN = "unknown"
1454
QFT_TEXT = "text"
1455
QFT_BOOL = "bool"
1456
QFT_NUMBER = "number"
1457
QFT_UNIT = "unit"
1458
QFT_TIMESTAMP = "timestamp"
1459
QFT_OTHER = "other"
1460

    
1461
#: All query field types
1462
QFT_ALL = compat.UniqueFrozenset([
1463
  QFT_UNKNOWN,
1464
  QFT_TEXT,
1465
  QFT_BOOL,
1466
  QFT_NUMBER,
1467
  QFT_UNIT,
1468
  QFT_TIMESTAMP,
1469
  QFT_OTHER,
1470
  ])
1471

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

    
1487
RS_ALL = compat.UniqueFrozenset([
1488
  RS_NORMAL,
1489
  RS_UNKNOWN,
1490
  RS_NODATA,
1491
  RS_UNAVAIL,
1492
  RS_OFFLINE,
1493
  ])
1494

    
1495
#: Dictionary with special field cases and their verbose/terse formatting
1496
RSS_DESCRIPTION = {
1497
  RS_UNKNOWN: ("(unknown)", "??"),
1498
  RS_NODATA: ("(nodata)", "?"),
1499
  RS_OFFLINE: ("(offline)", "*"),
1500
  RS_UNAVAIL: ("(unavail)", "-"),
1501
  }
1502

    
1503
# max dynamic devices
1504
MAX_NICS = 8
1505
MAX_DISKS = 16
1506

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

    
1534
# This is not a complete SSCONF key, but the prefix for the hypervisor keys
1535
SS_HVPARAMS_PREF = "hvparams_"
1536

    
1537
# Hvparams keys:
1538
SS_HVPARAMS_XEN_PVM = SS_HVPARAMS_PREF + HT_XEN_PVM
1539
SS_HVPARAMS_XEN_FAKE = SS_HVPARAMS_PREF + HT_FAKE
1540
SS_HVPARAMS_XEN_HVM = SS_HVPARAMS_PREF + HT_XEN_HVM
1541
SS_HVPARAMS_XEN_KVM = SS_HVPARAMS_PREF + HT_KVM
1542
SS_HVPARAMS_XEN_CHROOT = SS_HVPARAMS_PREF + HT_CHROOT
1543
SS_HVPARAMS_XEN_LXC = SS_HVPARAMS_PREF + HT_LXC
1544

    
1545
VALID_SS_HVPARAMS_KEYS = compat.UniqueFrozenset([
1546
  SS_HVPARAMS_XEN_PVM,
1547
  SS_HVPARAMS_XEN_FAKE,
1548
  SS_HVPARAMS_XEN_HVM,
1549
  SS_HVPARAMS_XEN_KVM,
1550
  SS_HVPARAMS_XEN_CHROOT,
1551
  SS_HVPARAMS_XEN_LXC,
1552
  ])
1553

    
1554
SS_FILE_PERMS = 0444
1555

    
1556
# cluster wide default parameters
1557
DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM
1558

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

    
1677
HVC_GLOBALS = compat.UniqueFrozenset([
1678
  HV_MIGRATION_PORT,
1679
  HV_MIGRATION_BANDWIDTH,
1680
  HV_MIGRATION_MODE,
1681
  HV_XEN_CMD,
1682
  ])
1683

    
1684
BEC_DEFAULTS = {
1685
  BE_MINMEM: 128,
1686
  BE_MAXMEM: 128,
1687
  BE_VCPUS: 1,
1688
  BE_AUTO_BALANCE: True,
1689
  BE_ALWAYS_FAILOVER: False,
1690
  BE_SPINDLE_USE: 1,
1691
  }
1692

    
1693
NDC_DEFAULTS = {
1694
  ND_OOB_PROGRAM: "",
1695
  ND_SPINDLE_COUNT: 1,
1696
  ND_EXCLUSIVE_STORAGE: False,
1697
  ND_OVS: False,
1698
  ND_OVS_NAME: DEFAULT_OVS,
1699
  ND_OVS_LINK: ""
1700
  }
1701

    
1702
NDC_GLOBALS = compat.UniqueFrozenset([
1703
  ND_EXCLUSIVE_STORAGE,
1704
  ])
1705

    
1706
DISK_LD_DEFAULTS = {
1707
  DT_DRBD8: {
1708
    LDP_RESYNC_RATE: CLASSIC_DRBD_SYNC_SPEED,
1709
    LDP_BARRIERS: _constants.DRBD_BARRIERS,
1710
    LDP_NO_META_FLUSH: _constants.DRBD_NO_META_FLUSH,
1711
    LDP_DEFAULT_METAVG: DEFAULT_VG,
1712
    LDP_DISK_CUSTOM: "",
1713
    LDP_NET_CUSTOM: "",
1714
    LDP_PROTOCOL: DRBD_DEFAULT_NET_PROTOCOL,
1715
    LDP_DYNAMIC_RESYNC: False,
1716

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

    
1741
# readability shortcuts
1742
_LV_DEFAULTS = DISK_LD_DEFAULTS[DT_PLAIN]
1743
_DRBD_DEFAULTS = DISK_LD_DEFAULTS[DT_DRBD8]
1744

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

    
1777
# we don't want to export the shortcuts
1778
del _LV_DEFAULTS, _DRBD_DEFAULTS
1779

    
1780
NICC_DEFAULTS = {
1781
  NIC_MODE: NIC_MODE_BRIDGED,
1782
  NIC_LINK: DEFAULT_BRIDGE,
1783
  NIC_VLAN: VALUE_HS_NOTHING,
1784
  }
1785

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

    
1821
MASTER_POOL_SIZE_DEFAULT = 10
1822

    
1823
# Exclusive storage:
1824
# Error margin used to compare physical disks
1825
PART_MARGIN = .01
1826
# Space reserved when creating instance disks
1827
PART_RESERVED = .02
1828

    
1829
CONFD_PROTOCOL_VERSION = _constants.CONFD_PROTOCOL_VERSION
1830

    
1831
CONFD_REQ_PING = _constants.CONFD_REQ_PING
1832
CONFD_REQ_NODE_ROLE_BYNAME = _constants.CONFD_REQ_NODE_ROLE_BYNAME
1833
CONFD_REQ_NODE_PIP_BY_INSTANCE_IP = _constants.CONFD_REQ_NODE_PIP_BY_INSTANCE_IP
1834
CONFD_REQ_CLUSTER_MASTER = _constants.CONFD_REQ_CLUSTER_MASTER
1835
CONFD_REQ_NODE_PIP_LIST = _constants.CONFD_REQ_NODE_PIP_LIST
1836
CONFD_REQ_MC_PIP_LIST = _constants.CONFD_REQ_MC_PIP_LIST
1837
CONFD_REQ_INSTANCES_IPS_LIST = _constants.CONFD_REQ_INSTANCES_IPS_LIST
1838
CONFD_REQ_NODE_DRBD = _constants.CONFD_REQ_NODE_DRBD
1839
CONFD_REQ_NODE_INSTANCES = _constants.CONFD_REQ_NODE_INSTANCES
1840
CONFD_REQS = _constants.CONFD_REQS
1841

    
1842
# Confd request query fields. These are used to narrow down queries.
1843
# These must be strings rather than integers, because json-encoding
1844
# converts them to strings anyway, as they're used as dict-keys.
1845
CONFD_REQQ_LINK = _constants.CONFD_REQQ_LINK
1846
CONFD_REQQ_IP = _constants.CONFD_REQQ_IP
1847
CONFD_REQQ_IPLIST = _constants.CONFD_REQQ_IPLIST
1848
CONFD_REQQ_FIELDS = _constants.CONFD_REQQ_FIELDS
1849

    
1850
# FIXME: perhaps update code that uses these constants to deal with
1851
# integers instead of strings
1852
CONFD_REQFIELD_NAME = str(_constants.CONFD_REQFIELD_NAME)
1853
CONFD_REQFIELD_IP = str(_constants.CONFD_REQFIELD_IP)
1854
CONFD_REQFIELD_MNODE_PIP = str(_constants.CONFD_REQFIELD_MNODE_PIP)
1855

    
1856
CONFD_REPL_STATUS_OK = _constants.CONFD_REPL_STATUS_OK
1857
CONFD_REPL_STATUS_ERROR = _constants.CONFD_REPL_STATUS_ERROR
1858
CONFD_REPL_STATUS_NOTIMPLEMENTED = _constants.CONFD_REPL_STATUS_NOTIMPLEMENTED
1859
CONFD_REPL_STATUSES = _constants.CONFD_REPL_STATUSES
1860

    
1861
CONFD_NODE_ROLE_MASTER = _constants.CONFD_NODE_ROLE_MASTER
1862
CONFD_NODE_ROLE_CANDIDATE = _constants.CONFD_NODE_ROLE_CANDIDATE
1863
CONFD_NODE_ROLE_OFFLINE = _constants.CONFD_NODE_ROLE_OFFLINE
1864
CONFD_NODE_ROLE_DRAINED = _constants.CONFD_NODE_ROLE_DRAINED
1865
CONFD_NODE_ROLE_REGULAR = _constants.CONFD_NODE_ROLE_REGULAR
1866

    
1867
CONFD_ERROR_UNKNOWN_ENTRY = _constants.CONFD_ERROR_UNKNOWN_ENTRY
1868
CONFD_ERROR_INTERNAL = _constants.CONFD_ERROR_INTERNAL
1869
CONFD_ERROR_ARGUMENT = _constants.CONFD_ERROR_ARGUMENT
1870

    
1871
# Each request is "salted" by the current timestamp.
1872
# This constants decides how many seconds of skew to accept.
1873
# TODO: make this a default and allow the value to be more configurable
1874
CONFD_MAX_CLOCK_SKEW = _constants.CONFD_MAX_CLOCK_SKEW
1875

    
1876
# When we haven't reloaded the config for more than this amount of
1877
# seconds, we force a test to see if inotify is betraying us. Using a
1878
# prime number to ensure we get less chance of 'same wakeup' with
1879
# other processes.
1880
CONFD_CONFIG_RELOAD_TIMEOUT = _constants.CONFD_CONFIG_RELOAD_TIMEOUT
1881

    
1882
# If we receive more than one update in this amount of microseconds,
1883
# we move to polling every RATELIMIT seconds, rather than relying on
1884
# inotify, to be able to serve more requests.
1885
CONFD_CONFIG_RELOAD_RATELIMIT = _constants.CONFD_CONFIG_RELOAD_RATELIMIT
1886

    
1887
# Magic number prepended to all confd queries.
1888
# This allows us to distinguish different types of confd protocols and handle
1889
# them. For example by changing this we can move the whole payload to be
1890
# compressed, or move away from json.
1891
CONFD_MAGIC_FOURCC = _constants.CONFD_MAGIC_FOURCC
1892

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

    
1898
# Timeout in seconds to expire pending query request in the confd client
1899
# library. We don't actually expect any answer more than 10 seconds after we
1900
# sent a request.
1901
CONFD_CLIENT_EXPIRE_TIMEOUT = _constants.CONFD_CLIENT_EXPIRE_TIMEOUT
1902

    
1903
# Maximum UDP datagram size.
1904
# On IPv4: 64K - 20 (ip header size) - 8 (udp header size) = 65507
1905
# On IPv6: 64K - 40 (ip6 header size) - 8 (udp header size) = 65487
1906
#   (assuming we can't use jumbo frames)
1907
# We just set this to 60K, which should be enough
1908
MAX_UDP_DATA_SIZE = 61440
1909

    
1910
# User-id pool minimum/maximum acceptable user-ids.
1911
UIDPOOL_UID_MIN = 0
1912
UIDPOOL_UID_MAX = 2 ** 32 - 1 # Assuming 32 bit user-ids
1913

    
1914
# Name or path of the pgrep command
1915
PGREP = "pgrep"
1916

    
1917
# Name of the node group that gets created at cluster init or upgrade
1918
INITIAL_NODE_GROUP_NAME = "default"
1919

    
1920
# Possible values for NodeGroup.alloc_policy
1921
ALLOC_POLICY_PREFERRED = _constants.ALLOC_POLICY_PREFERRED
1922
ALLOC_POLICY_LAST_RESORT = _constants.ALLOC_POLICY_LAST_RESORT
1923
ALLOC_POLICY_UNALLOCABLE = _constants.ALLOC_POLICY_UNALLOCABLE
1924
VALID_ALLOC_POLICIES = _constants.VALID_ALLOC_POLICIES
1925

    
1926
# Temporary external/shared storage parameters
1927
BLOCKDEV_DRIVER_MANUAL = _constants.BLOCKDEV_DRIVER_MANUAL
1928

    
1929
# qemu-img path, required for ovfconverter
1930
QEMUIMG_PATH = _constants.QEMUIMG_PATH
1931

    
1932
# Whether htools was enabled at compilation time
1933
HTOOLS = _constants.HTOOLS
1934
# The hail iallocator
1935
IALLOC_HAIL = "hail"
1936

    
1937
# Fake opcodes for functions that have hooks attached to them via
1938
# backend.RunLocalHooks
1939
FAKE_OP_MASTER_TURNUP = "OP_CLUSTER_IP_TURNUP"
1940
FAKE_OP_MASTER_TURNDOWN = "OP_CLUSTER_IP_TURNDOWN"
1941

    
1942
# SSH key types
1943
SSHK_RSA = "rsa"
1944
SSHK_DSA = "dsa"
1945
SSHK_ALL = compat.UniqueFrozenset([SSHK_RSA, SSHK_DSA])
1946

    
1947
# SSH authorized key types
1948
SSHAK_RSA = "ssh-rsa"
1949
SSHAK_DSS = "ssh-dss"
1950
SSHAK_ALL = compat.UniqueFrozenset([SSHAK_RSA, SSHAK_DSS])
1951

    
1952
# SSH setup
1953
SSHS_CLUSTER_NAME = "cluster_name"
1954
SSHS_SSH_HOST_KEY = "ssh_host_key"
1955
SSHS_SSH_ROOT_KEY = "ssh_root_key"
1956
SSHS_NODE_DAEMON_CERTIFICATE = "node_daemon_certificate"
1957

    
1958
#: Key files for SSH daemon
1959
SSH_DAEMON_KEYFILES = {
1960
  SSHK_RSA: (pathutils.SSH_HOST_RSA_PRIV, pathutils.SSH_HOST_RSA_PUB),
1961
  SSHK_DSA: (pathutils.SSH_HOST_DSA_PRIV, pathutils.SSH_HOST_DSA_PUB),
1962
  }
1963

    
1964
# Node daemon setup
1965
NDS_CLUSTER_NAME = "cluster_name"
1966
NDS_NODE_DAEMON_CERTIFICATE = "node_daemon_certificate"
1967
NDS_SSCONF = "ssconf"
1968
NDS_START_NODE_DAEMON = "start_node_daemon"
1969

    
1970
# Path generating random UUID
1971
RANDOM_UUID_FILE = _constants.RANDOM_UUID_FILE
1972

    
1973
# Regex string for verifying a UUID
1974
UUID_REGEX = "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"
1975

    
1976
# Auto-repair tag prefixes
1977
AUTO_REPAIR_TAG_PREFIX = _constants.AUTO_REPAIR_TAG_PREFIX
1978
AUTO_REPAIR_TAG_ENABLED = _constants.AUTO_REPAIR_TAG_ENABLED
1979
AUTO_REPAIR_TAG_SUSPENDED = _constants.AUTO_REPAIR_TAG_SUSPENDED
1980
AUTO_REPAIR_TAG_PENDING = _constants.AUTO_REPAIR_TAG_PENDING
1981
AUTO_REPAIR_TAG_RESULT = _constants.AUTO_REPAIR_TAG_RESULT
1982

    
1983
# Auto-repair levels
1984
AUTO_REPAIR_FIX_STORAGE = _constants.AUTO_REPAIR_FIX_STORAGE
1985
AUTO_REPAIR_MIGRATE = _constants.AUTO_REPAIR_MIGRATE
1986
AUTO_REPAIR_FAILOVER = _constants.AUTO_REPAIR_FAILOVER
1987
AUTO_REPAIR_REINSTALL = _constants.AUTO_REPAIR_REINSTALL
1988
AUTO_REPAIR_ALL_TYPES = _constants.AUTO_REPAIR_ALL_TYPES
1989

    
1990
# Auto-repair results
1991
AUTO_REPAIR_SUCCESS = _constants.AUTO_REPAIR_SUCCESS
1992
AUTO_REPAIR_FAILURE = _constants.AUTO_REPAIR_FAILURE
1993
AUTO_REPAIR_ENOPERM = _constants.AUTO_REPAIR_ENOPERM
1994
AUTO_REPAIR_ALL_RESULTS = _constants.AUTO_REPAIR_ALL_RESULTS
1995

    
1996
# The version identifier for builtin data collectors
1997
BUILTIN_DATA_COLLECTOR_VERSION = _constants.BUILTIN_DATA_COLLECTOR_VERSION
1998

    
1999
# The reason trail opcode parameter name
2000
OPCODE_REASON = _constants.OPCODE_REASON
2001

    
2002
# The source reasons for the execution of an OpCode
2003
OPCODE_REASON_SRC_CLIENT = "gnt:client"
2004
OPCODE_REASON_SRC_NODED = "gnt:daemon:noded"
2005
OPCODE_REASON_SRC_OPCODE = "gnt:opcode"
2006
OPCODE_REASON_SRC_RLIB2 = "gnt:library:rlib2"
2007
OPCODE_REASON_SRC_USER = "gnt:user"
2008

    
2009
OPCODE_REASON_SOURCES = compat.UniqueFrozenset([
2010
  OPCODE_REASON_SRC_CLIENT,
2011
  OPCODE_REASON_SRC_NODED,
2012
  OPCODE_REASON_SRC_OPCODE,
2013
  OPCODE_REASON_SRC_RLIB2,
2014
  OPCODE_REASON_SRC_USER,
2015
  ])
2016

    
2017
DISKSTATS_FILE = _constants.DISKSTATS_FILE
2018

    
2019
# CPU load collector variables
2020
STAT_FILE = _constants.STAT_FILE
2021
CPUAVGLOAD_BUFFER_SIZE = _constants.CPUAVGLOAD_BUFFER_SIZE
2022
CPUAVGLOAD_WINDOW_SIZE = _constants.CPUAVGLOAD_WINDOW_SIZE
2023

    
2024
# Mond's variable for periodical data collection
2025
MOND_TIME_INTERVAL = _constants.MOND_TIME_INTERVAL
2026

    
2027
# MonD's latest API version
2028
MOND_LATEST_API_VERSION = 1
2029

    
2030
# Timeouts for upgrades
2031

    
2032
UPGRADE_QUEUE_DRAIN_TIMEOUT = _constants.UPGRADE_QUEUE_DRAIN_TIMEOUT
2033
UPGRADE_QUEUE_POLL_INTERVAL = _constants.UPGRADE_QUEUE_POLL_INTERVAL
2034

    
2035
# Do not re-export imported modules
2036
del re, _vcsversion, _constants, socket, pathutils, compat
2037

    
2038

    
2039
ALLOCATABLE_KEY = "allocatable"
2040
FAILED_KEY = "failed"