X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/1e28e3b8f156055fab703d33690999d463777d85..9a8ae794db0f1aded3bb0e86892fa248b624b9d2:/lib/constants.py diff --git a/lib/constants.py b/lib/constants.py index 63c4880..973914b 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -120,6 +120,7 @@ CRYPTO_KEYS_DIR = RUN_GANETI_DIR + "/crypto" CRYPTO_KEYS_DIR_MODE = SECURE_DIR_MODE IMPORT_EXPORT_DIR = RUN_GANETI_DIR + "/import-export" IMPORT_EXPORT_DIR_MODE = 0755 +ADOPTABLE_BLOCKDEV_ROOT = "/dev/disk/" # keep RUN_GANETI_DIR first here, to make sure all get created when the node # daemon is started (this takes care of RUN_DIR being tmpfs) SUB_RUN_DIRS = [ RUN_GANETI_DIR, BDEV_CACHE_DIR, DISK_LINKS_DIR ] @@ -144,7 +145,9 @@ SETUP_SSH = _autoconf.TOOLSDIR + "/setup-ssh" KVM_IFUP = _autoconf.PKGLIBDIR + "/kvm-ifup" ETC_HOSTS = "/etc/hosts" DEFAULT_FILE_STORAGE_DIR = _autoconf.FILE_STORAGE_DIR +DEFAULT_SHARED_FILE_STORAGE_DIR = _autoconf.SHARED_FILE_STORAGE_DIR ENABLE_FILE_STORAGE = _autoconf.ENABLE_FILE_STORAGE +ENABLE_SHARED_FILE_STORAGE = _autoconf.ENABLE_SHARED_FILE_STORAGE SYSCONFDIR = _autoconf.SYSCONFDIR TOOLSDIR = _autoconf.TOOLSDIR CONF_DIR = SYSCONFDIR + "/ganeti" @@ -200,7 +203,7 @@ DEV_CONSOLE = "/dev/console" PROC_MOUNTS = "/proc/mounts" -# luxi related constants +# Local UniX Interface related constants LUXI_EOM = "\3" LUXI_VERSION = CONFIG_VERSION @@ -360,24 +363,37 @@ DT_DISKLESS = "diskless" DT_PLAIN = "plain" DT_DRBD8 = "drbd" DT_FILE = "file" +DT_SHARED_FILE = "sharedfile" +DT_BLOCK = "blockdev" # the set of network-mirrored disk templates -DTS_NET_MIRROR = frozenset([DT_DRBD8]) +DTS_INT_MIRROR = frozenset([DT_DRBD8]) + +# the set of externally-mirrored disk templates (e.g. SAN, NAS) +DTS_EXT_MIRROR = frozenset([DT_SHARED_FILE, DT_BLOCK]) # the set of non-lvm-based disk templates -DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE]) +DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE, DT_SHARED_FILE, DT_BLOCK]) # the set of disk templates which can be grown -DTS_GROWABLE = frozenset([DT_PLAIN, DT_DRBD8, DT_FILE]) +DTS_GROWABLE = frozenset([DT_PLAIN, DT_DRBD8, DT_FILE, DT_SHARED_FILE]) # the set of disk templates that allow adoption -DTS_MAY_ADOPT = frozenset([DT_PLAIN]) +DTS_MAY_ADOPT = frozenset([DT_PLAIN, DT_BLOCK]) + +# the set of disk templates that *must* use adoption +DTS_MUST_ADOPT = frozenset([DT_BLOCK]) + +# the set of disk templates that allow migrations +DTS_MIRRORED = frozenset.union(DTS_INT_MIRROR, DTS_EXT_MIRROR) + # logical disk types LD_LV = "lvm" LD_DRBD8 = "drbd8" LD_FILE = "file" -LDS_BLOCK = frozenset([LD_LV, LD_DRBD8]) +LD_BLOCKDEV = "blockdev" +LDS_BLOCK = frozenset([LD_LV, LD_DRBD8, LD_BLOCKDEV]) # drbd constants DRBD_HMAC_ALG = "md5" @@ -449,8 +465,8 @@ RIE_CONNECT_RETRIES = 10 #: Give child process up to 5 seconds to exit after sending a signal CHILD_LINGER_TIMEOUT = 5.0 -DISK_TEMPLATES = frozenset([DT_DISKLESS, DT_PLAIN, - DT_DRBD8, DT_FILE]) +DISK_TEMPLATES = frozenset([DT_DISKLESS, DT_PLAIN, DT_DRBD8, + DT_FILE, DT_SHARED_FILE, DT_BLOCK]) FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP]) @@ -513,6 +529,9 @@ DISK_TRANSFER_CONNECT_TIMEOUT = 60 # Disk index separator DISK_SEPARATOR = _autoconf.DISK_SEPARATOR +#: Key for job IDs in opcode result +JOB_IDS_KEY = "jobs" + # runparts results (RUNPARTS_SKIP, RUNPARTS_RUN, @@ -651,7 +670,7 @@ HVS_PARAMETER_TYPES = { HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys()) -# BE parameter names +# Backend parameter names BE_MEMORY = "memory" BE_VCPUS = "vcpus" BE_AUTO_BALANCE = "auto_balance" @@ -686,6 +705,7 @@ OOB_COMMANDS = frozenset([OOB_POWER_ON, OOB_POWER_OFF, OOB_POWER_CYCLE, OOB_POWER_STATUS_POWERED = "powered" OOB_TIMEOUT = 60 # 60 seconds +OOB_POWER_DELAY = 2.0 # 2 seconds OOB_STATUS_OK = "OK" OOB_STATUS_WARNING = "WARNING" @@ -702,6 +722,7 @@ OOB_STATUSES = frozenset([ # Instance Parameters Profile PP_DEFAULT = "default" +# NIC_* constants are used inside the ganeti config NIC_MODE = "mode" NIC_LINK = "link" @@ -717,6 +738,7 @@ NICS_PARAMETER_TYPES = { NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys()) +# IDISK_* constants are used in opcodes, to create/change disks IDISK_SIZE = "size" IDISK_MODE = "mode" IDISK_ADOPT = "adopt" @@ -729,13 +751,12 @@ IDISK_PARAMS_TYPES = { } IDISK_PARAMS = frozenset(IDISK_PARAMS_TYPES.keys()) +# INIC_* constants are used in opcodes, to create/change nics INIC_MAC = "mac" INIC_IP = "ip" INIC_MODE = "mode" INIC_LINK = "link" -INIC_BRIDGE = "bridge" INIC_PARAMS_TYPES = { - INIC_BRIDGE: VTYPE_STRING, INIC_IP: VTYPE_MAYBE_STRING, INIC_LINK: VTYPE_STRING, INIC_MAC: VTYPE_STRING, @@ -1009,15 +1030,19 @@ QR_INSTANCE = "instance" QR_NODE = "node" QR_LOCK = "lock" QR_GROUP = "group" +QR_OS = "os" #: List of resources which can be queried using L{opcodes.OpQuery} -QR_OP_QUERY = frozenset([QR_INSTANCE, QR_NODE, QR_GROUP]) +QR_VIA_OP = frozenset([QR_INSTANCE, QR_NODE, QR_GROUP, QR_OS]) -#: List of resources which can be queried using LUXI -QR_OP_LUXI = QR_OP_QUERY.union([ +#: List of resources which can be queried using Local UniX Interface +QR_VIA_LUXI = QR_VIA_OP.union([ QR_LOCK, ]) +#: List of resources which can be queried using RAPI +QR_VIA_RAPI = QR_VIA_LUXI + # Query field types QFT_UNKNOWN = "unknown" QFT_TEXT = "text" @@ -1077,6 +1102,7 @@ MAX_DISKS = 16 SS_CLUSTER_NAME = "cluster_name" SS_CLUSTER_TAGS = "cluster_tags" SS_FILE_STORAGE_DIR = "file_storage_dir" +SS_SHARED_FILE_STORAGE_DIR = "shared_file_storage_dir" SS_MASTER_CANDIDATES = "master_candidates" SS_MASTER_CANDIDATES_IPS = "master_candidates_ips" SS_MASTER_IP = "master_ip" @@ -1300,3 +1326,6 @@ VALID_ALLOC_POLICIES = [ ALLOC_POLICY_LAST_RESORT, ALLOC_POLICY_UNALLOCABLE, ] + +# Temporary external/shared storage parameters +BLOCKDEV_DRIVER_MANUAL = "manual"