X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/918eb80bea02013b7a474e3ef0e9d5fb4a3ac8ea..363c0106cb4616658f313fecc65ca47132cb3882:/lib/constants.py diff --git a/lib/constants.py b/lib/constants.py index 27a993c..16931ac 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -922,30 +922,30 @@ 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" +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 = { - 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, + 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()) -MIN_ISPECS = "min" -MAX_ISPECS = "max" -STD_ISPECS = "std" +ISPECS_MIN = "min" +ISPECS_MAX = "max" +ISPECS_STD = "std" IPOLICY_PARAMETERS = frozenset([ - MIN_ISPECS, - MAX_ISPECS, - STD_ISPECS + ISPECS_MIN, + ISPECS_MAX, + ISPECS_STD, ]) # Node parameter names @@ -965,6 +965,12 @@ 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 = { LDP_RESYNC_RATE: VTYPE_INT, LDP_STRIPES: VTYPE_INT, @@ -973,10 +979,17 @@ DISK_LD_TYPES = { 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" @@ -985,6 +998,12 @@ 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, @@ -995,6 +1014,12 @@ DISK_DT_TYPES = { 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, } @@ -1276,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 = \ @@ -1329,6 +1357,7 @@ CV_ALL_ECODES = frozenset([ CV_EINSTANCEFAULTYDISK, CV_EINSTANCEWRONGNODE, CV_EINSTANCESPLITGROUPS, + CV_EINSTANCEPOLICY, CV_ENODEDRBD, CV_ENODEDRBDHELPER, CV_ENODEFILECHECK, @@ -1771,6 +1800,18 @@ DISK_LD_DEFAULTS = { 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 @@ -1781,19 +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][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], + 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: { }, @@ -1805,32 +1856,35 @@ 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 = { - MIN_ISPECS: { - MEM_SIZE_SPEC: 128, - CPU_COUNT_SPEC: 1, - DISK_COUNT_SPEC: 1, - DISK_SIZE_SPEC: 1024, - NIC_COUNT_SPEC: 1, + ISPECS_MIN: { + ISPEC_MEM_SIZE: 128, + ISPEC_CPU_COUNT: 1, + ISPEC_DISK_COUNT: 1, + ISPEC_DISK_SIZE: 1024, + ISPEC_NIC_COUNT: 1, }, - MAX_ISPECS: { - MEM_SIZE_SPEC: 128, - CPU_COUNT_SPEC: 1, - DISK_COUNT_SPEC: 1, - DISK_SIZE_SPEC: 1024, - NIC_COUNT_SPEC: 1, + ISPECS_MAX: { + ISPEC_MEM_SIZE: 32768, + ISPEC_CPU_COUNT: 8, + ISPEC_DISK_COUNT: MAX_DISKS, + ISPEC_DISK_SIZE: 1024 * 1024, + ISPEC_NIC_COUNT: MAX_NICS, }, - STD_ISPECS: { - MEM_SIZE_SPEC: 128, - CPU_COUNT_SPEC: 1, - DISK_COUNT_SPEC: 1, - DISK_SIZE_SPEC: 1024, - NIC_COUNT_SPEC: 1, + ISPECS_STD: { + ISPEC_MEM_SIZE: 128, + ISPEC_CPU_COUNT: 1, + ISPEC_DISK_COUNT: 1, + ISPEC_DISK_SIZE: 1024, + ISPEC_NIC_COUNT: 1, } }