X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/0188611b9cf332ff83f95e0bdbdcbd74c946465c..e81eef56ea737f109f7b80c1f3dbcd9376b3c224:/lib/constants.py diff --git a/lib/constants.py b/lib/constants.py index 1d9787c..3f32d5e 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -136,11 +136,11 @@ RUN_DIRS_MODE = 0775 SECURE_DIR_MODE = 0700 SECURE_FILE_MODE = 0600 ADOPTABLE_BLOCKDEV_ROOT = "/dev/disk/" -ETC_HOSTS = "/etc/hosts" ENABLE_FILE_STORAGE = _autoconf.ENABLE_FILE_STORAGE ENABLE_SHARED_FILE_STORAGE = _autoconf.ENABLE_SHARED_FILE_STORAGE ENABLE_CONFD = _autoconf.ENABLE_CONFD ENABLE_SPLIT_QUERY = _autoconf.ENABLE_SPLIT_QUERY +ENABLE_REMOTE_COMMANDS = _autoconf.ENABLE_REMOTE_COMMANDS NODED = "ganeti-noded" CONFD = "ganeti-confd" @@ -198,6 +198,16 @@ XEN_CMD_XM = "xm" XEN_CMD_XL = "xl" # FIXME: This will be made configurable using hvparams in Ganeti 2.7 XEN_CMD = _autoconf.XEN_CMD +# When the Xen toolstack used is "xl", live migration requires the source host +# to connect to the target host via ssh (xl runs this command). We need to pass +# the command xl runs some extra info so that it can use Ganeti's key +# verification and not fail. Note that this string is incomplete: it must be +# filled with the cluster name before being used. +XL_SSH_CMD = ("ssh -l %s -oGlobalKnownHostsFile=%s" + " -oUserKnownHostsFile=/dev/null" + " -oCheckHostIp=no -oStrictHostKeyChecking=yes" + " -oHostKeyAlias=%%s") % (SSH_LOGIN_USER, + pathutils.SSH_KNOWN_HOSTS_FILE) KVM_PATH = _autoconf.KVM_PATH KVM_KERNEL = _autoconf.KVM_KERNEL @@ -292,6 +302,7 @@ HTYPE_CLUSTER = "CLUSTER" HTYPE_NODE = "NODE" HTYPE_GROUP = "GROUP" HTYPE_INSTANCE = "INSTANCE" +HTYPE_NETWORK = "NETWORK" HKR_SKIP = 0 HKR_FAIL = 1 @@ -323,7 +334,7 @@ VALID_STORAGE_FIELDS = frozenset([ SF_SIZE, SF_USED, SF_FREE, - SF_ALLOCATABLE + SF_ALLOCATABLE, ]) VALID_STORAGE_TYPES = frozenset([ST_FILE, ST_LVM_PV, ST_LVM_VG]) @@ -489,7 +500,7 @@ DISK_TEMPLATES = frozenset([ DT_FILE, DT_SHARED_FILE, DT_BLOCK, - DT_RBD + DT_RBD, ]) FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP]) @@ -527,11 +538,13 @@ TAG_CLUSTER = "cluster" TAG_NODEGROUP = "nodegroup" TAG_NODE = "node" TAG_INSTANCE = "instance" +TAG_NETWORK = "network" VALID_TAG_TYPES = frozenset([ TAG_CLUSTER, TAG_NODEGROUP, TAG_NODE, TAG_INSTANCE, + TAG_NETWORK, ]) MAX_TAG_LEN = 128 MAX_TAGS_PER_OBJ = 4096 @@ -600,7 +613,7 @@ OS_SCRIPTS = frozenset([ OS_SCRIPT_IMPORT, OS_SCRIPT_EXPORT, OS_SCRIPT_RENAME, - OS_SCRIPT_VERIFY + OS_SCRIPT_VERIFY, ]) OS_API_FILE = "ganeti_api_version" @@ -622,7 +635,7 @@ INSTANCE_REBOOT_FULL = "full" REBOOT_TYPES = frozenset([ INSTANCE_REBOOT_SOFT, INSTANCE_REBOOT_HARD, - INSTANCE_REBOOT_FULL + INSTANCE_REBOOT_FULL, ]) # instance reboot behaviors @@ -631,7 +644,7 @@ INSTANCE_REBOOT_EXIT = "exit" REBOOT_BEHAVIORS = frozenset([ INSTANCE_REBOOT_ALLOWED, - INSTANCE_REBOOT_EXIT + INSTANCE_REBOOT_EXIT, ]) VTYPE_STRING = "string" @@ -705,6 +718,9 @@ HV_PASSTHROUGH = "pci_pass" HV_BLOCKDEV_PREFIX = "blockdev_prefix" HV_REBOOT_BEHAVIOR = "reboot_behavior" HV_CPU_TYPE = "cpu_type" +HV_CPU_CAP = "cpu_cap" +HV_CPU_WEIGHT = "cpu_weight" + HVS_PARAMETER_TYPES = { HV_BOOT_ORDER: VTYPE_STRING, @@ -761,6 +777,8 @@ HVS_PARAMETER_TYPES = { HV_BLOCKDEV_PREFIX: VTYPE_STRING, HV_REBOOT_BEHAVIOR: VTYPE_STRING, HV_CPU_TYPE: VTYPE_STRING, + HV_CPU_CAP: VTYPE_INT, + HV_CPU_WEIGHT: VTYPE_INT, } HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys()) @@ -1021,7 +1039,7 @@ OOB_COMMANDS = frozenset([ OOB_POWER_OFF, OOB_POWER_CYCLE, OOB_POWER_STATUS, - OOB_HEALTH + OOB_HEALTH, ]) OOB_POWER_STATUS_POWERED = "powered" @@ -1050,9 +1068,20 @@ NIC_LINK = "link" NIC_MODE_BRIDGED = "bridged" NIC_MODE_ROUTED = "routed" +NIC_IP_POOL = "pool" NIC_VALID_MODES = frozenset([NIC_MODE_BRIDGED, NIC_MODE_ROUTED]) +RESERVE_ACTION = 'reserve' +RELEASE_ACTION = 'release' + +# An extra description of the network. +# Can be used by hooks/kvm-vif-bridge to apply different rules +NETWORK_TYPE_PRIVATE = "private" +NETWORK_TYPE_PUBLIC = "public" + +NETWORK_VALID_TYPES = frozenset([NETWORK_TYPE_PRIVATE, NETWORK_TYPE_PUBLIC]) + NICS_PARAMETER_TYPES = { NIC_MODE: VTYPE_STRING, NIC_LINK: VTYPE_STRING, @@ -1080,11 +1109,13 @@ INIC_MAC = "mac" INIC_IP = "ip" INIC_MODE = "mode" INIC_LINK = "link" +INIC_NETWORK = "network" INIC_PARAMS_TYPES = { INIC_IP: VTYPE_MAYBE_STRING, INIC_LINK: VTYPE_STRING, INIC_MAC: VTYPE_STRING, INIC_MODE: VTYPE_STRING, + INIC_NETWORK: VTYPE_MAYBE_STRING, } INIC_PARAMS = frozenset(INIC_PARAMS_TYPES.keys()) @@ -1124,7 +1155,7 @@ HT_HVM_VALID_NIC_TYPES = frozenset([ HT_NIC_NE2K_PCI, HT_NIC_E1000, HT_NIC_NE2K_ISA, - HT_NIC_PARAVIRTUAL + HT_NIC_PARAVIRTUAL, ]) HT_KVM_VALID_NIC_TYPES = frozenset([ HT_NIC_RTL8139, @@ -1135,7 +1166,7 @@ HT_KVM_VALID_NIC_TYPES = frozenset([ HT_NIC_I8259ER, HT_NIC_PCNET, HT_NIC_E1000, - HT_NIC_PARAVIRTUAL + HT_NIC_PARAVIRTUAL, ]) # Disk types @@ -1154,7 +1185,7 @@ HT_VALID_CACHE_TYPES = frozenset([ HT_CACHE_DEFAULT, HT_CACHE_NONE, HT_CACHE_WTHROUGH, - HT_CACHE_WBACK + HT_CACHE_WBACK, ]) HT_HVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IOEMU]) @@ -1164,7 +1195,7 @@ HT_KVM_VALID_DISK_TYPES = frozenset([ HT_DISK_SCSI, HT_DISK_SD, HT_DISK_MTD, - HT_DISK_PFLASH + HT_DISK_PFLASH, ]) # Mouse types: @@ -1183,7 +1214,7 @@ HT_KVM_VALID_BO_TYPES = frozenset([ HT_BO_FLOPPY, HT_BO_CDROM, HT_BO_DISK, - HT_BO_NETWORK + HT_BO_NETWORK, ]) # SPICE lossless image compression options @@ -1326,6 +1357,8 @@ CV_ENODEOOBPATH = \ (CV_TNODE, "ENODEOOBPATH", "Invalid Out Of Band path") CV_ENODEUSERSCRIPTS = \ (CV_TNODE, "ENODEUSERSCRIPTS", "User scripts not present or not executable") +CV_ENODEFILESTORAGEPATHS = \ + (CV_TNODE, "ENODEFILESTORAGEPATHS", "Detected bad file storage paths") CV_ALL_ECODES = frozenset([ CV_ECLUSTERCFG, @@ -1359,6 +1392,7 @@ CV_ALL_ECODES = frozenset([ CV_ENODETIME, CV_ENODEOOBPATH, CV_ENODEUSERSCRIPTS, + CV_ENODEFILESTORAGEPATHS, ]) CV_ALL_ECODES_STRINGS = frozenset(estr for (_, estr, _) in CV_ALL_ECODES) @@ -1385,6 +1419,7 @@ 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" @@ -1455,6 +1490,7 @@ VALID_IALLOCATOR_MODES = frozenset([ IALLOCATOR_MODE_MULTI_ALLOC, ]) IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH +DEFAULT_IALLOCATOR_SHORTCUT = "." IALLOCATOR_NEVAC_PRI = "primary-only" IALLOCATOR_NEVAC_SEC = "secondary-only" @@ -1493,17 +1529,19 @@ JOB_STATUS_RUNNING = "running" JOB_STATUS_CANCELED = "canceled" JOB_STATUS_SUCCESS = "success" JOB_STATUS_ERROR = "error" +JOBS_PENDING = frozenset([ + JOB_STATUS_QUEUED, + JOB_STATUS_WAITING, + JOB_STATUS_CANCELING, + ]) JOBS_FINALIZED = frozenset([ JOB_STATUS_CANCELED, JOB_STATUS_SUCCESS, JOB_STATUS_ERROR, ]) JOB_STATUS_ALL = frozenset([ - JOB_STATUS_QUEUED, - JOB_STATUS_WAITING, - JOB_STATUS_CANCELING, JOB_STATUS_RUNNING, - ]) | JOBS_FINALIZED + ]) | JOBS_PENDING | JOBS_FINALIZED # OpCode status # not yet finalized @@ -1518,7 +1556,7 @@ OP_STATUS_ERROR = "error" OPS_FINALIZED = frozenset([ OP_STATUS_CANCELED, OP_STATUS_SUCCESS, - OP_STATUS_ERROR + OP_STATUS_ERROR, ]) # OpCode priority @@ -1581,6 +1619,7 @@ QR_GROUP = "group" QR_OS = "os" QR_JOB = "job" QR_EXPORT = "export" +QR_NETWORK = "network" #: List of resources which can be queried using L{opcodes.OpQuery} QR_VIA_OP = frozenset([ @@ -1590,6 +1629,7 @@ QR_VIA_OP = frozenset([ QR_GROUP, QR_OS, QR_EXPORT, + QR_NETWORK, ]) #: List of resources which can be queried using Local UniX Interface @@ -1681,6 +1721,7 @@ SS_HYPERVISOR_LIST = "hypervisor_list" SS_MAINTAIN_NODE_HEALTH = "maintain_node_health" SS_UID_POOL = "uid_pool" SS_NODEGROUPS = "nodegroups" +SS_NETWORKS = "networks" SS_FILE_PERMS = 0444 @@ -1701,6 +1742,8 @@ HVC_DEFAULTS = { HV_BLOCKDEV_PREFIX: "sd", HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED, HV_CPU_MASK: CPU_PINNING_ALL, + HV_CPU_CAP: 0, + HV_CPU_WEIGHT: 256, }, HT_XEN_HVM: { HV_BOOT_ORDER: "cd", @@ -1720,6 +1763,8 @@ HVC_DEFAULTS = { HV_PASSTHROUGH: "", HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED, HV_CPU_MASK: CPU_PINNING_ALL, + HV_CPU_CAP: 0, + HV_CPU_WEIGHT: 256, }, HT_KVM: { HV_KERNEL_PATH: KVM_KERNEL, @@ -2033,5 +2078,27 @@ IALLOC_HAIL = "hail" FAKE_OP_MASTER_TURNUP = "OP_CLUSTER_IP_TURNUP" FAKE_OP_MASTER_TURNDOWN = "OP_CLUSTER_IP_TURNDOWN" +# SSH key types +SSHK_RSA = "rsa" +SSHK_DSA = "dsa" +SSHK_ALL = frozenset([SSHK_RSA, SSHK_DSA]) + +# SSH authorized key types +SSHAK_RSA = "ssh-rsa" +SSHAK_DSS = "ssh-dss" +SSHAK_ALL = frozenset([SSHAK_RSA, SSHAK_DSS]) + +# SSH setup +SSHS_CLUSTER_NAME = "cluster_name" +SSHS_SSH_HOST_KEY = "ssh_host_key" +SSHS_SSH_ROOT_KEY = "ssh_root_key" +SSHS_NODE_DAEMON_CERTIFICATE = "node_daemon_certificate" + +#: Key files for SSH daemon +SSH_DAEMON_KEYFILES = { + SSHK_RSA: (pathutils.SSH_HOST_RSA_PRIV, pathutils.SSH_HOST_RSA_PUB), + SSHK_DSA: (pathutils.SSH_HOST_DSA_PRIV, pathutils.SSH_HOST_DSA_PUB), + } + # Do not re-export imported modules del re, _vcsversion, _autoconf, socket, pathutils