X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/5b49ed09b6801466abdd52440b0c94a636c62f8c..3201717461bc6e55f2deab7ad426ebfbb7b1e943:/lib/constants.py diff --git a/lib/constants.py b/lib/constants.py index aad5970..27a993c 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -180,6 +180,8 @@ ENABLE_SHARED_FILE_STORAGE = _autoconf.ENABLE_SHARED_FILE_STORAGE SYSCONFDIR = _autoconf.SYSCONFDIR TOOLSDIR = _autoconf.TOOLSDIR CONF_DIR = SYSCONFDIR + "/ganeti" +USER_SCRIPTS_DIR = CONF_DIR + "/scripts" +ENABLE_CONFD = _autoconf.ENABLE_CONFD #: Lock file for watcher, locked in shared mode by watcher; lock in exclusive # mode to block watcher (see L{cli._RunWhileClusterStoppedHelper.Call} @@ -195,6 +197,10 @@ WATCHER_GROUP_INSTANCE_STATUS_FILE = DATA_DIR + "/watcher.%s.instance-status" #: File containing Unix timestamp until which watcher should be paused WATCHER_PAUSEFILE = DATA_DIR + "/watcher.pause" +# Master IP address setup scripts paths (default and user-provided) +DEFAULT_MASTER_SETUP_SCRIPT = TOOLSDIR + "/master-ip-setup" +EXTERNAL_MASTER_SETUP_SCRIPT = USER_SCRIPTS_DIR + "/master-ip-setup" + ALL_CERT_FILES = frozenset([ NODED_CERT_FILE, RAPI_CERT_FILE, @@ -360,6 +366,7 @@ HOOKS_PHASE_POST = "post" HOOKS_NAME_CFGUPDATE = "config-update" HOOKS_NAME_WATCHER = "watcher" HOOKS_VERSION = 2 +HOOKS_PATH = "/sbin:/bin:/usr/sbin:/usr/bin" # hooks subject type (what object type does the LU deal with) HTYPE_CLUSTER = "CLUSTER" @@ -453,12 +460,37 @@ LD_LV = "lvm" LD_DRBD8 = "drbd8" LD_FILE = "file" LD_BLOCKDEV = "blockdev" +LOGICAL_DISK_TYPES = frozenset([ + LD_LV, + LD_DRBD8, + LD_FILE, + LD_BLOCKDEV, + ]) + LDS_BLOCK = frozenset([LD_LV, LD_DRBD8, LD_BLOCKDEV]) # drbd constants DRBD_HMAC_ALG = "md5" DRBD_NET_PROTOCOL = "C" -DRBD_BARRIERS = _autoconf.DRBD_BARRIERS + +# drbd barrier types +DRBD_B_NONE = "n" +DRBD_B_DISK_BARRIERS = "b" +DRBD_B_DISK_DRAIN = "d" +DRBD_B_DISK_FLUSH = "f" + +# Valid barrier combinations: "n" or any non-null subset of "bfd" +DRBD_VALID_BARRIER_OPT = frozenset([ + frozenset([DRBD_B_NONE]), + frozenset([DRBD_B_DISK_BARRIERS]), + frozenset([DRBD_B_DISK_DRAIN]), + frozenset([DRBD_B_DISK_FLUSH]), + frozenset([DRBD_B_DISK_DRAIN, DRBD_B_DISK_FLUSH]), + frozenset([DRBD_B_DISK_DRAIN, DRBD_B_DISK_FLUSH]), + frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_DRAIN]), + frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_FLUSH]), + frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_FLUSH, DRBD_B_DISK_DRAIN]), + ]) # file backend driver FD_LOOP = "loop" @@ -583,7 +615,7 @@ MAX_TAGS_PER_OBJ = 4096 # others DEFAULT_BRIDGE = "xen-br0" -SYNC_SPEED = 60 * 1024 +CLASSIC_DRBD_SYNC_SPEED = 60 * 1024 # 60 MiB, expressed in KiB IP4_ADDRESS_LOCALHOST = "127.0.0.1" IP4_ADDRESS_ANY = "0.0.0.0" IP6_ADDRESS_LOCALHOST = "::1" @@ -597,7 +629,6 @@ DEFAULT_VG = "xenvg" DEFAULT_DRBD_HELPER = "/bin/true" MIN_VG_SIZE = 20480 DEFAULT_MAC_PREFIX = "aa:00:00" -LVM_STRIPECOUNT = _autoconf.LVM_STRIPECOUNT # default maximum instance wait time, in seconds. DEFAULT_SHUTDOWN_TIMEOUT = 120 NODE_MAX_CLOCK_SKEW = 150 @@ -829,6 +860,14 @@ HVST_MEMORY_HV = "mem_hv" HVST_CPU_TOTAL = "cpu_total" HVST_CPU_NODE = "cpu_node" +HVST_DEFAULTS = { + HVST_MEMORY_TOTAL: 0, + HVST_MEMORY_NODE: 0, + HVST_MEMORY_HV: 0, + HVST_CPU_TOTAL: 1, + HVST_CPU_NODE: 1, + } + HVSTS_PARAMETER_TYPES = { HVST_MEMORY_TOTAL: VTYPE_INT, HVST_MEMORY_NODE: VTYPE_INT, @@ -844,6 +883,12 @@ DS_DISK_TOTAL = "disk_total" DS_DISK_RESERVED = "disk_reserved" DS_DISK_OVERHEAD = "disk_overhead" +DS_DEFAULTS = { + DS_DISK_TOTAL: 0, + DS_DISK_RESERVED: 0, + DS_DISK_OVERHEAD: 0, + } + DSS_PARAMETER_TYPES = { DS_DISK_TOTAL: VTYPE_INT, DS_DISK_RESERVED: VTYPE_INT, @@ -851,29 +896,110 @@ DSS_PARAMETER_TYPES = { } DSS_PARAMETERS = frozenset(DSS_PARAMETER_TYPES.keys()) +DS_VALID_TYPES = frozenset([LD_LV]) # Backend parameter names -BE_MEMORY = "memory" +BE_MEMORY = "memory" # deprecated and replaced by max and min mem +BE_MAXMEM = "maxmem" +BE_MINMEM = "minmem" BE_VCPUS = "vcpus" BE_AUTO_BALANCE = "auto_balance" +BE_ALWAYS_FAILOVER = "always_failover" BES_PARAMETER_TYPES = { - BE_MEMORY: VTYPE_SIZE, - BE_VCPUS: VTYPE_INT, - BE_AUTO_BALANCE: VTYPE_BOOL, - } + BE_MAXMEM: VTYPE_SIZE, + BE_MINMEM: VTYPE_SIZE, + BE_VCPUS: VTYPE_INT, + BE_AUTO_BALANCE: VTYPE_BOOL, + BE_ALWAYS_FAILOVER: VTYPE_BOOL, + } + +BES_PARAMETER_COMPAT = { + BE_MEMORY: VTYPE_SIZE, + } +BES_PARAMETER_COMPAT.update(BES_PARAMETER_TYPES) BES_PARAMETERS = frozenset(BES_PARAMETER_TYPES.keys()) +# instance specs +MEM_SIZE_SPEC = "memory-size" +CPU_COUNT_SPEC = "cpu-count" +DISK_COUNT_SPEC = "disk-count" +DISK_SIZE_SPEC = "disk-size" +NIC_COUNT_SPEC = "nic-count" + +ISPECS_PARAMETER_TYPES = { + MEM_SIZE_SPEC: VTYPE_INT, + CPU_COUNT_SPEC: VTYPE_INT, + DISK_COUNT_SPEC: VTYPE_INT, + DISK_SIZE_SPEC: VTYPE_INT, + NIC_COUNT_SPEC: VTYPE_INT, + } + +ISPECS_PARAMETERS = frozenset(ISPECS_PARAMETER_TYPES.keys()) + +MIN_ISPECS = "min" +MAX_ISPECS = "max" +STD_ISPECS = "std" + +IPOLICY_PARAMETERS = frozenset([ + MIN_ISPECS, + MAX_ISPECS, + STD_ISPECS + ]) + # Node parameter names ND_OOB_PROGRAM = "oob_program" NDS_PARAMETER_TYPES = { - ND_OOB_PROGRAM: VTYPE_MAYBE_STRING, - } + ND_OOB_PROGRAM: VTYPE_MAYBE_STRING, + } NDS_PARAMETERS = frozenset(NDS_PARAMETER_TYPES.keys()) +# Logical Disks parameters +LDP_RESYNC_RATE = "resync-rate" +LDP_STRIPES = "stripes" +LDP_BARRIERS = "disabled-barriers" +LDP_NO_META_FLUSH = "disable-meta-flush" +LDP_DEFAULT_METAVG = "default-metavg" +LDP_DISK_CUSTOM = "disk-custom" +LDP_NET_CUSTOM = "net-custom" +DISK_LD_TYPES = { + LDP_RESYNC_RATE: VTYPE_INT, + LDP_STRIPES: VTYPE_INT, + LDP_BARRIERS: VTYPE_STRING, + LDP_NO_META_FLUSH: VTYPE_BOOL, + LDP_DEFAULT_METAVG: VTYPE_STRING, + LDP_DISK_CUSTOM: VTYPE_STRING, + LDP_NET_CUSTOM: VTYPE_STRING, + } +DISK_LD_PARAMETERS = frozenset(DISK_LD_TYPES.keys()) + +# Disk template parameters +DRBD_RESYNC_RATE = "resync-rate" +DRBD_DATA_STRIPES = "data-stripes" +DRBD_META_STRIPES = "meta-stripes" +DRBD_DISK_BARRIERS = "disk-barriers" +DRBD_META_BARRIERS = "meta-barriers" +DRBD_DEFAULT_METAVG = "metavg" +DRBD_DISK_CUSTOM = "disk-custom" +DRBD_NET_CUSTOM = "net-custom" +LV_STRIPES = "stripes" +DISK_DT_TYPES = { + DRBD_RESYNC_RATE: VTYPE_INT, + DRBD_DATA_STRIPES: VTYPE_INT, + DRBD_META_STRIPES: VTYPE_INT, + DRBD_DISK_BARRIERS: VTYPE_STRING, + DRBD_META_BARRIERS: VTYPE_BOOL, + DRBD_DEFAULT_METAVG: VTYPE_STRING, + DRBD_DISK_CUSTOM: VTYPE_STRING, + DRBD_NET_CUSTOM: VTYPE_STRING, + LV_STRIPES: VTYPE_INT, + } + +DISK_DT_PARAMETERS = frozenset(DISK_DT_TYPES.keys()) + # OOB supported commands OOB_POWER_ON = "power-on" OOB_POWER_OFF = "power-off" @@ -919,9 +1045,9 @@ NIC_MODE_ROUTED = "routed" NIC_VALID_MODES = frozenset([NIC_MODE_BRIDGED, NIC_MODE_ROUTED]) NICS_PARAMETER_TYPES = { - NIC_MODE: VTYPE_STRING, - NIC_LINK: VTYPE_STRING, - } + NIC_MODE: VTYPE_STRING, + NIC_LINK: VTYPE_STRING, + } NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys()) @@ -1187,6 +1313,8 @@ CV_ENODETIME = \ (CV_TNODE, "ENODETIME", "Node returned invalid time") CV_ENODEOOBPATH = \ (CV_TNODE, "ENODEOOBPATH", "Invalid Out Of Band path") +CV_ENODEUSERSCRIPTS = \ + (CV_TNODE, "ENODEUSERSCRIPTS", "User scripts not present or not executable") CV_ALL_ECODES = frozenset([ CV_ECLUSTERCFG, @@ -1218,6 +1346,7 @@ CV_ALL_ECODES = frozenset([ CV_ENODESETUP, CV_ENODETIME, CV_ENODEOOBPATH, + CV_ENODEUSERSCRIPTS, ]) CV_ALL_ECODES_STRINGS = frozenset(estr for (_, estr, _) in CV_ALL_ECODES) @@ -1243,10 +1372,12 @@ NV_VGLIST = "vglist" NV_VMNODES = "vmnodes" NV_OOB_PATHS = "oob-paths" NV_BRIDGES = "bridges" +NV_USERSCRIPTS = "user-scripts" # Instance status INSTST_RUNNING = "running" INSTST_ADMINDOWN = "ADMIN_down" +INSTST_ADMINOFFLINE = "ADMIN_offline" INSTST_NODEOFFLINE = "ERROR_nodeoffline" INSTST_NODEDOWN = "ERROR_nodedown" INSTST_WRONGNODE = "ERROR_wrongnode" @@ -1255,6 +1386,7 @@ INSTST_ERRORDOWN = "ERROR_down" INSTST_ALL = frozenset([ INSTST_RUNNING, INSTST_ADMINDOWN, + INSTST_ADMINOFFLINE, INSTST_NODEOFFLINE, INSTST_NODEDOWN, INSTST_WRONGNODE, @@ -1262,6 +1394,16 @@ INSTST_ALL = frozenset([ INSTST_ERRORDOWN, ]) +# Admin states +ADMINST_UP = "up" +ADMINST_DOWN = "down" +ADMINST_OFFLINE = "offline" +ADMINST_ALL = frozenset([ + ADMINST_UP, + ADMINST_DOWN, + ADMINST_OFFLINE, + ]) + # Node roles NR_REGULAR = "R" NR_MASTER = "M" @@ -1309,6 +1451,16 @@ IALLOCATOR_NEVAC_MODES = frozenset([ IALLOCATOR_NEVAC_ALL, ]) +# Node evacuation +NODE_EVAC_PRI = "primary-only" +NODE_EVAC_SEC = "secondary-only" +NODE_EVAC_ALL = "all" +NODE_EVAC_MODES = frozenset([ + NODE_EVAC_PRI, + NODE_EVAC_SEC, + NODE_EVAC_ALL, + ]) + # Job queue JOB_QUEUE_VERSION = 1 JOB_QUEUE_LOCK_FILE = QUEUE_DIR + "/lock" @@ -1600,20 +1752,88 @@ HVC_GLOBALS = frozenset([ ]) BEC_DEFAULTS = { - BE_MEMORY: 128, + BE_MINMEM: 128, + BE_MAXMEM: 128, BE_VCPUS: 1, BE_AUTO_BALANCE: True, + BE_ALWAYS_FAILOVER: False, } NDC_DEFAULTS = { ND_OOB_PROGRAM: None, } +DISK_LD_DEFAULTS = { + LD_DRBD8: { + LDP_RESYNC_RATE: CLASSIC_DRBD_SYNC_SPEED, + LDP_BARRIERS: _autoconf.DRBD_BARRIERS, + LDP_NO_META_FLUSH: _autoconf.DRBD_NO_META_FLUSH, + LDP_DEFAULT_METAVG: DEFAULT_VG, + LDP_DISK_CUSTOM: "", + LDP_NET_CUSTOM: "", + }, + LD_LV: { + LDP_STRIPES: _autoconf.LVM_STRIPECOUNT + }, + LD_FILE: { + }, + LD_BLOCKDEV: { + }, + } + +DISK_DT_DEFAULTS = { + DT_PLAIN: { + LV_STRIPES: DISK_LD_DEFAULTS[LD_LV][LDP_STRIPES], + }, + DT_DRBD8: { + DRBD_RESYNC_RATE: DISK_LD_DEFAULTS[LD_DRBD8][LDP_RESYNC_RATE], + DRBD_DATA_STRIPES: DISK_LD_DEFAULTS[LD_LV][LDP_STRIPES], + DRBD_META_STRIPES: DISK_LD_DEFAULTS[LD_LV][LDP_STRIPES], + DRBD_DISK_BARRIERS: DISK_LD_DEFAULTS[LD_DRBD8][LDP_BARRIERS], + DRBD_META_BARRIERS: DISK_LD_DEFAULTS[LD_DRBD8][LDP_NO_META_FLUSH], + DRBD_DEFAULT_METAVG: DISK_LD_DEFAULTS[LD_DRBD8][LDP_DEFAULT_METAVG], + DRBD_DISK_CUSTOM: DISK_LD_DEFAULTS[LD_DRBD8][LDP_DISK_CUSTOM], + DRBD_NET_CUSTOM: DISK_LD_DEFAULTS[LD_DRBD8][LDP_NET_CUSTOM], + }, + DT_DISKLESS: { + }, + DT_FILE: { + }, + DT_SHARED_FILE: { + }, + DT_BLOCK: { + }, + } + NICC_DEFAULTS = { NIC_MODE: NIC_MODE_BRIDGED, NIC_LINK: DEFAULT_BRIDGE, } +IPOLICY_DEFAULTS = { + MIN_ISPECS: { + MEM_SIZE_SPEC: 128, + CPU_COUNT_SPEC: 1, + DISK_COUNT_SPEC: 1, + DISK_SIZE_SPEC: 1024, + NIC_COUNT_SPEC: 1, + }, + MAX_ISPECS: { + MEM_SIZE_SPEC: 128, + CPU_COUNT_SPEC: 1, + DISK_COUNT_SPEC: 1, + DISK_SIZE_SPEC: 1024, + NIC_COUNT_SPEC: 1, + }, + STD_ISPECS: { + MEM_SIZE_SPEC: 128, + CPU_COUNT_SPEC: 1, + DISK_COUNT_SPEC: 1, + DISK_SIZE_SPEC: 1024, + NIC_COUNT_SPEC: 1, + } + } + MASTER_POOL_SIZE_DEFAULT = 10 CONFD_PROTOCOL_VERSION = 1