Hs2Py constants: backend and logical disks
[ganeti-local] / lib / constants.py
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
673 HV_MIGRATION_COMPLETED = _constants.HV_MIGRATION_COMPLETED
674 HV_MIGRATION_ACTIVE = _constants.HV_MIGRATION_ACTIVE
675 HV_MIGRATION_FAILED = _constants.HV_MIGRATION_FAILED
676 HV_MIGRATION_CANCELLED = _constants.HV_MIGRATION_CANCELLED
677 HV_MIGRATION_VALID_STATUSES = _constants.HV_MIGRATION_VALID_STATUSES
678 HV_MIGRATION_FAILED_STATUSES = _constants.HV_MIGRATION_FAILED_STATUSES
679 HV_KVM_MIGRATION_VALID_STATUSES = _constants.HV_KVM_MIGRATION_VALID_STATUSES
680
681 HV_NODEINFO_KEY_VERSION = _constants.HV_NODEINFO_KEY_VERSION
682
683 HVST_MEMORY_TOTAL = _constants.HVST_MEMORY_TOTAL
684 HVST_MEMORY_NODE = _constants.HVST_MEMORY_NODE
685 HVST_MEMORY_HV = _constants.HVST_MEMORY_HV
686 HVST_CPU_TOTAL = _constants.HVST_CPU_TOTAL
687 HVST_CPU_NODE = _constants.HVST_CPU_NODE
688 HVSTS_PARAMETERS = _constants.HVSTS_PARAMETERS
689 HVST_DEFAULTS = _constants.HVST_DEFAULTS
690 HVSTS_PARAMETER_TYPES = _constants.HVSTS_PARAMETER_TYPES
691
692 DS_DISK_TOTAL = _constants.DS_DISK_TOTAL
693 DS_DISK_RESERVED = _constants.DS_DISK_RESERVED
694 DS_DISK_OVERHEAD = _constants.DS_DISK_OVERHEAD
695 DS_DEFAULTS = _constants.DS_DEFAULTS
696 DSS_PARAMETER_TYPES = _constants.DSS_PARAMETER_TYPES
697 DSS_PARAMETERS = _constants.DSS_PARAMETERS
698 DS_VALID_TYPES = _constants.DS_VALID_TYPES
699
700 BE_MEMORY = _constants.BE_MEMORY
701 BE_MAXMEM = _constants.BE_MAXMEM
702 BE_MINMEM = _constants.BE_MINMEM
703 BE_VCPUS = _constants.BE_VCPUS
704 BE_AUTO_BALANCE = _constants.BE_AUTO_BALANCE
705 BE_ALWAYS_FAILOVER = _constants.BE_ALWAYS_FAILOVER
706 BE_SPINDLE_USE = _constants.BE_SPINDLE_USE
707 BES_PARAMETER_TYPES = _constants.BES_PARAMETER_TYPES
708 BES_PARAMETER_TITLES = _constants.BES_PARAMETER_TITLES
709 BES_PARAMETER_COMPAT = _constants.BES_PARAMETER_COMPAT
710 BES_PARAMETERS = _constants.BES_PARAMETERS
711
712 ISPEC_MEM_SIZE = _constants.ISPEC_MEM_SIZE
713 ISPEC_CPU_COUNT = _constants.ISPEC_CPU_COUNT
714 ISPEC_DISK_COUNT = _constants.ISPEC_DISK_COUNT
715 ISPEC_DISK_SIZE = _constants.ISPEC_DISK_SIZE
716 ISPEC_NIC_COUNT = _constants.ISPEC_NIC_COUNT
717 ISPEC_SPINDLE_USE = _constants.ISPEC_SPINDLE_USE
718 ISPECS_PARAMETER_TYPES = _constants.ISPECS_PARAMETER_TYPES
719 ISPECS_PARAMETERS = _constants.ISPECS_PARAMETERS
720
721 ISPECS_MINMAX = _constants.ISPECS_MINMAX
722 ISPECS_MIN = _constants.ISPECS_MIN
723 ISPECS_MAX = _constants.ISPECS_MAX
724 ISPECS_STD = _constants.ISPECS_STD
725 IPOLICY_DTS = _constants.IPOLICY_DTS
726 IPOLICY_VCPU_RATIO = _constants.IPOLICY_VCPU_RATIO
727 IPOLICY_SPINDLE_RATIO = _constants.IPOLICY_SPINDLE_RATIO
728 ISPECS_MINMAX_KEYS = _constants.ISPECS_MINMAX_KEYS
729 IPOLICY_PARAMETERS = _constants.IPOLICY_PARAMETERS
730 IPOLICY_ALL_KEYS = _constants.IPOLICY_ALL_KEYS
731
732 ND_OOB_PROGRAM = _constants.ND_OOB_PROGRAM
733 ND_SPINDLE_COUNT = _constants.ND_SPINDLE_COUNT
734 ND_EXCLUSIVE_STORAGE = _constants.ND_EXCLUSIVE_STORAGE
735 ND_OVS = _constants.ND_OVS
736 ND_OVS_NAME = _constants.ND_OVS_NAME
737 ND_OVS_LINK = _constants.ND_OVS_LINK
738
739 NDS_PARAMETER_TYPES = _constants.NDS_PARAMETER_TYPES
740 NDS_PARAMETERS = _constants.NDS_PARAMETERS
741 NDS_PARAMETER_TITLES = _constants.NDS_PARAMETER_TITLES
742
743 LDP_RESYNC_RATE = _constants.LDP_RESYNC_RATE
744 LDP_STRIPES = _constants.LDP_STRIPES
745 LDP_BARRIERS = _constants.LDP_BARRIERS
746 LDP_NO_META_FLUSH = _constants.LDP_NO_META_FLUSH
747 LDP_DEFAULT_METAVG = _constants.LDP_DEFAULT_METAVG
748 LDP_DISK_CUSTOM = _constants.LDP_DISK_CUSTOM
749 LDP_NET_CUSTOM = _constants.LDP_NET_CUSTOM
750 LDP_PROTOCOL = _constants.LDP_PROTOCOL
751 LDP_DYNAMIC_RESYNC = _constants.LDP_DYNAMIC_RESYNC
752 LDP_PLAN_AHEAD = _constants.LDP_PLAN_AHEAD
753 LDP_FILL_TARGET = _constants.LDP_FILL_TARGET
754 LDP_DELAY_TARGET = _constants.LDP_DELAY_TARGET
755 LDP_MAX_RATE = _constants.LDP_MAX_RATE
756 LDP_MIN_RATE = _constants.LDP_MIN_RATE
757 LDP_POOL = _constants.LDP_POOL
758 LDP_ACCESS = _constants.LDP_ACCESS
759 DISK_LD_TYPES = _constants.DISK_LD_TYPES
760 DISK_LD_PARAMETERS = _constants.DISK_LD_PARAMETERS
761
762 # Disk template parameters (can be set/changed by the user via gnt-cluster and
763 # gnt-group)
764 DRBD_RESYNC_RATE = "resync-rate"
765 DRBD_DATA_STRIPES = "data-stripes"
766 DRBD_META_STRIPES = "meta-stripes"
767 DRBD_DISK_BARRIERS = "disk-barriers"
768 DRBD_META_BARRIERS = "meta-barriers"
769 DRBD_DEFAULT_METAVG = "metavg"
770 DRBD_DISK_CUSTOM = "disk-custom"
771 DRBD_NET_CUSTOM = "net-custom"
772 DRBD_PROTOCOL = "protocol"
773 DRBD_DYNAMIC_RESYNC = "dynamic-resync"
774 DRBD_PLAN_AHEAD = "c-plan-ahead"
775 DRBD_FILL_TARGET = "c-fill-target"
776 DRBD_DELAY_TARGET = "c-delay-target"
777 DRBD_MAX_RATE = "c-max-rate"
778 DRBD_MIN_RATE = "c-min-rate"
779 LV_STRIPES = "stripes"
780 RBD_POOL = "pool"
781 RBD_ACCESS = "access"
782 DISK_DT_TYPES = {
783   DRBD_RESYNC_RATE: VTYPE_INT,
784   DRBD_DATA_STRIPES: VTYPE_INT,
785   DRBD_META_STRIPES: VTYPE_INT,
786   DRBD_DISK_BARRIERS: VTYPE_STRING,
787   DRBD_META_BARRIERS: VTYPE_BOOL,
788   DRBD_DEFAULT_METAVG: VTYPE_STRING,
789   DRBD_DISK_CUSTOM: VTYPE_STRING,
790   DRBD_NET_CUSTOM: VTYPE_STRING,
791   DRBD_PROTOCOL: VTYPE_STRING,
792   DRBD_DYNAMIC_RESYNC: VTYPE_BOOL,
793   DRBD_PLAN_AHEAD: VTYPE_INT,
794   DRBD_FILL_TARGET: VTYPE_INT,
795   DRBD_DELAY_TARGET: VTYPE_INT,
796   DRBD_MAX_RATE: VTYPE_INT,
797   DRBD_MIN_RATE: VTYPE_INT,
798   LV_STRIPES: VTYPE_INT,
799   RBD_POOL: VTYPE_STRING,
800   RBD_ACCESS: VTYPE_STRING,
801   }
802
803 DISK_DT_PARAMETERS = frozenset(DISK_DT_TYPES.keys())
804
805 # dynamic disk parameters
806 DDP_LOCAL_IP = "local-ip"
807 DDP_REMOTE_IP = "remote-ip"
808 DDP_PORT = "port"
809 DDP_LOCAL_MINOR = "local-minor"
810 DDP_REMOTE_MINOR = "remote-minor"
811
812 # OOB supported commands
813 OOB_POWER_ON = _constants.OOB_POWER_ON
814 OOB_POWER_OFF = _constants.OOB_POWER_OFF
815 OOB_POWER_CYCLE = _constants.OOB_POWER_CYCLE
816 OOB_POWER_STATUS = _constants.OOB_POWER_STATUS
817 OOB_HEALTH = _constants.OOB_HEALTH
818 OOB_COMMANDS = _constants.OOB_COMMANDS
819
820 OOB_POWER_STATUS_POWERED = _constants.OOB_POWER_STATUS_POWERED
821
822 OOB_TIMEOUT = _constants.OOB_TIMEOUT
823 OOB_POWER_DELAY = _constants.OOB_POWER_DELAY
824
825 OOB_STATUS_OK = _constants.OOB_STATUS_OK
826 OOB_STATUS_WARNING = _constants.OOB_STATUS_WARNING
827 OOB_STATUS_CRITICAL = _constants.OOB_STATUS_CRITICAL
828 OOB_STATUS_UNKNOWN = _constants.OOB_STATUS_UNKNOWN
829 OOB_STATUSES = _constants.OOB_STATUSES
830
831 # Instance Parameters Profile
832 PP_DEFAULT = "default"
833
834 # NIC_* constants are used inside the ganeti config
835 NIC_MODE = _constants.NIC_MODE
836 NIC_LINK = _constants.NIC_LINK
837 NIC_VLAN = _constants.NIC_VLAN
838
839 NIC_MODE_BRIDGED = _constants.NIC_MODE_BRIDGED
840 NIC_MODE_ROUTED = _constants.NIC_MODE_ROUTED
841 NIC_MODE_OVS = _constants.NIC_MODE_OVS
842 NIC_IP_POOL = _constants.NIC_IP_POOL
843 NIC_VALID_MODES = _constants.NIC_VALID_MODES
844
845 RESERVE_ACTION = "reserve"
846 RELEASE_ACTION = "release"
847
848 NICS_PARAMETER_TYPES = {
849   NIC_MODE: VTYPE_STRING,
850   NIC_LINK: VTYPE_STRING,
851   NIC_VLAN: VTYPE_MAYBE_STRING,
852   }
853
854 NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys())
855
856 # IDISK_* constants are used in opcodes, to create/change disks
857 IDISK_SIZE = "size"
858 IDISK_SPINDLES = "spindles"
859 IDISK_MODE = "mode"
860 IDISK_ADOPT = "adopt"
861 IDISK_VG = "vg"
862 IDISK_METAVG = "metavg"
863 IDISK_PROVIDER = "provider"
864 IDISK_NAME = "name"
865 IDISK_PARAMS_TYPES = {
866   IDISK_SIZE: VTYPE_SIZE,
867   IDISK_SPINDLES: VTYPE_INT,
868   IDISK_MODE: VTYPE_STRING,
869   IDISK_ADOPT: VTYPE_STRING,
870   IDISK_VG: VTYPE_STRING,
871   IDISK_METAVG: VTYPE_STRING,
872   IDISK_PROVIDER: VTYPE_STRING,
873   IDISK_NAME: VTYPE_MAYBE_STRING,
874   }
875 IDISK_PARAMS = frozenset(IDISK_PARAMS_TYPES.keys())
876
877 # INIC_* constants are used in opcodes, to create/change nics
878 INIC_MAC = "mac"
879 INIC_IP = "ip"
880 INIC_MODE = "mode"
881 INIC_LINK = "link"
882 INIC_NETWORK = "network"
883 INIC_NAME = "name"
884 INIC_VLAN = "vlan"
885 INIC_BRIDGE = "bridge"
886 INIC_PARAMS_TYPES = {
887   INIC_IP: VTYPE_MAYBE_STRING,
888   INIC_LINK: VTYPE_STRING,
889   INIC_MAC: VTYPE_STRING,
890   INIC_MODE: VTYPE_STRING,
891   INIC_NETWORK: VTYPE_MAYBE_STRING,
892   INIC_NAME: VTYPE_MAYBE_STRING,
893   INIC_VLAN: VTYPE_MAYBE_STRING,
894   INIC_BRIDGE: VTYPE_MAYBE_STRING
895   }
896 INIC_PARAMS = frozenset(INIC_PARAMS_TYPES.keys())
897
898 # Hypervisor constants
899 HT_XEN_PVM = _constants.HT_XEN_PVM
900 HT_FAKE = _constants.HT_FAKE
901 HT_XEN_HVM = _constants.HT_XEN_HVM
902 HT_KVM = _constants.HT_KVM
903 HT_CHROOT = _constants.HT_CHROOT
904 HT_LXC = _constants.HT_LXC
905 HYPER_TYPES = _constants.HYPER_TYPES
906 HTS_REQ_PORT = _constants.HTS_REQ_PORT
907
908 VNC_BASE_PORT = 5900
909 VNC_DEFAULT_BIND_ADDRESS = IP4_ADDRESS_ANY
910
911 # NIC types
912 HT_NIC_RTL8139 = "rtl8139"
913 HT_NIC_NE2K_PCI = "ne2k_pci"
914 HT_NIC_NE2K_ISA = "ne2k_isa"
915 HT_NIC_I82551 = "i82551"
916 HT_NIC_I85557B = "i82557b"
917 HT_NIC_I8259ER = "i82559er"
918 HT_NIC_PCNET = "pcnet"
919 HT_NIC_E1000 = "e1000"
920 HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
921
922 HT_HVM_VALID_NIC_TYPES = compat.UniqueFrozenset([
923   HT_NIC_RTL8139,
924   HT_NIC_NE2K_PCI,
925   HT_NIC_E1000,
926   HT_NIC_NE2K_ISA,
927   HT_NIC_PARAVIRTUAL,
928   ])
929 HT_KVM_VALID_NIC_TYPES = compat.UniqueFrozenset([
930   HT_NIC_RTL8139,
931   HT_NIC_NE2K_PCI,
932   HT_NIC_NE2K_ISA,
933   HT_NIC_I82551,
934   HT_NIC_I85557B,
935   HT_NIC_I8259ER,
936   HT_NIC_PCNET,
937   HT_NIC_E1000,
938   HT_NIC_PARAVIRTUAL,
939   ])
940
941 # Vif types
942 # default vif type in xen-hvm
943 HT_HVM_VIF_IOEMU = "ioemu"
944 HT_HVM_VIF_VIF = "vif"
945 HT_HVM_VALID_VIF_TYPES = compat.UniqueFrozenset([
946   HT_HVM_VIF_IOEMU,
947   HT_HVM_VIF_VIF,
948   ])
949
950 # Disk types
951 HT_DISK_IOEMU = "ioemu"
952 HT_DISK_IDE = "ide"
953 HT_DISK_SCSI = "scsi"
954 HT_DISK_SD = "sd"
955 HT_DISK_MTD = "mtd"
956 HT_DISK_PFLASH = "pflash"
957
958 HT_CACHE_DEFAULT = "default"
959 HT_CACHE_NONE = "none"
960 HT_CACHE_WTHROUGH = "writethrough"
961 HT_CACHE_WBACK = "writeback"
962 HT_VALID_CACHE_TYPES = compat.UniqueFrozenset([
963   HT_CACHE_DEFAULT,
964   HT_CACHE_NONE,
965   HT_CACHE_WTHROUGH,
966   HT_CACHE_WBACK,
967   ])
968
969 HT_HVM_VALID_DISK_TYPES = compat.UniqueFrozenset([
970   HT_DISK_PARAVIRTUAL,
971   HT_DISK_IOEMU,
972   ])
973 HT_KVM_VALID_DISK_TYPES = compat.UniqueFrozenset([
974   HT_DISK_PARAVIRTUAL,
975   HT_DISK_IDE,
976   HT_DISK_SCSI,
977   HT_DISK_SD,
978   HT_DISK_MTD,
979   HT_DISK_PFLASH,
980   ])
981
982 # Mouse types:
983 HT_MOUSE_MOUSE = "mouse"
984 HT_MOUSE_TABLET = "tablet"
985
986 HT_KVM_VALID_MOUSE_TYPES = compat.UniqueFrozenset([
987   HT_MOUSE_MOUSE,
988   HT_MOUSE_TABLET,
989   ])
990
991 # Boot order
992 HT_BO_FLOPPY = "floppy"
993 HT_BO_CDROM = "cdrom"
994 HT_BO_DISK = "disk"
995 HT_BO_NETWORK = "network"
996
997 HT_KVM_VALID_BO_TYPES = compat.UniqueFrozenset([
998   HT_BO_FLOPPY,
999   HT_BO_CDROM,
1000   HT_BO_DISK,
1001   HT_BO_NETWORK,
1002   ])
1003
1004 # SPICE lossless image compression options
1005 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ = "auto_glz"
1006 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ = "auto_lz"
1007 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC = "quic"
1008 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ = "glz"
1009 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ = "lz"
1010 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF = "off"
1011
1012 HT_KVM_SPICE_VALID_LOSSLESS_IMG_COMPR_OPTIONS = compat.UniqueFrozenset([
1013   HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ,
1014   HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ,
1015   HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC,
1016   HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ,
1017   HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ,
1018   HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF,
1019   ])
1020
1021 # SPICE lossy image compression options (valid for both jpeg and zlib-glz)
1022 HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO = "auto"
1023 HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER = "never"
1024 HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS = "always"
1025
1026 HT_KVM_SPICE_VALID_LOSSY_IMG_COMPR_OPTIONS = compat.UniqueFrozenset([
1027   HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO,
1028   HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER,
1029   HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS,
1030   ])
1031
1032 # SPICE video stream detection
1033 HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF = "off"
1034 HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL = "all"
1035 HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER = "filter"
1036
1037 HT_KVM_SPICE_VALID_VIDEO_STREAM_DETECTION_OPTIONS = compat.UniqueFrozenset([
1038   HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF,
1039   HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL,
1040   HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER,
1041   ])
1042
1043 # Security models
1044 HT_SM_NONE = "none"
1045 HT_SM_USER = "user"
1046 HT_SM_POOL = "pool"
1047
1048 HT_KVM_VALID_SM_TYPES = compat.UniqueFrozenset([
1049   HT_SM_NONE,
1050   HT_SM_USER,
1051   HT_SM_POOL,
1052   ])
1053
1054 # Kvm flag values
1055 HT_KVM_ENABLED = "enabled"
1056 HT_KVM_DISABLED = "disabled"
1057
1058 HT_KVM_FLAG_VALUES = compat.UniqueFrozenset([HT_KVM_ENABLED, HT_KVM_DISABLED])
1059
1060 # Migration type
1061 HT_MIGRATION_LIVE = _constants.HT_MIGRATION_LIVE
1062 HT_MIGRATION_NONLIVE = _constants.HT_MIGRATION_NONLIVE
1063 HT_MIGRATION_MODES = _constants.HT_MIGRATION_MODES
1064
1065 # Cluster Verify steps
1066 VERIFY_NPLUSONE_MEM = _constants.VERIFY_NPLUSONE_MEM
1067 VERIFY_OPTIONAL_CHECKS = _constants.VERIFY_OPTIONAL_CHECKS
1068
1069 # Cluster Verify error classes
1070 CV_TCLUSTER = _constants.CV_TCLUSTER
1071 CV_TGROUP = _constants.CV_TGROUP
1072 CV_TNODE = _constants.CV_TNODE
1073 CV_TINSTANCE = _constants.CV_TINSTANCE
1074
1075 # Cluster Verify error codes and documentation
1076 CV_ECLUSTERCFG = _constants.CV_ECLUSTERCFG
1077 CV_ECLUSTERCERT = _constants.CV_ECLUSTERCERT
1078 CV_ECLUSTERFILECHECK = _constants.CV_ECLUSTERFILECHECK
1079 CV_ECLUSTERDANGLINGNODES = _constants.CV_ECLUSTERDANGLINGNODES
1080 CV_ECLUSTERDANGLINGINST = _constants.CV_ECLUSTERDANGLINGINST
1081 CV_EGROUPDIFFERENTPVSIZE = _constants.CV_EGROUPDIFFERENTPVSIZE
1082 CV_EINSTANCEBADNODE = _constants.CV_EINSTANCEBADNODE
1083 CV_EINSTANCEDOWN = _constants.CV_EINSTANCEDOWN
1084 CV_EINSTANCELAYOUT = _constants.CV_EINSTANCELAYOUT
1085 CV_EINSTANCEMISSINGDISK = _constants.CV_EINSTANCEMISSINGDISK
1086 CV_EINSTANCEFAULTYDISK = _constants.CV_EINSTANCEFAULTYDISK
1087 CV_EINSTANCEWRONGNODE = _constants.CV_EINSTANCEWRONGNODE
1088 CV_EINSTANCESPLITGROUPS = _constants.CV_EINSTANCESPLITGROUPS
1089 CV_EINSTANCEPOLICY = _constants.CV_EINSTANCEPOLICY
1090 CV_EINSTANCEUNSUITABLENODE = _constants.CV_EINSTANCEUNSUITABLENODE
1091 CV_EINSTANCEMISSINGCFGPARAMETER = _constants.CV_EINSTANCEMISSINGCFGPARAMETER
1092 CV_ENODEDRBD = _constants.CV_ENODEDRBD
1093 CV_ENODEDRBDVERSION = _constants.CV_ENODEDRBDVERSION
1094 CV_ENODEDRBDHELPER = _constants.CV_ENODEDRBDHELPER
1095 CV_ENODEFILECHECK = _constants.CV_ENODEFILECHECK
1096 CV_ENODEHOOKS = _constants.CV_ENODEHOOKS
1097 CV_ENODEHV = _constants.CV_ENODEHV
1098 CV_ENODELVM = _constants.CV_ENODELVM
1099 CV_ENODEN1 = _constants.CV_ENODEN1
1100 CV_ENODENET = _constants.CV_ENODENET
1101 CV_ENODEOS = _constants.CV_ENODEOS
1102 CV_ENODEORPHANINSTANCE = _constants.CV_ENODEORPHANINSTANCE
1103 CV_ENODEORPHANLV = _constants.CV_ENODEORPHANLV
1104 CV_ENODERPC = _constants.CV_ENODERPC
1105 CV_ENODESSH = _constants.CV_ENODESSH
1106 CV_ENODEVERSION = _constants.CV_ENODEVERSION
1107 CV_ENODESETUP = _constants.CV_ENODESETUP
1108 CV_ENODETIME = _constants.CV_ENODETIME
1109 CV_ENODEOOBPATH = _constants.CV_ENODEOOBPATH
1110 CV_ENODEUSERSCRIPTS = _constants.CV_ENODEUSERSCRIPTS
1111 CV_ENODEFILESTORAGEPATHS = _constants.CV_ENODEFILESTORAGEPATHS
1112 CV_ENODEFILESTORAGEPATHUNUSABLE = _constants.CV_ENODEFILESTORAGEPATHUNUSABLE
1113 CV_ENODESHAREDFILESTORAGEPATHUNUSABLE = \
1114   _constants.CV_ENODESHAREDFILESTORAGEPATHUNUSABLE
1115
1116 CV_ALL_ECODES = _constants.CV_ALL_ECODES
1117 CV_ALL_ECODES_STRINGS = _constants.CV_ALL_ECODES_STRINGS
1118
1119 # Node verify constants
1120 NV_BRIDGES = "bridges"
1121 NV_DRBDHELPER = "drbd-helper"
1122 NV_DRBDVERSION = "drbd-version"
1123 NV_DRBDLIST = "drbd-list"
1124 NV_EXCLUSIVEPVS = "exclusive-pvs"
1125 NV_FILELIST = "filelist"
1126 NV_ACCEPTED_STORAGE_PATHS = "allowed-file-storage-paths"
1127 NV_FILE_STORAGE_PATH = "file-storage-path"
1128 NV_SHARED_FILE_STORAGE_PATH = "shared-file-storage-path"
1129 NV_HVINFO = "hvinfo"
1130 NV_HVPARAMS = "hvparms"
1131 NV_HYPERVISOR = "hypervisor"
1132 NV_INSTANCELIST = "instancelist"
1133 NV_LVLIST = "lvlist"
1134 NV_MASTERIP = "master-ip"
1135 NV_NODELIST = "nodelist"
1136 NV_NODENETTEST = "node-net-test"
1137 NV_NODESETUP = "nodesetup"
1138 NV_OOB_PATHS = "oob-paths"
1139 NV_OSLIST = "oslist"
1140 NV_PVLIST = "pvlist"
1141 NV_TIME = "time"
1142 NV_USERSCRIPTS = "user-scripts"
1143 NV_VERSION = "version"
1144 NV_VGLIST = "vglist"
1145 NV_VMNODES = "vmnodes"
1146
1147 # Instance status
1148 INSTST_RUNNING = _constants.INSTST_RUNNING
1149 INSTST_ADMINDOWN = _constants.INSTST_ADMINDOWN
1150 INSTST_ADMINOFFLINE = _constants.INSTST_ADMINOFFLINE
1151 INSTST_NODEOFFLINE = _constants.INSTST_NODEOFFLINE
1152 INSTST_NODEDOWN = _constants.INSTST_NODEDOWN
1153 INSTST_WRONGNODE = _constants.INSTST_WRONGNODE
1154 INSTST_ERRORUP = _constants.INSTST_ERRORUP
1155 INSTST_ERRORDOWN = _constants.INSTST_ERRORDOWN
1156 INSTST_ALL = _constants.INSTST_ALL
1157
1158 # Admin states
1159 ADMINST_UP = _constants.ADMINST_UP
1160 ADMINST_DOWN = _constants.ADMINST_DOWN
1161 ADMINST_OFFLINE = _constants.ADMINST_OFFLINE
1162 ADMINST_ALL = _constants.ADMINST_ALL
1163
1164 # Node roles
1165 NR_REGULAR = _constants.NR_REGULAR
1166 NR_MASTER = _constants.NR_MASTER
1167 NR_MCANDIDATE = _constants.NR_MCANDIDATE
1168 NR_DRAINED = _constants.NR_DRAINED
1169 NR_OFFLINE = _constants.NR_OFFLINE
1170 NR_ALL = _constants.NR_ALL
1171
1172 # SSL certificate check constants (in days)
1173 SSL_CERT_EXPIRATION_WARN = 30
1174 SSL_CERT_EXPIRATION_ERROR = 7
1175
1176 # Allocator framework constants
1177 IALLOCATOR_VERSION = _constants.IALLOCATOR_VERSION
1178 IALLOCATOR_DIR_IN = _constants.IALLOCATOR_DIR_IN
1179 IALLOCATOR_DIR_OUT = _constants.IALLOCATOR_DIR_OUT
1180 VALID_IALLOCATOR_DIRECTIONS = _constants.VALID_IALLOCATOR_DIRECTIONS
1181
1182 IALLOCATOR_MODE_ALLOC = _constants.IALLOCATOR_MODE_ALLOC
1183 IALLOCATOR_MODE_RELOC = _constants.IALLOCATOR_MODE_RELOC
1184 IALLOCATOR_MODE_CHG_GROUP = _constants.IALLOCATOR_MODE_CHG_GROUP
1185 IALLOCATOR_MODE_NODE_EVAC = _constants.IALLOCATOR_MODE_NODE_EVAC
1186 IALLOCATOR_MODE_MULTI_ALLOC = _constants.IALLOCATOR_MODE_MULTI_ALLOC
1187 VALID_IALLOCATOR_MODES = _constants.VALID_IALLOCATOR_MODES
1188
1189 IALLOCATOR_SEARCH_PATH = _constants.IALLOCATOR_SEARCH_PATH
1190 DEFAULT_IALLOCATOR_SHORTCUT = _constants.DEFAULT_IALLOCATOR_SHORTCUT
1191
1192 # Node evacuation
1193 NODE_EVAC_PRI = _constants.NODE_EVAC_PRI
1194 NODE_EVAC_SEC = _constants.NODE_EVAC_SEC
1195 NODE_EVAC_ALL = _constants.NODE_EVAC_ALL
1196 NODE_EVAC_MODES = _constants.NODE_EVAC_MODES
1197
1198 # Job queue
1199 JOB_QUEUE_VERSION = 1
1200 JOB_QUEUE_SIZE_HARD_LIMIT = 5000
1201 JOB_QUEUE_FILES_PERMS = 0640
1202
1203 JOB_ID_TEMPLATE = r"\d+"
1204 JOB_FILE_RE = re.compile(r"^job-(%s)$" % JOB_ID_TEMPLATE)
1205
1206 # unchanged job return
1207 JOB_NOTCHANGED = "nochange"
1208
1209 # Job status
1210 JOB_STATUS_QUEUED = _constants.JOB_STATUS_QUEUED
1211 JOB_STATUS_WAITING = _constants.JOB_STATUS_WAITING
1212 JOB_STATUS_CANCELING = _constants.JOB_STATUS_CANCELING
1213 JOB_STATUS_RUNNING = _constants.JOB_STATUS_RUNNING
1214 JOB_STATUS_CANCELED = _constants.JOB_STATUS_CANCELED
1215 JOB_STATUS_SUCCESS = _constants.JOB_STATUS_SUCCESS
1216 JOB_STATUS_ERROR = _constants.JOB_STATUS_ERROR
1217 JOBS_PENDING = _constants.JOBS_PENDING
1218 JOBS_FINALIZED = _constants.JOBS_FINALIZED
1219 JOB_STATUS_ALL = _constants.JOB_STATUS_ALL
1220
1221 # OpCode status
1222 # not yet finalized
1223 OP_STATUS_QUEUED = _constants.OP_STATUS_QUEUED
1224 OP_STATUS_WAITING = _constants.OP_STATUS_WAITING
1225 OP_STATUS_CANCELING = _constants.OP_STATUS_CANCELING
1226 OP_STATUS_RUNNING = _constants.OP_STATUS_RUNNING
1227 # finalized
1228 OP_STATUS_CANCELED = _constants.OP_STATUS_CANCELED
1229 OP_STATUS_SUCCESS = _constants.OP_STATUS_SUCCESS
1230 OP_STATUS_ERROR = _constants.OP_STATUS_ERROR
1231 OPS_FINALIZED = _constants.OPS_FINALIZED
1232
1233 # OpCode priority
1234 OP_PRIO_LOWEST = _constants.OP_PRIO_LOWEST
1235 OP_PRIO_HIGHEST = _constants.OP_PRIO_HIGHEST
1236 OP_PRIO_LOW = _constants.OP_PRIO_LOW
1237 OP_PRIO_NORMAL = _constants.OP_PRIO_NORMAL
1238 OP_PRIO_HIGH = _constants.OP_PRIO_HIGH
1239 OP_PRIO_SUBMIT_VALID = _constants.OP_PRIO_SUBMIT_VALID
1240 OP_PRIO_DEFAULT = _constants.OP_PRIO_DEFAULT
1241
1242 # Lock recalculate mode
1243 LOCKS_REPLACE = "replace"
1244 LOCKS_APPEND = "append"
1245
1246 # Lock timeout (sum) before we should go into blocking acquire (still
1247 # can be reset by priority change); computed as max time (10 hours)
1248 # before we should actually go into blocking acquire given that we
1249 # start from default priority level; in seconds
1250 # TODO
1251 LOCK_ATTEMPTS_TIMEOUT = 10 * 3600 / (OP_PRIO_DEFAULT - OP_PRIO_HIGHEST)
1252 LOCK_ATTEMPTS_MAXWAIT = 15.0
1253 LOCK_ATTEMPTS_MINWAIT = 1.0
1254
1255 # Execution log types
1256 ELOG_MESSAGE = _constants.ELOG_MESSAGE
1257 ELOG_REMOTE_IMPORT = _constants.ELOG_REMOTE_IMPORT
1258 ELOG_JQUEUE_TEST = _constants.ELOG_JQUEUE_TEST
1259
1260 # /etc/hosts modification
1261 ETC_HOSTS_ADD = "add"
1262 ETC_HOSTS_REMOVE = "remove"
1263
1264 # Job queue test
1265 JQT_MSGPREFIX = "TESTMSG="
1266 JQT_EXPANDNAMES = "expandnames"
1267 JQT_EXEC = "exec"
1268 JQT_LOGMSG = "logmsg"
1269 JQT_STARTMSG = "startmsg"
1270 JQT_ALL = compat.UniqueFrozenset([
1271   JQT_EXPANDNAMES,
1272   JQT_EXEC,
1273   JQT_LOGMSG,
1274   JQT_STARTMSG,
1275   ])
1276
1277 # Query resources
1278 QR_CLUSTER = "cluster"
1279 QR_INSTANCE = "instance"
1280 QR_NODE = "node"
1281 QR_LOCK = "lock"
1282 QR_GROUP = "group"
1283 QR_OS = "os"
1284 QR_JOB = "job"
1285 QR_EXPORT = "export"
1286 QR_NETWORK = "network"
1287 QR_EXTSTORAGE = "extstorage"
1288
1289 #: List of resources which can be queried using L{opcodes.OpQuery}
1290 QR_VIA_OP = compat.UniqueFrozenset([
1291   QR_CLUSTER,
1292   QR_INSTANCE,
1293   QR_NODE,
1294   QR_GROUP,
1295   QR_OS,
1296   QR_EXPORT,
1297   QR_NETWORK,
1298   QR_EXTSTORAGE,
1299   ])
1300
1301 #: List of resources which can be queried using Local UniX Interface
1302 QR_VIA_LUXI = QR_VIA_OP.union([
1303   QR_LOCK,
1304   QR_JOB,
1305   ])
1306
1307 #: List of resources which can be queried using RAPI
1308 QR_VIA_RAPI = QR_VIA_LUXI
1309
1310 # Query field types
1311 QFT_UNKNOWN = "unknown"
1312 QFT_TEXT = "text"
1313 QFT_BOOL = "bool"
1314 QFT_NUMBER = "number"
1315 QFT_UNIT = "unit"
1316 QFT_TIMESTAMP = "timestamp"
1317 QFT_OTHER = "other"
1318
1319 #: All query field types
1320 QFT_ALL = compat.UniqueFrozenset([
1321   QFT_UNKNOWN,
1322   QFT_TEXT,
1323   QFT_BOOL,
1324   QFT_NUMBER,
1325   QFT_UNIT,
1326   QFT_TIMESTAMP,
1327   QFT_OTHER,
1328   ])
1329
1330 # Query result field status (don't change or reuse values as they're used by
1331 # clients)
1332 #: Normal field status
1333 RS_NORMAL = 0
1334 #: Unknown field
1335 RS_UNKNOWN = 1
1336 #: No data (e.g. RPC error), can be used instead of L{RS_OFFLINE}
1337 RS_NODATA = 2
1338 #: Value unavailable/unsupported for item; if this field is supported
1339 #: but we cannot get the data for the moment, RS_NODATA or
1340 #: RS_OFFLINE should be used
1341 RS_UNAVAIL = 3
1342 #: Resource marked offline
1343 RS_OFFLINE = 4
1344
1345 RS_ALL = compat.UniqueFrozenset([
1346   RS_NORMAL,
1347   RS_UNKNOWN,
1348   RS_NODATA,
1349   RS_UNAVAIL,
1350   RS_OFFLINE,
1351   ])
1352
1353 #: Dictionary with special field cases and their verbose/terse formatting
1354 RSS_DESCRIPTION = {
1355   RS_UNKNOWN: ("(unknown)", "??"),
1356   RS_NODATA: ("(nodata)", "?"),
1357   RS_OFFLINE: ("(offline)", "*"),
1358   RS_UNAVAIL: ("(unavail)", "-"),
1359   }
1360
1361 # max dynamic devices
1362 MAX_NICS = 8
1363 MAX_DISKS = 16
1364
1365 # SSCONF file prefix
1366 SSCONF_FILEPREFIX = "ssconf_"
1367 # SSCONF keys
1368 SS_CLUSTER_NAME = "cluster_name"
1369 SS_CLUSTER_TAGS = "cluster_tags"
1370 SS_FILE_STORAGE_DIR = "file_storage_dir"
1371 SS_SHARED_FILE_STORAGE_DIR = "shared_file_storage_dir"
1372 SS_MASTER_CANDIDATES = "master_candidates"
1373 SS_MASTER_CANDIDATES_IPS = "master_candidates_ips"
1374 SS_MASTER_IP = "master_ip"
1375 SS_MASTER_NETDEV = "master_netdev"
1376 SS_MASTER_NETMASK = "master_netmask"
1377 SS_MASTER_NODE = "master_node"
1378 SS_NODE_LIST = "node_list"
1379 SS_NODE_PRIMARY_IPS = "node_primary_ips"
1380 SS_NODE_SECONDARY_IPS = "node_secondary_ips"
1381 SS_OFFLINE_NODES = "offline_nodes"
1382 SS_ONLINE_NODES = "online_nodes"
1383 SS_PRIMARY_IP_FAMILY = "primary_ip_family"
1384 SS_INSTANCE_LIST = "instance_list"
1385 SS_RELEASE_VERSION = "release_version"
1386 SS_HYPERVISOR_LIST = "hypervisor_list"
1387 SS_MAINTAIN_NODE_HEALTH = "maintain_node_health"
1388 SS_UID_POOL = "uid_pool"
1389 SS_NODEGROUPS = "nodegroups"
1390 SS_NETWORKS = "networks"
1391
1392 # This is not a complete SSCONF key, but the prefix for the hypervisor keys
1393 SS_HVPARAMS_PREF = "hvparams_"
1394
1395 # Hvparams keys:
1396 SS_HVPARAMS_XEN_PVM = SS_HVPARAMS_PREF + HT_XEN_PVM
1397 SS_HVPARAMS_XEN_FAKE = SS_HVPARAMS_PREF + HT_FAKE
1398 SS_HVPARAMS_XEN_HVM = SS_HVPARAMS_PREF + HT_XEN_HVM
1399 SS_HVPARAMS_XEN_KVM = SS_HVPARAMS_PREF + HT_KVM
1400 SS_HVPARAMS_XEN_CHROOT = SS_HVPARAMS_PREF + HT_CHROOT
1401 SS_HVPARAMS_XEN_LXC = SS_HVPARAMS_PREF + HT_LXC
1402
1403 VALID_SS_HVPARAMS_KEYS = compat.UniqueFrozenset([
1404   SS_HVPARAMS_XEN_PVM,
1405   SS_HVPARAMS_XEN_FAKE,
1406   SS_HVPARAMS_XEN_HVM,
1407   SS_HVPARAMS_XEN_KVM,
1408   SS_HVPARAMS_XEN_CHROOT,
1409   SS_HVPARAMS_XEN_LXC,
1410   ])
1411
1412 SS_FILE_PERMS = 0444
1413
1414 # cluster wide default parameters
1415 DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM
1416
1417 HVC_DEFAULTS = {
1418   HT_XEN_PVM: {
1419     HV_USE_BOOTLOADER: False,
1420     HV_BOOTLOADER_PATH: XEN_BOOTLOADER,
1421     HV_BOOTLOADER_ARGS: "",
1422     HV_KERNEL_PATH: XEN_KERNEL,
1423     HV_INITRD_PATH: "",
1424     HV_ROOT_PATH: "/dev/xvda1",
1425     HV_KERNEL_ARGS: "ro",
1426     HV_MIGRATION_PORT: 8002,
1427     HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1428     HV_BLOCKDEV_PREFIX: "sd",
1429     HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1430     HV_CPU_MASK: CPU_PINNING_ALL,
1431     HV_CPU_CAP: 0,
1432     HV_CPU_WEIGHT: 256,
1433     HV_VIF_SCRIPT: "",
1434     HV_XEN_CMD: XEN_CMD_XM,
1435     HV_XEN_CPUID: "",
1436     HV_SOUNDHW: "",
1437     },
1438   HT_XEN_HVM: {
1439     HV_BOOT_ORDER: "cd",
1440     HV_CDROM_IMAGE_PATH: "",
1441     HV_NIC_TYPE: HT_NIC_RTL8139,
1442     HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1443     HV_VNC_BIND_ADDRESS: IP4_ADDRESS_ANY,
1444     HV_VNC_PASSWORD_FILE: pathutils.VNC_PASSWORD_FILE,
1445     HV_ACPI: True,
1446     HV_PAE: True,
1447     HV_KERNEL_PATH: "/usr/lib/xen/boot/hvmloader",
1448     HV_DEVICE_MODEL: "/usr/lib/xen/bin/qemu-dm",
1449     HV_MIGRATION_PORT: 8002,
1450     HV_MIGRATION_MODE: HT_MIGRATION_NONLIVE,
1451     HV_USE_LOCALTIME: False,
1452     HV_BLOCKDEV_PREFIX: "hd",
1453     HV_PASSTHROUGH: "",
1454     HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1455     HV_CPU_MASK: CPU_PINNING_ALL,
1456     HV_CPU_CAP: 0,
1457     HV_CPU_WEIGHT: 256,
1458     HV_VIF_TYPE: HT_HVM_VIF_IOEMU,
1459     HV_VIF_SCRIPT: "",
1460     HV_VIRIDIAN: False,
1461     HV_XEN_CMD: XEN_CMD_XM,
1462     HV_XEN_CPUID: "",
1463     HV_SOUNDHW: "",
1464     },
1465   HT_KVM: {
1466     HV_KVM_PATH: KVM_PATH,
1467     HV_KERNEL_PATH: KVM_KERNEL,
1468     HV_INITRD_PATH: "",
1469     HV_KERNEL_ARGS: "ro",
1470     HV_ROOT_PATH: "/dev/vda1",
1471     HV_ACPI: True,
1472     HV_SERIAL_CONSOLE: True,
1473     HV_SERIAL_SPEED: 38400,
1474     HV_VNC_BIND_ADDRESS: "",
1475     HV_VNC_TLS: False,
1476     HV_VNC_X509: "",
1477     HV_VNC_X509_VERIFY: False,
1478     HV_VNC_PASSWORD_FILE: "",
1479     HV_KVM_SPICE_BIND: "",
1480     HV_KVM_SPICE_IP_VERSION: IFACE_NO_IP_VERSION_SPECIFIED,
1481     HV_KVM_SPICE_PASSWORD_FILE: "",
1482     HV_KVM_SPICE_LOSSLESS_IMG_COMPR: "",
1483     HV_KVM_SPICE_JPEG_IMG_COMPR: "",
1484     HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR: "",
1485     HV_KVM_SPICE_STREAMING_VIDEO_DETECTION: "",
1486     HV_KVM_SPICE_AUDIO_COMPR: True,
1487     HV_KVM_SPICE_USE_TLS: False,
1488     HV_KVM_SPICE_TLS_CIPHERS: OPENSSL_CIPHERS,
1489     HV_KVM_SPICE_USE_VDAGENT: True,
1490     HV_KVM_FLOPPY_IMAGE_PATH: "",
1491     HV_CDROM_IMAGE_PATH: "",
1492     HV_KVM_CDROM2_IMAGE_PATH: "",
1493     HV_BOOT_ORDER: HT_BO_DISK,
1494     HV_NIC_TYPE: HT_NIC_PARAVIRTUAL,
1495     HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1496     HV_KVM_CDROM_DISK_TYPE: "",
1497     HV_USB_MOUSE: "",
1498     HV_KEYMAP: "",
1499     HV_MIGRATION_PORT: 8102,
1500     HV_MIGRATION_BANDWIDTH: 32, # MiB/s
1501     HV_MIGRATION_DOWNTIME: 30,  # ms
1502     HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1503     HV_USE_LOCALTIME: False,
1504     HV_DISK_CACHE: HT_CACHE_DEFAULT,
1505     HV_SECURITY_MODEL: HT_SM_NONE,
1506     HV_SECURITY_DOMAIN: "",
1507     HV_KVM_FLAG: "",
1508     HV_VHOST_NET: False,
1509     HV_KVM_USE_CHROOT: False,
1510     HV_MEM_PATH: "",
1511     HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1512     HV_CPU_MASK: CPU_PINNING_ALL,
1513     HV_CPU_TYPE: "",
1514     HV_CPU_CORES: 0,
1515     HV_CPU_THREADS: 0,
1516     HV_CPU_SOCKETS: 0,
1517     HV_SOUNDHW: "",
1518     HV_USB_DEVICES: "",
1519     HV_VGA: "",
1520     HV_KVM_EXTRA: "",
1521     HV_KVM_MACHINE_VERSION: "",
1522     HV_VNET_HDR: True,
1523     },
1524   HT_FAKE: {
1525     HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1526   },
1527   HT_CHROOT: {
1528     HV_INIT_SCRIPT: "/ganeti-chroot",
1529     },
1530   HT_LXC: {
1531     HV_CPU_MASK: "",
1532     },
1533   }
1534
1535 HVC_GLOBALS = compat.UniqueFrozenset([
1536   HV_MIGRATION_PORT,
1537   HV_MIGRATION_BANDWIDTH,
1538   HV_MIGRATION_MODE,
1539   HV_XEN_CMD,
1540   ])
1541
1542 BEC_DEFAULTS = {
1543   BE_MINMEM: 128,
1544   BE_MAXMEM: 128,
1545   BE_VCPUS: 1,
1546   BE_AUTO_BALANCE: True,
1547   BE_ALWAYS_FAILOVER: False,
1548   BE_SPINDLE_USE: 1,
1549   }
1550
1551 NDC_DEFAULTS = {
1552   ND_OOB_PROGRAM: "",
1553   ND_SPINDLE_COUNT: 1,
1554   ND_EXCLUSIVE_STORAGE: False,
1555   ND_OVS: False,
1556   ND_OVS_NAME: DEFAULT_OVS,
1557   ND_OVS_LINK: ""
1558   }
1559
1560 NDC_GLOBALS = compat.UniqueFrozenset([
1561   ND_EXCLUSIVE_STORAGE,
1562   ])
1563
1564 DISK_LD_DEFAULTS = {
1565   DT_DRBD8: {
1566     LDP_RESYNC_RATE: CLASSIC_DRBD_SYNC_SPEED,
1567     LDP_BARRIERS: _constants.DRBD_BARRIERS,
1568     LDP_NO_META_FLUSH: _constants.DRBD_NO_META_FLUSH,
1569     LDP_DEFAULT_METAVG: DEFAULT_VG,
1570     LDP_DISK_CUSTOM: "",
1571     LDP_NET_CUSTOM: "",
1572     LDP_PROTOCOL: DRBD_DEFAULT_NET_PROTOCOL,
1573     LDP_DYNAMIC_RESYNC: False,
1574
1575     # The default values for the DRBD dynamic resync speed algorithm
1576     # are taken from the drbsetup 8.3.11 man page, except for
1577     # c-plan-ahead (that we don't need to set to 0, because we have a
1578     # separate option to enable it) and for c-max-rate, that we cap to
1579     # the default value for the static resync rate.
1580     LDP_PLAN_AHEAD: 20, # ds
1581     LDP_FILL_TARGET: 0, # sectors
1582     LDP_DELAY_TARGET: 1, # ds
1583     LDP_MAX_RATE: CLASSIC_DRBD_SYNC_SPEED, # KiB/s
1584     LDP_MIN_RATE: 4 * 1024, # KiB/s
1585     },
1586   DT_PLAIN: {
1587     LDP_STRIPES: _constants.LVM_STRIPECOUNT
1588     },
1589   DT_FILE: {},
1590   DT_SHARED_FILE: {},
1591   DT_BLOCK: {},
1592   DT_RBD: {
1593     LDP_POOL: "rbd",
1594     LDP_ACCESS: DISK_KERNELSPACE,
1595     },
1596   DT_EXT: {},
1597   }
1598
1599 # readability shortcuts
1600 _LV_DEFAULTS = DISK_LD_DEFAULTS[DT_PLAIN]
1601 _DRBD_DEFAULTS = DISK_LD_DEFAULTS[DT_DRBD8]
1602
1603 DISK_DT_DEFAULTS = {
1604   DT_PLAIN: {
1605     LV_STRIPES: DISK_LD_DEFAULTS[DT_PLAIN][LDP_STRIPES],
1606     },
1607   DT_DRBD8: {
1608     DRBD_RESYNC_RATE: _DRBD_DEFAULTS[LDP_RESYNC_RATE],
1609     DRBD_DATA_STRIPES: _LV_DEFAULTS[LDP_STRIPES],
1610     DRBD_META_STRIPES: _LV_DEFAULTS[LDP_STRIPES],
1611     DRBD_DISK_BARRIERS: _DRBD_DEFAULTS[LDP_BARRIERS],
1612     DRBD_META_BARRIERS: _DRBD_DEFAULTS[LDP_NO_META_FLUSH],
1613     DRBD_DEFAULT_METAVG: _DRBD_DEFAULTS[LDP_DEFAULT_METAVG],
1614     DRBD_DISK_CUSTOM: _DRBD_DEFAULTS[LDP_DISK_CUSTOM],
1615     DRBD_NET_CUSTOM: _DRBD_DEFAULTS[LDP_NET_CUSTOM],
1616     DRBD_PROTOCOL: _DRBD_DEFAULTS[LDP_PROTOCOL],
1617     DRBD_DYNAMIC_RESYNC: _DRBD_DEFAULTS[LDP_DYNAMIC_RESYNC],
1618     DRBD_PLAN_AHEAD: _DRBD_DEFAULTS[LDP_PLAN_AHEAD],
1619     DRBD_FILL_TARGET: _DRBD_DEFAULTS[LDP_FILL_TARGET],
1620     DRBD_DELAY_TARGET: _DRBD_DEFAULTS[LDP_DELAY_TARGET],
1621     DRBD_MAX_RATE: _DRBD_DEFAULTS[LDP_MAX_RATE],
1622     DRBD_MIN_RATE: _DRBD_DEFAULTS[LDP_MIN_RATE],
1623     },
1624   DT_DISKLESS: {},
1625   DT_FILE: {},
1626   DT_SHARED_FILE: {},
1627   DT_BLOCK: {},
1628   DT_RBD: {
1629     RBD_POOL: DISK_LD_DEFAULTS[DT_RBD][LDP_POOL],
1630     RBD_ACCESS: DISK_LD_DEFAULTS[DT_RBD][LDP_ACCESS],
1631     },
1632   DT_EXT: {},
1633   }
1634
1635 # we don't want to export the shortcuts
1636 del _LV_DEFAULTS, _DRBD_DEFAULTS
1637
1638 NICC_DEFAULTS = {
1639   NIC_MODE: NIC_MODE_BRIDGED,
1640   NIC_LINK: DEFAULT_BRIDGE,
1641   NIC_VLAN: VALUE_HS_NOTHING,
1642   }
1643
1644 # All of the following values are quite arbitrarily - there are no
1645 # "good" defaults, these must be customised per-site
1646 ISPECS_MINMAX_DEFAULTS = {
1647   ISPECS_MIN: {
1648     ISPEC_MEM_SIZE: 128,
1649     ISPEC_CPU_COUNT: 1,
1650     ISPEC_DISK_COUNT: 1,
1651     ISPEC_DISK_SIZE: 1024,
1652     ISPEC_NIC_COUNT: 1,
1653     ISPEC_SPINDLE_USE: 1,
1654     },
1655   ISPECS_MAX: {
1656     ISPEC_MEM_SIZE: 32768,
1657     ISPEC_CPU_COUNT: 8,
1658     ISPEC_DISK_COUNT: MAX_DISKS,
1659     ISPEC_DISK_SIZE: 1024 * 1024,
1660     ISPEC_NIC_COUNT: MAX_NICS,
1661     ISPEC_SPINDLE_USE: 12,
1662     },
1663   }
1664 IPOLICY_DEFAULTS = {
1665   ISPECS_MINMAX: [ISPECS_MINMAX_DEFAULTS],
1666   ISPECS_STD: {
1667     ISPEC_MEM_SIZE: 128,
1668     ISPEC_CPU_COUNT: 1,
1669     ISPEC_DISK_COUNT: 1,
1670     ISPEC_DISK_SIZE: 1024,
1671     ISPEC_NIC_COUNT: 1,
1672     ISPEC_SPINDLE_USE: 1,
1673     },
1674   IPOLICY_DTS: list(DISK_TEMPLATES),
1675   IPOLICY_VCPU_RATIO: 4.0,
1676   IPOLICY_SPINDLE_RATIO: 32.0,
1677   }
1678
1679 MASTER_POOL_SIZE_DEFAULT = 10
1680
1681 # Exclusive storage:
1682 # Error margin used to compare physical disks
1683 PART_MARGIN = .01
1684 # Space reserved when creating instance disks
1685 PART_RESERVED = .02
1686
1687 CONFD_PROTOCOL_VERSION = _constants.CONFD_PROTOCOL_VERSION
1688
1689 CONFD_REQ_PING = _constants.CONFD_REQ_PING
1690 CONFD_REQ_NODE_ROLE_BYNAME = _constants.CONFD_REQ_NODE_ROLE_BYNAME
1691 CONFD_REQ_NODE_PIP_BY_INSTANCE_IP = _constants.CONFD_REQ_NODE_PIP_BY_INSTANCE_IP
1692 CONFD_REQ_CLUSTER_MASTER = _constants.CONFD_REQ_CLUSTER_MASTER
1693 CONFD_REQ_NODE_PIP_LIST = _constants.CONFD_REQ_NODE_PIP_LIST
1694 CONFD_REQ_MC_PIP_LIST = _constants.CONFD_REQ_MC_PIP_LIST
1695 CONFD_REQ_INSTANCES_IPS_LIST = _constants.CONFD_REQ_INSTANCES_IPS_LIST
1696 CONFD_REQ_NODE_DRBD = _constants.CONFD_REQ_NODE_DRBD
1697 CONFD_REQ_NODE_INSTANCES = _constants.CONFD_REQ_NODE_INSTANCES
1698 CONFD_REQS = _constants.CONFD_REQS
1699
1700 # Confd request query fields. These are used to narrow down queries.
1701 # These must be strings rather than integers, because json-encoding
1702 # converts them to strings anyway, as they're used as dict-keys.
1703 CONFD_REQQ_LINK = _constants.CONFD_REQQ_LINK
1704 CONFD_REQQ_IP = _constants.CONFD_REQQ_IP
1705 CONFD_REQQ_IPLIST = _constants.CONFD_REQQ_IPLIST
1706 CONFD_REQQ_FIELDS = _constants.CONFD_REQQ_FIELDS
1707
1708 # FIXME: perhaps update code that uses these constants to deal with
1709 # integers instead of strings
1710 CONFD_REQFIELD_NAME = str(_constants.CONFD_REQFIELD_NAME)
1711 CONFD_REQFIELD_IP = str(_constants.CONFD_REQFIELD_IP)
1712 CONFD_REQFIELD_MNODE_PIP = str(_constants.CONFD_REQFIELD_MNODE_PIP)
1713
1714 CONFD_REPL_STATUS_OK = _constants.CONFD_REPL_STATUS_OK
1715 CONFD_REPL_STATUS_ERROR = _constants.CONFD_REPL_STATUS_ERROR
1716 CONFD_REPL_STATUS_NOTIMPLEMENTED = _constants.CONFD_REPL_STATUS_NOTIMPLEMENTED
1717 CONFD_REPL_STATUSES = _constants.CONFD_REPL_STATUSES
1718
1719 CONFD_NODE_ROLE_MASTER = _constants.CONFD_NODE_ROLE_MASTER
1720 CONFD_NODE_ROLE_CANDIDATE = _constants.CONFD_NODE_ROLE_CANDIDATE
1721 CONFD_NODE_ROLE_OFFLINE = _constants.CONFD_NODE_ROLE_OFFLINE
1722 CONFD_NODE_ROLE_DRAINED = _constants.CONFD_NODE_ROLE_DRAINED
1723 CONFD_NODE_ROLE_REGULAR = _constants.CONFD_NODE_ROLE_REGULAR
1724
1725 CONFD_ERROR_UNKNOWN_ENTRY = _constants.CONFD_ERROR_UNKNOWN_ENTRY
1726 CONFD_ERROR_INTERNAL = _constants.CONFD_ERROR_INTERNAL
1727 CONFD_ERROR_ARGUMENT = _constants.CONFD_ERROR_ARGUMENT
1728
1729 # Each request is "salted" by the current timestamp.
1730 # This constants decides how many seconds of skew to accept.
1731 # TODO: make this a default and allow the value to be more configurable
1732 CONFD_MAX_CLOCK_SKEW = _constants.CONFD_MAX_CLOCK_SKEW
1733
1734 # When we haven't reloaded the config for more than this amount of
1735 # seconds, we force a test to see if inotify is betraying us. Using a
1736 # prime number to ensure we get less chance of 'same wakeup' with
1737 # other processes.
1738 CONFD_CONFIG_RELOAD_TIMEOUT = _constants.CONFD_CONFIG_RELOAD_TIMEOUT
1739
1740 # If we receive more than one update in this amount of microseconds,
1741 # we move to polling every RATELIMIT seconds, rather than relying on
1742 # inotify, to be able to serve more requests.
1743 CONFD_CONFIG_RELOAD_RATELIMIT = _constants.CONFD_CONFIG_RELOAD_RATELIMIT
1744
1745 # Magic number prepended to all confd queries.
1746 # This allows us to distinguish different types of confd protocols and handle
1747 # them. For example by changing this we can move the whole payload to be
1748 # compressed, or move away from json.
1749 CONFD_MAGIC_FOURCC = _constants.CONFD_MAGIC_FOURCC
1750
1751 # By default a confd request is sent to the minimum between this number and all
1752 # MCs. 6 was chosen because even in the case of a disastrous 50% response rate,
1753 # we should have enough answers to be able to compare more than one.
1754 CONFD_DEFAULT_REQ_COVERAGE = _constants.CONFD_DEFAULT_REQ_COVERAGE
1755
1756 # Timeout in seconds to expire pending query request in the confd client
1757 # library. We don't actually expect any answer more than 10 seconds after we
1758 # sent a request.
1759 CONFD_CLIENT_EXPIRE_TIMEOUT = _constants.CONFD_CLIENT_EXPIRE_TIMEOUT
1760
1761 # Maximum UDP datagram size.
1762 # On IPv4: 64K - 20 (ip header size) - 8 (udp header size) = 65507
1763 # On IPv6: 64K - 40 (ip6 header size) - 8 (udp header size) = 65487
1764 #   (assuming we can't use jumbo frames)
1765 # We just set this to 60K, which should be enough
1766 MAX_UDP_DATA_SIZE = 61440
1767
1768 # User-id pool minimum/maximum acceptable user-ids.
1769 UIDPOOL_UID_MIN = 0
1770 UIDPOOL_UID_MAX = 2 ** 32 - 1 # Assuming 32 bit user-ids
1771
1772 # Name or path of the pgrep command
1773 PGREP = "pgrep"
1774
1775 # Name of the node group that gets created at cluster init or upgrade
1776 INITIAL_NODE_GROUP_NAME = "default"
1777
1778 # Possible values for NodeGroup.alloc_policy
1779 ALLOC_POLICY_PREFERRED = _constants.ALLOC_POLICY_PREFERRED
1780 ALLOC_POLICY_LAST_RESORT = _constants.ALLOC_POLICY_LAST_RESORT
1781 ALLOC_POLICY_UNALLOCABLE = _constants.ALLOC_POLICY_UNALLOCABLE
1782 VALID_ALLOC_POLICIES = _constants.VALID_ALLOC_POLICIES
1783
1784 # Temporary external/shared storage parameters
1785 BLOCKDEV_DRIVER_MANUAL = _constants.BLOCKDEV_DRIVER_MANUAL
1786
1787 # qemu-img path, required for ovfconverter
1788 QEMUIMG_PATH = _constants.QEMUIMG_PATH
1789
1790 # Whether htools was enabled at compilation time
1791 HTOOLS = _constants.HTOOLS
1792 # The hail iallocator
1793 IALLOC_HAIL = "hail"
1794
1795 # Fake opcodes for functions that have hooks attached to them via
1796 # backend.RunLocalHooks
1797 FAKE_OP_MASTER_TURNUP = "OP_CLUSTER_IP_TURNUP"
1798 FAKE_OP_MASTER_TURNDOWN = "OP_CLUSTER_IP_TURNDOWN"
1799
1800 # SSH key types
1801 SSHK_RSA = "rsa"
1802 SSHK_DSA = "dsa"
1803 SSHK_ALL = compat.UniqueFrozenset([SSHK_RSA, SSHK_DSA])
1804
1805 # SSH authorized key types
1806 SSHAK_RSA = "ssh-rsa"
1807 SSHAK_DSS = "ssh-dss"
1808 SSHAK_ALL = compat.UniqueFrozenset([SSHAK_RSA, SSHAK_DSS])
1809
1810 # SSH setup
1811 SSHS_CLUSTER_NAME = "cluster_name"
1812 SSHS_SSH_HOST_KEY = "ssh_host_key"
1813 SSHS_SSH_ROOT_KEY = "ssh_root_key"
1814 SSHS_NODE_DAEMON_CERTIFICATE = "node_daemon_certificate"
1815
1816 #: Key files for SSH daemon
1817 SSH_DAEMON_KEYFILES = {
1818   SSHK_RSA: (pathutils.SSH_HOST_RSA_PRIV, pathutils.SSH_HOST_RSA_PUB),
1819   SSHK_DSA: (pathutils.SSH_HOST_DSA_PRIV, pathutils.SSH_HOST_DSA_PUB),
1820   }
1821
1822 # Node daemon setup
1823 NDS_CLUSTER_NAME = "cluster_name"
1824 NDS_NODE_DAEMON_CERTIFICATE = "node_daemon_certificate"
1825 NDS_SSCONF = "ssconf"
1826 NDS_START_NODE_DAEMON = "start_node_daemon"
1827
1828 # Path generating random UUID
1829 RANDOM_UUID_FILE = _constants.RANDOM_UUID_FILE
1830
1831 # Regex string for verifying a UUID
1832 UUID_REGEX = "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"
1833
1834 # Auto-repair tag prefixes
1835 AUTO_REPAIR_TAG_PREFIX = _constants.AUTO_REPAIR_TAG_PREFIX
1836 AUTO_REPAIR_TAG_ENABLED = _constants.AUTO_REPAIR_TAG_ENABLED
1837 AUTO_REPAIR_TAG_SUSPENDED = _constants.AUTO_REPAIR_TAG_SUSPENDED
1838 AUTO_REPAIR_TAG_PENDING = _constants.AUTO_REPAIR_TAG_PENDING
1839 AUTO_REPAIR_TAG_RESULT = _constants.AUTO_REPAIR_TAG_RESULT
1840
1841 # Auto-repair levels
1842 AUTO_REPAIR_FIX_STORAGE = _constants.AUTO_REPAIR_FIX_STORAGE
1843 AUTO_REPAIR_MIGRATE = _constants.AUTO_REPAIR_MIGRATE
1844 AUTO_REPAIR_FAILOVER = _constants.AUTO_REPAIR_FAILOVER
1845 AUTO_REPAIR_REINSTALL = _constants.AUTO_REPAIR_REINSTALL
1846 AUTO_REPAIR_ALL_TYPES = _constants.AUTO_REPAIR_ALL_TYPES
1847
1848 # Auto-repair results
1849 AUTO_REPAIR_SUCCESS = _constants.AUTO_REPAIR_SUCCESS
1850 AUTO_REPAIR_FAILURE = _constants.AUTO_REPAIR_FAILURE
1851 AUTO_REPAIR_ENOPERM = _constants.AUTO_REPAIR_ENOPERM
1852 AUTO_REPAIR_ALL_RESULTS = _constants.AUTO_REPAIR_ALL_RESULTS
1853
1854 # The version identifier for builtin data collectors
1855 BUILTIN_DATA_COLLECTOR_VERSION = _constants.BUILTIN_DATA_COLLECTOR_VERSION
1856
1857 # The reason trail opcode parameter name
1858 OPCODE_REASON = _constants.OPCODE_REASON
1859
1860 # The source reasons for the execution of an OpCode
1861 OPCODE_REASON_SRC_CLIENT = "gnt:client"
1862 OPCODE_REASON_SRC_NODED = "gnt:daemon:noded"
1863 OPCODE_REASON_SRC_OPCODE = "gnt:opcode"
1864 OPCODE_REASON_SRC_RLIB2 = "gnt:library:rlib2"
1865 OPCODE_REASON_SRC_USER = "gnt:user"
1866
1867 OPCODE_REASON_SOURCES = compat.UniqueFrozenset([
1868   OPCODE_REASON_SRC_CLIENT,
1869   OPCODE_REASON_SRC_NODED,
1870   OPCODE_REASON_SRC_OPCODE,
1871   OPCODE_REASON_SRC_RLIB2,
1872   OPCODE_REASON_SRC_USER,
1873   ])
1874
1875 DISKSTATS_FILE = _constants.DISKSTATS_FILE
1876
1877 # CPU load collector variables
1878 STAT_FILE = _constants.STAT_FILE
1879 CPUAVGLOAD_BUFFER_SIZE = _constants.CPUAVGLOAD_BUFFER_SIZE
1880 CPUAVGLOAD_WINDOW_SIZE = _constants.CPUAVGLOAD_WINDOW_SIZE
1881
1882 # Mond's variable for periodical data collection
1883 MOND_TIME_INTERVAL = _constants.MOND_TIME_INTERVAL
1884
1885 # MonD's latest API version
1886 MOND_LATEST_API_VERSION = 1
1887
1888 # Timeouts for upgrades
1889
1890 UPGRADE_QUEUE_DRAIN_TIMEOUT = _constants.UPGRADE_QUEUE_DRAIN_TIMEOUT
1891 UPGRADE_QUEUE_POLL_INTERVAL = _constants.UPGRADE_QUEUE_POLL_INTERVAL
1892
1893 # Do not re-export imported modules
1894 del re, _vcsversion, _constants, socket, pathutils, compat
1895
1896
1897 ALLOCATABLE_KEY = "allocatable"
1898 FAILED_KEY = "failed"