])
# the set of disk templates that are supported by exclusive_storage
-DTS_EXCL_STORAGE = frozenset([DT_PLAIN])
+DTS_EXCL_STORAGE = compat.UniqueFrozenset([DT_PLAIN])
# templates for which we don't perform checks on free space
DTS_NO_FREE_SPACE_CHECK = compat.UniqueFrozenset([
# Constant representing that the user does not specify any IP version
IFACE_NO_IP_VERSION_SPECIFIED = 0
+VALID_SERIAL_SPEEDS = compat.UniqueFrozenset([
+ 75,
+ 110,
+ 300,
+ 600,
+ 1200,
+ 1800,
+ 2400,
+ 4800,
+ 9600,
+ 14400,
+ 19200,
+ 28800,
+ 38400,
+ 57600,
+ 115200,
+ 230400,
+ 345600,
+ 460800,
+ ])
+
# HV parameter names (global namespace)
HV_BOOT_ORDER = "boot_order"
HV_CDROM_IMAGE_PATH = "cdrom_image_path"
HV_INITRD_PATH = "initrd_path"
HV_ROOT_PATH = "root_path"
HV_SERIAL_CONSOLE = "serial_console"
+HV_SERIAL_SPEED = "serial_speed"
HV_USB_MOUSE = "usb_mouse"
HV_KEYMAP = "keymap"
HV_DEVICE_MODEL = "device_model"
HV_CPU_TYPE = "cpu_type"
HV_CPU_CAP = "cpu_cap"
HV_CPU_WEIGHT = "cpu_weight"
+HV_CPU_CORES = "cpu_cores"
+HV_CPU_THREADS = "cpu_threads"
+HV_CPU_SOCKETS = "cpu_sockets"
+HV_SOUNDHW = "soundhw"
+HV_USB_DEVICES = "usb_devices"
+HV_VGA = "vga"
+HV_KVM_EXTRA = "kvm_extra"
+HV_KVM_MACHINE_VERSION = "machine_version"
+HV_KVM_PATH = "kvm_path"
HVS_PARAMETER_TYPES = {
+ HV_KVM_PATH: VTYPE_STRING,
HV_BOOT_ORDER: VTYPE_STRING,
HV_KVM_FLOPPY_IMAGE_PATH: VTYPE_STRING,
HV_CDROM_IMAGE_PATH: VTYPE_STRING,
HV_INITRD_PATH: VTYPE_STRING,
HV_ROOT_PATH: VTYPE_MAYBE_STRING,
HV_SERIAL_CONSOLE: VTYPE_BOOL,
+ HV_SERIAL_SPEED: VTYPE_INT,
HV_USB_MOUSE: VTYPE_STRING,
HV_KEYMAP: VTYPE_STRING,
HV_DEVICE_MODEL: VTYPE_STRING,
HV_CPU_TYPE: VTYPE_STRING,
HV_CPU_CAP: VTYPE_INT,
HV_CPU_WEIGHT: VTYPE_INT,
+ HV_CPU_CORES: VTYPE_INT,
+ HV_CPU_THREADS: VTYPE_INT,
+ HV_CPU_SOCKETS: VTYPE_INT,
+ HV_SOUNDHW: VTYPE_STRING,
+ HV_USB_DEVICES: VTYPE_STRING,
+ HV_VGA: VTYPE_STRING,
+ HV_KVM_EXTRA: VTYPE_STRING,
+ HV_KVM_MACHINE_VERSION: VTYPE_STRING,
}
HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
# Cluster Verify error classes
CV_TCLUSTER = "cluster"
+CV_TGROUP = "group"
CV_TNODE = "node"
CV_TINSTANCE = "instance"
CV_ECLUSTERDANGLINGINST = \
(CV_TNODE, "ECLUSTERDANGLINGINST",
"Some instances have a non-existing primary node")
+CV_EGROUPMIXEDESFLAG = \
+ (CV_TGROUP, "EGROUPMIXEDESFLAG",
+ "exclusive_storage flag is not uniform within the group")
CV_EINSTANCEBADNODE = \
(CV_TINSTANCE, "EINSTANCEBADNODE",
"Instance marked as running lives on an offline node")
compat.UniqueFrozenset(estr for (_, estr, _) in CV_ALL_ECODES)
# Node verify constants
+NV_BRIDGES = "bridges"
NV_DRBDHELPER = "drbd-helper"
NV_DRBDLIST = "drbd-list"
NV_FILELIST = "filelist"
+NV_FILE_STORAGE_PATHS = "file-storage-paths"
NV_HVINFO = "hvinfo"
-NV_HYPERVISOR = "hypervisor"
NV_HVPARAMS = "hvparms"
+NV_HYPERVISOR = "hypervisor"
NV_INSTANCELIST = "instancelist"
NV_LVLIST = "lvlist"
NV_MASTERIP = "master-ip"
NV_NODELIST = "nodelist"
NV_NODENETTEST = "node-net-test"
NV_NODESETUP = "nodesetup"
+NV_OOB_PATHS = "oob-paths"
NV_OSLIST = "oslist"
NV_PVLIST = "pvlist"
NV_TIME = "time"
+NV_USERSCRIPTS = "user-scripts"
NV_VERSION = "version"
NV_VGLIST = "vglist"
NV_VMNODES = "vmnodes"
-NV_OOB_PATHS = "oob-paths"
-NV_BRIDGES = "bridges"
-NV_USERSCRIPTS = "user-scripts"
-NV_FILE_STORAGE_PATHS = "file-storage-paths"
# Instance status
INSTST_RUNNING = "running"
HV_CPU_WEIGHT: 256,
},
HT_KVM: {
+ HV_KVM_PATH: KVM_PATH,
HV_KERNEL_PATH: KVM_KERNEL,
HV_INITRD_PATH: "",
HV_KERNEL_ARGS: "ro",
HV_ROOT_PATH: "/dev/vda1",
HV_ACPI: True,
HV_SERIAL_CONSOLE: True,
+ HV_SERIAL_SPEED: 38400,
HV_VNC_BIND_ADDRESS: "",
HV_VNC_TLS: False,
HV_VNC_X509: "",
HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
HV_CPU_MASK: CPU_PINNING_ALL,
HV_CPU_TYPE: "",
+ HV_CPU_CORES: 0,
+ HV_CPU_THREADS: 0,
+ HV_CPU_SOCKETS: 0,
+ HV_SOUNDHW: "",
+ HV_USB_DEVICES: "",
+ HV_VGA: "",
+ HV_KVM_EXTRA: "",
+ HV_KVM_MACHINE_VERSION: "",
},
HT_FAKE: {},
HT_CHROOT: {
# Regex string for verifying a UUID
UUID_REGEX = "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"
+# Auto-repair tag prefixes
+AUTO_REPAIR_TAG_PREFIX = "ganeti:watcher:autorepair:"
+AUTO_REPAIR_TAG_ENABLED = AUTO_REPAIR_TAG_PREFIX
+AUTO_REPAIR_TAG_SUSPENDED = AUTO_REPAIR_TAG_ENABLED + "suspend:"
+AUTO_REPAIR_TAG_PENDING = AUTO_REPAIR_TAG_PREFIX + "pending:"
+AUTO_REPAIR_TAG_RESULT = AUTO_REPAIR_TAG_PREFIX + "result:"
+
+# Auto-repair levels
+AUTO_REPAIR_FIX_STORAGE = "fix-storage"
+AUTO_REPAIR_MIGRATE = "migrate"
+AUTO_REPAIR_FAILOVER = "failover"
+AUTO_REPAIR_REINSTALL = "reinstall"
+AUTO_REPAIR_ALL_TYPES = [
+ AUTO_REPAIR_FIX_STORAGE,
+ AUTO_REPAIR_MIGRATE,
+ AUTO_REPAIR_FAILOVER,
+ AUTO_REPAIR_REINSTALL,
+]
+
+# Auto-repair results
+AUTO_REPAIR_SUCCESS = "success"
+AUTO_REPAIR_FAILURE = "failure"
+AUTO_REPAIR_ENOPERM = "enoperm"
+AUTO_REPAIR_ALL_RESULTS = frozenset([
+ AUTO_REPAIR_SUCCESS,
+ AUTO_REPAIR_FAILURE,
+ AUTO_REPAIR_ENOPERM,
+])
+
+# The version identifier for builtin data collectors
+BUILTIN_DATA_COLLECTOR_VERSION = "B"
+
# Do not re-export imported modules
del re, _vcsversion, _autoconf, socket, pathutils, compat