X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/24d16f76120164a5045dee2afc4a8538caefc0bc..cce6f35753c082ebf9700a901ff2e541191eddcb:/lib/constants.py diff --git a/lib/constants.py b/lib/constants.py index 1a3ccd6..b8810d3 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -1,7 +1,7 @@ # # -# Copyright (C) 2006, 2007, 2008, 2009, 2010 Google Inc. +# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 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 @@ -26,7 +26,6 @@ import re from ganeti import _autoconf # various versions -PROTOCOL_VERSION = 40 RELEASE_VERSION = _autoconf.PACKAGE_VERSION OS_API_V10 = 10 OS_API_V15 = 15 @@ -84,6 +83,9 @@ CONFIG_MINOR = int(_autoconf.VERSION_MINOR) CONFIG_REVISION = 0 CONFIG_VERSION = BuildVersion(CONFIG_MAJOR, CONFIG_MINOR, CONFIG_REVISION) +#: RPC protocol version +PROTOCOL_VERSION = BuildVersion(CONFIG_MAJOR, CONFIG_MINOR, 0) + # user separation DAEMONS_GROUP = _autoconf.DAEMONS_GROUP ADMIN_GROUP = _autoconf.ADMIN_GROUP @@ -139,6 +141,7 @@ RAPI_USERS_FILE = DATA_DIR + "/rapi/users" QUEUE_DIR = DATA_DIR + "/queue" DAEMON_UTIL = _autoconf.PKGLIBDIR + "/daemon-util" SETUP_SSH = _autoconf.TOOLSDIR + "/setup-ssh" +KVM_IFUP = _autoconf.PKGLIBDIR + "/kvm-ifup" ETC_HOSTS = "/etc/hosts" DEFAULT_FILE_STORAGE_DIR = _autoconf.FILE_STORAGE_DIR ENABLE_FILE_STORAGE = _autoconf.ENABLE_FILE_STORAGE @@ -197,7 +200,7 @@ DEV_CONSOLE = "/dev/console" PROC_MOUNTS = "/proc/mounts" -# luxi related constants +# Local UniX Interface related constants LUXI_EOM = "\3" LUXI_VERSION = CONFIG_VERSION @@ -223,6 +226,18 @@ SOCAT_USE_ESCAPE = _autoconf.SOCAT_USE_ESCAPE SOCAT_USE_COMPRESS = _autoconf.SOCAT_USE_COMPRESS SOCAT_ESCAPE_CODE = "0x1d" +#: Console as SSH command +CONS_SSH = "ssh" + +#: Console as VNC server +CONS_VNC = "vnc" + +#: Display a message for console access +CONS_MESSAGE = "msg" + +#: All console types +CONS_ALL = frozenset([CONS_SSH, CONS_VNC, CONS_MESSAGE]) + # For RSA keys more bits are better, but they also make operations more # expensive. NIST SP 800-131 recommends a minimum of 2048 bits from the year # 2010 on. @@ -401,10 +416,18 @@ EXPORT_MODES = frozenset([ EXPORT_MODE_REMOTE, ]) -# lock recalculate mode +# 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" @@ -422,8 +445,15 @@ RIE_HANDSHAKE = "Hi, I'm Ganeti" # Remote import/export certificate validity in seconds RIE_CERT_VALIDITY = 24 * 60 * 60 -# Remote import/export connect timeout for socat -RIE_CONNECT_TIMEOUT = 60 +# Overall timeout for establishing connection +RIE_CONNECT_TIMEOUT = 180 + +# Export only: how long to wait per connection attempt (seconds) +RIE_CONNECT_ATTEMPT_TIMEOUT = 20 + +# Export only: number of attempts to connect +RIE_CONNECT_RETRIES = 10 + #: Give child process up to 5 seconds to exit after sending a signal CHILD_LINGER_TIMEOUT = 5.0 @@ -487,7 +517,7 @@ LVM_STRIPECOUNT = _autoconf.LVM_STRIPECOUNT DEFAULT_SHUTDOWN_TIMEOUT = 120 NODE_MAX_CLOCK_SKEW = 150 # Time for an intra-cluster disk transfer to wait for a connection -DISK_TRANSFER_CONNECT_TIMEOUT = 30 +DISK_TRANSFER_CONNECT_TIMEOUT = 60 # Disk index separator DISK_SEPARATOR = _autoconf.DISK_SEPARATOR @@ -629,7 +659,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" @@ -754,7 +784,8 @@ HT_NIC_E1000 = "e1000" HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual" HT_HVM_VALID_NIC_TYPES = frozenset([HT_NIC_RTL8139, HT_NIC_NE2K_PCI, - HT_NIC_NE2K_ISA, HT_NIC_PARAVIRTUAL]) + HT_NIC_E1000, HT_NIC_NE2K_ISA, + HT_NIC_PARAVIRTUAL]) HT_KVM_VALID_NIC_TYPES = frozenset([HT_NIC_RTL8139, HT_NIC_NE2K_PCI, HT_NIC_NE2K_ISA, HT_NIC_I82551, HT_NIC_I85557B, HT_NIC_I8259ER, @@ -823,6 +854,7 @@ NV_DRBDLIST = "drbd-list" NV_FILELIST = "filelist" NV_HVINFO = "hvinfo" NV_HYPERVISOR = "hypervisor" +NV_HVPARAMS = "hvparms" NV_INSTANCELIST = "instancelist" NV_LVLIST = "lvlist" NV_MASTERIP = "master-ip" @@ -952,11 +984,12 @@ JQT_ALL = frozenset([ QR_INSTANCE = "instance" QR_NODE = "node" QR_LOCK = "lock" +QR_GROUP = "group" #: List of resources which can be queried using L{opcodes.OpQuery} -QR_OP_QUERY = frozenset([QR_INSTANCE, QR_NODE]) +QR_OP_QUERY = frozenset([QR_INSTANCE, QR_NODE, QR_GROUP]) -#: List of resources which can be queried using LUXI +#: List of resources which can be queried using Local UniX Interface QR_OP_LUXI = QR_OP_QUERY.union([ QR_LOCK, ]) @@ -984,24 +1017,34 @@ QFT_ALL = frozenset([ # Query result field status (don't change or reuse values as they're used by # clients) #: Normal field status -QRFS_NORMAL = 0 +RS_NORMAL = 0 #: Unknown field -QRFS_UNKNOWN = 1 -#: No data (e.g. RPC error), can be used instead of L{QRFS_OFFLINE} -QRFS_NODATA = 2 -#: Value unavailable for item -QRFS_UNAVAIL = 3 +RS_UNKNOWN = 1 +#: No data (e.g. RPC error), can be used instead of L{RS_OFFLINE} +RS_NODATA = 2 +#: Value unavailable/unsupported for item; if this field is supported +#: but we cannot get the data for the moment, RS_NODATA or +#: RS_OFFLINE should be used +RS_UNAVAIL = 3 #: Resource marked offline -QRFS_OFFLINE = 4 - -QRFS_ALL = frozenset([ - QRFS_NORMAL, - QRFS_UNKNOWN, - QRFS_NODATA, - QRFS_UNAVAIL, - QRFS_OFFLINE, +RS_OFFLINE = 4 + +RS_ALL = frozenset([ + RS_NORMAL, + RS_UNKNOWN, + RS_NODATA, + RS_UNAVAIL, + RS_OFFLINE, ]) +#: Dictionary with special field cases and their verbose/terse formatting +RSS_DESCRIPTION = { + RS_UNKNOWN: ("(unknown)", "??"), + RS_NODATA: ("(nodata)", "?"), + RS_OFFLINE: ("(offline)", "*"), + RS_UNAVAIL: ("(unavail)", "-"), + } + # max dynamic devices MAX_NICS = 8 MAX_DISKS = 16