4 # Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Google Inc.
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.
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.
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
22 """Module holding different constants."""
27 from ganeti import _constants
28 from ganeti import _vcsversion
29 from ganeti import compat
30 from ganeti import pathutils
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
43 VERSION_MAJOR = _constants.VERSION_MAJOR
44 VERSION_MINOR = _constants.VERSION_MINOR
45 VERSION_REVISION = _constants.VERSION_REVISION
47 DIR_VERSION = _constants.DIR_VERSION
49 CONFIG_MAJOR = _constants.CONFIG_MAJOR
50 CONFIG_MINOR = _constants.CONFIG_MINOR
51 CONFIG_REVISION = _constants.CONFIG_REVISION
52 CONFIG_VERSION = _constants.CONFIG_VERSION
54 #: RPC protocol version
55 PROTOCOL_VERSION = _constants.PROTOCOL_VERSION
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
75 # cpu pinning separators and constants
77 CPU_PINNING_ALL = "all"
78 # internal representation of "all"
79 CPU_PINNING_ALL_VAL = -1
80 # one "all" entry in a CPU list means CPU pinning is off
81 CPU_PINNING_OFF = [CPU_PINNING_ALL_VAL]
83 # A Xen-specific implementation detail - there is no way to actually say
84 # "use any cpu for pinning" in a Xen configuration file, as opposed to the
85 # command line, where you can say "xm vcpu-pin <domain> <vcpu> all".
86 # The workaround used in Xen is "0-63" (see source code function
87 # xm_vcpu_pin in <xen-source>/tools/python/xen/xm/main.py).
88 # To support future changes, the following constant is treated as a
89 # blackbox string that simply means use-any-cpu-for-pinning-under-xen.
90 CPU_PINNING_ALL_XEN = "0-63"
92 # A KVM-specific implementation detail - the following value is used
93 # to set CPU affinity to all processors (#0 through #31), per taskset
95 # FIXME: This only works for machines with up to 32 CPU cores
96 CPU_PINNING_ALL_KVM = 0xFFFFFFFF
99 DD_CMD = _constants.DD_CMD
100 MAX_WIPE_CHUNK = _constants.MAX_WIPE_CHUNK
101 MIN_WIPE_CHUNK_PERCENT = _constants.MIN_WIPE_CHUNK_PERCENT
103 RUN_DIRS_MODE = _constants.RUN_DIRS_MODE
104 SECURE_DIR_MODE = _constants.SECURE_DIR_MODE
105 SECURE_FILE_MODE = _constants.SECURE_FILE_MODE
106 ADOPTABLE_BLOCKDEV_ROOT = _constants.ADOPTABLE_BLOCKDEV_ROOT
107 ENABLE_CONFD = _constants.ENABLE_CONFD
108 ENABLE_MOND = _constants.ENABLE_MOND
109 ENABLE_SPLIT_QUERY = _constants.ENABLE_SPLIT_QUERY
110 ENABLE_RESTRICTED_COMMANDS = _constants.ENABLE_RESTRICTED_COMMANDS
116 NODED = _constants.NODED
117 CONFD = _constants.CONFD
118 LUXID = _constants.LUXID
119 RAPI = _constants.RAPI
120 MASTERD = _constants.MASTERD
121 MOND = _constants.MOND
123 DAEMONS = _constants.DAEMONS
125 DAEMONS_PORTS = _constants.DAEMONS_PORTS
127 DEFAULT_NODED_PORT = _constants.DEFAULT_NODED_PORT
128 DEFAULT_CONFD_PORT = _constants.DEFAULT_CONFD_PORT
129 DEFAULT_MOND_PORT = _constants.DEFAULT_MOND_PORT
130 DEFAULT_RAPI_PORT = _constants.DEFAULT_RAPI_PORT
132 FIRST_DRBD_PORT = _constants.FIRST_DRBD_PORT
133 LAST_DRBD_PORT = _constants.LAST_DRBD_PORT
135 DAEMONS_LOGBASE = _constants.DAEMONS_LOGBASE
138 dict((daemon, pathutils.GetLogFilename(DAEMONS_LOGBASE[daemon]))
139 for daemon in DAEMONS_LOGBASE)
141 # Some daemons might require more than one logfile.
142 # Specifically, right now only the Haskell http library "snap", used by the
143 # monitoring daemon, requires multiple log files.
145 # These are the only valid reasons for having an extra logfile
146 EXTRA_LOGREASON_ACCESS = "access"
147 EXTRA_LOGREASON_ERROR = "error"
149 VALID_EXTRA_LOGREASONS = compat.UniqueFrozenset([
150 EXTRA_LOGREASON_ACCESS,
151 EXTRA_LOGREASON_ERROR,
154 # These are the extra logfiles, grouped by daemon
155 DAEMONS_EXTRA_LOGBASE = {
157 EXTRA_LOGREASON_ACCESS: _constants.EXTRA_LOGREASON_ACCESS,
158 EXTRA_LOGREASON_ERROR: _constants.EXTRA_LOGREASON_ERROR,
162 DAEMONS_EXTRA_LOGFILES = \
163 dict((daemon, dict((extra,
164 pathutils.GetLogFilename(DAEMONS_EXTRA_LOGBASE[daemon][extra]))
165 for extra in DAEMONS_EXTRA_LOGBASE[daemon]))
166 for daemon in DAEMONS_EXTRA_LOGBASE)
168 DEV_CONSOLE = _constants.DEV_CONSOLE
170 PROC_MOUNTS = "/proc/mounts"
172 # Local UniX Interface related constants
174 LUXI_VERSION = CONFIG_VERSION
175 #: Environment variable for the luxi override socket
176 LUXI_OVERRIDE = "FORCE_LUXI_SOCKET"
177 LUXI_OVERRIDE_MASTER = "master"
178 LUXI_OVERRIDE_QUERY = "query"
180 # one of "no", "yes", "only"
181 SYSLOG_USAGE = _constants.SYSLOG_USAGE
182 SYSLOG_NO = _constants.SYSLOG_NO
183 SYSLOG_YES = _constants.SYSLOG_YES
184 SYSLOG_ONLY = _constants.SYSLOG_ONLY
185 SYSLOG_SOCKET = _constants.SYSLOG_SOCKET
187 EXPORT_CONF_FILE = "config.ini"
189 XEN_BOOTLOADER = _constants.XEN_BOOTLOADER
190 XEN_KERNEL = _constants.XEN_KERNEL
191 XEN_INITRD = _constants.XEN_INITRD
192 XEN_CMD_XM = _constants.XEN_CMD_XM
193 XEN_CMD_XL = _constants.XEN_CMD_XL
194 KNOWN_XEN_COMMANDS = _constants.KNOWN_XEN_COMMANDS
196 # When the Xen toolstack used is "xl", live migration requires the source host
197 # to connect to the target host via ssh (xl runs this command). We need to pass
198 # the command xl runs some extra info so that it can use Ganeti's key
199 # verification and not fail. Note that this string is incomplete: it must be
200 # filled with the cluster name before being used.
201 XL_SSH_CMD = ("ssh -l %s -oGlobalKnownHostsFile=%s"
202 " -oUserKnownHostsFile=/dev/null"
203 " -oCheckHostIp=no -oStrictHostKeyChecking=yes"
204 " -oHostKeyAlias=%%s") % (SSH_LOGIN_USER,
205 pathutils.SSH_KNOWN_HOSTS_FILE)
207 KVM_PATH = _constants.KVM_PATH
208 KVM_KERNEL = _constants.KVM_KERNEL
209 SOCAT_PATH = _constants.SOCAT_PATH
210 SOCAT_USE_ESCAPE = _constants.SOCAT_USE_ESCAPE
211 SOCAT_USE_COMPRESS = _constants.SOCAT_USE_COMPRESS
212 SOCAT_ESCAPE_CODE = "0x1d"
214 #: Console as SSH command
217 #: Console as VNC server
220 #: Console as SPICE server
223 #: Display a message for console access
227 CONS_ALL = compat.UniqueFrozenset([
234 # For RSA keys more bits are better, but they also make operations more
235 # expensive. NIST SP 800-131 recommends a minimum of 2048 bits from the year
239 # Ciphers allowed for SSL connections. For the format, see ciphers(1). A better
240 # way to disable ciphers would be to use the exclamation mark (!), but socat
241 # versions below 1.5 can't parse exclamation marks in options properly. When
242 # modifying the ciphers, ensure not to accidentially add something after it's
243 # been removed. Use the "openssl" utility to check the allowed ciphers, e.g.
244 # "openssl ciphers -v HIGH:-DES".
245 OPENSSL_CIPHERS = "HIGH:-DES:-3DES:-EXPORT:-ADH"
247 # Digest used to sign certificates ("openssl x509" uses SHA1 by default)
248 X509_CERT_SIGN_DIGEST = "SHA1"
250 # Default validity of certificates in days
251 X509_CERT_DEFAULT_VALIDITY = 365 * 5
253 # commonName (CN) used in certificates
254 X509_CERT_CN = "ganeti.example.com"
256 X509_CERT_SIGNATURE_HEADER = "X-Ganeti-Signature"
258 # Import/export daemon mode
259 IEM_IMPORT = "import"
260 IEM_EXPORT = "export"
262 # Import/export transport compression
265 IEC_ALL = compat.UniqueFrozenset([
270 IE_CUSTOM_SIZE = "fd"
272 IE_MAGIC_RE = re.compile(r"^[-_.a-zA-Z0-9]{5,100}$")
275 # Direct file I/O, equivalent to a shell's I/O redirection using '<' or '>'
277 # Raw block device I/O using "dd"
278 IEIO_RAW_DISK = "raw"
279 # OS definition import/export script
280 IEIO_SCRIPT = "script"
282 VALUE_DEFAULT = "default"
284 VALUE_GENERATE = "generate"
287 VALUE_FALSE = "false"
288 VALUE_HS_NOTHING = {"Nothing": None}
291 # External script validation mask
292 EXT_PLUGIN_MASK = re.compile("^[a-zA-Z0-9_-]+$")
294 # hooks-related constants
295 HOOKS_PHASE_PRE = "pre"
296 HOOKS_PHASE_POST = "post"
297 HOOKS_NAME_CFGUPDATE = "config-update"
298 HOOKS_NAME_WATCHER = "watcher"
300 HOOKS_PATH = "/sbin:/bin:/usr/sbin:/usr/bin"
302 # hooks subject type (what object type does the LU deal with)
303 HTYPE_CLUSTER = "CLUSTER"
305 HTYPE_GROUP = "GROUP"
306 HTYPE_INSTANCE = "INSTANCE"
307 HTYPE_NETWORK = "NETWORK"
314 ST_BLOCK = _constants.ST_BLOCK
315 ST_DISKLESS = _constants.ST_DISKLESS
316 ST_EXT = _constants.ST_EXT
317 ST_FILE = _constants.ST_FILE
318 ST_LVM_PV = _constants.ST_LVM_PV
319 ST_LVM_VG = _constants.ST_LVM_VG
320 ST_RADOS = _constants.ST_RADOS
321 STORAGE_TYPES = _constants.STORAGE_TYPES
323 # the set of storage types for which storage reporting is available
324 # FIXME: Remove this, once storage reporting is available for all types.
325 STS_REPORT = compat.UniqueFrozenset([ST_FILE, ST_LVM_PV, ST_LVM_VG])
328 # first two are valid in LU context only, not passed to backend
329 SF_NODE = _constants.SF_NODE
330 SF_TYPE = _constants.SF_TYPE
331 # and the rest are valid in backend
332 SF_NAME = _constants.SF_NAME
333 SF_SIZE = _constants.SF_SIZE
334 SF_FREE = _constants.SF_FREE
335 SF_USED = _constants.SF_USED
336 SF_ALLOCATABLE = _constants.SF_ALLOCATABLE
339 SO_FIX_CONSISTENCY = "fix-consistency"
341 # Available fields per storage type
342 VALID_STORAGE_FIELDS = compat.UniqueFrozenset([
352 MODIFIABLE_STORAGE_FIELDS = {
353 ST_LVM_PV: frozenset([SF_ALLOCATABLE]),
356 VALID_STORAGE_OPERATIONS = {
357 ST_LVM_VG: frozenset([SO_FIX_CONSISTENCY]),
362 VF_INSTANCE = "instance"
370 # Note: Code depends on LDS_OKAY < LDS_UNKNOWN < LDS_FAULTY
373 LDS_FAULTY) = range(1, 4)
377 LDS_UNKNOWN: "unknown",
378 LDS_FAULTY: "faulty",
381 # disk template types
382 DT_BLOCK = _constants.DT_BLOCK
383 DT_DISKLESS = _constants.DT_DISKLESS
384 DT_DRBD8 = _constants.DT_DRBD8
385 DT_EXT = _constants.DT_EXT
386 DT_FILE = _constants.DT_FILE
387 DT_PLAIN = _constants.DT_PLAIN
388 DT_RBD = _constants.DT_RBD
389 DT_SHARED_FILE = _constants.DT_SHARED_FILE
390 DISK_TEMPLATE_PREFERENCE = _constants.DISK_TEMPLATE_PREFERENCE
391 DISK_TEMPLATES = _constants.DISK_TEMPLATES
392 DEFAULT_ENABLED_DISK_TEMPLATES = _constants.DEFAULT_ENABLED_DISK_TEMPLATES
394 # mapping of disk templates to storage types
395 MAP_DISK_TEMPLATE_STORAGE_TYPE = {
397 DT_DISKLESS: ST_DISKLESS,
403 DT_SHARED_FILE: ST_FILE,
406 # the set of network-mirrored disk templates
407 DTS_INT_MIRROR = compat.UniqueFrozenset([DT_DRBD8])
409 # the set of externally-mirrored disk templates (e.g. SAN, NAS)
410 DTS_EXT_MIRROR = compat.UniqueFrozenset([
411 DT_DISKLESS, # 'trivially' externally mirrored
418 # the set of non-lvm-based disk templates
419 DTS_NOT_LVM = compat.UniqueFrozenset([
428 # the set of disk templates which can be grown
429 DTS_GROWABLE = compat.UniqueFrozenset([
438 # the set of disk templates that allow adoption
439 DTS_MAY_ADOPT = compat.UniqueFrozenset([
444 # the set of disk templates that *must* use adoption
445 DTS_MUST_ADOPT = compat.UniqueFrozenset([DT_BLOCK])
447 # the set of disk templates that allow migrations
448 DTS_MIRRORED = frozenset.union(DTS_INT_MIRROR, DTS_EXT_MIRROR)
450 # the set of file based disk templates
451 DTS_FILEBASED = compat.UniqueFrozenset([
456 # the set of disk templates that can be moved by copying
457 # Note: a requirement is that they're not accessed externally or shared between
458 # nodes; in particular, sharedfile is not suitable.
459 DTS_COPYABLE = compat.UniqueFrozenset([
464 # the set of disk templates that are supported by exclusive_storage
465 DTS_EXCL_STORAGE = compat.UniqueFrozenset([DT_PLAIN])
467 # templates for which we don't perform checks on free space
468 DTS_NO_FREE_SPACE_CHECK = compat.UniqueFrozenset([
475 DTS_BLOCK = compat.UniqueFrozenset([
484 DRBD_HMAC_ALG = "md5"
485 DRBD_DEFAULT_NET_PROTOCOL = "C"
486 DRBD_MIGRATION_NET_PROTOCOL = "C"
487 DRBD_STATUS_FILE = "/proc/drbd"
489 #: Size of DRBD meta block device
494 DRBD_B_DISK_BARRIERS = "b"
495 DRBD_B_DISK_DRAIN = "d"
496 DRBD_B_DISK_FLUSH = "f"
498 # Valid barrier combinations: "n" or any non-null subset of "bfd"
499 DRBD_VALID_BARRIER_OPT = compat.UniqueFrozenset([
500 frozenset([DRBD_B_NONE]),
501 frozenset([DRBD_B_DISK_BARRIERS]),
502 frozenset([DRBD_B_DISK_DRAIN]),
503 frozenset([DRBD_B_DISK_FLUSH]),
504 frozenset([DRBD_B_DISK_DRAIN, DRBD_B_DISK_FLUSH]),
505 frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_DRAIN]),
506 frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_FLUSH]),
507 frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_FLUSH, DRBD_B_DISK_DRAIN]),
513 # file backend driver
514 FD_BLKTAP = _constants.FD_BLKTAP
515 FD_LOOP = _constants.FD_LOOP
517 # the set of drbd-like disk types
518 LDS_DRBD = compat.UniqueFrozenset([DT_DRBD8])
521 DISK_RDONLY = _constants.DISK_RDONLY
522 DISK_RDWR = _constants.DISK_RDWR
523 DISK_ACCESS_SET = _constants.DISK_ACCESS_SET
524 DISK_USERSPACE = _constants.DISK_USERSPACE
525 DISK_KERNELSPACE = _constants.DISK_KERNELSPACE
526 DISK_VALID_ACCESS_MODES = _constants.DISK_VALID_ACCESS_MODES
528 # disk replacement mode
529 REPLACE_DISK_PRI = "replace_on_primary" # replace disks on primary
530 REPLACE_DISK_SEC = "replace_on_secondary" # replace disks on secondary
531 REPLACE_DISK_CHG = "replace_new_secondary" # change secondary node
532 REPLACE_DISK_AUTO = "replace_auto"
533 REPLACE_MODES = compat.UniqueFrozenset([
540 # Instance export mode
541 EXPORT_MODE_LOCAL = _constants.EXPORT_MODE_LOCAL
542 EXPORT_MODE_REMOTE = _constants.EXPORT_MODE_REMOTE
543 EXPORT_MODES = _constants.EXPORT_MODES
545 # instance creation modes
546 INSTANCE_CREATE = _constants.INSTANCE_CREATE
547 INSTANCE_IMPORT = _constants.INSTANCE_IMPORT
548 INSTANCE_REMOTE_IMPORT = _constants.INSTANCE_REMOTE_IMPORT
549 INSTANCE_CREATE_MODES = _constants.INSTANCE_CREATE_MODES
551 # Remote import/export handshake message and version
553 RIE_HANDSHAKE = "Hi, I'm Ganeti"
555 # Remote import/export certificate validity in seconds
556 RIE_CERT_VALIDITY = 24 * 60 * 60
558 # Overall timeout for establishing connection
559 RIE_CONNECT_TIMEOUT = 180
561 # Export only: how long to wait per connection attempt (seconds)
562 RIE_CONNECT_ATTEMPT_TIMEOUT = 20
564 # Export only: number of attempts to connect
565 RIE_CONNECT_RETRIES = 10
567 #: Give child process up to 5 seconds to exit after sending a signal
568 CHILD_LINGER_TIMEOUT = 5.0
570 FILE_DRIVER = compat.UniqueFrozenset([FD_LOOP, FD_BLKTAP])
572 # import/export config options
573 INISECT_EXP = "export"
574 INISECT_INS = "instance"
575 INISECT_HYP = "hypervisor"
576 INISECT_BEP = "backend"
579 # dynamic device modification
580 DDM_ADD = _constants.DDM_ADD
581 DDM_MODIFY = _constants.DDM_MODIFY
582 DDM_REMOVE = _constants.DDM_REMOVE
583 DDMS_VALUES = _constants.DDMS_VALUES
584 DDMS_VALUES_WITH_MODIFY = _constants.DDMS_VALUES_WITH_MODIFY
585 # TODO: DDM_SWAP, DDM_MOVE?
588 EXIT_SUCCESS = _constants.EXIT_SUCCESS
589 EXIT_FAILURE = _constants.EXIT_FAILURE
590 EXIT_NOTCLUSTER = _constants.EXIT_NOTCLUSTER
591 EXIT_NOTMASTER = _constants.EXIT_NOTMASTER
592 EXIT_NODESETUP_ERROR = _constants.EXIT_NODESETUP_ERROR
593 EXIT_CONFIRMATION = _constants.EXIT_CONFIRMATION # need user confirmation
595 #: Exit code for query operations with unknown fields
596 EXIT_UNKNOWN_FIELD = _constants.EXIT_UNKNOWN_FIELD
599 TAG_CLUSTER = _constants.TAG_CLUSTER
600 TAG_NODEGROUP = _constants.TAG_NODEGROUP
601 TAG_NODE = _constants.TAG_NODE
602 TAG_INSTANCE = _constants.TAG_INSTANCE
603 TAG_NETWORK = _constants.TAG_NETWORK
604 VALID_TAG_TYPES = _constants.VALID_TAG_TYPES
606 MAX_TAG_LEN = _constants.MAX_TAG_LEN
607 MAX_TAGS_PER_OBJ = _constants.MAX_TAGS_PER_OBJ
610 DEFAULT_BRIDGE = "xen-br0"
611 DEFAULT_OVS = "switch1"
612 CLASSIC_DRBD_SYNC_SPEED = 60 * 1024 # 60 MiB, expressed in KiB
613 IP4_ADDRESS_LOCALHOST = "127.0.0.1"
614 IP4_ADDRESS_ANY = "0.0.0.0"
615 IP6_ADDRESS_LOCALHOST = "::1"
616 IP6_ADDRESS_ANY = "::"
619 VALID_IP_VERSIONS = compat.UniqueFrozenset([IP4_VERSION, IP6_VERSION])
620 # for export to htools
621 IP4_FAMILY = socket.AF_INET
622 IP6_FAMILY = socket.AF_INET6
624 TCP_PING_TIMEOUT = 10
626 DEFAULT_DRBD_HELPER = "/bin/true"
628 DEFAULT_MAC_PREFIX = "aa:00:00"
629 # default maximum instance wait time, in seconds.
630 DEFAULT_SHUTDOWN_TIMEOUT = 120
631 NODE_MAX_CLOCK_SKEW = _constants.NODE_MAX_CLOCK_SKEW
632 # Time for an intra-cluster disk transfer to wait for a connection
633 DISK_TRANSFER_CONNECT_TIMEOUT = 60
634 # Disk index separator
635 DISK_SEPARATOR = _constants.DISK_SEPARATOR
636 IP_COMMAND_PATH = _constants.IP_COMMAND_PATH
638 #: Key for job IDs in opcode result
644 RUNPARTS_ERR) = range(3)
646 RUNPARTS_STATUS = compat.UniqueFrozenset([
654 RPC_ENCODING_ZLIB_BASE64) = range(2)
656 # Various time constants for the timeout table
657 RPC_TMO_URGENT = 60 # one minute
658 RPC_TMO_FAST = 5 * 60 # five minutes
659 RPC_TMO_NORMAL = 15 * 60 # 15 minutes
660 RPC_TMO_SLOW = 3600 # one hour
661 RPC_TMO_4HRS = 4 * 3600
664 # Timeout for connecting to nodes (seconds)
665 RPC_CONNECT_TIMEOUT = 5
667 # os related constants
668 OS_SCRIPT_CREATE = "create"
669 OS_SCRIPT_IMPORT = "import"
670 OS_SCRIPT_EXPORT = "export"
671 OS_SCRIPT_RENAME = "rename"
672 OS_SCRIPT_VERIFY = "verify"
673 OS_SCRIPTS = compat.UniqueFrozenset([
681 OS_API_FILE = "ganeti_api_version"
682 OS_VARIANTS_FILE = "variants.list"
683 OS_PARAMETERS_FILE = "parameters.list"
685 OS_VALIDATE_PARAMETERS = "parameters"
686 OS_VALIDATE_CALLS = compat.UniqueFrozenset([OS_VALIDATE_PARAMETERS])
688 # External Storage (ES) related constants
689 ES_ACTION_CREATE = "create"
690 ES_ACTION_REMOVE = "remove"
691 ES_ACTION_GROW = "grow"
692 ES_ACTION_ATTACH = "attach"
693 ES_ACTION_DETACH = "detach"
694 ES_ACTION_SETINFO = "setinfo"
695 ES_ACTION_VERIFY = "verify"
697 ES_SCRIPT_CREATE = ES_ACTION_CREATE
698 ES_SCRIPT_REMOVE = ES_ACTION_REMOVE
699 ES_SCRIPT_GROW = ES_ACTION_GROW
700 ES_SCRIPT_ATTACH = ES_ACTION_ATTACH
701 ES_SCRIPT_DETACH = ES_ACTION_DETACH
702 ES_SCRIPT_SETINFO = ES_ACTION_SETINFO
703 ES_SCRIPT_VERIFY = ES_ACTION_VERIFY
704 ES_SCRIPTS = frozenset([
714 ES_PARAMETERS_FILE = "parameters.list"
717 INSTANCE_REBOOT_SOFT = _constants.INSTANCE_REBOOT_SOFT
718 INSTANCE_REBOOT_HARD = _constants.INSTANCE_REBOOT_HARD
719 INSTANCE_REBOOT_FULL = _constants.INSTANCE_REBOOT_FULL
720 REBOOT_TYPES = _constants.REBOOT_TYPES
722 # instance reboot behaviors
723 INSTANCE_REBOOT_ALLOWED = "reboot"
724 INSTANCE_REBOOT_EXIT = "exit"
726 REBOOT_BEHAVIORS = compat.UniqueFrozenset([
727 INSTANCE_REBOOT_ALLOWED,
728 INSTANCE_REBOOT_EXIT,
731 VTYPE_STRING = _constants.VTYPE_STRING
732 VTYPE_MAYBE_STRING = _constants.VTYPE_MAYBE_STRING
733 VTYPE_BOOL = _constants.VTYPE_BOOL
734 VTYPE_SIZE = _constants.VTYPE_SIZE
735 VTYPE_INT = _constants.VTYPE_INT
736 ENFORCEABLE_TYPES = _constants.ENFORCEABLE_TYPES
738 # Constant representing that the user does not specify any IP version
739 IFACE_NO_IP_VERSION_SPECIFIED = 0
741 VALID_SERIAL_SPEEDS = compat.UniqueFrozenset([
762 # HV parameter names (global namespace)
763 HV_BOOT_ORDER = "boot_order"
764 HV_CDROM_IMAGE_PATH = "cdrom_image_path"
765 HV_KVM_CDROM2_IMAGE_PATH = "cdrom2_image_path"
766 HV_KVM_FLOPPY_IMAGE_PATH = "floppy_image_path"
767 HV_NIC_TYPE = "nic_type"
768 HV_DISK_TYPE = "disk_type"
769 HV_KVM_CDROM_DISK_TYPE = "cdrom_disk_type"
770 HV_VNC_BIND_ADDRESS = "vnc_bind_address"
771 HV_VNC_PASSWORD_FILE = "vnc_password_file"
772 HV_VNC_TLS = "vnc_tls"
773 HV_VNC_X509 = "vnc_x509_path"
774 HV_VNC_X509_VERIFY = "vnc_x509_verify"
775 HV_KVM_SPICE_BIND = "spice_bind"
776 HV_KVM_SPICE_IP_VERSION = "spice_ip_version"
777 HV_KVM_SPICE_PASSWORD_FILE = "spice_password_file"
778 HV_KVM_SPICE_LOSSLESS_IMG_COMPR = "spice_image_compression"
779 HV_KVM_SPICE_JPEG_IMG_COMPR = "spice_jpeg_wan_compression"
780 HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR = "spice_zlib_glz_wan_compression"
781 HV_KVM_SPICE_STREAMING_VIDEO_DETECTION = "spice_streaming_video"
782 HV_KVM_SPICE_AUDIO_COMPR = "spice_playback_compression"
783 HV_KVM_SPICE_USE_TLS = "spice_use_tls"
784 HV_KVM_SPICE_TLS_CIPHERS = "spice_tls_ciphers"
785 HV_KVM_SPICE_USE_VDAGENT = "spice_use_vdagent"
788 HV_USE_BOOTLOADER = "use_bootloader"
789 HV_BOOTLOADER_ARGS = "bootloader_args"
790 HV_BOOTLOADER_PATH = "bootloader_path"
791 HV_KERNEL_ARGS = "kernel_args"
792 HV_KERNEL_PATH = "kernel_path"
793 HV_INITRD_PATH = "initrd_path"
794 HV_ROOT_PATH = "root_path"
795 HV_SERIAL_CONSOLE = "serial_console"
796 HV_SERIAL_SPEED = "serial_speed"
797 HV_USB_MOUSE = "usb_mouse"
799 HV_DEVICE_MODEL = "device_model"
800 HV_INIT_SCRIPT = "init_script"
801 HV_MIGRATION_PORT = "migration_port"
802 HV_MIGRATION_BANDWIDTH = "migration_bandwidth"
803 HV_MIGRATION_DOWNTIME = "migration_downtime"
804 HV_MIGRATION_MODE = "migration_mode"
805 HV_USE_LOCALTIME = "use_localtime"
806 HV_DISK_CACHE = "disk_cache"
807 HV_SECURITY_MODEL = "security_model"
808 HV_SECURITY_DOMAIN = "security_domain"
809 HV_KVM_FLAG = "kvm_flag"
810 HV_VHOST_NET = "vhost_net"
811 HV_KVM_USE_CHROOT = "use_chroot"
812 HV_CPU_MASK = "cpu_mask"
813 HV_MEM_PATH = "mem_path"
814 HV_PASSTHROUGH = "pci_pass"
815 HV_BLOCKDEV_PREFIX = "blockdev_prefix"
816 HV_REBOOT_BEHAVIOR = "reboot_behavior"
817 HV_CPU_TYPE = "cpu_type"
818 HV_CPU_CAP = "cpu_cap"
819 HV_CPU_WEIGHT = "cpu_weight"
820 HV_CPU_CORES = "cpu_cores"
821 HV_CPU_THREADS = "cpu_threads"
822 HV_CPU_SOCKETS = "cpu_sockets"
823 HV_SOUNDHW = "soundhw"
824 HV_USB_DEVICES = "usb_devices"
826 HV_KVM_EXTRA = "kvm_extra"
827 HV_KVM_MACHINE_VERSION = "machine_version"
828 HV_KVM_PATH = "kvm_path"
829 HV_VIF_TYPE = "vif_type"
830 HV_VIF_SCRIPT = "vif_script"
831 HV_XEN_CMD = "xen_cmd"
832 HV_XEN_CPUID = "cpuid"
833 HV_VNET_HDR = "vnet_hdr"
834 HV_VIRIDIAN = "viridian"
837 HVS_PARAMETER_TYPES = {
838 HV_KVM_PATH: VTYPE_STRING,
839 HV_BOOT_ORDER: VTYPE_STRING,
840 HV_KVM_FLOPPY_IMAGE_PATH: VTYPE_STRING,
841 HV_CDROM_IMAGE_PATH: VTYPE_STRING,
842 HV_KVM_CDROM2_IMAGE_PATH: VTYPE_STRING,
843 HV_NIC_TYPE: VTYPE_STRING,
844 HV_DISK_TYPE: VTYPE_STRING,
845 HV_KVM_CDROM_DISK_TYPE: VTYPE_STRING,
846 HV_VNC_PASSWORD_FILE: VTYPE_STRING,
847 HV_VNC_BIND_ADDRESS: VTYPE_STRING,
848 HV_VNC_TLS: VTYPE_BOOL,
849 HV_VNC_X509: VTYPE_STRING,
850 HV_VNC_X509_VERIFY: VTYPE_BOOL,
851 HV_KVM_SPICE_BIND: VTYPE_STRING,
852 HV_KVM_SPICE_IP_VERSION: VTYPE_INT,
853 HV_KVM_SPICE_PASSWORD_FILE: VTYPE_STRING,
854 HV_KVM_SPICE_LOSSLESS_IMG_COMPR: VTYPE_STRING,
855 HV_KVM_SPICE_JPEG_IMG_COMPR: VTYPE_STRING,
856 HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR: VTYPE_STRING,
857 HV_KVM_SPICE_STREAMING_VIDEO_DETECTION: VTYPE_STRING,
858 HV_KVM_SPICE_AUDIO_COMPR: VTYPE_BOOL,
859 HV_KVM_SPICE_USE_TLS: VTYPE_BOOL,
860 HV_KVM_SPICE_TLS_CIPHERS: VTYPE_STRING,
861 HV_KVM_SPICE_USE_VDAGENT: VTYPE_BOOL,
864 HV_USE_BOOTLOADER: VTYPE_BOOL,
865 HV_BOOTLOADER_PATH: VTYPE_STRING,
866 HV_BOOTLOADER_ARGS: VTYPE_STRING,
867 HV_KERNEL_PATH: VTYPE_STRING,
868 HV_KERNEL_ARGS: VTYPE_STRING,
869 HV_INITRD_PATH: VTYPE_STRING,
870 HV_ROOT_PATH: VTYPE_MAYBE_STRING,
871 HV_SERIAL_CONSOLE: VTYPE_BOOL,
872 HV_SERIAL_SPEED: VTYPE_INT,
873 HV_USB_MOUSE: VTYPE_STRING,
874 HV_KEYMAP: VTYPE_STRING,
875 HV_DEVICE_MODEL: VTYPE_STRING,
876 HV_INIT_SCRIPT: VTYPE_STRING,
877 HV_MIGRATION_PORT: VTYPE_INT,
878 HV_MIGRATION_BANDWIDTH: VTYPE_INT,
879 HV_MIGRATION_DOWNTIME: VTYPE_INT,
880 HV_MIGRATION_MODE: VTYPE_STRING,
881 HV_USE_LOCALTIME: VTYPE_BOOL,
882 HV_DISK_CACHE: VTYPE_STRING,
883 HV_SECURITY_MODEL: VTYPE_STRING,
884 HV_SECURITY_DOMAIN: VTYPE_STRING,
885 HV_KVM_FLAG: VTYPE_STRING,
886 HV_VHOST_NET: VTYPE_BOOL,
887 HV_KVM_USE_CHROOT: VTYPE_BOOL,
888 HV_CPU_MASK: VTYPE_STRING,
889 HV_MEM_PATH: VTYPE_STRING,
890 HV_PASSTHROUGH: VTYPE_STRING,
891 HV_BLOCKDEV_PREFIX: VTYPE_STRING,
892 HV_REBOOT_BEHAVIOR: VTYPE_STRING,
893 HV_CPU_TYPE: VTYPE_STRING,
894 HV_CPU_CAP: VTYPE_INT,
895 HV_CPU_WEIGHT: VTYPE_INT,
896 HV_CPU_CORES: VTYPE_INT,
897 HV_CPU_THREADS: VTYPE_INT,
898 HV_CPU_SOCKETS: VTYPE_INT,
899 HV_SOUNDHW: VTYPE_STRING,
900 HV_USB_DEVICES: VTYPE_STRING,
901 HV_VGA: VTYPE_STRING,
902 HV_KVM_EXTRA: VTYPE_STRING,
903 HV_KVM_MACHINE_VERSION: VTYPE_STRING,
904 HV_VIF_TYPE: VTYPE_STRING,
905 HV_VIF_SCRIPT: VTYPE_STRING,
906 HV_XEN_CMD: VTYPE_STRING,
907 HV_XEN_CPUID: VTYPE_STRING,
908 HV_VNET_HDR: VTYPE_BOOL,
909 HV_VIRIDIAN: VTYPE_BOOL,
912 HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
914 HVS_PARAMETER_TITLES = {
916 HV_BOOT_ORDER: "Boot_order",
917 HV_CDROM_IMAGE_PATH: "CDROM_image_path",
918 HV_DISK_TYPE: "Disk_type",
919 HV_INITRD_PATH: "Initrd_path",
920 HV_KERNEL_PATH: "Kernel_path",
921 HV_NIC_TYPE: "NIC_type",
923 HV_VNC_BIND_ADDRESS: "VNC_bind_address",
924 HV_PASSTHROUGH: "pci_pass",
925 HV_CPU_TYPE: "cpu_type",
929 HV_MIGRATION_COMPLETED = "completed"
930 HV_MIGRATION_ACTIVE = "active"
931 HV_MIGRATION_FAILED = "failed"
932 HV_MIGRATION_CANCELLED = "cancelled"
934 HV_MIGRATION_VALID_STATUSES = compat.UniqueFrozenset([
935 HV_MIGRATION_COMPLETED,
938 HV_MIGRATION_CANCELLED,
941 HV_MIGRATION_FAILED_STATUSES = compat.UniqueFrozenset([
943 HV_MIGRATION_CANCELLED,
946 # KVM-specific statuses
947 HV_KVM_MIGRATION_VALID_STATUSES = HV_MIGRATION_VALID_STATUSES
950 HV_NODEINFO_KEY_VERSION = "hv_version"
953 HVST_MEMORY_TOTAL = "mem_total"
954 HVST_MEMORY_NODE = "mem_node"
955 HVST_MEMORY_HV = "mem_hv"
956 HVST_CPU_TOTAL = "cpu_total"
957 HVST_CPU_NODE = "cpu_node"
960 HVST_MEMORY_TOTAL: 0,
967 HVSTS_PARAMETER_TYPES = {
968 HVST_MEMORY_TOTAL: VTYPE_INT,
969 HVST_MEMORY_NODE: VTYPE_INT,
970 HVST_MEMORY_HV: VTYPE_INT,
971 HVST_CPU_TOTAL: VTYPE_INT,
972 HVST_CPU_NODE: VTYPE_INT,
975 HVSTS_PARAMETERS = frozenset(HVSTS_PARAMETER_TYPES.keys())
978 DS_DISK_TOTAL = "disk_total"
979 DS_DISK_RESERVED = "disk_reserved"
980 DS_DISK_OVERHEAD = "disk_overhead"
988 DSS_PARAMETER_TYPES = {
989 DS_DISK_TOTAL: VTYPE_INT,
990 DS_DISK_RESERVED: VTYPE_INT,
991 DS_DISK_OVERHEAD: VTYPE_INT,
994 DSS_PARAMETERS = frozenset(DSS_PARAMETER_TYPES.keys())
995 DS_VALID_TYPES = compat.UniqueFrozenset([DT_PLAIN])
997 # Backend parameter names
998 BE_MEMORY = "memory" # deprecated and replaced by max and min mem
1000 BE_MINMEM = "minmem"
1002 BE_AUTO_BALANCE = "auto_balance"
1003 BE_ALWAYS_FAILOVER = "always_failover"
1004 BE_SPINDLE_USE = "spindle_use"
1006 BES_PARAMETER_TYPES = {
1007 BE_MAXMEM: VTYPE_SIZE,
1008 BE_MINMEM: VTYPE_SIZE,
1009 BE_VCPUS: VTYPE_INT,
1010 BE_AUTO_BALANCE: VTYPE_BOOL,
1011 BE_ALWAYS_FAILOVER: VTYPE_BOOL,
1012 BE_SPINDLE_USE: VTYPE_INT,
1015 BES_PARAMETER_TITLES = {
1016 BE_AUTO_BALANCE: "Auto_balance",
1017 BE_MAXMEM: "ConfigMaxMem",
1018 BE_MINMEM: "ConfigMinMem",
1019 BE_VCPUS: "ConfigVCPUs",
1022 BES_PARAMETER_COMPAT = {
1023 BE_MEMORY: VTYPE_SIZE,
1025 BES_PARAMETER_COMPAT.update(BES_PARAMETER_TYPES)
1027 BES_PARAMETERS = frozenset(BES_PARAMETER_TYPES.keys())
1030 ISPEC_MEM_SIZE = "memory-size"
1031 ISPEC_CPU_COUNT = "cpu-count"
1032 ISPEC_DISK_COUNT = "disk-count"
1033 ISPEC_DISK_SIZE = "disk-size"
1034 ISPEC_NIC_COUNT = "nic-count"
1035 ISPEC_SPINDLE_USE = "spindle-use"
1037 ISPECS_PARAMETER_TYPES = {
1038 ISPEC_MEM_SIZE: VTYPE_INT,
1039 ISPEC_CPU_COUNT: VTYPE_INT,
1040 ISPEC_DISK_COUNT: VTYPE_INT,
1041 ISPEC_DISK_SIZE: VTYPE_INT,
1042 ISPEC_NIC_COUNT: VTYPE_INT,
1043 ISPEC_SPINDLE_USE: VTYPE_INT,
1046 ISPECS_PARAMETERS = frozenset(ISPECS_PARAMETER_TYPES.keys())
1048 ISPECS_MINMAX = "minmax"
1052 IPOLICY_DTS = "disk-templates"
1053 IPOLICY_VCPU_RATIO = "vcpu-ratio"
1054 IPOLICY_SPINDLE_RATIO = "spindle-ratio"
1056 ISPECS_MINMAX_KEYS = compat.UniqueFrozenset([
1061 IPOLICY_PARAMETERS = compat.UniqueFrozenset([
1063 IPOLICY_SPINDLE_RATIO,
1066 IPOLICY_ALL_KEYS = (IPOLICY_PARAMETERS |
1067 frozenset([ISPECS_MINMAX, ISPECS_STD, IPOLICY_DTS]))
1069 # Node parameter names
1070 ND_OOB_PROGRAM = "oob_program"
1071 ND_SPINDLE_COUNT = "spindle_count"
1072 ND_EXCLUSIVE_STORAGE = "exclusive_storage"
1074 ND_OVS_NAME = "ovs_name"
1075 ND_OVS_LINK = "ovs_link"
1077 NDS_PARAMETER_TYPES = {
1078 ND_OOB_PROGRAM: VTYPE_STRING,
1079 ND_SPINDLE_COUNT: VTYPE_INT,
1080 ND_EXCLUSIVE_STORAGE: VTYPE_BOOL,
1082 ND_OVS_NAME: VTYPE_MAYBE_STRING,
1083 ND_OVS_LINK: VTYPE_MAYBE_STRING,
1086 NDS_PARAMETERS = frozenset(NDS_PARAMETER_TYPES.keys())
1088 NDS_PARAMETER_TITLES = {
1089 ND_OOB_PROGRAM: "OutOfBandProgram",
1090 ND_SPINDLE_COUNT: "SpindleCount",
1091 ND_EXCLUSIVE_STORAGE: "ExclusiveStorage",
1092 ND_OVS: "OpenvSwitch",
1093 ND_OVS_NAME: "OpenvSwitchName",
1094 ND_OVS_LINK: "OpenvSwitchLink",
1097 # Logical Disks parameters
1098 LDP_RESYNC_RATE = "resync-rate"
1099 LDP_STRIPES = "stripes"
1100 LDP_BARRIERS = "disabled-barriers"
1101 LDP_NO_META_FLUSH = "disable-meta-flush"
1102 LDP_DEFAULT_METAVG = "default-metavg"
1103 LDP_DISK_CUSTOM = "disk-custom"
1104 LDP_NET_CUSTOM = "net-custom"
1105 LDP_PROTOCOL = "protocol"
1106 LDP_DYNAMIC_RESYNC = "dynamic-resync"
1107 LDP_PLAN_AHEAD = "c-plan-ahead"
1108 LDP_FILL_TARGET = "c-fill-target"
1109 LDP_DELAY_TARGET = "c-delay-target"
1110 LDP_MAX_RATE = "c-max-rate"
1111 LDP_MIN_RATE = "c-min-rate"
1113 LDP_ACCESS = "access"
1115 LDP_RESYNC_RATE: VTYPE_INT,
1116 LDP_STRIPES: VTYPE_INT,
1117 LDP_BARRIERS: VTYPE_STRING,
1118 LDP_NO_META_FLUSH: VTYPE_BOOL,
1119 LDP_DEFAULT_METAVG: VTYPE_STRING,
1120 LDP_DISK_CUSTOM: VTYPE_STRING,
1121 LDP_NET_CUSTOM: VTYPE_STRING,
1122 LDP_PROTOCOL: VTYPE_STRING,
1123 LDP_DYNAMIC_RESYNC: VTYPE_BOOL,
1124 LDP_PLAN_AHEAD: VTYPE_INT,
1125 LDP_FILL_TARGET: VTYPE_INT,
1126 LDP_DELAY_TARGET: VTYPE_INT,
1127 LDP_MAX_RATE: VTYPE_INT,
1128 LDP_MIN_RATE: VTYPE_INT,
1129 LDP_POOL: VTYPE_STRING,
1130 LDP_ACCESS: VTYPE_STRING,
1132 DISK_LD_PARAMETERS = frozenset(DISK_LD_TYPES.keys())
1134 # Disk template parameters (can be set/changed by the user via gnt-cluster and
1136 DRBD_RESYNC_RATE = "resync-rate"
1137 DRBD_DATA_STRIPES = "data-stripes"
1138 DRBD_META_STRIPES = "meta-stripes"
1139 DRBD_DISK_BARRIERS = "disk-barriers"
1140 DRBD_META_BARRIERS = "meta-barriers"
1141 DRBD_DEFAULT_METAVG = "metavg"
1142 DRBD_DISK_CUSTOM = "disk-custom"
1143 DRBD_NET_CUSTOM = "net-custom"
1144 DRBD_PROTOCOL = "protocol"
1145 DRBD_DYNAMIC_RESYNC = "dynamic-resync"
1146 DRBD_PLAN_AHEAD = "c-plan-ahead"
1147 DRBD_FILL_TARGET = "c-fill-target"
1148 DRBD_DELAY_TARGET = "c-delay-target"
1149 DRBD_MAX_RATE = "c-max-rate"
1150 DRBD_MIN_RATE = "c-min-rate"
1151 LV_STRIPES = "stripes"
1153 RBD_ACCESS = "access"
1155 DRBD_RESYNC_RATE: VTYPE_INT,
1156 DRBD_DATA_STRIPES: VTYPE_INT,
1157 DRBD_META_STRIPES: VTYPE_INT,
1158 DRBD_DISK_BARRIERS: VTYPE_STRING,
1159 DRBD_META_BARRIERS: VTYPE_BOOL,
1160 DRBD_DEFAULT_METAVG: VTYPE_STRING,
1161 DRBD_DISK_CUSTOM: VTYPE_STRING,
1162 DRBD_NET_CUSTOM: VTYPE_STRING,
1163 DRBD_PROTOCOL: VTYPE_STRING,
1164 DRBD_DYNAMIC_RESYNC: VTYPE_BOOL,
1165 DRBD_PLAN_AHEAD: VTYPE_INT,
1166 DRBD_FILL_TARGET: VTYPE_INT,
1167 DRBD_DELAY_TARGET: VTYPE_INT,
1168 DRBD_MAX_RATE: VTYPE_INT,
1169 DRBD_MIN_RATE: VTYPE_INT,
1170 LV_STRIPES: VTYPE_INT,
1171 RBD_POOL: VTYPE_STRING,
1172 RBD_ACCESS: VTYPE_STRING,
1175 DISK_DT_PARAMETERS = frozenset(DISK_DT_TYPES.keys())
1177 # dynamic disk parameters
1178 DDP_LOCAL_IP = "local-ip"
1179 DDP_REMOTE_IP = "remote-ip"
1181 DDP_LOCAL_MINOR = "local-minor"
1182 DDP_REMOTE_MINOR = "remote-minor"
1184 # OOB supported commands
1185 OOB_POWER_ON = _constants.OOB_POWER_ON
1186 OOB_POWER_OFF = _constants.OOB_POWER_OFF
1187 OOB_POWER_CYCLE = _constants.OOB_POWER_CYCLE
1188 OOB_POWER_STATUS = _constants.OOB_POWER_STATUS
1189 OOB_HEALTH = _constants.OOB_HEALTH
1190 OOB_COMMANDS = _constants.OOB_COMMANDS
1192 OOB_POWER_STATUS_POWERED = _constants.OOB_POWER_STATUS_POWERED
1194 OOB_TIMEOUT = _constants.OOB_TIMEOUT
1195 OOB_POWER_DELAY = _constants.OOB_POWER_DELAY
1197 OOB_STATUS_OK = _constants.OOB_STATUS_OK
1198 OOB_STATUS_WARNING = _constants.OOB_STATUS_WARNING
1199 OOB_STATUS_CRITICAL = _constants.OOB_STATUS_CRITICAL
1200 OOB_STATUS_UNKNOWN = _constants.OOB_STATUS_UNKNOWN
1201 OOB_STATUSES = _constants.OOB_STATUSES
1203 # Instance Parameters Profile
1204 PP_DEFAULT = "default"
1206 # NIC_* constants are used inside the ganeti config
1207 NIC_MODE = _constants.NIC_MODE
1208 NIC_LINK = _constants.NIC_LINK
1209 NIC_VLAN = _constants.NIC_VLAN
1211 NIC_MODE_BRIDGED = _constants.NIC_MODE_BRIDGED
1212 NIC_MODE_ROUTED = _constants.NIC_MODE_ROUTED
1213 NIC_MODE_OVS = _constants.NIC_MODE_OVS
1214 NIC_IP_POOL = _constants.NIC_IP_POOL
1215 NIC_VALID_MODES = _constants.NIC_VALID_MODES
1217 RESERVE_ACTION = "reserve"
1218 RELEASE_ACTION = "release"
1220 NICS_PARAMETER_TYPES = {
1221 NIC_MODE: VTYPE_STRING,
1222 NIC_LINK: VTYPE_STRING,
1223 NIC_VLAN: VTYPE_MAYBE_STRING,
1226 NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys())
1228 # IDISK_* constants are used in opcodes, to create/change disks
1230 IDISK_SPINDLES = "spindles"
1232 IDISK_ADOPT = "adopt"
1234 IDISK_METAVG = "metavg"
1235 IDISK_PROVIDER = "provider"
1237 IDISK_PARAMS_TYPES = {
1238 IDISK_SIZE: VTYPE_SIZE,
1239 IDISK_SPINDLES: VTYPE_INT,
1240 IDISK_MODE: VTYPE_STRING,
1241 IDISK_ADOPT: VTYPE_STRING,
1242 IDISK_VG: VTYPE_STRING,
1243 IDISK_METAVG: VTYPE_STRING,
1244 IDISK_PROVIDER: VTYPE_STRING,
1245 IDISK_NAME: VTYPE_MAYBE_STRING,
1247 IDISK_PARAMS = frozenset(IDISK_PARAMS_TYPES.keys())
1249 # INIC_* constants are used in opcodes, to create/change nics
1254 INIC_NETWORK = "network"
1257 INIC_BRIDGE = "bridge"
1258 INIC_PARAMS_TYPES = {
1259 INIC_IP: VTYPE_MAYBE_STRING,
1260 INIC_LINK: VTYPE_STRING,
1261 INIC_MAC: VTYPE_STRING,
1262 INIC_MODE: VTYPE_STRING,
1263 INIC_NETWORK: VTYPE_MAYBE_STRING,
1264 INIC_NAME: VTYPE_MAYBE_STRING,
1265 INIC_VLAN: VTYPE_MAYBE_STRING,
1266 INIC_BRIDGE: VTYPE_MAYBE_STRING
1268 INIC_PARAMS = frozenset(INIC_PARAMS_TYPES.keys())
1270 # Hypervisor constants
1271 HT_XEN_PVM = _constants.HT_XEN_PVM
1272 HT_FAKE = _constants.HT_FAKE
1273 HT_XEN_HVM = _constants.HT_XEN_HVM
1274 HT_KVM = _constants.HT_KVM
1275 HT_CHROOT = _constants.HT_CHROOT
1276 HT_LXC = _constants.HT_LXC
1277 HYPER_TYPES = _constants.HYPER_TYPES
1278 HTS_REQ_PORT = _constants.HTS_REQ_PORT
1280 VNC_BASE_PORT = 5900
1281 VNC_DEFAULT_BIND_ADDRESS = IP4_ADDRESS_ANY
1284 HT_NIC_RTL8139 = "rtl8139"
1285 HT_NIC_NE2K_PCI = "ne2k_pci"
1286 HT_NIC_NE2K_ISA = "ne2k_isa"
1287 HT_NIC_I82551 = "i82551"
1288 HT_NIC_I85557B = "i82557b"
1289 HT_NIC_I8259ER = "i82559er"
1290 HT_NIC_PCNET = "pcnet"
1291 HT_NIC_E1000 = "e1000"
1292 HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
1294 HT_HVM_VALID_NIC_TYPES = compat.UniqueFrozenset([
1301 HT_KVM_VALID_NIC_TYPES = compat.UniqueFrozenset([
1314 # default vif type in xen-hvm
1315 HT_HVM_VIF_IOEMU = "ioemu"
1316 HT_HVM_VIF_VIF = "vif"
1317 HT_HVM_VALID_VIF_TYPES = compat.UniqueFrozenset([
1323 HT_DISK_IOEMU = "ioemu"
1325 HT_DISK_SCSI = "scsi"
1328 HT_DISK_PFLASH = "pflash"
1330 HT_CACHE_DEFAULT = "default"
1331 HT_CACHE_NONE = "none"
1332 HT_CACHE_WTHROUGH = "writethrough"
1333 HT_CACHE_WBACK = "writeback"
1334 HT_VALID_CACHE_TYPES = compat.UniqueFrozenset([
1341 HT_HVM_VALID_DISK_TYPES = compat.UniqueFrozenset([
1342 HT_DISK_PARAVIRTUAL,
1345 HT_KVM_VALID_DISK_TYPES = compat.UniqueFrozenset([
1346 HT_DISK_PARAVIRTUAL,
1355 HT_MOUSE_MOUSE = "mouse"
1356 HT_MOUSE_TABLET = "tablet"
1358 HT_KVM_VALID_MOUSE_TYPES = compat.UniqueFrozenset([
1364 HT_BO_FLOPPY = "floppy"
1365 HT_BO_CDROM = "cdrom"
1367 HT_BO_NETWORK = "network"
1369 HT_KVM_VALID_BO_TYPES = compat.UniqueFrozenset([
1376 # SPICE lossless image compression options
1377 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ = "auto_glz"
1378 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ = "auto_lz"
1379 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC = "quic"
1380 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ = "glz"
1381 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ = "lz"
1382 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF = "off"
1384 HT_KVM_SPICE_VALID_LOSSLESS_IMG_COMPR_OPTIONS = compat.UniqueFrozenset([
1385 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ,
1386 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ,
1387 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC,
1388 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ,
1389 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ,
1390 HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF,
1393 # SPICE lossy image compression options (valid for both jpeg and zlib-glz)
1394 HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO = "auto"
1395 HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER = "never"
1396 HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS = "always"
1398 HT_KVM_SPICE_VALID_LOSSY_IMG_COMPR_OPTIONS = compat.UniqueFrozenset([
1399 HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO,
1400 HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER,
1401 HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS,
1404 # SPICE video stream detection
1405 HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF = "off"
1406 HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL = "all"
1407 HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER = "filter"
1409 HT_KVM_SPICE_VALID_VIDEO_STREAM_DETECTION_OPTIONS = compat.UniqueFrozenset([
1410 HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF,
1411 HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL,
1412 HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER,
1420 HT_KVM_VALID_SM_TYPES = compat.UniqueFrozenset([
1427 HT_KVM_ENABLED = "enabled"
1428 HT_KVM_DISABLED = "disabled"
1430 HT_KVM_FLAG_VALUES = compat.UniqueFrozenset([HT_KVM_ENABLED, HT_KVM_DISABLED])
1433 HT_MIGRATION_LIVE = _constants.HT_MIGRATION_LIVE
1434 HT_MIGRATION_NONLIVE = _constants.HT_MIGRATION_NONLIVE
1435 HT_MIGRATION_MODES = _constants.HT_MIGRATION_MODES
1437 # Cluster Verify steps
1438 VERIFY_NPLUSONE_MEM = _constants.VERIFY_NPLUSONE_MEM
1439 VERIFY_OPTIONAL_CHECKS = _constants.VERIFY_OPTIONAL_CHECKS
1441 # Cluster Verify error classes
1442 CV_TCLUSTER = _constants.CV_TCLUSTER
1443 CV_TGROUP = _constants.CV_TGROUP
1444 CV_TNODE = _constants.CV_TNODE
1445 CV_TINSTANCE = _constants.CV_TINSTANCE
1447 # Cluster Verify error codes and documentation
1448 CV_ECLUSTERCFG = _constants.CV_ECLUSTERCFG
1449 CV_ECLUSTERCERT = _constants.CV_ECLUSTERCERT
1450 CV_ECLUSTERFILECHECK = _constants.CV_ECLUSTERFILECHECK
1451 CV_ECLUSTERDANGLINGNODES = _constants.CV_ECLUSTERDANGLINGNODES
1452 CV_ECLUSTERDANGLINGINST = _constants.CV_ECLUSTERDANGLINGINST
1453 CV_EGROUPDIFFERENTPVSIZE = _constants.CV_EGROUPDIFFERENTPVSIZE
1454 CV_EINSTANCEBADNODE = _constants.CV_EINSTANCEBADNODE
1455 CV_EINSTANCEDOWN = _constants.CV_EINSTANCEDOWN
1456 CV_EINSTANCELAYOUT = _constants.CV_EINSTANCELAYOUT
1457 CV_EINSTANCEMISSINGDISK = _constants.CV_EINSTANCEMISSINGDISK
1458 CV_EINSTANCEFAULTYDISK = _constants.CV_EINSTANCEFAULTYDISK
1459 CV_EINSTANCEWRONGNODE = _constants.CV_EINSTANCEWRONGNODE
1460 CV_EINSTANCESPLITGROUPS = _constants.CV_EINSTANCESPLITGROUPS
1461 CV_EINSTANCEPOLICY = _constants.CV_EINSTANCEPOLICY
1462 CV_EINSTANCEUNSUITABLENODE = _constants.CV_EINSTANCEUNSUITABLENODE
1463 CV_EINSTANCEMISSINGCFGPARAMETER = _constants.CV_EINSTANCEMISSINGCFGPARAMETER
1464 CV_ENODEDRBD = _constants.CV_ENODEDRBD
1465 CV_ENODEDRBDVERSION = _constants.CV_ENODEDRBDVERSION
1466 CV_ENODEDRBDHELPER = _constants.CV_ENODEDRBDHELPER
1467 CV_ENODEFILECHECK = _constants.CV_ENODEFILECHECK
1468 CV_ENODEHOOKS = _constants.CV_ENODEHOOKS
1469 CV_ENODEHV = _constants.CV_ENODEHV
1470 CV_ENODELVM = _constants.CV_ENODELVM
1471 CV_ENODEN1 = _constants.CV_ENODEN1
1472 CV_ENODENET = _constants.CV_ENODENET
1473 CV_ENODEOS = _constants.CV_ENODEOS
1474 CV_ENODEORPHANINSTANCE = _constants.CV_ENODEORPHANINSTANCE
1475 CV_ENODEORPHANLV = _constants.CV_ENODEORPHANLV
1476 CV_ENODERPC = _constants.CV_ENODERPC
1477 CV_ENODESSH = _constants.CV_ENODESSH
1478 CV_ENODEVERSION = _constants.CV_ENODEVERSION
1479 CV_ENODESETUP = _constants.CV_ENODESETUP
1480 CV_ENODETIME = _constants.CV_ENODETIME
1481 CV_ENODEOOBPATH = _constants.CV_ENODEOOBPATH
1482 CV_ENODEUSERSCRIPTS = _constants.CV_ENODEUSERSCRIPTS
1483 CV_ENODEFILESTORAGEPATHS = _constants.CV_ENODEFILESTORAGEPATHS
1484 CV_ENODEFILESTORAGEPATHUNUSABLE = _constants.CV_ENODEFILESTORAGEPATHUNUSABLE
1485 CV_ENODESHAREDFILESTORAGEPATHUNUSABLE = \
1486 _constants.CV_ENODESHAREDFILESTORAGEPATHUNUSABLE
1488 CV_ALL_ECODES = _constants.CV_ALL_ECODES
1489 CV_ALL_ECODES_STRINGS = _constants.CV_ALL_ECODES_STRINGS
1491 # Node verify constants
1492 NV_BRIDGES = "bridges"
1493 NV_DRBDHELPER = "drbd-helper"
1494 NV_DRBDVERSION = "drbd-version"
1495 NV_DRBDLIST = "drbd-list"
1496 NV_EXCLUSIVEPVS = "exclusive-pvs"
1497 NV_FILELIST = "filelist"
1498 NV_ACCEPTED_STORAGE_PATHS = "allowed-file-storage-paths"
1499 NV_FILE_STORAGE_PATH = "file-storage-path"
1500 NV_SHARED_FILE_STORAGE_PATH = "shared-file-storage-path"
1501 NV_HVINFO = "hvinfo"
1502 NV_HVPARAMS = "hvparms"
1503 NV_HYPERVISOR = "hypervisor"
1504 NV_INSTANCELIST = "instancelist"
1505 NV_LVLIST = "lvlist"
1506 NV_MASTERIP = "master-ip"
1507 NV_NODELIST = "nodelist"
1508 NV_NODENETTEST = "node-net-test"
1509 NV_NODESETUP = "nodesetup"
1510 NV_OOB_PATHS = "oob-paths"
1511 NV_OSLIST = "oslist"
1512 NV_PVLIST = "pvlist"
1514 NV_USERSCRIPTS = "user-scripts"
1515 NV_VERSION = "version"
1516 NV_VGLIST = "vglist"
1517 NV_VMNODES = "vmnodes"
1520 INSTST_RUNNING = _constants.INSTST_RUNNING
1521 INSTST_ADMINDOWN = _constants.INSTST_ADMINDOWN
1522 INSTST_ADMINOFFLINE = _constants.INSTST_ADMINOFFLINE
1523 INSTST_NODEOFFLINE = _constants.INSTST_NODEOFFLINE
1524 INSTST_NODEDOWN = _constants.INSTST_NODEDOWN
1525 INSTST_WRONGNODE = _constants.INSTST_WRONGNODE
1526 INSTST_ERRORUP = _constants.INSTST_ERRORUP
1527 INSTST_ERRORDOWN = _constants.INSTST_ERRORDOWN
1528 INSTST_ALL = _constants.INSTST_ALL
1531 ADMINST_UP = _constants.ADMINST_UP
1532 ADMINST_DOWN = _constants.ADMINST_DOWN
1533 ADMINST_OFFLINE = _constants.ADMINST_OFFLINE
1534 ADMINST_ALL = _constants.ADMINST_ALL
1537 NR_REGULAR = _constants.NR_REGULAR
1538 NR_MASTER = _constants.NR_MASTER
1539 NR_MCANDIDATE = _constants.NR_MCANDIDATE
1540 NR_DRAINED = _constants.NR_DRAINED
1541 NR_OFFLINE = _constants.NR_OFFLINE
1542 NR_ALL = _constants.NR_ALL
1544 # SSL certificate check constants (in days)
1545 SSL_CERT_EXPIRATION_WARN = 30
1546 SSL_CERT_EXPIRATION_ERROR = 7
1548 # Allocator framework constants
1549 IALLOCATOR_VERSION = _constants.IALLOCATOR_VERSION
1550 IALLOCATOR_DIR_IN = _constants.IALLOCATOR_DIR_IN
1551 IALLOCATOR_DIR_OUT = _constants.IALLOCATOR_DIR_OUT
1552 VALID_IALLOCATOR_DIRECTIONS = _constants.VALID_IALLOCATOR_DIRECTIONS
1554 IALLOCATOR_MODE_ALLOC = _constants.IALLOCATOR_MODE_ALLOC
1555 IALLOCATOR_MODE_RELOC = _constants.IALLOCATOR_MODE_RELOC
1556 IALLOCATOR_MODE_CHG_GROUP = _constants.IALLOCATOR_MODE_CHG_GROUP
1557 IALLOCATOR_MODE_NODE_EVAC = _constants.IALLOCATOR_MODE_NODE_EVAC
1558 IALLOCATOR_MODE_MULTI_ALLOC = _constants.IALLOCATOR_MODE_MULTI_ALLOC
1559 VALID_IALLOCATOR_MODES = _constants.VALID_IALLOCATOR_MODES
1561 IALLOCATOR_SEARCH_PATH = _constants.IALLOCATOR_SEARCH_PATH
1562 DEFAULT_IALLOCATOR_SHORTCUT = _constants.DEFAULT_IALLOCATOR_SHORTCUT
1565 NODE_EVAC_PRI = _constants.NODE_EVAC_PRI
1566 NODE_EVAC_SEC = _constants.NODE_EVAC_SEC
1567 NODE_EVAC_ALL = _constants.NODE_EVAC_ALL
1568 NODE_EVAC_MODES = _constants.NODE_EVAC_MODES
1571 JOB_QUEUE_VERSION = 1
1572 JOB_QUEUE_SIZE_HARD_LIMIT = 5000
1573 JOB_QUEUE_FILES_PERMS = 0640
1575 JOB_ID_TEMPLATE = r"\d+"
1576 JOB_FILE_RE = re.compile(r"^job-(%s)$" % JOB_ID_TEMPLATE)
1578 # unchanged job return
1579 JOB_NOTCHANGED = "nochange"
1582 JOB_STATUS_QUEUED = _constants.JOB_STATUS_QUEUED
1583 JOB_STATUS_WAITING = _constants.JOB_STATUS_WAITING
1584 JOB_STATUS_CANCELING = _constants.JOB_STATUS_CANCELING
1585 JOB_STATUS_RUNNING = _constants.JOB_STATUS_RUNNING
1586 JOB_STATUS_CANCELED = _constants.JOB_STATUS_CANCELED
1587 JOB_STATUS_SUCCESS = _constants.JOB_STATUS_SUCCESS
1588 JOB_STATUS_ERROR = _constants.JOB_STATUS_ERROR
1589 JOBS_PENDING = _constants.JOBS_PENDING
1590 JOBS_FINALIZED = _constants.JOBS_FINALIZED
1591 JOB_STATUS_ALL = _constants.JOB_STATUS_ALL
1595 OP_STATUS_QUEUED = _constants.OP_STATUS_QUEUED
1596 OP_STATUS_WAITING = _constants.OP_STATUS_WAITING
1597 OP_STATUS_CANCELING = _constants.OP_STATUS_CANCELING
1598 OP_STATUS_RUNNING = _constants.OP_STATUS_RUNNING
1600 OP_STATUS_CANCELED = _constants.OP_STATUS_CANCELED
1601 OP_STATUS_SUCCESS = _constants.OP_STATUS_SUCCESS
1602 OP_STATUS_ERROR = _constants.OP_STATUS_ERROR
1603 OPS_FINALIZED = _constants.OPS_FINALIZED
1606 OP_PRIO_LOWEST = _constants.OP_PRIO_LOWEST
1607 OP_PRIO_HIGHEST = _constants.OP_PRIO_HIGHEST
1608 OP_PRIO_LOW = _constants.OP_PRIO_LOW
1609 OP_PRIO_NORMAL = _constants.OP_PRIO_NORMAL
1610 OP_PRIO_HIGH = _constants.OP_PRIO_HIGH
1611 OP_PRIO_SUBMIT_VALID = _constants.OP_PRIO_SUBMIT_VALID
1612 OP_PRIO_DEFAULT = _constants.OP_PRIO_DEFAULT
1614 # Lock recalculate mode
1615 LOCKS_REPLACE = "replace"
1616 LOCKS_APPEND = "append"
1618 # Lock timeout (sum) before we should go into blocking acquire (still
1619 # can be reset by priority change); computed as max time (10 hours)
1620 # before we should actually go into blocking acquire given that we
1621 # start from default priority level; in seconds
1623 LOCK_ATTEMPTS_TIMEOUT = 10 * 3600 / (OP_PRIO_DEFAULT - OP_PRIO_HIGHEST)
1624 LOCK_ATTEMPTS_MAXWAIT = 15.0
1625 LOCK_ATTEMPTS_MINWAIT = 1.0
1627 # Execution log types
1628 ELOG_MESSAGE = _constants.ELOG_MESSAGE
1629 ELOG_REMOTE_IMPORT = _constants.ELOG_REMOTE_IMPORT
1630 ELOG_JQUEUE_TEST = _constants.ELOG_JQUEUE_TEST
1632 # /etc/hosts modification
1633 ETC_HOSTS_ADD = "add"
1634 ETC_HOSTS_REMOVE = "remove"
1637 JQT_MSGPREFIX = "TESTMSG="
1638 JQT_EXPANDNAMES = "expandnames"
1640 JQT_LOGMSG = "logmsg"
1641 JQT_STARTMSG = "startmsg"
1642 JQT_ALL = compat.UniqueFrozenset([
1650 QR_CLUSTER = "cluster"
1651 QR_INSTANCE = "instance"
1657 QR_EXPORT = "export"
1658 QR_NETWORK = "network"
1659 QR_EXTSTORAGE = "extstorage"
1661 #: List of resources which can be queried using L{opcodes.OpQuery}
1662 QR_VIA_OP = compat.UniqueFrozenset([
1673 #: List of resources which can be queried using Local UniX Interface
1674 QR_VIA_LUXI = QR_VIA_OP.union([
1679 #: List of resources which can be queried using RAPI
1680 QR_VIA_RAPI = QR_VIA_LUXI
1683 QFT_UNKNOWN = "unknown"
1686 QFT_NUMBER = "number"
1688 QFT_TIMESTAMP = "timestamp"
1691 #: All query field types
1692 QFT_ALL = compat.UniqueFrozenset([
1702 # Query result field status (don't change or reuse values as they're used by
1704 #: Normal field status
1708 #: No data (e.g. RPC error), can be used instead of L{RS_OFFLINE}
1710 #: Value unavailable/unsupported for item; if this field is supported
1711 #: but we cannot get the data for the moment, RS_NODATA or
1712 #: RS_OFFLINE should be used
1714 #: Resource marked offline
1717 RS_ALL = compat.UniqueFrozenset([
1725 #: Dictionary with special field cases and their verbose/terse formatting
1727 RS_UNKNOWN: ("(unknown)", "??"),
1728 RS_NODATA: ("(nodata)", "?"),
1729 RS_OFFLINE: ("(offline)", "*"),
1730 RS_UNAVAIL: ("(unavail)", "-"),
1733 # max dynamic devices
1737 # SSCONF file prefix
1738 SSCONF_FILEPREFIX = "ssconf_"
1740 SS_CLUSTER_NAME = "cluster_name"
1741 SS_CLUSTER_TAGS = "cluster_tags"
1742 SS_FILE_STORAGE_DIR = "file_storage_dir"
1743 SS_SHARED_FILE_STORAGE_DIR = "shared_file_storage_dir"
1744 SS_MASTER_CANDIDATES = "master_candidates"
1745 SS_MASTER_CANDIDATES_IPS = "master_candidates_ips"
1746 SS_MASTER_IP = "master_ip"
1747 SS_MASTER_NETDEV = "master_netdev"
1748 SS_MASTER_NETMASK = "master_netmask"
1749 SS_MASTER_NODE = "master_node"
1750 SS_NODE_LIST = "node_list"
1751 SS_NODE_PRIMARY_IPS = "node_primary_ips"
1752 SS_NODE_SECONDARY_IPS = "node_secondary_ips"
1753 SS_OFFLINE_NODES = "offline_nodes"
1754 SS_ONLINE_NODES = "online_nodes"
1755 SS_PRIMARY_IP_FAMILY = "primary_ip_family"
1756 SS_INSTANCE_LIST = "instance_list"
1757 SS_RELEASE_VERSION = "release_version"
1758 SS_HYPERVISOR_LIST = "hypervisor_list"
1759 SS_MAINTAIN_NODE_HEALTH = "maintain_node_health"
1760 SS_UID_POOL = "uid_pool"
1761 SS_NODEGROUPS = "nodegroups"
1762 SS_NETWORKS = "networks"
1764 # This is not a complete SSCONF key, but the prefix for the hypervisor keys
1765 SS_HVPARAMS_PREF = "hvparams_"
1768 SS_HVPARAMS_XEN_PVM = SS_HVPARAMS_PREF + HT_XEN_PVM
1769 SS_HVPARAMS_XEN_FAKE = SS_HVPARAMS_PREF + HT_FAKE
1770 SS_HVPARAMS_XEN_HVM = SS_HVPARAMS_PREF + HT_XEN_HVM
1771 SS_HVPARAMS_XEN_KVM = SS_HVPARAMS_PREF + HT_KVM
1772 SS_HVPARAMS_XEN_CHROOT = SS_HVPARAMS_PREF + HT_CHROOT
1773 SS_HVPARAMS_XEN_LXC = SS_HVPARAMS_PREF + HT_LXC
1775 VALID_SS_HVPARAMS_KEYS = compat.UniqueFrozenset([
1776 SS_HVPARAMS_XEN_PVM,
1777 SS_HVPARAMS_XEN_FAKE,
1778 SS_HVPARAMS_XEN_HVM,
1779 SS_HVPARAMS_XEN_KVM,
1780 SS_HVPARAMS_XEN_CHROOT,
1781 SS_HVPARAMS_XEN_LXC,
1784 SS_FILE_PERMS = 0444
1786 # cluster wide default parameters
1787 DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM
1791 HV_USE_BOOTLOADER: False,
1792 HV_BOOTLOADER_PATH: XEN_BOOTLOADER,
1793 HV_BOOTLOADER_ARGS: "",
1794 HV_KERNEL_PATH: XEN_KERNEL,
1796 HV_ROOT_PATH: "/dev/xvda1",
1797 HV_KERNEL_ARGS: "ro",
1798 HV_MIGRATION_PORT: 8002,
1799 HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1800 HV_BLOCKDEV_PREFIX: "sd",
1801 HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1802 HV_CPU_MASK: CPU_PINNING_ALL,
1806 HV_XEN_CMD: XEN_CMD_XM,
1811 HV_BOOT_ORDER: "cd",
1812 HV_CDROM_IMAGE_PATH: "",
1813 HV_NIC_TYPE: HT_NIC_RTL8139,
1814 HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1815 HV_VNC_BIND_ADDRESS: IP4_ADDRESS_ANY,
1816 HV_VNC_PASSWORD_FILE: pathutils.VNC_PASSWORD_FILE,
1819 HV_KERNEL_PATH: "/usr/lib/xen/boot/hvmloader",
1820 HV_DEVICE_MODEL: "/usr/lib/xen/bin/qemu-dm",
1821 HV_MIGRATION_PORT: 8002,
1822 HV_MIGRATION_MODE: HT_MIGRATION_NONLIVE,
1823 HV_USE_LOCALTIME: False,
1824 HV_BLOCKDEV_PREFIX: "hd",
1826 HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1827 HV_CPU_MASK: CPU_PINNING_ALL,
1830 HV_VIF_TYPE: HT_HVM_VIF_IOEMU,
1833 HV_XEN_CMD: XEN_CMD_XM,
1838 HV_KVM_PATH: KVM_PATH,
1839 HV_KERNEL_PATH: KVM_KERNEL,
1841 HV_KERNEL_ARGS: "ro",
1842 HV_ROOT_PATH: "/dev/vda1",
1844 HV_SERIAL_CONSOLE: True,
1845 HV_SERIAL_SPEED: 38400,
1846 HV_VNC_BIND_ADDRESS: "",
1849 HV_VNC_X509_VERIFY: False,
1850 HV_VNC_PASSWORD_FILE: "",
1851 HV_KVM_SPICE_BIND: "",
1852 HV_KVM_SPICE_IP_VERSION: IFACE_NO_IP_VERSION_SPECIFIED,
1853 HV_KVM_SPICE_PASSWORD_FILE: "",
1854 HV_KVM_SPICE_LOSSLESS_IMG_COMPR: "",
1855 HV_KVM_SPICE_JPEG_IMG_COMPR: "",
1856 HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR: "",
1857 HV_KVM_SPICE_STREAMING_VIDEO_DETECTION: "",
1858 HV_KVM_SPICE_AUDIO_COMPR: True,
1859 HV_KVM_SPICE_USE_TLS: False,
1860 HV_KVM_SPICE_TLS_CIPHERS: OPENSSL_CIPHERS,
1861 HV_KVM_SPICE_USE_VDAGENT: True,
1862 HV_KVM_FLOPPY_IMAGE_PATH: "",
1863 HV_CDROM_IMAGE_PATH: "",
1864 HV_KVM_CDROM2_IMAGE_PATH: "",
1865 HV_BOOT_ORDER: HT_BO_DISK,
1866 HV_NIC_TYPE: HT_NIC_PARAVIRTUAL,
1867 HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1868 HV_KVM_CDROM_DISK_TYPE: "",
1871 HV_MIGRATION_PORT: 8102,
1872 HV_MIGRATION_BANDWIDTH: 32, # MiB/s
1873 HV_MIGRATION_DOWNTIME: 30, # ms
1874 HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1875 HV_USE_LOCALTIME: False,
1876 HV_DISK_CACHE: HT_CACHE_DEFAULT,
1877 HV_SECURITY_MODEL: HT_SM_NONE,
1878 HV_SECURITY_DOMAIN: "",
1880 HV_VHOST_NET: False,
1881 HV_KVM_USE_CHROOT: False,
1883 HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1884 HV_CPU_MASK: CPU_PINNING_ALL,
1893 HV_KVM_MACHINE_VERSION: "",
1897 HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1900 HV_INIT_SCRIPT: "/ganeti-chroot",
1907 HVC_GLOBALS = compat.UniqueFrozenset([
1909 HV_MIGRATION_BANDWIDTH,
1918 BE_AUTO_BALANCE: True,
1919 BE_ALWAYS_FAILOVER: False,
1925 ND_SPINDLE_COUNT: 1,
1926 ND_EXCLUSIVE_STORAGE: False,
1928 ND_OVS_NAME: DEFAULT_OVS,
1932 NDC_GLOBALS = compat.UniqueFrozenset([
1933 ND_EXCLUSIVE_STORAGE,
1936 DISK_LD_DEFAULTS = {
1938 LDP_RESYNC_RATE: CLASSIC_DRBD_SYNC_SPEED,
1939 LDP_BARRIERS: _constants.DRBD_BARRIERS,
1940 LDP_NO_META_FLUSH: _constants.DRBD_NO_META_FLUSH,
1941 LDP_DEFAULT_METAVG: DEFAULT_VG,
1942 LDP_DISK_CUSTOM: "",
1944 LDP_PROTOCOL: DRBD_DEFAULT_NET_PROTOCOL,
1945 LDP_DYNAMIC_RESYNC: False,
1947 # The default values for the DRBD dynamic resync speed algorithm
1948 # are taken from the drbsetup 8.3.11 man page, except for
1949 # c-plan-ahead (that we don't need to set to 0, because we have a
1950 # separate option to enable it) and for c-max-rate, that we cap to
1951 # the default value for the static resync rate.
1952 LDP_PLAN_AHEAD: 20, # ds
1953 LDP_FILL_TARGET: 0, # sectors
1954 LDP_DELAY_TARGET: 1, # ds
1955 LDP_MAX_RATE: CLASSIC_DRBD_SYNC_SPEED, # KiB/s
1956 LDP_MIN_RATE: 4 * 1024, # KiB/s
1959 LDP_STRIPES: _constants.LVM_STRIPECOUNT
1966 LDP_ACCESS: DISK_KERNELSPACE,
1971 # readability shortcuts
1972 _LV_DEFAULTS = DISK_LD_DEFAULTS[DT_PLAIN]
1973 _DRBD_DEFAULTS = DISK_LD_DEFAULTS[DT_DRBD8]
1975 DISK_DT_DEFAULTS = {
1977 LV_STRIPES: DISK_LD_DEFAULTS[DT_PLAIN][LDP_STRIPES],
1980 DRBD_RESYNC_RATE: _DRBD_DEFAULTS[LDP_RESYNC_RATE],
1981 DRBD_DATA_STRIPES: _LV_DEFAULTS[LDP_STRIPES],
1982 DRBD_META_STRIPES: _LV_DEFAULTS[LDP_STRIPES],
1983 DRBD_DISK_BARRIERS: _DRBD_DEFAULTS[LDP_BARRIERS],
1984 DRBD_META_BARRIERS: _DRBD_DEFAULTS[LDP_NO_META_FLUSH],
1985 DRBD_DEFAULT_METAVG: _DRBD_DEFAULTS[LDP_DEFAULT_METAVG],
1986 DRBD_DISK_CUSTOM: _DRBD_DEFAULTS[LDP_DISK_CUSTOM],
1987 DRBD_NET_CUSTOM: _DRBD_DEFAULTS[LDP_NET_CUSTOM],
1988 DRBD_PROTOCOL: _DRBD_DEFAULTS[LDP_PROTOCOL],
1989 DRBD_DYNAMIC_RESYNC: _DRBD_DEFAULTS[LDP_DYNAMIC_RESYNC],
1990 DRBD_PLAN_AHEAD: _DRBD_DEFAULTS[LDP_PLAN_AHEAD],
1991 DRBD_FILL_TARGET: _DRBD_DEFAULTS[LDP_FILL_TARGET],
1992 DRBD_DELAY_TARGET: _DRBD_DEFAULTS[LDP_DELAY_TARGET],
1993 DRBD_MAX_RATE: _DRBD_DEFAULTS[LDP_MAX_RATE],
1994 DRBD_MIN_RATE: _DRBD_DEFAULTS[LDP_MIN_RATE],
2001 RBD_POOL: DISK_LD_DEFAULTS[DT_RBD][LDP_POOL],
2002 RBD_ACCESS: DISK_LD_DEFAULTS[DT_RBD][LDP_ACCESS],
2007 # we don't want to export the shortcuts
2008 del _LV_DEFAULTS, _DRBD_DEFAULTS
2011 NIC_MODE: NIC_MODE_BRIDGED,
2012 NIC_LINK: DEFAULT_BRIDGE,
2013 NIC_VLAN: VALUE_HS_NOTHING,
2016 # All of the following values are quite arbitrarily - there are no
2017 # "good" defaults, these must be customised per-site
2018 ISPECS_MINMAX_DEFAULTS = {
2020 ISPEC_MEM_SIZE: 128,
2022 ISPEC_DISK_COUNT: 1,
2023 ISPEC_DISK_SIZE: 1024,
2025 ISPEC_SPINDLE_USE: 1,
2028 ISPEC_MEM_SIZE: 32768,
2030 ISPEC_DISK_COUNT: MAX_DISKS,
2031 ISPEC_DISK_SIZE: 1024 * 1024,
2032 ISPEC_NIC_COUNT: MAX_NICS,
2033 ISPEC_SPINDLE_USE: 12,
2036 IPOLICY_DEFAULTS = {
2037 ISPECS_MINMAX: [ISPECS_MINMAX_DEFAULTS],
2039 ISPEC_MEM_SIZE: 128,
2041 ISPEC_DISK_COUNT: 1,
2042 ISPEC_DISK_SIZE: 1024,
2044 ISPEC_SPINDLE_USE: 1,
2046 IPOLICY_DTS: list(DISK_TEMPLATES),
2047 IPOLICY_VCPU_RATIO: 4.0,
2048 IPOLICY_SPINDLE_RATIO: 32.0,
2051 MASTER_POOL_SIZE_DEFAULT = 10
2053 # Exclusive storage:
2054 # Error margin used to compare physical disks
2056 # Space reserved when creating instance disks
2059 CONFD_PROTOCOL_VERSION = _constants.CONFD_PROTOCOL_VERSION
2061 CONFD_REQ_PING = _constants.CONFD_REQ_PING
2062 CONFD_REQ_NODE_ROLE_BYNAME = _constants.CONFD_REQ_NODE_ROLE_BYNAME
2063 CONFD_REQ_NODE_PIP_BY_INSTANCE_IP = _constants.CONFD_REQ_NODE_PIP_BY_INSTANCE_IP
2064 CONFD_REQ_CLUSTER_MASTER = _constants.CONFD_REQ_CLUSTER_MASTER
2065 CONFD_REQ_NODE_PIP_LIST = _constants.CONFD_REQ_NODE_PIP_LIST
2066 CONFD_REQ_MC_PIP_LIST = _constants.CONFD_REQ_MC_PIP_LIST
2067 CONFD_REQ_INSTANCES_IPS_LIST = _constants.CONFD_REQ_INSTANCES_IPS_LIST
2068 CONFD_REQ_NODE_DRBD = _constants.CONFD_REQ_NODE_DRBD
2069 CONFD_REQ_NODE_INSTANCES = _constants.CONFD_REQ_NODE_INSTANCES
2070 CONFD_REQS = _constants.CONFD_REQS
2072 # Confd request query fields. These are used to narrow down queries.
2073 # These must be strings rather than integers, because json-encoding
2074 # converts them to strings anyway, as they're used as dict-keys.
2075 CONFD_REQQ_LINK = _constants.CONFD_REQQ_LINK
2076 CONFD_REQQ_IP = _constants.CONFD_REQQ_IP
2077 CONFD_REQQ_IPLIST = _constants.CONFD_REQQ_IPLIST
2078 CONFD_REQQ_FIELDS = _constants.CONFD_REQQ_FIELDS
2080 # FIXME: perhaps update code that uses these constants to deal with
2081 # integers instead of strings
2082 CONFD_REQFIELD_NAME = str(_constants.CONFD_REQFIELD_NAME)
2083 CONFD_REQFIELD_IP = str(_constants.CONFD_REQFIELD_IP)
2084 CONFD_REQFIELD_MNODE_PIP = str(_constants.CONFD_REQFIELD_MNODE_PIP)
2086 CONFD_REPL_STATUS_OK = _constants.CONFD_REPL_STATUS_OK
2087 CONFD_REPL_STATUS_ERROR = _constants.CONFD_REPL_STATUS_ERROR
2088 CONFD_REPL_STATUS_NOTIMPLEMENTED = _constants.CONFD_REPL_STATUS_NOTIMPLEMENTED
2089 CONFD_REPL_STATUSES = _constants.CONFD_REPL_STATUSES
2091 CONFD_NODE_ROLE_MASTER = _constants.CONFD_NODE_ROLE_MASTER
2092 CONFD_NODE_ROLE_CANDIDATE = _constants.CONFD_NODE_ROLE_CANDIDATE
2093 CONFD_NODE_ROLE_OFFLINE = _constants.CONFD_NODE_ROLE_OFFLINE
2094 CONFD_NODE_ROLE_DRAINED = _constants.CONFD_NODE_ROLE_DRAINED
2095 CONFD_NODE_ROLE_REGULAR = _constants.CONFD_NODE_ROLE_REGULAR
2097 CONFD_ERROR_UNKNOWN_ENTRY = _constants.CONFD_ERROR_UNKNOWN_ENTRY
2098 CONFD_ERROR_INTERNAL = _constants.CONFD_ERROR_INTERNAL
2099 CONFD_ERROR_ARGUMENT = _constants.CONFD_ERROR_ARGUMENT
2101 # Each request is "salted" by the current timestamp.
2102 # This constants decides how many seconds of skew to accept.
2103 # TODO: make this a default and allow the value to be more configurable
2104 CONFD_MAX_CLOCK_SKEW = _constants.CONFD_MAX_CLOCK_SKEW
2106 # When we haven't reloaded the config for more than this amount of
2107 # seconds, we force a test to see if inotify is betraying us. Using a
2108 # prime number to ensure we get less chance of 'same wakeup' with
2110 CONFD_CONFIG_RELOAD_TIMEOUT = _constants.CONFD_CONFIG_RELOAD_TIMEOUT
2112 # If we receive more than one update in this amount of microseconds,
2113 # we move to polling every RATELIMIT seconds, rather than relying on
2114 # inotify, to be able to serve more requests.
2115 CONFD_CONFIG_RELOAD_RATELIMIT = _constants.CONFD_CONFIG_RELOAD_RATELIMIT
2117 # Magic number prepended to all confd queries.
2118 # This allows us to distinguish different types of confd protocols and handle
2119 # them. For example by changing this we can move the whole payload to be
2120 # compressed, or move away from json.
2121 CONFD_MAGIC_FOURCC = _constants.CONFD_MAGIC_FOURCC
2123 # By default a confd request is sent to the minimum between this number and all
2124 # MCs. 6 was chosen because even in the case of a disastrous 50% response rate,
2125 # we should have enough answers to be able to compare more than one.
2126 CONFD_DEFAULT_REQ_COVERAGE = _constants.CONFD_DEFAULT_REQ_COVERAGE
2128 # Timeout in seconds to expire pending query request in the confd client
2129 # library. We don't actually expect any answer more than 10 seconds after we
2131 CONFD_CLIENT_EXPIRE_TIMEOUT = _constants.CONFD_CLIENT_EXPIRE_TIMEOUT
2133 # Maximum UDP datagram size.
2134 # On IPv4: 64K - 20 (ip header size) - 8 (udp header size) = 65507
2135 # On IPv6: 64K - 40 (ip6 header size) - 8 (udp header size) = 65487
2136 # (assuming we can't use jumbo frames)
2137 # We just set this to 60K, which should be enough
2138 MAX_UDP_DATA_SIZE = 61440
2140 # User-id pool minimum/maximum acceptable user-ids.
2142 UIDPOOL_UID_MAX = 2 ** 32 - 1 # Assuming 32 bit user-ids
2144 # Name or path of the pgrep command
2147 # Name of the node group that gets created at cluster init or upgrade
2148 INITIAL_NODE_GROUP_NAME = "default"
2150 # Possible values for NodeGroup.alloc_policy
2151 ALLOC_POLICY_PREFERRED = _constants.ALLOC_POLICY_PREFERRED
2152 ALLOC_POLICY_LAST_RESORT = _constants.ALLOC_POLICY_LAST_RESORT
2153 ALLOC_POLICY_UNALLOCABLE = _constants.ALLOC_POLICY_UNALLOCABLE
2154 VALID_ALLOC_POLICIES = _constants.VALID_ALLOC_POLICIES
2156 # Temporary external/shared storage parameters
2157 BLOCKDEV_DRIVER_MANUAL = _constants.BLOCKDEV_DRIVER_MANUAL
2159 # qemu-img path, required for ovfconverter
2160 QEMUIMG_PATH = _constants.QEMUIMG_PATH
2162 # Whether htools was enabled at compilation time
2163 HTOOLS = _constants.HTOOLS
2164 # The hail iallocator
2165 IALLOC_HAIL = "hail"
2167 # Fake opcodes for functions that have hooks attached to them via
2168 # backend.RunLocalHooks
2169 FAKE_OP_MASTER_TURNUP = "OP_CLUSTER_IP_TURNUP"
2170 FAKE_OP_MASTER_TURNDOWN = "OP_CLUSTER_IP_TURNDOWN"
2175 SSHK_ALL = compat.UniqueFrozenset([SSHK_RSA, SSHK_DSA])
2177 # SSH authorized key types
2178 SSHAK_RSA = "ssh-rsa"
2179 SSHAK_DSS = "ssh-dss"
2180 SSHAK_ALL = compat.UniqueFrozenset([SSHAK_RSA, SSHAK_DSS])
2183 SSHS_CLUSTER_NAME = "cluster_name"
2184 SSHS_SSH_HOST_KEY = "ssh_host_key"
2185 SSHS_SSH_ROOT_KEY = "ssh_root_key"
2186 SSHS_NODE_DAEMON_CERTIFICATE = "node_daemon_certificate"
2188 #: Key files for SSH daemon
2189 SSH_DAEMON_KEYFILES = {
2190 SSHK_RSA: (pathutils.SSH_HOST_RSA_PRIV, pathutils.SSH_HOST_RSA_PUB),
2191 SSHK_DSA: (pathutils.SSH_HOST_DSA_PRIV, pathutils.SSH_HOST_DSA_PUB),
2195 NDS_CLUSTER_NAME = "cluster_name"
2196 NDS_NODE_DAEMON_CERTIFICATE = "node_daemon_certificate"
2197 NDS_SSCONF = "ssconf"
2198 NDS_START_NODE_DAEMON = "start_node_daemon"
2200 # Path generating random UUID
2201 RANDOM_UUID_FILE = _constants.RANDOM_UUID_FILE
2203 # Regex string for verifying a UUID
2204 UUID_REGEX = "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"
2206 # Auto-repair tag prefixes
2207 AUTO_REPAIR_TAG_PREFIX = _constants.AUTO_REPAIR_TAG_PREFIX
2208 AUTO_REPAIR_TAG_ENABLED = _constants.AUTO_REPAIR_TAG_ENABLED
2209 AUTO_REPAIR_TAG_SUSPENDED = _constants.AUTO_REPAIR_TAG_SUSPENDED
2210 AUTO_REPAIR_TAG_PENDING = _constants.AUTO_REPAIR_TAG_PENDING
2211 AUTO_REPAIR_TAG_RESULT = _constants.AUTO_REPAIR_TAG_RESULT
2213 # Auto-repair levels
2214 AUTO_REPAIR_FIX_STORAGE = _constants.AUTO_REPAIR_FIX_STORAGE
2215 AUTO_REPAIR_MIGRATE = _constants.AUTO_REPAIR_MIGRATE
2216 AUTO_REPAIR_FAILOVER = _constants.AUTO_REPAIR_FAILOVER
2217 AUTO_REPAIR_REINSTALL = _constants.AUTO_REPAIR_REINSTALL
2218 AUTO_REPAIR_ALL_TYPES = _constants.AUTO_REPAIR_ALL_TYPES
2220 # Auto-repair results
2221 AUTO_REPAIR_SUCCESS = _constants.AUTO_REPAIR_SUCCESS
2222 AUTO_REPAIR_FAILURE = _constants.AUTO_REPAIR_FAILURE
2223 AUTO_REPAIR_ENOPERM = _constants.AUTO_REPAIR_ENOPERM
2224 AUTO_REPAIR_ALL_RESULTS = _constants.AUTO_REPAIR_ALL_RESULTS
2226 # The version identifier for builtin data collectors
2227 BUILTIN_DATA_COLLECTOR_VERSION = _constants.BUILTIN_DATA_COLLECTOR_VERSION
2229 # The reason trail opcode parameter name
2230 OPCODE_REASON = _constants.OPCODE_REASON
2232 # The source reasons for the execution of an OpCode
2233 OPCODE_REASON_SRC_CLIENT = "gnt:client"
2234 OPCODE_REASON_SRC_NODED = "gnt:daemon:noded"
2235 OPCODE_REASON_SRC_OPCODE = "gnt:opcode"
2236 OPCODE_REASON_SRC_RLIB2 = "gnt:library:rlib2"
2237 OPCODE_REASON_SRC_USER = "gnt:user"
2239 OPCODE_REASON_SOURCES = compat.UniqueFrozenset([
2240 OPCODE_REASON_SRC_CLIENT,
2241 OPCODE_REASON_SRC_NODED,
2242 OPCODE_REASON_SRC_OPCODE,
2243 OPCODE_REASON_SRC_RLIB2,
2244 OPCODE_REASON_SRC_USER,
2247 DISKSTATS_FILE = _constants.DISKSTATS_FILE
2249 # CPU load collector variables
2250 STAT_FILE = _constants.STAT_FILE
2251 CPUAVGLOAD_BUFFER_SIZE = _constants.CPUAVGLOAD_BUFFER_SIZE
2252 CPUAVGLOAD_WINDOW_SIZE = _constants.CPUAVGLOAD_WINDOW_SIZE
2254 # Mond's variable for periodical data collection
2255 MOND_TIME_INTERVAL = _constants.MOND_TIME_INTERVAL
2257 # MonD's latest API version
2258 MOND_LATEST_API_VERSION = 1
2260 # Timeouts for upgrades
2262 UPGRADE_QUEUE_DRAIN_TIMEOUT = _constants.UPGRADE_QUEUE_DRAIN_TIMEOUT
2263 UPGRADE_QUEUE_POLL_INTERVAL = _constants.UPGRADE_QUEUE_POLL_INTERVAL
2265 # Do not re-export imported modules
2266 del re, _vcsversion, _constants, socket, pathutils, compat
2269 ALLOCATABLE_KEY = "allocatable"
2270 FAILED_KEY = "failed"