X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/6e9814a104a6272dabd811b2c241e482817e7ad7..e78667fef2e28294e2ccb954b3bb90815cff016a:/lib/constants.py diff --git a/lib/constants.py b/lib/constants.py index f5ad7f1..64669cc 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -472,7 +472,25 @@ 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" @@ -611,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 @@ -843,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, @@ -858,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, @@ -865,6 +896,7 @@ DSS_PARAMETER_TYPES = { } DSS_PARAMETERS = frozenset(DSS_PARAMETER_TYPES.keys()) +DS_VALID_TYPES = frozenset([LD_LV]) # Backend parameter names BE_MEMORY = "memory" # deprecated and replaced by max and min mem @@ -872,12 +904,14 @@ BE_MAXMEM = "maxmem" BE_MINMEM = "minmem" BE_VCPUS = "vcpus" BE_AUTO_BALANCE = "auto_balance" +BE_ALWAYS_FAILOVER = "always_failover" BES_PARAMETER_TYPES = { 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 = { @@ -887,6 +921,33 @@ BES_PARAMETER_COMPAT.update(BES_PARAMETER_TYPES) BES_PARAMETERS = frozenset(BES_PARAMETER_TYPES.keys()) +# instance specs +ISPEC_MEM_SIZE = "memory-size" +ISPEC_CPU_COUNT = "cpu-count" +ISPEC_DISK_COUNT = "disk-count" +ISPEC_DISK_SIZE = "disk-size" +ISPEC_NIC_COUNT = "nic-count" + +ISPECS_PARAMETER_TYPES = { + ISPEC_MEM_SIZE: VTYPE_INT, + ISPEC_CPU_COUNT: VTYPE_INT, + ISPEC_DISK_COUNT: VTYPE_INT, + ISPEC_DISK_SIZE: VTYPE_INT, + ISPEC_NIC_COUNT: VTYPE_INT, + } + +ISPECS_PARAMETERS = frozenset(ISPECS_PARAMETER_TYPES.keys()) + +ISPECS_MIN = "min" +ISPECS_MAX = "max" +ISPECS_STD = "std" + +IPOLICY_PARAMETERS = frozenset([ + ISPECS_MIN, + ISPECS_MAX, + ISPECS_STD, + ]) + # Node parameter names ND_OOB_PROGRAM = "oob_program" @@ -897,16 +958,69 @@ NDS_PARAMETER_TYPES = { NDS_PARAMETERS = frozenset(NDS_PARAMETER_TYPES.keys()) # Logical Disks parameters -RESYNC_RATE = "resync-rate" +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" +LDP_DYNAMIC_RESYNC = "dynamic-resync" +LDP_PLAN_AHEAD = "c-plan-ahead" +LDP_FILL_TARGET = "c-fill-target" +LDP_DELAY_TARGET = "c-delay-target" +LDP_MAX_RATE = "c-max-rate" +LDP_MIN_RATE = "c-min-rate" DISK_LD_TYPES = { - RESYNC_RATE: VTYPE_INT, + 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, + LDP_DYNAMIC_RESYNC: VTYPE_BOOL, + LDP_PLAN_AHEAD: VTYPE_INT, + LDP_FILL_TARGET: VTYPE_INT, + LDP_DELAY_TARGET: VTYPE_INT, + LDP_MAX_RATE: VTYPE_INT, + LDP_MIN_RATE: VTYPE_INT, } DISK_LD_PARAMETERS = frozenset(DISK_LD_TYPES.keys()) -# Disk template parameters +# Disk template parameters (can be set/changed by the user via gnt-cluster and +# gnt-group) 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" +DRBD_DYNAMIC_RESYNC = "dynamic-resync" +DRBD_PLAN_AHEAD = "c-plan-ahead" +DRBD_FILL_TARGET = "c-fill-target" +DRBD_DELAY_TARGET = "c-delay-target" +DRBD_MAX_RATE = "c-max-rate" +DRBD_MIN_RATE = "c-min-rate" +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, + DRBD_DYNAMIC_RESYNC: VTYPE_BOOL, + DRBD_PLAN_AHEAD: VTYPE_INT, + DRBD_FILL_TARGET: VTYPE_INT, + DRBD_DELAY_TARGET: VTYPE_INT, + DRBD_MAX_RATE: VTYPE_INT, + DRBD_MIN_RATE: VTYPE_INT, + LV_STRIPES: VTYPE_INT, } DISK_DT_PARAMETERS = frozenset(DISK_DT_TYPES.keys()) @@ -1187,6 +1301,9 @@ CV_EINSTANCEWRONGNODE = \ CV_EINSTANCESPLITGROUPS = \ (CV_TINSTANCE, "EINSTANCESPLITGROUPS", "Instance with primary and secondary nodes in different groups") +CV_EINSTANCEPOLICY = \ + (CV_TINSTANCE, "EINSTANCEPOLICY", + "Instance does not meet policy") CV_ENODEDRBD = \ (CV_TNODE, "ENODEDRBD", "Error parsing the DRBD status file") CV_ENODEDRBDHELPER = \ @@ -1240,6 +1357,7 @@ CV_ALL_ECODES = frozenset([ CV_EINSTANCEFAULTYDISK, CV_EINSTANCEWRONGNODE, CV_EINSTANCESPLITGROUPS, + CV_EINSTANCEPOLICY, CV_ENODEDRBD, CV_ENODEDRBDHELPER, CV_ENODEFILECHECK, @@ -1667,6 +1785,7 @@ BEC_DEFAULTS = { BE_MAXMEM: 128, BE_VCPUS: 1, BE_AUTO_BALANCE: True, + BE_ALWAYS_FAILOVER: False, } NDC_DEFAULTS = { @@ -1675,9 +1794,27 @@ NDC_DEFAULTS = { DISK_LD_DEFAULTS = { LD_DRBD8: { - RESYNC_RATE: CLASSIC_DRBD_SYNC_SPEED, + 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: "", + LDP_DYNAMIC_RESYNC: False, + + # The default values for the DRBD dynamic resync speed algorithm are taken + # from the drbsetup 8.3.11 man page, except for c-plan-ahead (that we + # don't need to set to 0, because we have a separate option to enable it) + # and for c-max-rate, that we cap to the default value for the static resync + # rate. + LDP_PLAN_AHEAD: 20, # ds + LDP_FILL_TARGET: 0, # sectors + LDP_DELAY_TARGET: 1, # ds + LDP_MAX_RATE: CLASSIC_DRBD_SYNC_SPEED, # KiB/s + LDP_MIN_RATE: 4 * 1024, # KiB/s }, LD_LV: { + LDP_STRIPES: _autoconf.LVM_STRIPECOUNT }, LD_FILE: { }, @@ -1685,11 +1822,29 @@ DISK_LD_DEFAULTS = { }, } +# readability shortcuts +_LV_DEFAULTS = DISK_LD_DEFAULTS[LD_LV] +_DRBD_DEFAULTS = DISK_LD_DEFAULTS[LD_DRBD8] + DISK_DT_DEFAULTS = { DT_PLAIN: { + LV_STRIPES: DISK_LD_DEFAULTS[LD_LV][LDP_STRIPES], }, DT_DRBD8: { - DRBD_RESYNC_RATE: DISK_LD_DEFAULTS[LD_DRBD8][RESYNC_RATE] + DRBD_RESYNC_RATE: _DRBD_DEFAULTS[LDP_RESYNC_RATE], + DRBD_DATA_STRIPES: _LV_DEFAULTS[LDP_STRIPES], + DRBD_META_STRIPES: _LV_DEFAULTS[LDP_STRIPES], + DRBD_DISK_BARRIERS: _DRBD_DEFAULTS[LDP_BARRIERS], + DRBD_META_BARRIERS: _DRBD_DEFAULTS[LDP_NO_META_FLUSH], + DRBD_DEFAULT_METAVG: _DRBD_DEFAULTS[LDP_DEFAULT_METAVG], + DRBD_DISK_CUSTOM: _DRBD_DEFAULTS[LDP_DISK_CUSTOM], + DRBD_NET_CUSTOM: _DRBD_DEFAULTS[LDP_NET_CUSTOM], + DRBD_DYNAMIC_RESYNC: _DRBD_DEFAULTS[LDP_DYNAMIC_RESYNC], + DRBD_PLAN_AHEAD: _DRBD_DEFAULTS[LDP_PLAN_AHEAD], + DRBD_FILL_TARGET: _DRBD_DEFAULTS[LDP_FILL_TARGET], + DRBD_DELAY_TARGET: _DRBD_DEFAULTS[LDP_DELAY_TARGET], + DRBD_MAX_RATE: _DRBD_DEFAULTS[LDP_MAX_RATE], + DRBD_MIN_RATE: _DRBD_DEFAULTS[LDP_MIN_RATE], }, DT_DISKLESS: { }, @@ -1701,11 +1856,38 @@ DISK_DT_DEFAULTS = { }, } +# we don't want to export the shortcuts +del _LV_DEFAULTS, _DRBD_DEFAULTS + NICC_DEFAULTS = { NIC_MODE: NIC_MODE_BRIDGED, NIC_LINK: DEFAULT_BRIDGE, } +IPOLICY_DEFAULTS = { + ISPECS_MIN: { + ISPEC_MEM_SIZE: 128, + ISPEC_CPU_COUNT: 1, + ISPEC_DISK_COUNT: 1, + ISPEC_DISK_SIZE: 1024, + ISPEC_NIC_COUNT: 1, + }, + ISPECS_MAX: { + ISPEC_MEM_SIZE: 128, + ISPEC_CPU_COUNT: 1, + ISPEC_DISK_COUNT: 1, + ISPEC_DISK_SIZE: 1024, + ISPEC_NIC_COUNT: 1, + }, + ISPECS_STD: { + ISPEC_MEM_SIZE: 128, + ISPEC_CPU_COUNT: 1, + ISPEC_DISK_COUNT: 1, + ISPEC_DISK_SIZE: 1024, + ISPEC_NIC_COUNT: 1, + } + } + MASTER_POOL_SIZE_DEFAULT = 10 CONFD_PROTOCOL_VERSION = 1