X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/43e11798e64a22cb638289809ba9bb97fd761af2..b8291e000231f46d0a4a1b4472b698b84b1a0c0d:/lib/constants.py diff --git a/lib/constants.py b/lib/constants.py index c7aa397..b76863e 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -1,7 +1,7 @@ # # -# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Google Inc. +# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Google Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -22,6 +22,7 @@ """Module holding different constants.""" import re +import socket from ganeti import _autoconf from ganeti import _vcsversion @@ -119,6 +120,7 @@ CPU_PINNING_ALL_XEN = "0-63" # A KVM-specific implementation detail - the following value is used # to set CPU affinity to all processors (#0 through #31), per taskset # man page. +# FIXME: This only works for machines with up to 32 CPU cores CPU_PINNING_ALL_KVM = 0xFFFFFFFF # Wipe @@ -138,19 +140,9 @@ RUN_DIRS_MODE = 0775 SOCKET_DIR = RUN_GANETI_DIR + "/socket" SECURE_DIR_MODE = 0700 SECURE_FILE_MODE = 0600 -SOCKET_DIR_MODE = 0750 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, - ] LOCK_DIR = _autoconf.LOCALSTATEDIR + "/lock" SSCONF_LOCK_FILE = LOCK_DIR + "/ganeti-ssconf.lock" # User-id pool lock directory @@ -234,7 +226,6 @@ DEFAULT_NLD_PORT = DAEMONS_PORTS[NLD][1] FIRST_DRBD_PORT = 11000 LAST_DRBD_PORT = 14999 -MASTER_SCRIPT = "ganeti-master" LOG_DIR = _autoconf.LOCALSTATEDIR + "/log/ganeti/" DAEMONS_LOGFILES = { @@ -276,9 +267,13 @@ EXPORT_CONF_FILE = "config.ini" XEN_BOOTLOADER = _autoconf.XEN_BOOTLOADER XEN_KERNEL = _autoconf.XEN_KERNEL XEN_INITRD = _autoconf.XEN_INITRD -XEN_CMD = "xm" +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 KVM_PATH = _autoconf.KVM_PATH +KVM_KERNEL = _autoconf.KVM_KERNEL SOCAT_PATH = _autoconf.SOCAT_PATH SOCAT_USE_ESCAPE = _autoconf.SOCAT_USE_ESCAPE SOCAT_USE_COMPRESS = _autoconf.SOCAT_USE_COMPRESS @@ -430,18 +425,20 @@ DT_DRBD8 = "drbd" DT_FILE = "file" DT_SHARED_FILE = "sharedfile" DT_BLOCK = "blockdev" +DT_RBD = "rbd" # the set of network-mirrored disk templates 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]) +DTS_EXT_MIRROR = frozenset([DT_SHARED_FILE, DT_BLOCK, DT_RBD]) # the set of non-lvm-based disk templates -DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE, DT_SHARED_FILE, DT_BLOCK]) +DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE, DT_SHARED_FILE, + DT_BLOCK, DT_RBD]) # the set of disk templates which can be grown -DTS_GROWABLE = frozenset([DT_PLAIN, DT_DRBD8, DT_FILE, DT_SHARED_FILE]) +DTS_GROWABLE = frozenset([DT_PLAIN, DT_DRBD8, DT_FILE, DT_SHARED_FILE, DT_RBD]) # the set of disk templates that allow adoption DTS_MAY_ADOPT = frozenset([DT_PLAIN, DT_BLOCK]) @@ -460,19 +457,42 @@ LD_LV = "lvm" LD_DRBD8 = "drbd8" LD_FILE = "file" LD_BLOCKDEV = "blockdev" +LD_RBD = "rbd" LOGICAL_DISK_TYPES = frozenset([ LD_LV, LD_DRBD8, LD_FILE, LD_BLOCKDEV, + LD_RBD, ]) -LDS_BLOCK = frozenset([LD_LV, LD_DRBD8, LD_BLOCKDEV]) +LDS_BLOCK = frozenset([LD_LV, LD_DRBD8, LD_BLOCKDEV, LD_RBD]) # 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]), + ]) + +# rbd tool command +RBD_CMD = "rbd" # file backend driver FD_LOOP = "loop" @@ -506,18 +526,6 @@ EXPORT_MODES = frozenset([ EXPORT_MODE_REMOTE, ]) -# Lock recalculate mode -LOCKS_REPLACE = "replace" -LOCKS_APPEND = "append" - -# Lock timeout (sum) before we should go into blocking acquire (still -# can be reset by priority change); computed as max time (10 hours) -# before we should actually go into blocking acquire given that we -# start from default priority level; in seconds -LOCK_ATTEMPTS_TIMEOUT = 10 * 3600 / 20.0 -LOCK_ATTEMPTS_MAXWAIT = 15.0 -LOCK_ATTEMPTS_MINWAIT = 1.0 - # instance creation modes INSTANCE_CREATE = "create" INSTANCE_IMPORT = "import" @@ -553,7 +561,8 @@ DISK_TEMPLATES = frozenset([ DT_DRBD8, DT_FILE, DT_SHARED_FILE, - DT_BLOCK + DT_BLOCK, + DT_RBD ]) FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP]) @@ -567,8 +576,13 @@ INISECT_OSP = "os" # dynamic device modification DDM_ADD = "add" +DDM_MODIFY = "modify" DDM_REMOVE = "remove" DDMS_VALUES = frozenset([DDM_ADD, DDM_REMOVE]) +DDMS_VALUES_WITH_MODIFY = (DDMS_VALUES | frozenset([ + DDM_MODIFY, + ])) +# TODO: DDM_SWAP, DDM_MOVE? # common exit codes EXIT_SUCCESS = 0 @@ -605,6 +619,10 @@ IP6_ADDRESS_ANY = "::" IP4_VERSION = 4 IP6_VERSION = 6 VALID_IP_VERSIONS = frozenset([IP4_VERSION, IP6_VERSION]) +# for export to htools +IP4_FAMILY = socket.AF_INET +IP6_FAMILY = socket.AF_INET6 + TCP_PING_TIMEOUT = 10 GANETI_RUNAS = "root" DEFAULT_VG = "xenvg" @@ -842,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, @@ -857,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, @@ -864,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 @@ -871,12 +904,16 @@ BE_MAXMEM = "maxmem" BE_MINMEM = "minmem" BE_VCPUS = "vcpus" BE_AUTO_BALANCE = "auto_balance" +BE_ALWAYS_FAILOVER = "always_failover" +BE_SPINDLE_USE = "spindle_use" 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, + BE_SPINDLE_USE: VTYPE_INT, } BES_PARAMETER_COMPAT = { @@ -886,34 +923,126 @@ 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" +ISPEC_SPINDLE_USE = "spindle-use" + +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, + ISPEC_SPINDLE_USE: VTYPE_INT, + } + +ISPECS_PARAMETERS = frozenset(ISPECS_PARAMETER_TYPES.keys()) + +ISPECS_MIN = "min" +ISPECS_MAX = "max" +ISPECS_STD = "std" +IPOLICY_DTS = "disk-templates" +IPOLICY_VCPU_RATIO = "vcpu-ratio" +IPOLICY_SPINDLE_RATIO = "spindle-ratio" + +IPOLICY_ISPECS = frozenset([ + ISPECS_MIN, + ISPECS_MAX, + ISPECS_STD, + ]) + +IPOLICY_PARAMETERS = frozenset([ + IPOLICY_VCPU_RATIO, + IPOLICY_SPINDLE_RATIO, + ]) + +IPOLICY_ALL_KEYS = (IPOLICY_ISPECS | + IPOLICY_PARAMETERS | + frozenset([IPOLICY_DTS])) + # Node parameter names ND_OOB_PROGRAM = "oob_program" +ND_SPINDLE_COUNT = "spindle_count" NDS_PARAMETER_TYPES = { ND_OOB_PROGRAM: VTYPE_MAYBE_STRING, + ND_SPINDLE_COUNT: VTYPE_INT, } NDS_PARAMETERS = frozenset(NDS_PARAMETER_TYPES.keys()) # Logical Disks parameters -RESYNC_RATE = "resync-rate" -STRIPES = "stripes" +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" +LDP_POOL = "pool" DISK_LD_TYPES = { - RESYNC_RATE: VTYPE_INT, - STRIPES: 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, + LDP_POOL: VTYPE_STRING, } 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" +RBD_POOL = "pool" 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, + RBD_POOL: VTYPE_STRING, } DISK_DT_PARAMETERS = frozenset(DISK_DT_TYPES.keys()) @@ -1194,6 +1323,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 = \ @@ -1247,6 +1379,7 @@ CV_ALL_ECODES = frozenset([ CV_EINSTANCEFAULTYDISK, CV_EINSTANCEWRONGNODE, CV_EINSTANCESPLITGROUPS, + CV_EINSTANCEPOLICY, CV_ENODEDRBD, CV_ENODEDRBDHELPER, CV_ENODEFILECHECK, @@ -1387,8 +1520,6 @@ JOB_QUEUE_SERIAL_FILE = QUEUE_DIR + "/serial" JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive" JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain" JOB_QUEUE_SIZE_HARD_LIMIT = 5000 -JOB_QUEUE_DIRS = [QUEUE_DIR, JOB_QUEUE_ARCHIVE_DIR] -JOB_QUEUE_DIRS_MODE = SECURE_DIR_MODE JOB_ID_TEMPLATE = r"\d+" JOB_FILE_RE = re.compile(r"^job-(%s)$" % JOB_ID_TEMPLATE) @@ -1448,9 +1579,21 @@ OP_PRIO_SUBMIT_VALID = frozenset([ OP_PRIO_DEFAULT = OP_PRIO_NORMAL +# Lock recalculate mode +LOCKS_REPLACE = "replace" +LOCKS_APPEND = "append" + +# Lock timeout (sum) before we should go into blocking acquire (still +# can be reset by priority change); computed as max time (10 hours) +# before we should actually go into blocking acquire given that we +# start from default priority level; in seconds +# TODO +LOCK_ATTEMPTS_TIMEOUT = 10 * 3600 / (OP_PRIO_DEFAULT - OP_PRIO_HIGHEST) +LOCK_ATTEMPTS_MAXWAIT = 15.0 +LOCK_ATTEMPTS_MINWAIT = 1.0 + # Execution log types ELOG_MESSAGE = "message" -ELOG_PROGRESS = "progress" ELOG_REMOTE_IMPORT = "remote-import" ELOG_JQUEUE_TEST = "jqueue-test" @@ -1472,18 +1615,29 @@ JQT_ALL = frozenset([ ]) # Query resources +QR_CLUSTER = "cluster" QR_INSTANCE = "instance" QR_NODE = "node" QR_LOCK = "lock" QR_GROUP = "group" QR_OS = "os" +QR_JOB = "job" +QR_EXPORT = "export" #: List of resources which can be queried using L{opcodes.OpQuery} -QR_VIA_OP = frozenset([QR_INSTANCE, QR_NODE, QR_GROUP, QR_OS]) +QR_VIA_OP = frozenset([ + QR_CLUSTER, + QR_INSTANCE, + QR_NODE, + QR_GROUP, + QR_OS, + QR_EXPORT, + ]) #: List of resources which can be queried using Local UniX Interface QR_VIA_LUXI = QR_VIA_OP.union([ QR_LOCK, + QR_JOB, ]) #: List of resources which can be queried using RAPI @@ -1544,6 +1698,8 @@ RSS_DESCRIPTION = { MAX_NICS = 8 MAX_DISKS = 16 +# SSCONF file prefix +SSCONF_FILEPREFIX = "ssconf_" # SSCONF keys SS_CLUSTER_NAME = "cluster_name" SS_CLUSTER_TAGS = "cluster_tags" @@ -1578,7 +1734,7 @@ HVC_DEFAULTS = { HV_USE_BOOTLOADER: False, HV_BOOTLOADER_PATH: XEN_BOOTLOADER, HV_BOOTLOADER_ARGS: "", - HV_KERNEL_PATH: "/boot/vmlinuz-2.6-xenU", + HV_KERNEL_PATH: XEN_KERNEL, HV_INITRD_PATH: "", HV_ROOT_PATH: "/dev/sda1", HV_KERNEL_ARGS: "ro", @@ -1607,7 +1763,7 @@ HVC_DEFAULTS = { HV_CPU_MASK: CPU_PINNING_ALL, }, HT_KVM: { - HV_KERNEL_PATH: "/boot/vmlinuz-2.6-kvmU", + HV_KERNEL_PATH: KVM_KERNEL, HV_INITRD_PATH: "", HV_KERNEL_ARGS: "ro", HV_ROOT_PATH: "/dev/vda1", @@ -1674,33 +1830,71 @@ BEC_DEFAULTS = { BE_MAXMEM: 128, BE_VCPUS: 1, BE_AUTO_BALANCE: True, + BE_ALWAYS_FAILOVER: False, + BE_SPINDLE_USE: 1, } NDC_DEFAULTS = { ND_OOB_PROGRAM: None, + ND_SPINDLE_COUNT: 1, } 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: { - STRIPES: _autoconf.LVM_STRIPECOUNT + LDP_STRIPES: _autoconf.LVM_STRIPECOUNT }, LD_FILE: { }, LD_BLOCKDEV: { }, + LD_RBD: { + LDP_POOL: "rbd" + }, } +# 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][STRIPES], + LV_STRIPES: DISK_LD_DEFAULTS[LD_LV][LDP_STRIPES], }, DT_DRBD8: { - DRBD_RESYNC_RATE: DISK_LD_DEFAULTS[LD_DRBD8][RESYNC_RATE], - DRBD_DATA_STRIPES: DISK_LD_DEFAULTS[LD_LV][STRIPES], - DRBD_META_STRIPES: DISK_LD_DEFAULTS[LD_LV][STRIPES], + 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: { }, @@ -1710,13 +1904,51 @@ DISK_DT_DEFAULTS = { }, DT_BLOCK: { }, + DT_RBD: { + RBD_POOL: DISK_LD_DEFAULTS[LD_RBD][LDP_POOL] + }, } +# we don't want to export the shortcuts +del _LV_DEFAULTS, _DRBD_DEFAULTS + NICC_DEFAULTS = { NIC_MODE: NIC_MODE_BRIDGED, NIC_LINK: DEFAULT_BRIDGE, } +# All of the following values are quite arbitrarily - there are no +# "good" defaults, these must be customised per-site +IPOLICY_DEFAULTS = { + ISPECS_MIN: { + ISPEC_MEM_SIZE: 128, + ISPEC_CPU_COUNT: 1, + ISPEC_DISK_COUNT: 1, + ISPEC_DISK_SIZE: 1024, + ISPEC_NIC_COUNT: 1, + ISPEC_SPINDLE_USE: 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, + ISPEC_SPINDLE_USE: 12, + }, + ISPECS_STD: { + ISPEC_MEM_SIZE: 128, + ISPEC_CPU_COUNT: 1, + ISPEC_DISK_COUNT: 1, + ISPEC_DISK_SIZE: 1024, + ISPEC_NIC_COUNT: 1, + ISPEC_SPINDLE_USE: 1, + }, + IPOLICY_DTS: DISK_TEMPLATES, + IPOLICY_VCPU_RATIO: 4.0, + IPOLICY_SPINDLE_RATIO: 32.0, + } + MASTER_POOL_SIZE_DEFAULT = 10 CONFD_PROTOCOL_VERSION = 1 @@ -1847,4 +2079,4 @@ FAKE_OP_MASTER_TURNUP = "OP_CLUSTER_IP_TURNUP" FAKE_OP_MASTER_TURNDOWN = "OP_CLUSTER_IP_TURNDOWN" # Do not re-export imported modules -del re, _vcsversion, _autoconf +del re, _vcsversion, _autoconf, socket