Statistics
| Branch: | Tag: | Revision:

root / lib / constants.py @ b8028dcf

History | View | Annotate | Download (56.2 kB)

1 2f31098c Iustin Pop
#
2 a8083063 Iustin Pop
#
3 a8083063 Iustin Pop
4 d04c9d45 Iustin Pop
# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Google Inc.
5 a8083063 Iustin Pop
#
6 a8083063 Iustin Pop
# This program is free software; you can redistribute it and/or modify
7 a8083063 Iustin Pop
# it under the terms of the GNU General Public License as published by
8 a8083063 Iustin Pop
# the Free Software Foundation; either version 2 of the License, or
9 a8083063 Iustin Pop
# (at your option) any later version.
10 a8083063 Iustin Pop
#
11 a8083063 Iustin Pop
# This program is distributed in the hope that it will be useful, but
12 a8083063 Iustin Pop
# WITHOUT ANY WARRANTY; without even the implied warranty of
13 a8083063 Iustin Pop
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 a8083063 Iustin Pop
# General Public License for more details.
15 a8083063 Iustin Pop
#
16 a8083063 Iustin Pop
# You should have received a copy of the GNU General Public License
17 a8083063 Iustin Pop
# along with this program; if not, write to the Free Software
18 a8083063 Iustin Pop
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 a8083063 Iustin Pop
# 02110-1301, USA.
20 a8083063 Iustin Pop
21 a8083063 Iustin Pop
22 a8083063 Iustin Pop
"""Module holding different constants."""
23 a8083063 Iustin Pop
24 4fe80ef2 Iustin Pop
import re
25 47334810 Iustin Pop
import socket
26 4fe80ef2 Iustin Pop
27 2ec08468 Michael Hanselmann
from ganeti import _autoconf
28 13aeae6a Iustin Pop
from ganeti import _vcsversion
29 b8028dcf Michael Hanselmann
from ganeti import compat
30 9f2265bc Michael Hanselmann
from ganeti import pathutils
31 3329f4de Michael Hanselmann
32 7c18ef8e Michael Hanselmann
33 a8083063 Iustin Pop
# various versions
34 2ec08468 Michael Hanselmann
RELEASE_VERSION = _autoconf.PACKAGE_VERSION
35 d1a7d66f Guido Trotter
OS_API_V10 = 10
36 d1a7d66f Guido Trotter
OS_API_V15 = 15
37 b41b3516 Iustin Pop
OS_API_V20 = 20
38 b8028dcf Michael Hanselmann
OS_API_VERSIONS = compat.UniqueFrozenset([
39 b8028dcf Michael Hanselmann
  OS_API_V10,
40 b8028dcf Michael Hanselmann
  OS_API_V15,
41 b8028dcf Michael Hanselmann
  OS_API_V20,
42 b8028dcf Michael Hanselmann
  ])
43 13aeae6a Iustin Pop
VCS_VERSION = _vcsversion.VCS_VERSION
44 a8083063 Iustin Pop
EXPORT_VERSION = 0
45 bac5ffc3 Oleksiy Mishchenko
RAPI_VERSION = 2
46 a8083063 Iustin Pop
47 1b45f4e5 Michael Hanselmann
48 243cdbcc Michael Hanselmann
# Format for CONFIG_VERSION:
49 243cdbcc Michael Hanselmann
#   01 03 0123 = 01030123
50 243cdbcc Michael Hanselmann
#   ^^ ^^ ^^^^
51 243cdbcc Michael Hanselmann
#   |  |  + Configuration version/revision
52 243cdbcc Michael Hanselmann
#   |  + Minor version
53 243cdbcc Michael Hanselmann
#   + Major version
54 243cdbcc Michael Hanselmann
#
55 f0a26429 Michael Hanselmann
# It is stored as an integer. Make sure not to write an octal number.
56 1b45f4e5 Michael Hanselmann
57 1b45f4e5 Michael Hanselmann
# BuildVersion and SplitVersion must be in here because we can't import other
58 1b45f4e5 Michael Hanselmann
# modules. The cfgupgrade tool must be able to read and write version numbers
59 1b45f4e5 Michael Hanselmann
# and thus requires these functions. To avoid code duplication, they're kept in
60 1b45f4e5 Michael Hanselmann
# here.
61 1b45f4e5 Michael Hanselmann
62 1b45f4e5 Michael Hanselmann
def BuildVersion(major, minor, revision):
63 1b45f4e5 Michael Hanselmann
  """Calculates int version number from major, minor and revision numbers.
64 1b45f4e5 Michael Hanselmann

65 1b45f4e5 Michael Hanselmann
  Returns: int representing version number
66 1b45f4e5 Michael Hanselmann

67 1b45f4e5 Michael Hanselmann
  """
68 1b45f4e5 Michael Hanselmann
  assert isinstance(major, int)
69 1b45f4e5 Michael Hanselmann
  assert isinstance(minor, int)
70 1b45f4e5 Michael Hanselmann
  assert isinstance(revision, int)
71 1b45f4e5 Michael Hanselmann
  return (1000000 * major +
72 1b45f4e5 Michael Hanselmann
            10000 * minor +
73 1b45f4e5 Michael Hanselmann
                1 * revision)
74 1b45f4e5 Michael Hanselmann
75 1b45f4e5 Michael Hanselmann
76 1b45f4e5 Michael Hanselmann
def SplitVersion(version):
77 1b45f4e5 Michael Hanselmann
  """Splits version number stored in an int.
78 1b45f4e5 Michael Hanselmann

79 1b45f4e5 Michael Hanselmann
  Returns: tuple; (major, minor, revision)
80 1b45f4e5 Michael Hanselmann

81 1b45f4e5 Michael Hanselmann
  """
82 1b45f4e5 Michael Hanselmann
  assert isinstance(version, int)
83 1b45f4e5 Michael Hanselmann
84 1b45f4e5 Michael Hanselmann
  (major, remainder) = divmod(version, 1000000)
85 1b45f4e5 Michael Hanselmann
  (minor, revision) = divmod(remainder, 10000)
86 1b45f4e5 Michael Hanselmann
87 1b45f4e5 Michael Hanselmann
  return (major, minor, revision)
88 1b45f4e5 Michael Hanselmann
89 1b45f4e5 Michael Hanselmann
90 243cdbcc Michael Hanselmann
CONFIG_MAJOR = int(_autoconf.VERSION_MAJOR)
91 243cdbcc Michael Hanselmann
CONFIG_MINOR = int(_autoconf.VERSION_MINOR)
92 243cdbcc Michael Hanselmann
CONFIG_REVISION = 0
93 1b45f4e5 Michael Hanselmann
CONFIG_VERSION = BuildVersion(CONFIG_MAJOR, CONFIG_MINOR, CONFIG_REVISION)
94 a8083063 Iustin Pop
95 cc7d6f1a Michael Hanselmann
#: RPC protocol version
96 cc7d6f1a Michael Hanselmann
PROTOCOL_VERSION = BuildVersion(CONFIG_MAJOR, CONFIG_MINOR, 0)
97 cc7d6f1a Michael Hanselmann
98 8b72b05c René Nussbaumer
# user separation
99 8b72b05c René Nussbaumer
DAEMONS_GROUP = _autoconf.DAEMONS_GROUP
100 f12e1736 René Nussbaumer
ADMIN_GROUP = _autoconf.ADMIN_GROUP
101 8b72b05c René Nussbaumer
MASTERD_USER = _autoconf.MASTERD_USER
102 f12e1736 René Nussbaumer
MASTERD_GROUP = _autoconf.MASTERD_GROUP
103 8b72b05c René Nussbaumer
RAPI_USER = _autoconf.RAPI_USER
104 f12e1736 René Nussbaumer
RAPI_GROUP = _autoconf.RAPI_GROUP
105 f12e1736 René Nussbaumer
CONFD_USER = _autoconf.CONFD_USER
106 f12e1736 René Nussbaumer
CONFD_GROUP = _autoconf.CONFD_GROUP
107 f12e1736 René Nussbaumer
NODED_USER = _autoconf.NODED_USER
108 03881cb0 René Nussbaumer
NODED_GROUP = _autoconf.NODED_GROUP
109 052783ff Michael Hanselmann
SSH_LOGIN_USER = _autoconf.SSH_LOGIN_USER
110 052783ff Michael Hanselmann
SSH_CONSOLE_USER = _autoconf.SSH_CONSOLE_USER
111 8b72b05c René Nussbaumer
112 7e7629c6 Tsachy Shacham
# cpu pinning separators and constants
113 7e7629c6 Tsachy Shacham
CPU_PINNING_SEP = ":"
114 7e7629c6 Tsachy Shacham
CPU_PINNING_ALL = "all"
115 7e7629c6 Tsachy Shacham
# internal representation of "all"
116 7e7629c6 Tsachy Shacham
CPU_PINNING_ALL_VAL = -1
117 bf5681c0 Tsachy Shacham
# one "all" entry in a CPU list means CPU pinning is off
118 bf5681c0 Tsachy Shacham
CPU_PINNING_OFF = [CPU_PINNING_ALL_VAL]
119 7e7629c6 Tsachy Shacham
120 7e7629c6 Tsachy Shacham
# A Xen-specific implementation detail - there is no way to actually say
121 7e7629c6 Tsachy Shacham
# "use any cpu for pinning" in a Xen configuration file, as opposed to the
122 7e7629c6 Tsachy Shacham
# command line, where you can say "xm vcpu-pin <domain> <vcpu> all".
123 7e7629c6 Tsachy Shacham
# The workaround used in Xen is "0-63" (see source code function
124 7e7629c6 Tsachy Shacham
# xm_vcpu_pin in <xen-source>/tools/python/xen/xm/main.py).
125 7e7629c6 Tsachy Shacham
# To support future changes, the following constant is treated as a
126 7e7629c6 Tsachy Shacham
# blackbox string that simply means use-any-cpu-for-pinning-under-xen.
127 7e7629c6 Tsachy Shacham
CPU_PINNING_ALL_XEN = "0-63"
128 a03fcb26 René Nussbaumer
129 bf5681c0 Tsachy Shacham
# A KVM-specific implementation detail - the following value is used
130 bf5681c0 Tsachy Shacham
# to set CPU affinity to all processors (#0 through #31), per taskset
131 bf5681c0 Tsachy Shacham
# man page.
132 38ef0c2c Michael Hanselmann
# FIXME: This only works for machines with up to 32 CPU cores
133 bf5681c0 Tsachy Shacham
CPU_PINNING_ALL_KVM = 0xFFFFFFFF
134 bf5681c0 Tsachy Shacham
135 6e991d0e René Nussbaumer
# Wipe
136 da63bb4e René Nussbaumer
DD_CMD = "dd"
137 a03fcb26 René Nussbaumer
MAX_WIPE_CHUNK = 1024 # 1GB
138 a03fcb26 René Nussbaumer
MIN_WIPE_CHUNK_PERCENT = 10
139 a03fcb26 René Nussbaumer
140 8b72b05c René Nussbaumer
RUN_DIRS_MODE = 0775
141 5bae14d9 Guido Trotter
SECURE_DIR_MODE = 0700
142 637c8ab8 Balazs Lecz
SECURE_FILE_MODE = 0600
143 b6135bbc Apollon Oikonomopoulos
ADOPTABLE_BLOCKDEV_ROOT = "/dev/disk/"
144 cb7c0198 Iustin Pop
ENABLE_FILE_STORAGE = _autoconf.ENABLE_FILE_STORAGE
145 4b97f902 Apollon Oikonomopoulos
ENABLE_SHARED_FILE_STORAGE = _autoconf.ENABLE_SHARED_FILE_STORAGE
146 cd8b0072 Iustin Pop
ENABLE_CONFD = _autoconf.ENABLE_CONFD
147 42ab9ac4 Iustin Pop
ENABLE_SPLIT_QUERY = _autoconf.ENABLE_SPLIT_QUERY
148 1fdeb284 Michael Hanselmann
ENABLE_RESTRICTED_COMMANDS = _autoconf.ENABLE_RESTRICTED_COMMANDS
149 9894ece7 Michael Hanselmann
150 cd50653c Guido Trotter
NODED = "ganeti-noded"
151 18679072 Guido Trotter
CONFD = "ganeti-confd"
152 8c96d01f Guido Trotter
RAPI = "ganeti-rapi"
153 dae3fdd2 Guido Trotter
MASTERD = "ganeti-masterd"
154 cd50653c Guido Trotter
155 cd50653c Guido Trotter
DAEMONS_PORTS = {
156 cd50653c Guido Trotter
  # daemon-name: ("proto", "default-port")
157 cd50653c Guido Trotter
  NODED: ("tcp", 1811),
158 18679072 Guido Trotter
  CONFD: ("udp", 1814),
159 8c96d01f Guido Trotter
  RAPI: ("tcp", 5080),
160 2089573e René Nussbaumer
  "ssh": ("tcp", 22),
161 cd50653c Guido Trotter
}
162 cd50653c Guido Trotter
DEFAULT_NODED_PORT = DAEMONS_PORTS[NODED][1]
163 18679072 Guido Trotter
DEFAULT_CONFD_PORT = DAEMONS_PORTS[CONFD][1]
164 8c96d01f Guido Trotter
DEFAULT_RAPI_PORT = DAEMONS_PORTS[RAPI][1]
165 cd50653c Guido Trotter
166 a8083063 Iustin Pop
FIRST_DRBD_PORT = 11000
167 a8083063 Iustin Pop
LAST_DRBD_PORT = 14999
168 a8083063 Iustin Pop
169 3a6a89d7 Michael Hanselmann
DAEMONS_LOGFILES = {
170 3a6a89d7 Michael Hanselmann
  NODED: pathutils.GetLogFilename("node-daemon"),
171 3a6a89d7 Michael Hanselmann
  CONFD: pathutils.GetLogFilename("conf-daemon"),
172 3a6a89d7 Michael Hanselmann
  RAPI: pathutils.GetLogFilename("rapi-daemon"),
173 3a6a89d7 Michael Hanselmann
  MASTERD: pathutils.GetLogFilename("master-daemon"),
174 3a6a89d7 Michael Hanselmann
  }
175 3a6a89d7 Michael Hanselmann
176 481d47e8 Luca Bigliardi
DEV_CONSOLE = "/dev/console"
177 481d47e8 Luca Bigliardi
178 1b045f5d Balazs Lecz
PROC_MOUNTS = "/proc/mounts"
179 1b045f5d Balazs Lecz
180 3d5ebbf0 Stephen Shirley
# Local UniX Interface related constants
181 25942a6c Guido Trotter
LUXI_EOM = "\3"
182 e986f20c Michael Hanselmann
LUXI_VERSION = CONFIG_VERSION
183 25942a6c Guido Trotter
184 d0c8c01d Iustin Pop
# one of "no", "yes", "only"
185 551b6283 Iustin Pop
SYSLOG_USAGE = _autoconf.SYSLOG_USAGE
186 551b6283 Iustin Pop
SYSLOG_NO = "no"
187 551b6283 Iustin Pop
SYSLOG_YES = "yes"
188 551b6283 Iustin Pop
SYSLOG_ONLY = "only"
189 551b6283 Iustin Pop
SYSLOG_SOCKET = "/dev/log"
190 551b6283 Iustin Pop
191 a8083063 Iustin Pop
EXPORT_CONF_FILE = "config.ini"
192 a8083063 Iustin Pop
193 2f2dbb4b Jun Futagawa
XEN_BOOTLOADER = _autoconf.XEN_BOOTLOADER
194 f00b46bc Michael Hanselmann
XEN_KERNEL = _autoconf.XEN_KERNEL
195 f00b46bc Michael Hanselmann
XEN_INITRD = _autoconf.XEN_INITRD
196 0625d08f René Nussbaumer
XEN_CMD_XM = "xm"
197 0625d08f René Nussbaumer
XEN_CMD_XL = "xl"
198 0625d08f René Nussbaumer
# FIXME: This will be made configurable using hvparams in Ganeti 2.7
199 0625d08f René Nussbaumer
XEN_CMD = _autoconf.XEN_CMD
200 053c356a Guido Trotter
# When the Xen toolstack used is "xl", live migration requires the source host
201 053c356a Guido Trotter
# to connect to the target host via ssh (xl runs this command). We need to pass
202 053c356a Guido Trotter
# the command xl runs some extra info so that it can use Ganeti's key
203 053c356a Guido Trotter
# verification and not fail. Note that this string is incomplete: it must be
204 053c356a Guido Trotter
# filled with the cluster name before being used.
205 f215debf Guido Trotter
XL_SSH_CMD = ("ssh -l %s -oGlobalKnownHostsFile=%s"
206 053c356a Guido Trotter
              " -oUserKnownHostsFile=/dev/null"
207 053c356a Guido Trotter
              " -oCheckHostIp=no -oStrictHostKeyChecking=yes"
208 f215debf Guido Trotter
              " -oHostKeyAlias=%%s") % (SSH_LOGIN_USER,
209 f215debf Guido Trotter
                                        pathutils.SSH_KNOWN_HOSTS_FILE)
210 f00b46bc Michael Hanselmann
211 7e2c5b9e Guido Trotter
KVM_PATH = _autoconf.KVM_PATH
212 b8203e1e Iustin Pop
KVM_KERNEL = _autoconf.KVM_KERNEL
213 14aa53cb Guido Trotter
SOCAT_PATH = _autoconf.SOCAT_PATH
214 fe5b0c42 Michael Hanselmann
SOCAT_USE_ESCAPE = _autoconf.SOCAT_USE_ESCAPE
215 e90739d6 Michael Hanselmann
SOCAT_USE_COMPRESS = _autoconf.SOCAT_USE_COMPRESS
216 86d6bc2a Guido Trotter
SOCAT_ESCAPE_CODE = "0x1d"
217 7e2c5b9e Guido Trotter
218 25ce3ec4 Michael Hanselmann
#: Console as SSH command
219 25ce3ec4 Michael Hanselmann
CONS_SSH = "ssh"
220 25ce3ec4 Michael Hanselmann
221 25ce3ec4 Michael Hanselmann
#: Console as VNC server
222 25ce3ec4 Michael Hanselmann
CONS_VNC = "vnc"
223 25ce3ec4 Michael Hanselmann
224 4d2cdb5a Andrea Spadaccini
#: Console as SPICE server
225 4d2cdb5a Andrea Spadaccini
CONS_SPICE = "spice"
226 4d2cdb5a Andrea Spadaccini
227 25ce3ec4 Michael Hanselmann
#: Display a message for console access
228 25ce3ec4 Michael Hanselmann
CONS_MESSAGE = "msg"
229 25ce3ec4 Michael Hanselmann
230 25ce3ec4 Michael Hanselmann
#: All console types
231 b8028dcf Michael Hanselmann
CONS_ALL = compat.UniqueFrozenset([
232 b8028dcf Michael Hanselmann
  CONS_SSH,
233 b8028dcf Michael Hanselmann
  CONS_VNC,
234 b8028dcf Michael Hanselmann
  CONS_SPICE,
235 b8028dcf Michael Hanselmann
  CONS_MESSAGE,
236 b8028dcf Michael Hanselmann
  ])
237 25ce3ec4 Michael Hanselmann
238 bdd5e420 Michael Hanselmann
# For RSA keys more bits are better, but they also make operations more
239 bdd5e420 Michael Hanselmann
# expensive. NIST SP 800-131 recommends a minimum of 2048 bits from the year
240 bdd5e420 Michael Hanselmann
# 2010 on.
241 bdd5e420 Michael Hanselmann
RSA_KEY_BITS = 2048
242 bdd5e420 Michael Hanselmann
243 971bbd84 Michael Hanselmann
# Ciphers allowed for SSL connections. For the format, see ciphers(1). A better
244 971bbd84 Michael Hanselmann
# way to disable ciphers would be to use the exclamation mark (!), but socat
245 971bbd84 Michael Hanselmann
# versions below 1.5 can't parse exclamation marks in options properly. When
246 7407c2d5 Adeodato Simo
# modifying the ciphers, ensure not to accidentially add something after it's
247 971bbd84 Michael Hanselmann
# been removed. Use the "openssl" utility to check the allowed ciphers, e.g.
248 971bbd84 Michael Hanselmann
# "openssl ciphers -v HIGH:-DES".
249 971bbd84 Michael Hanselmann
OPENSSL_CIPHERS = "HIGH:-DES:-3DES:-EXPORT:-ADH"
250 971bbd84 Michael Hanselmann
251 bdd5e420 Michael Hanselmann
# Digest used to sign certificates ("openssl x509" uses SHA1 by default)
252 bdd5e420 Michael Hanselmann
X509_CERT_SIGN_DIGEST = "SHA1"
253 bdd5e420 Michael Hanselmann
254 600535f0 Manuel Franceschini
# Default validity of certificates in days
255 600535f0 Manuel Franceschini
X509_CERT_DEFAULT_VALIDITY = 365 * 5
256 600535f0 Manuel Franceschini
257 600535f0 Manuel Franceschini
# commonName (CN) used in certificates
258 600535f0 Manuel Franceschini
X509_CERT_CN = "ganeti.example.com"
259 600535f0 Manuel Franceschini
260 68857643 Michael Hanselmann
X509_CERT_SIGNATURE_HEADER = "X-Ganeti-Signature"
261 68857643 Michael Hanselmann
262 2d76b580 Michael Hanselmann
# Import/export daemon mode
263 2d76b580 Michael Hanselmann
IEM_IMPORT = "import"
264 2d76b580 Michael Hanselmann
IEM_EXPORT = "export"
265 2d76b580 Michael Hanselmann
266 7e3c1da6 Michael Hanselmann
# Import/export transport compression
267 7e3c1da6 Michael Hanselmann
IEC_NONE = "none"
268 7e3c1da6 Michael Hanselmann
IEC_GZIP = "gzip"
269 b8028dcf Michael Hanselmann
IEC_ALL = compat.UniqueFrozenset([
270 7e3c1da6 Michael Hanselmann
  IEC_NONE,
271 7e3c1da6 Michael Hanselmann
  IEC_GZIP,
272 7e3c1da6 Michael Hanselmann
  ])
273 7e3c1da6 Michael Hanselmann
274 f9323011 Michael Hanselmann
IE_CUSTOM_SIZE = "fd"
275 f9323011 Michael Hanselmann
276 1d3dfa29 Michael Hanselmann
IE_MAGIC_RE = re.compile(r"^[-_.a-zA-Z0-9]{5,100}$")
277 1d3dfa29 Michael Hanselmann
278 1651d116 Michael Hanselmann
# Import/export I/O
279 1651d116 Michael Hanselmann
# Direct file I/O, equivalent to a shell's I/O redirection using '<' or '>'
280 1651d116 Michael Hanselmann
IEIO_FILE = "file"
281 1651d116 Michael Hanselmann
# Raw block device I/O using "dd"
282 1651d116 Michael Hanselmann
IEIO_RAW_DISK = "raw"
283 1651d116 Michael Hanselmann
# OS definition import/export script
284 1651d116 Michael Hanselmann
IEIO_SCRIPT = "script"
285 1651d116 Michael Hanselmann
286 973d7867 Iustin Pop
VALUE_DEFAULT = "default"
287 4c566ede Guido Trotter
VALUE_AUTO = "auto"
288 4c566ede Guido Trotter
VALUE_GENERATE = "generate"
289 973d7867 Iustin Pop
VALUE_NONE = "none"
290 1817f49b Guido Trotter
VALUE_TRUE = "true"
291 1817f49b Guido Trotter
VALUE_FALSE = "false"
292 973d7867 Iustin Pop
293 4fe80ef2 Iustin Pop
# External script validation mask
294 4fe80ef2 Iustin Pop
EXT_PLUGIN_MASK = re.compile("^[a-zA-Z0-9_-]+$")
295 4fe80ef2 Iustin Pop
296 a8083063 Iustin Pop
# hooks-related constants
297 a8083063 Iustin Pop
HOOKS_PHASE_PRE = "pre"
298 a8083063 Iustin Pop
HOOKS_PHASE_POST = "post"
299 6a4aa7c1 Iustin Pop
HOOKS_NAME_CFGUPDATE = "config-update"
300 9e289e36 Guido Trotter
HOOKS_NAME_WATCHER = "watcher"
301 f3e2e4c6 Iustin Pop
HOOKS_VERSION = 2
302 fe5ca2bb Andrea Spadaccini
HOOKS_PATH = "/sbin:/bin:/usr/sbin:/usr/bin"
303 a8083063 Iustin Pop
304 a8083063 Iustin Pop
# hooks subject type (what object type does the LU deal with)
305 a8083063 Iustin Pop
HTYPE_CLUSTER = "CLUSTER"
306 a8083063 Iustin Pop
HTYPE_NODE = "NODE"
307 b1ee5610 Adeodato Simo
HTYPE_GROUP = "GROUP"
308 a8083063 Iustin Pop
HTYPE_INSTANCE = "INSTANCE"
309 eaa4c57c Dimitris Aragiorgis
HTYPE_NETWORK = "NETWORK"
310 a8083063 Iustin Pop
311 a8083063 Iustin Pop
HKR_SKIP = 0
312 a8083063 Iustin Pop
HKR_FAIL = 1
313 a8083063 Iustin Pop
HKR_SUCCESS = 2
314 a8083063 Iustin Pop
315 ac2d0fe4 Michael Hanselmann
# Storage types
316 ac2d0fe4 Michael Hanselmann
ST_FILE = "file"
317 ac2d0fe4 Michael Hanselmann
ST_LVM_PV = "lvm-pv"
318 ac2d0fe4 Michael Hanselmann
ST_LVM_VG = "lvm-vg"
319 6032697c Michael Hanselmann
320 6032697c Michael Hanselmann
# Storage fields
321 620a85fd Iustin Pop
# first two are valid in LU context only, not passed to backend
322 620a85fd Iustin Pop
SF_NODE = "node"
323 620a85fd Iustin Pop
SF_TYPE = "type"
324 620a85fd Iustin Pop
# and the rest are valid in backend
325 6032697c Michael Hanselmann
SF_NAME = "name"
326 6032697c Michael Hanselmann
SF_SIZE = "size"
327 6032697c Michael Hanselmann
SF_FREE = "free"
328 6032697c Michael Hanselmann
SF_USED = "used"
329 6032697c Michael Hanselmann
SF_ALLOCATABLE = "allocatable"
330 6032697c Michael Hanselmann
331 6c3c6db9 Michael Hanselmann
# Storage operations
332 6c3c6db9 Michael Hanselmann
SO_FIX_CONSISTENCY = "fix-consistency"
333 6c3c6db9 Michael Hanselmann
334 6032697c Michael Hanselmann
# Available fields per storage type
335 b8028dcf Michael Hanselmann
VALID_STORAGE_FIELDS = compat.UniqueFrozenset([
336 21daa4a8 Stephen Shirley
  SF_NAME,
337 21daa4a8 Stephen Shirley
  SF_TYPE,
338 21daa4a8 Stephen Shirley
  SF_SIZE,
339 21daa4a8 Stephen Shirley
  SF_USED,
340 21daa4a8 Stephen Shirley
  SF_FREE,
341 3c286190 Dimitris Aragiorgis
  SF_ALLOCATABLE,
342 21daa4a8 Stephen Shirley
  ])
343 620a85fd Iustin Pop
344 b8028dcf Michael Hanselmann
VALID_STORAGE_TYPES = compat.UniqueFrozenset([
345 b8028dcf Michael Hanselmann
  ST_FILE,
346 b8028dcf Michael Hanselmann
  ST_LVM_PV,
347 b8028dcf Michael Hanselmann
  ST_LVM_VG,
348 b8028dcf Michael Hanselmann
  ])
349 a8083063 Iustin Pop
350 efb8da02 Michael Hanselmann
MODIFIABLE_STORAGE_FIELDS = {
351 efb8da02 Michael Hanselmann
  ST_LVM_PV: frozenset([SF_ALLOCATABLE]),
352 efb8da02 Michael Hanselmann
  }
353 efb8da02 Michael Hanselmann
354 4b37cac5 Michael Hanselmann
VALID_STORAGE_OPERATIONS = {
355 6c3c6db9 Michael Hanselmann
  ST_LVM_VG: frozenset([SO_FIX_CONSISTENCY]),
356 4b37cac5 Michael Hanselmann
  }
357 4b37cac5 Michael Hanselmann
358 74f37195 Michael Hanselmann
# Local disk status
359 74f37195 Michael Hanselmann
# Note: Code depends on LDS_OKAY < LDS_UNKNOWN < LDS_FAULTY
360 74f37195 Michael Hanselmann
(LDS_OKAY,
361 74f37195 Michael Hanselmann
 LDS_UNKNOWN,
362 74f37195 Michael Hanselmann
 LDS_FAULTY) = range(1, 4)
363 74f37195 Michael Hanselmann
364 a8083063 Iustin Pop
# disk template types
365 a8083063 Iustin Pop
DT_DISKLESS = "diskless"
366 a8083063 Iustin Pop
DT_PLAIN = "plain"
367 a1f445d3 Iustin Pop
DT_DRBD8 = "drbd"
368 04fa07f2 Manuel Franceschini
DT_FILE = "file"
369 4b97f902 Apollon Oikonomopoulos
DT_SHARED_FILE = "sharedfile"
370 b6135bbc Apollon Oikonomopoulos
DT_BLOCK = "blockdev"
371 7181fba0 Constantinos Venetsanopoulos
DT_RBD = "rbd"
372 a1f445d3 Iustin Pop
373 a1f445d3 Iustin Pop
# the set of network-mirrored disk templates
374 b8028dcf Michael Hanselmann
DTS_INT_MIRROR = compat.UniqueFrozenset([DT_DRBD8])
375 a8083063 Iustin Pop
376 b6135bbc Apollon Oikonomopoulos
# the set of externally-mirrored disk templates (e.g. SAN, NAS)
377 b8028dcf Michael Hanselmann
DTS_EXT_MIRROR = compat.UniqueFrozenset([
378 b8028dcf Michael Hanselmann
  DT_SHARED_FILE,
379 b8028dcf Michael Hanselmann
  DT_BLOCK,
380 b8028dcf Michael Hanselmann
  DT_RBD,
381 b8028dcf Michael Hanselmann
  ])
382 4b97f902 Apollon Oikonomopoulos
383 d63e148a Manuel Franceschini
# the set of non-lvm-based disk templates
384 b8028dcf Michael Hanselmann
DTS_NOT_LVM = compat.UniqueFrozenset([
385 b8028dcf Michael Hanselmann
  DT_DISKLESS,
386 b8028dcf Michael Hanselmann
  DT_FILE,
387 b8028dcf Michael Hanselmann
  DT_SHARED_FILE,
388 b8028dcf Michael Hanselmann
  DT_BLOCK,
389 b8028dcf Michael Hanselmann
  DT_RBD,
390 b8028dcf Michael Hanselmann
  ])
391 d63e148a Manuel Franceschini
392 728489a3 Guido Trotter
# the set of disk templates which can be grown
393 b8028dcf Michael Hanselmann
DTS_GROWABLE = compat.UniqueFrozenset([
394 b8028dcf Michael Hanselmann
  DT_PLAIN,
395 b8028dcf Michael Hanselmann
  DT_DRBD8,
396 b8028dcf Michael Hanselmann
  DT_FILE,
397 b8028dcf Michael Hanselmann
  DT_SHARED_FILE,
398 b8028dcf Michael Hanselmann
  DT_RBD,
399 b8028dcf Michael Hanselmann
  ])
400 728489a3 Guido Trotter
401 3b08cd1c Apollon Oikonomopoulos
# the set of disk templates that allow adoption
402 b8028dcf Michael Hanselmann
DTS_MAY_ADOPT = compat.UniqueFrozenset([
403 b8028dcf Michael Hanselmann
  DT_PLAIN,
404 b8028dcf Michael Hanselmann
  DT_BLOCK,
405 b8028dcf Michael Hanselmann
  ])
406 b6135bbc Apollon Oikonomopoulos
407 b6135bbc Apollon Oikonomopoulos
# the set of disk templates that *must* use adoption
408 b8028dcf Michael Hanselmann
DTS_MUST_ADOPT = compat.UniqueFrozenset([DT_BLOCK])
409 3b08cd1c Apollon Oikonomopoulos
410 85a0ff7e Apollon Oikonomopoulos
# the set of disk templates that allow migrations
411 3429a076 Apollon Oikonomopoulos
DTS_MIRRORED = frozenset.union(DTS_INT_MIRROR, DTS_EXT_MIRROR)
412 85a0ff7e Apollon Oikonomopoulos
413 c16915bd Guido Trotter
# the set of file based disk templates
414 b8028dcf Michael Hanselmann
DTS_FILEBASED = compat.UniqueFrozenset([
415 b8028dcf Michael Hanselmann
  DT_FILE,
416 b8028dcf Michael Hanselmann
  DT_SHARED_FILE,
417 b8028dcf Michael Hanselmann
  ])
418 85a0ff7e Apollon Oikonomopoulos
419 fe96220b Iustin Pop
# logical disk types
420 fe96220b Iustin Pop
LD_LV = "lvm"
421 a1f445d3 Iustin Pop
LD_DRBD8 = "drbd8"
422 04fa07f2 Manuel Franceschini
LD_FILE = "file"
423 b6135bbc Apollon Oikonomopoulos
LD_BLOCKDEV = "blockdev"
424 7181fba0 Constantinos Venetsanopoulos
LD_RBD = "rbd"
425 b8028dcf Michael Hanselmann
LOGICAL_DISK_TYPES = compat.UniqueFrozenset([
426 bc5d0215 Andrea Spadaccini
  LD_LV,
427 bc5d0215 Andrea Spadaccini
  LD_DRBD8,
428 bc5d0215 Andrea Spadaccini
  LD_FILE,
429 bc5d0215 Andrea Spadaccini
  LD_BLOCKDEV,
430 7181fba0 Constantinos Venetsanopoulos
  LD_RBD,
431 bc5d0215 Andrea Spadaccini
  ])
432 bc5d0215 Andrea Spadaccini
433 b8028dcf Michael Hanselmann
LDS_BLOCK = compat.UniqueFrozenset([
434 b8028dcf Michael Hanselmann
  LD_LV,
435 b8028dcf Michael Hanselmann
  LD_DRBD8,
436 b8028dcf Michael Hanselmann
  LD_BLOCKDEV,
437 b8028dcf Michael Hanselmann
  LD_RBD,
438 b8028dcf Michael Hanselmann
  ])
439 04fa07f2 Manuel Franceschini
440 2899d9de Iustin Pop
# drbd constants
441 2899d9de Iustin Pop
DRBD_HMAC_ALG = "md5"
442 3c03759a Iustin Pop
DRBD_NET_PROTOCOL = "C"
443 61e062dd Michele Tartara
DRBD_STATUS_FILE = "/proc/drbd"
444 8a69b3a8 Andrea Spadaccini
445 0c77c331 René Nussbaumer
#: Size of DRBD meta block device
446 0c77c331 René Nussbaumer
DRBD_META_SIZE = 128
447 0c77c331 René Nussbaumer
448 8a69b3a8 Andrea Spadaccini
# drbd barrier types
449 8a69b3a8 Andrea Spadaccini
DRBD_B_NONE = "n"
450 8a69b3a8 Andrea Spadaccini
DRBD_B_DISK_BARRIERS = "b"
451 8a69b3a8 Andrea Spadaccini
DRBD_B_DISK_DRAIN = "d"
452 8a69b3a8 Andrea Spadaccini
DRBD_B_DISK_FLUSH = "f"
453 8a69b3a8 Andrea Spadaccini
454 8a69b3a8 Andrea Spadaccini
# Valid barrier combinations: "n" or any non-null subset of "bfd"
455 b8028dcf Michael Hanselmann
DRBD_VALID_BARRIER_OPT = compat.UniqueFrozenset([
456 8a69b3a8 Andrea Spadaccini
  frozenset([DRBD_B_NONE]),
457 8a69b3a8 Andrea Spadaccini
  frozenset([DRBD_B_DISK_BARRIERS]),
458 8a69b3a8 Andrea Spadaccini
  frozenset([DRBD_B_DISK_DRAIN]),
459 8a69b3a8 Andrea Spadaccini
  frozenset([DRBD_B_DISK_FLUSH]),
460 8a69b3a8 Andrea Spadaccini
  frozenset([DRBD_B_DISK_DRAIN, DRBD_B_DISK_FLUSH]),
461 8a69b3a8 Andrea Spadaccini
  frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_DRAIN]),
462 8a69b3a8 Andrea Spadaccini
  frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_FLUSH]),
463 8a69b3a8 Andrea Spadaccini
  frozenset([DRBD_B_DISK_BARRIERS, DRBD_B_DISK_FLUSH, DRBD_B_DISK_DRAIN]),
464 8a69b3a8 Andrea Spadaccini
  ])
465 2899d9de Iustin Pop
466 7181fba0 Constantinos Venetsanopoulos
# rbd tool command
467 7181fba0 Constantinos Venetsanopoulos
RBD_CMD = "rbd"
468 7181fba0 Constantinos Venetsanopoulos
469 04fa07f2 Manuel Franceschini
# file backend driver
470 04fa07f2 Manuel Franceschini
FD_LOOP = "loop"
471 04fa07f2 Manuel Franceschini
FD_BLKTAP = "blktap"
472 a1f445d3 Iustin Pop
473 a1f445d3 Iustin Pop
# the set of drbd-like disk types
474 b8028dcf Michael Hanselmann
LDS_DRBD = compat.UniqueFrozenset([LD_DRBD8])
475 fe96220b Iustin Pop
476 08db7c5c Iustin Pop
# disk access mode
477 24991749 Iustin Pop
DISK_RDONLY = "ro"
478 24991749 Iustin Pop
DISK_RDWR = "rw"
479 b8028dcf Michael Hanselmann
DISK_ACCESS_SET = compat.UniqueFrozenset([DISK_RDONLY, DISK_RDWR])
480 08db7c5c Iustin Pop
481 a9e0c397 Iustin Pop
# disk replacement mode
482 cfacfd6e Iustin Pop
REPLACE_DISK_PRI = "replace_on_primary"    # replace disks on primary
483 cfacfd6e Iustin Pop
REPLACE_DISK_SEC = "replace_on_secondary"  # replace disks on secondary
484 cfacfd6e Iustin Pop
REPLACE_DISK_CHG = "replace_new_secondary" # change secondary node
485 942be002 Michael Hanselmann
REPLACE_DISK_AUTO = "replace_auto"
486 b8028dcf Michael Hanselmann
REPLACE_MODES = compat.UniqueFrozenset([
487 3636400f Iustin Pop
  REPLACE_DISK_PRI,
488 3636400f Iustin Pop
  REPLACE_DISK_SEC,
489 3636400f Iustin Pop
  REPLACE_DISK_CHG,
490 3636400f Iustin Pop
  REPLACE_DISK_AUTO,
491 3636400f Iustin Pop
  ])
492 a9e0c397 Iustin Pop
493 4a96f1d1 Michael Hanselmann
# Instance export mode
494 4a96f1d1 Michael Hanselmann
EXPORT_MODE_LOCAL = "local"
495 4a96f1d1 Michael Hanselmann
EXPORT_MODE_REMOTE = "remote"
496 b8028dcf Michael Hanselmann
EXPORT_MODES = compat.UniqueFrozenset([
497 4a96f1d1 Michael Hanselmann
  EXPORT_MODE_LOCAL,
498 4a96f1d1 Michael Hanselmann
  EXPORT_MODE_REMOTE,
499 4a96f1d1 Michael Hanselmann
  ])
500 4a96f1d1 Michael Hanselmann
501 2f6eebee Guido Trotter
# instance creation modes
502 a8083063 Iustin Pop
INSTANCE_CREATE = "create"
503 a8083063 Iustin Pop
INSTANCE_IMPORT = "import"
504 9bf56d77 Michael Hanselmann
INSTANCE_REMOTE_IMPORT = "remote-import"
505 b8028dcf Michael Hanselmann
INSTANCE_CREATE_MODES = compat.UniqueFrozenset([
506 9bf56d77 Michael Hanselmann
  INSTANCE_CREATE,
507 9bf56d77 Michael Hanselmann
  INSTANCE_IMPORT,
508 9bf56d77 Michael Hanselmann
  INSTANCE_REMOTE_IMPORT,
509 9bf56d77 Michael Hanselmann
  ])
510 a8083063 Iustin Pop
511 1410fa8d Michael Hanselmann
# Remote import/export handshake message and version
512 1410fa8d Michael Hanselmann
RIE_VERSION = 0
513 1410fa8d Michael Hanselmann
RIE_HANDSHAKE = "Hi, I'm Ganeti"
514 1410fa8d Michael Hanselmann
515 1410fa8d Michael Hanselmann
# Remote import/export certificate validity in seconds
516 1410fa8d Michael Hanselmann
RIE_CERT_VALIDITY = 24 * 60 * 60
517 1410fa8d Michael Hanselmann
518 4478301b Michael Hanselmann
# Overall timeout for establishing connection
519 8fd2e34c Michael Hanselmann
RIE_CONNECT_TIMEOUT = 180
520 4a96f1d1 Michael Hanselmann
521 4478301b Michael Hanselmann
# Export only: how long to wait per connection attempt (seconds)
522 4478301b Michael Hanselmann
RIE_CONNECT_ATTEMPT_TIMEOUT = 20
523 4478301b Michael Hanselmann
524 4478301b Michael Hanselmann
# Export only: number of attempts to connect
525 4478301b Michael Hanselmann
RIE_CONNECT_RETRIES = 10
526 4478301b Michael Hanselmann
527 c74cda62 René Nussbaumer
#: Give child process up to 5 seconds to exit after sending a signal
528 c74cda62 René Nussbaumer
CHILD_LINGER_TIMEOUT = 5.0
529 4a96f1d1 Michael Hanselmann
530 b8028dcf Michael Hanselmann
DISK_TEMPLATES = compat.UniqueFrozenset([
531 21daa4a8 Stephen Shirley
  DT_DISKLESS,
532 21daa4a8 Stephen Shirley
  DT_PLAIN,
533 21daa4a8 Stephen Shirley
  DT_DRBD8,
534 21daa4a8 Stephen Shirley
  DT_FILE,
535 21daa4a8 Stephen Shirley
  DT_SHARED_FILE,
536 7181fba0 Constantinos Venetsanopoulos
  DT_BLOCK,
537 3c286190 Dimitris Aragiorgis
  DT_RBD,
538 21daa4a8 Stephen Shirley
  ])
539 04fa07f2 Manuel Franceschini
540 b8028dcf Michael Hanselmann
FILE_DRIVER = compat.UniqueFrozenset([FD_LOOP, FD_BLKTAP])
541 a8083063 Iustin Pop
542 a8083063 Iustin Pop
# import/export config options
543 a8083063 Iustin Pop
INISECT_EXP = "export"
544 a8083063 Iustin Pop
INISECT_INS = "instance"
545 3c8954ad Iustin Pop
INISECT_HYP = "hypervisor"
546 3c8954ad Iustin Pop
INISECT_BEP = "backend"
547 535b49cb Iustin Pop
INISECT_OSP = "os"
548 38242904 Iustin Pop
549 24991749 Iustin Pop
# dynamic device modification
550 61a14bb3 Iustin Pop
DDM_ADD = "add"
551 bf629e45 Michael Hanselmann
DDM_MODIFY = "modify"
552 61a14bb3 Iustin Pop
DDM_REMOVE = "remove"
553 b8028dcf Michael Hanselmann
DDMS_VALUES = compat.UniqueFrozenset([DDM_ADD, DDM_REMOVE])
554 bf629e45 Michael Hanselmann
DDMS_VALUES_WITH_MODIFY = (DDMS_VALUES | frozenset([
555 bf629e45 Michael Hanselmann
  DDM_MODIFY,
556 bf629e45 Michael Hanselmann
  ]))
557 bf629e45 Michael Hanselmann
# TODO: DDM_SWAP, DDM_MOVE?
558 24991749 Iustin Pop
559 38242904 Iustin Pop
# common exit codes
560 a5bc662a Iustin Pop
EXIT_SUCCESS = 0
561 438b45d4 Michael Hanselmann
EXIT_FAILURE = 1
562 46479775 Guido Trotter
EXIT_NOTCLUSTER = 5
563 38242904 Iustin Pop
EXIT_NOTMASTER = 11
564 619fdc8e Iustin Pop
EXIT_NODESETUP_ERROR = 12
565 a5bc662a Iustin Pop
EXIT_CONFIRMATION = 13 # need user confirmation
566 cf62a272 Michael Hanselmann
567 ee3aedff Michael Hanselmann
#: Exit code for query operations with unknown fields
568 ee3aedff Michael Hanselmann
EXIT_UNKNOWN_FIELD = 14
569 ee3aedff Michael Hanselmann
570 5c947f38 Iustin Pop
# tags
571 5c947f38 Iustin Pop
TAG_CLUSTER = "cluster"
572 1ffd2673 Michael Hanselmann
TAG_NODEGROUP = "nodegroup"
573 5c947f38 Iustin Pop
TAG_NODE = "node"
574 5c947f38 Iustin Pop
TAG_INSTANCE = "instance"
575 8140e24f Dimitris Aragiorgis
TAG_NETWORK = "network"
576 b8028dcf Michael Hanselmann
VALID_TAG_TYPES = compat.UniqueFrozenset([
577 3636400f Iustin Pop
  TAG_CLUSTER,
578 1ffd2673 Michael Hanselmann
  TAG_NODEGROUP,
579 3636400f Iustin Pop
  TAG_NODE,
580 3636400f Iustin Pop
  TAG_INSTANCE,
581 8140e24f Dimitris Aragiorgis
  TAG_NETWORK,
582 3636400f Iustin Pop
  ])
583 5c947f38 Iustin Pop
MAX_TAG_LEN = 128
584 5c947f38 Iustin Pop
MAX_TAGS_PER_OBJ = 4096
585 5c947f38 Iustin Pop
586 cf62a272 Michael Hanselmann
# others
587 cf62a272 Michael Hanselmann
DEFAULT_BRIDGE = "xen-br0"
588 6e9814a1 Andrea Spadaccini
CLASSIC_DRBD_SYNC_SPEED = 60 * 1024  # 60 MiB, expressed in KiB
589 9769bb78 Manuel Franceschini
IP4_ADDRESS_LOCALHOST = "127.0.0.1"
590 9769bb78 Manuel Franceschini
IP4_ADDRESS_ANY = "0.0.0.0"
591 0d2cd893 Manuel Franceschini
IP6_ADDRESS_LOCALHOST = "::1"
592 0d2cd893 Manuel Franceschini
IP6_ADDRESS_ANY = "::"
593 2f20d07b Manuel Franceschini
IP4_VERSION = 4
594 2f20d07b Manuel Franceschini
IP6_VERSION = 6
595 b8028dcf Michael Hanselmann
VALID_IP_VERSIONS = compat.UniqueFrozenset([IP4_VERSION, IP6_VERSION])
596 47334810 Iustin Pop
# for export to htools
597 47334810 Iustin Pop
IP4_FAMILY = socket.AF_INET
598 47334810 Iustin Pop
IP6_FAMILY = socket.AF_INET6
599 47334810 Iustin Pop
600 16abfbc2 Alexander Schreiber
TCP_PING_TIMEOUT = 10
601 d63e148a Manuel Franceschini
DEFAULT_VG = "xenvg"
602 ee2f0ed4 Luca Bigliardi
DEFAULT_DRBD_HELPER = "/bin/true"
603 8d1a2a64 Michael Hanselmann
MIN_VG_SIZE = 20480
604 c5e489f7 Iustin Pop
DEFAULT_MAC_PREFIX = "aa:00:00"
605 88cd08aa Guido Trotter
# default maximum instance wait time, in seconds.
606 88cd08aa Guido Trotter
DEFAULT_SHUTDOWN_TIMEOUT = 120
607 313b2dd4 Michael Hanselmann
NODE_MAX_CLOCK_SKEW = 150
608 033a1d00 Michael Hanselmann
# Time for an intra-cluster disk transfer to wait for a connection
609 81635b5a Iustin Pop
DISK_TRANSFER_CONNECT_TIMEOUT = 60
610 3536c792 Iustin Pop
# Disk index separator
611 3536c792 Iustin Pop
DISK_SEPARATOR = _autoconf.DISK_SEPARATOR
612 c4dfb0b6 Andrea Spadaccini
IP_COMMAND_PATH = _autoconf.IP_PATH
613 7900ed01 Iustin Pop
614 6a373640 Michael Hanselmann
#: Key for job IDs in opcode result
615 6a373640 Michael Hanselmann
JOB_IDS_KEY = "jobs"
616 6a373640 Michael Hanselmann
617 6bb65e3a Guido Trotter
# runparts results
618 6bb65e3a Guido Trotter
(RUNPARTS_SKIP,
619 6bb65e3a Guido Trotter
 RUNPARTS_RUN,
620 6bb65e3a Guido Trotter
 RUNPARTS_ERR) = range(3)
621 6bb65e3a Guido Trotter
622 b8028dcf Michael Hanselmann
RUNPARTS_STATUS = compat.UniqueFrozenset([
623 b8028dcf Michael Hanselmann
  RUNPARTS_SKIP,
624 b8028dcf Michael Hanselmann
  RUNPARTS_RUN,
625 b8028dcf Michael Hanselmann
  RUNPARTS_ERR,
626 b8028dcf Michael Hanselmann
  ])
627 6bb65e3a Guido Trotter
628 12bce260 Michael Hanselmann
# RPC constants
629 12bce260 Michael Hanselmann
(RPC_ENCODING_NONE,
630 12bce260 Michael Hanselmann
 RPC_ENCODING_ZLIB_BASE64) = range(2)
631 12bce260 Michael Hanselmann
632 2ff587d4 Agata Murawska
# Various time constants for the timeout table
633 2ff587d4 Agata Murawska
RPC_TMO_URGENT = 60 # one minute
634 2ff587d4 Agata Murawska
RPC_TMO_FAST = 5 * 60 # five minutes
635 2ff587d4 Agata Murawska
RPC_TMO_NORMAL = 15 * 60 # 15 minutes
636 2ff587d4 Agata Murawska
RPC_TMO_SLOW = 3600 # one hour
637 2ff587d4 Agata Murawska
RPC_TMO_4HRS = 4 * 3600
638 2ff587d4 Agata Murawska
RPC_TMO_1DAY = 86400
639 2ff587d4 Agata Murawska
640 2ff587d4 Agata Murawska
# Timeout for connecting to nodes (seconds)
641 2ff587d4 Agata Murawska
RPC_CONNECT_TIMEOUT = 5
642 2ff587d4 Agata Murawska
643 ded1c679 Guido Trotter
# os related constants
644 d0c8c01d Iustin Pop
OS_SCRIPT_CREATE = "create"
645 d0c8c01d Iustin Pop
OS_SCRIPT_IMPORT = "import"
646 d0c8c01d Iustin Pop
OS_SCRIPT_EXPORT = "export"
647 d0c8c01d Iustin Pop
OS_SCRIPT_RENAME = "rename"
648 d0c8c01d Iustin Pop
OS_SCRIPT_VERIFY = "verify"
649 b8028dcf Michael Hanselmann
OS_SCRIPTS = compat.UniqueFrozenset([
650 21daa4a8 Stephen Shirley
  OS_SCRIPT_CREATE,
651 21daa4a8 Stephen Shirley
  OS_SCRIPT_IMPORT,
652 21daa4a8 Stephen Shirley
  OS_SCRIPT_EXPORT,
653 21daa4a8 Stephen Shirley
  OS_SCRIPT_RENAME,
654 3c286190 Dimitris Aragiorgis
  OS_SCRIPT_VERIFY,
655 21daa4a8 Stephen Shirley
  ])
656 37482e7b Guido Trotter
657 d0c8c01d Iustin Pop
OS_API_FILE = "ganeti_api_version"
658 d0c8c01d Iustin Pop
OS_VARIANTS_FILE = "variants.list"
659 d0c8c01d Iustin Pop
OS_PARAMETERS_FILE = "parameters.list"
660 b41b3516 Iustin Pop
661 d0c8c01d Iustin Pop
OS_VALIDATE_PARAMETERS = "parameters"
662 b8028dcf Michael Hanselmann
OS_VALIDATE_CALLS = compat.UniqueFrozenset([OS_VALIDATE_PARAMETERS])
663 b6b45e0d Guido Trotter
664 70d9e3d8 Iustin Pop
# ssh constants
665 fff33d70 Michael Hanselmann
SSH = "ssh"
666 fff33d70 Michael Hanselmann
SCP = "scp"
667 007a2f3e Alexander Schreiber
668 007a2f3e Alexander Schreiber
# reboot types
669 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_SOFT = "soft"
670 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_HARD = "hard"
671 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_FULL = "full"
672 2584d4a4 Alexander Schreiber
673 b8028dcf Michael Hanselmann
REBOOT_TYPES = compat.UniqueFrozenset([
674 990ade2d Stephen Shirley
  INSTANCE_REBOOT_SOFT,
675 990ade2d Stephen Shirley
  INSTANCE_REBOOT_HARD,
676 3c286190 Dimitris Aragiorgis
  INSTANCE_REBOOT_FULL,
677 990ade2d Stephen Shirley
  ])
678 990ade2d Stephen Shirley
679 990ade2d Stephen Shirley
# instance reboot behaviors
680 990ade2d Stephen Shirley
INSTANCE_REBOOT_ALLOWED = "reboot"
681 990ade2d Stephen Shirley
INSTANCE_REBOOT_EXIT = "exit"
682 990ade2d Stephen Shirley
683 b8028dcf Michael Hanselmann
REBOOT_BEHAVIORS = compat.UniqueFrozenset([
684 990ade2d Stephen Shirley
  INSTANCE_REBOOT_ALLOWED,
685 3c286190 Dimitris Aragiorgis
  INSTANCE_REBOOT_EXIT,
686 990ade2d Stephen Shirley
  ])
687 00f91f29 Iustin Pop
688 d0c8c01d Iustin Pop
VTYPE_STRING = "string"
689 59525e1f Michael Hanselmann
VTYPE_MAYBE_STRING = "maybe-string"
690 d0c8c01d Iustin Pop
VTYPE_BOOL = "bool"
691 d0c8c01d Iustin Pop
VTYPE_SIZE = "size" # size, in MiBs
692 d0c8c01d Iustin Pop
VTYPE_INT = "int"
693 b8028dcf Michael Hanselmann
ENFORCEABLE_TYPES = compat.UniqueFrozenset([
694 21daa4a8 Stephen Shirley
  VTYPE_STRING,
695 21daa4a8 Stephen Shirley
  VTYPE_MAYBE_STRING,
696 21daa4a8 Stephen Shirley
  VTYPE_BOOL,
697 21daa4a8 Stephen Shirley
  VTYPE_SIZE,
698 21daa4a8 Stephen Shirley
  VTYPE_INT,
699 21daa4a8 Stephen Shirley
  ])
700 a5728081 Guido Trotter
701 b1cb62bd Andrea Spadaccini
# Constant representing that the user does not specify any IP version
702 b1cb62bd Andrea Spadaccini
IFACE_NO_IP_VERSION_SPECIFIED = 0
703 b1cb62bd Andrea Spadaccini
704 e64b8beb Iustin Pop
# HV parameter names (global namespace)
705 e64b8beb Iustin Pop
HV_BOOT_ORDER = "boot_order"
706 e64b8beb Iustin Pop
HV_CDROM_IMAGE_PATH = "cdrom_image_path"
707 cc130cc7 Marco Casavecchia
HV_KVM_CDROM2_IMAGE_PATH = "cdrom2_image_path"
708 cc130cc7 Marco Casavecchia
HV_KVM_FLOPPY_IMAGE_PATH = "floppy_image_path"
709 e64b8beb Iustin Pop
HV_NIC_TYPE = "nic_type"
710 e64b8beb Iustin Pop
HV_DISK_TYPE = "disk_type"
711 cc130cc7 Marco Casavecchia
HV_KVM_CDROM_DISK_TYPE = "cdrom_disk_type"
712 e64b8beb Iustin Pop
HV_VNC_BIND_ADDRESS = "vnc_bind_address"
713 6e6bb8d5 Guido Trotter
HV_VNC_PASSWORD_FILE = "vnc_password_file"
714 8b2d1013 Guido Trotter
HV_VNC_TLS = "vnc_tls"
715 8b2d1013 Guido Trotter
HV_VNC_X509 = "vnc_x509_path"
716 8b2d1013 Guido Trotter
HV_VNC_X509_VERIFY = "vnc_x509_verify"
717 b1cb62bd Andrea Spadaccini
HV_KVM_SPICE_BIND = "spice_bind"
718 b1cb62bd Andrea Spadaccini
HV_KVM_SPICE_IP_VERSION = "spice_ip_version"
719 b451c4c7 Andrea Spadaccini
HV_KVM_SPICE_PASSWORD_FILE = "spice_password_file"
720 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_LOSSLESS_IMG_COMPR = "spice_image_compression"
721 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_JPEG_IMG_COMPR = "spice_jpeg_wan_compression"
722 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR = "spice_zlib_glz_wan_compression"
723 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_STREAMING_VIDEO_DETECTION = "spice_streaming_video"
724 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_AUDIO_COMPR = "spice_playback_compression"
725 bfe86c76 Andrea Spadaccini
HV_KVM_SPICE_USE_TLS = "spice_use_tls"
726 3e40b587 Andrea Spadaccini
HV_KVM_SPICE_TLS_CIPHERS = "spice_tls_ciphers"
727 3e40b587 Andrea Spadaccini
HV_KVM_SPICE_USE_VDAGENT = "spice_use_vdagent"
728 e64b8beb Iustin Pop
HV_ACPI = "acpi"
729 e64b8beb Iustin Pop
HV_PAE = "pae"
730 2f2dbb4b Jun Futagawa
HV_USE_BOOTLOADER = "use_bootloader"
731 2f2dbb4b Jun Futagawa
HV_BOOTLOADER_ARGS = "bootloader_args"
732 2f2dbb4b Jun Futagawa
HV_BOOTLOADER_PATH = "bootloader_path"
733 f9d6542d Iustin Pop
HV_KERNEL_ARGS = "kernel_args"
734 e64b8beb Iustin Pop
HV_KERNEL_PATH = "kernel_path"
735 e64b8beb Iustin Pop
HV_INITRD_PATH = "initrd_path"
736 074ca009 Guido Trotter
HV_ROOT_PATH = "root_path"
737 a2faf9ee Guido Trotter
HV_SERIAL_CONSOLE = "serial_console"
738 11344a50 Guido Trotter
HV_USB_MOUSE = "usb_mouse"
739 4f580fef Sébastien Bocahu
HV_KEYMAP = "keymap"
740 09ea8710 Iustin Pop
HV_DEVICE_MODEL = "device_model"
741 48297fa2 Iustin Pop
HV_INIT_SCRIPT = "init_script"
742 78411c60 Iustin Pop
HV_MIGRATION_PORT = "migration_port"
743 e43d4f9f Apollon Oikonomopoulos
HV_MIGRATION_BANDWIDTH = "migration_bandwidth"
744 e43d4f9f Apollon Oikonomopoulos
HV_MIGRATION_DOWNTIME = "migration_downtime"
745 783a6c0b Iustin Pop
HV_MIGRATION_MODE = "migration_mode"
746 6b970cef Jun Futagawa
HV_USE_LOCALTIME = "use_localtime"
747 ea0f3d7a Iustin Pop
HV_DISK_CACHE = "disk_cache"
748 3424767f Guido Trotter
HV_SECURITY_MODEL = "security_model"
749 3424767f Guido Trotter
HV_SECURITY_DOMAIN = "security_domain"
750 7ba594c0 Guido Trotter
HV_KVM_FLAG = "kvm_flag"
751 fbe27e2b Guido Trotter
HV_VHOST_NET = "vhost_net"
752 84c08e4e Balazs Lecz
HV_KVM_USE_CHROOT = "use_chroot"
753 e3ed5316 Balazs Lecz
HV_CPU_MASK = "cpu_mask"
754 4f958b0b Miguel Di Ciurcio Filho
HV_MEM_PATH = "mem_path"
755 87f0aa48 Jack
HV_PASSTHROUGH = "pci_pass"
756 525011bc Maciej Bliziński
HV_BLOCKDEV_PREFIX = "blockdev_prefix"
757 990ade2d Stephen Shirley
HV_REBOOT_BEHAVIOR = "reboot_behavior"
758 7cb42171 Nikita Staroverov
HV_CPU_TYPE = "cpu_type"
759 8bd977e9 Sébastien Bocahu
HV_CPU_CAP = "cpu_cap"
760 8bd977e9 Sébastien Bocahu
HV_CPU_WEIGHT = "cpu_weight"
761 8bd977e9 Sébastien Bocahu
762 e64b8beb Iustin Pop
763 a5728081 Guido Trotter
HVS_PARAMETER_TYPES = {
764 a5728081 Guido Trotter
  HV_BOOT_ORDER: VTYPE_STRING,
765 cc130cc7 Marco Casavecchia
  HV_KVM_FLOPPY_IMAGE_PATH: VTYPE_STRING,
766 a5728081 Guido Trotter
  HV_CDROM_IMAGE_PATH: VTYPE_STRING,
767 cc130cc7 Marco Casavecchia
  HV_KVM_CDROM2_IMAGE_PATH: VTYPE_STRING,
768 a5728081 Guido Trotter
  HV_NIC_TYPE: VTYPE_STRING,
769 a5728081 Guido Trotter
  HV_DISK_TYPE: VTYPE_STRING,
770 cc130cc7 Marco Casavecchia
  HV_KVM_CDROM_DISK_TYPE: VTYPE_STRING,
771 6e6bb8d5 Guido Trotter
  HV_VNC_PASSWORD_FILE: VTYPE_STRING,
772 a5728081 Guido Trotter
  HV_VNC_BIND_ADDRESS: VTYPE_STRING,
773 a5728081 Guido Trotter
  HV_VNC_TLS: VTYPE_BOOL,
774 a5728081 Guido Trotter
  HV_VNC_X509: VTYPE_STRING,
775 a5728081 Guido Trotter
  HV_VNC_X509_VERIFY: VTYPE_BOOL,
776 b1cb62bd Andrea Spadaccini
  HV_KVM_SPICE_BIND: VTYPE_STRING,
777 b1cb62bd Andrea Spadaccini
  HV_KVM_SPICE_IP_VERSION: VTYPE_INT,
778 b451c4c7 Andrea Spadaccini
  HV_KVM_SPICE_PASSWORD_FILE: VTYPE_STRING,
779 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_LOSSLESS_IMG_COMPR: VTYPE_STRING,
780 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_JPEG_IMG_COMPR: VTYPE_STRING,
781 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR: VTYPE_STRING,
782 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_STREAMING_VIDEO_DETECTION: VTYPE_STRING,
783 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_AUDIO_COMPR: VTYPE_BOOL,
784 bfe86c76 Andrea Spadaccini
  HV_KVM_SPICE_USE_TLS: VTYPE_BOOL,
785 3e40b587 Andrea Spadaccini
  HV_KVM_SPICE_TLS_CIPHERS: VTYPE_STRING,
786 3e40b587 Andrea Spadaccini
  HV_KVM_SPICE_USE_VDAGENT: VTYPE_BOOL,
787 a5728081 Guido Trotter
  HV_ACPI: VTYPE_BOOL,
788 a5728081 Guido Trotter
  HV_PAE: VTYPE_BOOL,
789 2f2dbb4b Jun Futagawa
  HV_USE_BOOTLOADER: VTYPE_BOOL,
790 2f2dbb4b Jun Futagawa
  HV_BOOTLOADER_PATH: VTYPE_STRING,
791 2f2dbb4b Jun Futagawa
  HV_BOOTLOADER_ARGS: VTYPE_STRING,
792 a5728081 Guido Trotter
  HV_KERNEL_PATH: VTYPE_STRING,
793 f9d6542d Iustin Pop
  HV_KERNEL_ARGS: VTYPE_STRING,
794 a5728081 Guido Trotter
  HV_INITRD_PATH: VTYPE_STRING,
795 7adf7814 René Nussbaumer
  HV_ROOT_PATH: VTYPE_MAYBE_STRING,
796 a5728081 Guido Trotter
  HV_SERIAL_CONSOLE: VTYPE_BOOL,
797 a5728081 Guido Trotter
  HV_USB_MOUSE: VTYPE_STRING,
798 4f580fef Sébastien Bocahu
  HV_KEYMAP: VTYPE_STRING,
799 09ea8710 Iustin Pop
  HV_DEVICE_MODEL: VTYPE_STRING,
800 48297fa2 Iustin Pop
  HV_INIT_SCRIPT: VTYPE_STRING,
801 78411c60 Iustin Pop
  HV_MIGRATION_PORT: VTYPE_INT,
802 e43d4f9f Apollon Oikonomopoulos
  HV_MIGRATION_BANDWIDTH: VTYPE_INT,
803 e43d4f9f Apollon Oikonomopoulos
  HV_MIGRATION_DOWNTIME: VTYPE_INT,
804 783a6c0b Iustin Pop
  HV_MIGRATION_MODE: VTYPE_STRING,
805 6b970cef Jun Futagawa
  HV_USE_LOCALTIME: VTYPE_BOOL,
806 ea0f3d7a Iustin Pop
  HV_DISK_CACHE: VTYPE_STRING,
807 3424767f Guido Trotter
  HV_SECURITY_MODEL: VTYPE_STRING,
808 3424767f Guido Trotter
  HV_SECURITY_DOMAIN: VTYPE_STRING,
809 7ba594c0 Guido Trotter
  HV_KVM_FLAG: VTYPE_STRING,
810 fbe27e2b Guido Trotter
  HV_VHOST_NET: VTYPE_BOOL,
811 84c08e4e Balazs Lecz
  HV_KVM_USE_CHROOT: VTYPE_BOOL,
812 e3ed5316 Balazs Lecz
  HV_CPU_MASK: VTYPE_STRING,
813 4f958b0b Miguel Di Ciurcio Filho
  HV_MEM_PATH: VTYPE_STRING,
814 87f0aa48 Jack
  HV_PASSTHROUGH: VTYPE_STRING,
815 525011bc Maciej Bliziński
  HV_BLOCKDEV_PREFIX: VTYPE_STRING,
816 990ade2d Stephen Shirley
  HV_REBOOT_BEHAVIOR: VTYPE_STRING,
817 7cb42171 Nikita Staroverov
  HV_CPU_TYPE: VTYPE_STRING,
818 8bd977e9 Sébastien Bocahu
  HV_CPU_CAP: VTYPE_INT,
819 8bd977e9 Sébastien Bocahu
  HV_CPU_WEIGHT: VTYPE_INT,
820 a5728081 Guido Trotter
  }
821 a5728081 Guido Trotter
822 a5728081 Guido Trotter
HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
823 5018a335 Iustin Pop
824 a6c7e2a2 Iustin Pop
HVS_PARAMETER_TITLES = {
825 a6c7e2a2 Iustin Pop
  HV_ACPI: "ACPI",
826 a6c7e2a2 Iustin Pop
  HV_BOOT_ORDER: "Boot_order",
827 a6c7e2a2 Iustin Pop
  HV_CDROM_IMAGE_PATH: "CDROM_image_path",
828 a6c7e2a2 Iustin Pop
  HV_DISK_TYPE: "Disk_type",
829 a6c7e2a2 Iustin Pop
  HV_INITRD_PATH: "Initrd_path",
830 a6c7e2a2 Iustin Pop
  HV_KERNEL_PATH: "Kernel_path",
831 a6c7e2a2 Iustin Pop
  HV_NIC_TYPE: "NIC_type",
832 a6c7e2a2 Iustin Pop
  HV_PAE: "PAE",
833 a6c7e2a2 Iustin Pop
  HV_VNC_BIND_ADDRESS: "VNC_bind_address",
834 a6c7e2a2 Iustin Pop
  HV_PASSTHROUGH: "pci_pass",
835 a6c7e2a2 Iustin Pop
  HV_CPU_TYPE: "cpu_type",
836 a6c7e2a2 Iustin Pop
  }
837 a6c7e2a2 Iustin Pop
838 6a1434d7 Andrea Spadaccini
# Migration statuses
839 6a1434d7 Andrea Spadaccini
HV_MIGRATION_COMPLETED = "completed"
840 6a1434d7 Andrea Spadaccini
HV_MIGRATION_ACTIVE = "active"
841 6a1434d7 Andrea Spadaccini
HV_MIGRATION_FAILED = "failed"
842 6a1434d7 Andrea Spadaccini
HV_MIGRATION_CANCELLED = "cancelled"
843 6a1434d7 Andrea Spadaccini
844 b8028dcf Michael Hanselmann
HV_MIGRATION_VALID_STATUSES = compat.UniqueFrozenset([
845 6a1434d7 Andrea Spadaccini
  HV_MIGRATION_COMPLETED,
846 6a1434d7 Andrea Spadaccini
  HV_MIGRATION_ACTIVE,
847 6a1434d7 Andrea Spadaccini
  HV_MIGRATION_FAILED,
848 6a1434d7 Andrea Spadaccini
  HV_MIGRATION_CANCELLED,
849 6a1434d7 Andrea Spadaccini
  ])
850 6a1434d7 Andrea Spadaccini
851 b8028dcf Michael Hanselmann
HV_MIGRATION_FAILED_STATUSES = compat.UniqueFrozenset([
852 6a1434d7 Andrea Spadaccini
  HV_MIGRATION_FAILED,
853 6a1434d7 Andrea Spadaccini
  HV_MIGRATION_CANCELLED,
854 6a1434d7 Andrea Spadaccini
  ])
855 6a1434d7 Andrea Spadaccini
856 6a1434d7 Andrea Spadaccini
# KVM-specific statuses
857 6a1434d7 Andrea Spadaccini
HV_KVM_MIGRATION_VALID_STATUSES = HV_MIGRATION_VALID_STATUSES
858 6a1434d7 Andrea Spadaccini
859 34fbc862 Andrea Spadaccini
# Node info keys
860 34fbc862 Andrea Spadaccini
HV_NODEINFO_KEY_VERSION = "hv_version"
861 34fbc862 Andrea Spadaccini
862 5b49ed09 René Nussbaumer
# Hypervisor state
863 5b49ed09 René Nussbaumer
HVST_MEMORY_TOTAL = "mem_total"
864 5b49ed09 René Nussbaumer
HVST_MEMORY_NODE = "mem_node"
865 5b49ed09 René Nussbaumer
HVST_MEMORY_HV = "mem_hv"
866 5b49ed09 René Nussbaumer
HVST_CPU_TOTAL = "cpu_total"
867 5b49ed09 René Nussbaumer
HVST_CPU_NODE = "cpu_node"
868 5b49ed09 René Nussbaumer
869 2da9f556 René Nussbaumer
HVST_DEFAULTS = {
870 2da9f556 René Nussbaumer
  HVST_MEMORY_TOTAL: 0,
871 2da9f556 René Nussbaumer
  HVST_MEMORY_NODE: 0,
872 2da9f556 René Nussbaumer
  HVST_MEMORY_HV: 0,
873 2da9f556 René Nussbaumer
  HVST_CPU_TOTAL: 1,
874 2da9f556 René Nussbaumer
  HVST_CPU_NODE: 1,
875 2da9f556 René Nussbaumer
  }
876 2da9f556 René Nussbaumer
877 5b49ed09 René Nussbaumer
HVSTS_PARAMETER_TYPES = {
878 5b49ed09 René Nussbaumer
  HVST_MEMORY_TOTAL: VTYPE_INT,
879 5b49ed09 René Nussbaumer
  HVST_MEMORY_NODE: VTYPE_INT,
880 5b49ed09 René Nussbaumer
  HVST_MEMORY_HV: VTYPE_INT,
881 5b49ed09 René Nussbaumer
  HVST_CPU_TOTAL: VTYPE_INT,
882 5b49ed09 René Nussbaumer
  HVST_CPU_NODE: VTYPE_INT,
883 5b49ed09 René Nussbaumer
  }
884 5b49ed09 René Nussbaumer
885 5b49ed09 René Nussbaumer
HVSTS_PARAMETERS = frozenset(HVSTS_PARAMETER_TYPES.keys())
886 5b49ed09 René Nussbaumer
887 5b49ed09 René Nussbaumer
# Disk state
888 5b49ed09 René Nussbaumer
DS_DISK_TOTAL = "disk_total"
889 5b49ed09 René Nussbaumer
DS_DISK_RESERVED = "disk_reserved"
890 5b49ed09 René Nussbaumer
DS_DISK_OVERHEAD = "disk_overhead"
891 5b49ed09 René Nussbaumer
892 2da9f556 René Nussbaumer
DS_DEFAULTS = {
893 2da9f556 René Nussbaumer
  DS_DISK_TOTAL: 0,
894 2da9f556 René Nussbaumer
  DS_DISK_RESERVED: 0,
895 2da9f556 René Nussbaumer
  DS_DISK_OVERHEAD: 0,
896 2da9f556 René Nussbaumer
  }
897 2da9f556 René Nussbaumer
898 5b49ed09 René Nussbaumer
DSS_PARAMETER_TYPES = {
899 5b49ed09 René Nussbaumer
  DS_DISK_TOTAL: VTYPE_INT,
900 5b49ed09 René Nussbaumer
  DS_DISK_RESERVED: VTYPE_INT,
901 5b49ed09 René Nussbaumer
  DS_DISK_OVERHEAD: VTYPE_INT,
902 5b49ed09 René Nussbaumer
  }
903 5b49ed09 René Nussbaumer
904 5b49ed09 René Nussbaumer
DSS_PARAMETERS = frozenset(DSS_PARAMETER_TYPES.keys())
905 b8028dcf Michael Hanselmann
DS_VALID_TYPES = compat.UniqueFrozenset([LD_LV])
906 5b49ed09 René Nussbaumer
907 3d5ebbf0 Stephen Shirley
# Backend parameter names
908 8c72ab2b Guido Trotter
BE_MEMORY = "memory" # deprecated and replaced by max and min mem
909 8c72ab2b Guido Trotter
BE_MAXMEM = "maxmem"
910 8c72ab2b Guido Trotter
BE_MINMEM = "minmem"
911 e64b8beb Iustin Pop
BE_VCPUS = "vcpus"
912 c0f2b229 Iustin Pop
BE_AUTO_BALANCE = "auto_balance"
913 11dc66f3 Bernardo Dal Seno
BE_ALWAYS_FAILOVER = "always_failover"
914 34700f5b René Nussbaumer
BE_SPINDLE_USE = "spindle_use"
915 e64b8beb Iustin Pop
916 a5728081 Guido Trotter
BES_PARAMETER_TYPES = {
917 2e1a6024 Guido Trotter
  BE_MAXMEM: VTYPE_SIZE,
918 2e1a6024 Guido Trotter
  BE_MINMEM: VTYPE_SIZE,
919 2e1a6024 Guido Trotter
  BE_VCPUS: VTYPE_INT,
920 2e1a6024 Guido Trotter
  BE_AUTO_BALANCE: VTYPE_BOOL,
921 11dc66f3 Bernardo Dal Seno
  BE_ALWAYS_FAILOVER: VTYPE_BOOL,
922 34700f5b René Nussbaumer
  BE_SPINDLE_USE: VTYPE_INT,
923 2e1a6024 Guido Trotter
  }
924 a5728081 Guido Trotter
925 a6c7e2a2 Iustin Pop
BES_PARAMETER_TITLES = {
926 a6c7e2a2 Iustin Pop
  BE_AUTO_BALANCE: "Auto_balance",
927 a6c7e2a2 Iustin Pop
  BE_MAXMEM: "ConfigMaxMem",
928 a6c7e2a2 Iustin Pop
  BE_MINMEM: "ConfigMinMem",
929 a6c7e2a2 Iustin Pop
  BE_VCPUS: "ConfigVCPUs",
930 a6c7e2a2 Iustin Pop
  }
931 a6c7e2a2 Iustin Pop
932 b2e233a5 Guido Trotter
BES_PARAMETER_COMPAT = {
933 b2e233a5 Guido Trotter
  BE_MEMORY: VTYPE_SIZE,
934 b2e233a5 Guido Trotter
  }
935 b2e233a5 Guido Trotter
BES_PARAMETER_COMPAT.update(BES_PARAMETER_TYPES)
936 b2e233a5 Guido Trotter
937 a5728081 Guido Trotter
BES_PARAMETERS = frozenset(BES_PARAMETER_TYPES.keys())
938 cd3ab26e Iustin Pop
939 918eb80b Agata Murawska
# instance specs
940 4f725341 Agata Murawska
ISPEC_MEM_SIZE = "memory-size"
941 4f725341 Agata Murawska
ISPEC_CPU_COUNT = "cpu-count"
942 4f725341 Agata Murawska
ISPEC_DISK_COUNT = "disk-count"
943 4f725341 Agata Murawska
ISPEC_DISK_SIZE = "disk-size"
944 4f725341 Agata Murawska
ISPEC_NIC_COUNT = "nic-count"
945 553cb5f7 René Nussbaumer
ISPEC_SPINDLE_USE = "spindle-use"
946 918eb80b Agata Murawska
947 918eb80b Agata Murawska
ISPECS_PARAMETER_TYPES = {
948 4f725341 Agata Murawska
  ISPEC_MEM_SIZE: VTYPE_INT,
949 4f725341 Agata Murawska
  ISPEC_CPU_COUNT: VTYPE_INT,
950 4f725341 Agata Murawska
  ISPEC_DISK_COUNT: VTYPE_INT,
951 4f725341 Agata Murawska
  ISPEC_DISK_SIZE: VTYPE_INT,
952 4f725341 Agata Murawska
  ISPEC_NIC_COUNT: VTYPE_INT,
953 553cb5f7 René Nussbaumer
  ISPEC_SPINDLE_USE: VTYPE_INT,
954 918eb80b Agata Murawska
  }
955 918eb80b Agata Murawska
956 918eb80b Agata Murawska
ISPECS_PARAMETERS = frozenset(ISPECS_PARAMETER_TYPES.keys())
957 918eb80b Agata Murawska
958 4f725341 Agata Murawska
ISPECS_MIN = "min"
959 4f725341 Agata Murawska
ISPECS_MAX = "max"
960 4f725341 Agata Murawska
ISPECS_STD = "std"
961 784b6603 René Nussbaumer
IPOLICY_DTS = "disk-templates"
962 784b6603 René Nussbaumer
IPOLICY_VCPU_RATIO = "vcpu-ratio"
963 a194dc28 Iustin Pop
IPOLICY_SPINDLE_RATIO = "spindle-ratio"
964 918eb80b Agata Murawska
965 b8028dcf Michael Hanselmann
IPOLICY_ISPECS = compat.UniqueFrozenset([
966 4f725341 Agata Murawska
  ISPECS_MIN,
967 4f725341 Agata Murawska
  ISPECS_MAX,
968 4f725341 Agata Murawska
  ISPECS_STD,
969 918eb80b Agata Murawska
  ])
970 ff6c5e55 Iustin Pop
971 b8028dcf Michael Hanselmann
IPOLICY_PARAMETERS = compat.UniqueFrozenset([
972 ff6c5e55 Iustin Pop
  IPOLICY_VCPU_RATIO,
973 a194dc28 Iustin Pop
  IPOLICY_SPINDLE_RATIO,
974 ff6c5e55 Iustin Pop
  ])
975 ff6c5e55 Iustin Pop
976 ff6c5e55 Iustin Pop
IPOLICY_ALL_KEYS = (IPOLICY_ISPECS |
977 ff6c5e55 Iustin Pop
                    IPOLICY_PARAMETERS |
978 ff6c5e55 Iustin Pop
                    frozenset([IPOLICY_DTS]))
979 918eb80b Agata Murawska
980 095e71aa René Nussbaumer
# Node parameter names
981 095e71aa René Nussbaumer
ND_OOB_PROGRAM = "oob_program"
982 432e8e2f Iustin Pop
ND_SPINDLE_COUNT = "spindle_count"
983 0ea11dcb Bernardo Dal Seno
ND_EXCLUSIVE_STORAGE = "exclusive_storage"
984 095e71aa René Nussbaumer
985 095e71aa René Nussbaumer
NDS_PARAMETER_TYPES = {
986 1df4d430 Iustin Pop
  ND_OOB_PROGRAM: VTYPE_STRING,
987 432e8e2f Iustin Pop
  ND_SPINDLE_COUNT: VTYPE_INT,
988 0ea11dcb Bernardo Dal Seno
  ND_EXCLUSIVE_STORAGE: VTYPE_BOOL,
989 2e1a6024 Guido Trotter
  }
990 095e71aa René Nussbaumer
991 095e71aa René Nussbaumer
NDS_PARAMETERS = frozenset(NDS_PARAMETER_TYPES.keys())
992 095e71aa René Nussbaumer
993 a6c7e2a2 Iustin Pop
NDS_PARAMETER_TITLES = {
994 a6c7e2a2 Iustin Pop
  ND_OOB_PROGRAM: "OutOfBandProgram",
995 a6c7e2a2 Iustin Pop
  ND_SPINDLE_COUNT: "SpindleCount",
996 0ea11dcb Bernardo Dal Seno
  ND_EXCLUSIVE_STORAGE: "ExclusiveStorage",
997 a6c7e2a2 Iustin Pop
  }
998 a6c7e2a2 Iustin Pop
999 bc5d0215 Andrea Spadaccini
# Logical Disks parameters
1000 ac00bf1b Andrea Spadaccini
LDP_RESYNC_RATE = "resync-rate"
1001 ac00bf1b Andrea Spadaccini
LDP_STRIPES = "stripes"
1002 ac00bf1b Andrea Spadaccini
LDP_BARRIERS = "disabled-barriers"
1003 ac00bf1b Andrea Spadaccini
LDP_NO_META_FLUSH = "disable-meta-flush"
1004 8002e46b Andrea Spadaccini
LDP_DEFAULT_METAVG = "default-metavg"
1005 ad1dd4c7 Andrea Spadaccini
LDP_DISK_CUSTOM = "disk-custom"
1006 ad1dd4c7 Andrea Spadaccini
LDP_NET_CUSTOM = "net-custom"
1007 f2f57b6e Andrea Spadaccini
LDP_DYNAMIC_RESYNC = "dynamic-resync"
1008 8584e922 Andrea Spadaccini
LDP_PLAN_AHEAD = "c-plan-ahead"
1009 8584e922 Andrea Spadaccini
LDP_FILL_TARGET = "c-fill-target"
1010 8584e922 Andrea Spadaccini
LDP_DELAY_TARGET = "c-delay-target"
1011 8584e922 Andrea Spadaccini
LDP_MAX_RATE = "c-max-rate"
1012 8584e922 Andrea Spadaccini
LDP_MIN_RATE = "c-min-rate"
1013 7181fba0 Constantinos Venetsanopoulos
LDP_POOL = "pool"
1014 bc5d0215 Andrea Spadaccini
DISK_LD_TYPES = {
1015 ac00bf1b Andrea Spadaccini
  LDP_RESYNC_RATE: VTYPE_INT,
1016 ac00bf1b Andrea Spadaccini
  LDP_STRIPES: VTYPE_INT,
1017 ac00bf1b Andrea Spadaccini
  LDP_BARRIERS: VTYPE_STRING,
1018 ac00bf1b Andrea Spadaccini
  LDP_NO_META_FLUSH: VTYPE_BOOL,
1019 8002e46b Andrea Spadaccini
  LDP_DEFAULT_METAVG: VTYPE_STRING,
1020 ad1dd4c7 Andrea Spadaccini
  LDP_DISK_CUSTOM: VTYPE_STRING,
1021 ad1dd4c7 Andrea Spadaccini
  LDP_NET_CUSTOM: VTYPE_STRING,
1022 f2f57b6e Andrea Spadaccini
  LDP_DYNAMIC_RESYNC: VTYPE_BOOL,
1023 8584e922 Andrea Spadaccini
  LDP_PLAN_AHEAD: VTYPE_INT,
1024 8584e922 Andrea Spadaccini
  LDP_FILL_TARGET: VTYPE_INT,
1025 8584e922 Andrea Spadaccini
  LDP_DELAY_TARGET: VTYPE_INT,
1026 8584e922 Andrea Spadaccini
  LDP_MAX_RATE: VTYPE_INT,
1027 8584e922 Andrea Spadaccini
  LDP_MIN_RATE: VTYPE_INT,
1028 7181fba0 Constantinos Venetsanopoulos
  LDP_POOL: VTYPE_STRING,
1029 bc5d0215 Andrea Spadaccini
  }
1030 bc5d0215 Andrea Spadaccini
DISK_LD_PARAMETERS = frozenset(DISK_LD_TYPES.keys())
1031 bc5d0215 Andrea Spadaccini
1032 f2f57b6e Andrea Spadaccini
# Disk template parameters (can be set/changed by the user via gnt-cluster and
1033 f2f57b6e Andrea Spadaccini
# gnt-group)
1034 6e9814a1 Andrea Spadaccini
DRBD_RESYNC_RATE = "resync-rate"
1035 43e11798 Andrea Spadaccini
DRBD_DATA_STRIPES = "data-stripes"
1036 43e11798 Andrea Spadaccini
DRBD_META_STRIPES = "meta-stripes"
1037 8a69b3a8 Andrea Spadaccini
DRBD_DISK_BARRIERS = "disk-barriers"
1038 8a69b3a8 Andrea Spadaccini
DRBD_META_BARRIERS = "meta-barriers"
1039 8002e46b Andrea Spadaccini
DRBD_DEFAULT_METAVG = "metavg"
1040 ad1dd4c7 Andrea Spadaccini
DRBD_DISK_CUSTOM = "disk-custom"
1041 ad1dd4c7 Andrea Spadaccini
DRBD_NET_CUSTOM = "net-custom"
1042 f2f57b6e Andrea Spadaccini
DRBD_DYNAMIC_RESYNC = "dynamic-resync"
1043 8584e922 Andrea Spadaccini
DRBD_PLAN_AHEAD = "c-plan-ahead"
1044 8584e922 Andrea Spadaccini
DRBD_FILL_TARGET = "c-fill-target"
1045 8584e922 Andrea Spadaccini
DRBD_DELAY_TARGET = "c-delay-target"
1046 8584e922 Andrea Spadaccini
DRBD_MAX_RATE = "c-max-rate"
1047 8584e922 Andrea Spadaccini
DRBD_MIN_RATE = "c-min-rate"
1048 43e11798 Andrea Spadaccini
LV_STRIPES = "stripes"
1049 7181fba0 Constantinos Venetsanopoulos
RBD_POOL = "pool"
1050 bc5d0215 Andrea Spadaccini
DISK_DT_TYPES = {
1051 6e9814a1 Andrea Spadaccini
  DRBD_RESYNC_RATE: VTYPE_INT,
1052 43e11798 Andrea Spadaccini
  DRBD_DATA_STRIPES: VTYPE_INT,
1053 43e11798 Andrea Spadaccini
  DRBD_META_STRIPES: VTYPE_INT,
1054 8a69b3a8 Andrea Spadaccini
  DRBD_DISK_BARRIERS: VTYPE_STRING,
1055 8a69b3a8 Andrea Spadaccini
  DRBD_META_BARRIERS: VTYPE_BOOL,
1056 8002e46b Andrea Spadaccini
  DRBD_DEFAULT_METAVG: VTYPE_STRING,
1057 ad1dd4c7 Andrea Spadaccini
  DRBD_DISK_CUSTOM: VTYPE_STRING,
1058 ad1dd4c7 Andrea Spadaccini
  DRBD_NET_CUSTOM: VTYPE_STRING,
1059 f2f57b6e Andrea Spadaccini
  DRBD_DYNAMIC_RESYNC: VTYPE_BOOL,
1060 8584e922 Andrea Spadaccini
  DRBD_PLAN_AHEAD: VTYPE_INT,
1061 8584e922 Andrea Spadaccini
  DRBD_FILL_TARGET: VTYPE_INT,
1062 8584e922 Andrea Spadaccini
  DRBD_DELAY_TARGET: VTYPE_INT,
1063 8584e922 Andrea Spadaccini
  DRBD_MAX_RATE: VTYPE_INT,
1064 8584e922 Andrea Spadaccini
  DRBD_MIN_RATE: VTYPE_INT,
1065 43e11798 Andrea Spadaccini
  LV_STRIPES: VTYPE_INT,
1066 7181fba0 Constantinos Venetsanopoulos
  RBD_POOL: VTYPE_STRING,
1067 bc5d0215 Andrea Spadaccini
  }
1068 bc5d0215 Andrea Spadaccini
1069 bc5d0215 Andrea Spadaccini
DISK_DT_PARAMETERS = frozenset(DISK_DT_TYPES.keys())
1070 bc5d0215 Andrea Spadaccini
1071 b2f29800 René Nussbaumer
# OOB supported commands
1072 b2f29800 René Nussbaumer
OOB_POWER_ON = "power-on"
1073 b2f29800 René Nussbaumer
OOB_POWER_OFF = "power-off"
1074 b2f29800 René Nussbaumer
OOB_POWER_CYCLE = "power-cycle"
1075 b2f29800 René Nussbaumer
OOB_POWER_STATUS = "power-status"
1076 b2f29800 René Nussbaumer
OOB_HEALTH = "health"
1077 b2f29800 René Nussbaumer
1078 b8028dcf Michael Hanselmann
OOB_COMMANDS = compat.UniqueFrozenset([
1079 21daa4a8 Stephen Shirley
  OOB_POWER_ON,
1080 21daa4a8 Stephen Shirley
  OOB_POWER_OFF,
1081 21daa4a8 Stephen Shirley
  OOB_POWER_CYCLE,
1082 21daa4a8 Stephen Shirley
  OOB_POWER_STATUS,
1083 3c286190 Dimitris Aragiorgis
  OOB_HEALTH,
1084 21daa4a8 Stephen Shirley
  ])
1085 b2f29800 René Nussbaumer
1086 b528a12d René Nussbaumer
OOB_POWER_STATUS_POWERED = "powered"
1087 b528a12d René Nussbaumer
1088 445f735d René Nussbaumer
OOB_TIMEOUT = 60 # 60 seconds
1089 beff3779 René Nussbaumer
OOB_POWER_DELAY = 2.0 # 2 seconds
1090 445f735d René Nussbaumer
1091 445f735d René Nussbaumer
OOB_STATUS_OK = "OK"
1092 445f735d René Nussbaumer
OOB_STATUS_WARNING = "WARNING"
1093 445f735d René Nussbaumer
OOB_STATUS_CRITICAL = "CRITICAL"
1094 445f735d René Nussbaumer
OOB_STATUS_UNKNOWN = "UNKNOWN"
1095 445f735d René Nussbaumer
1096 b8028dcf Michael Hanselmann
OOB_STATUSES = compat.UniqueFrozenset([
1097 445f735d René Nussbaumer
  OOB_STATUS_OK,
1098 445f735d René Nussbaumer
  OOB_STATUS_WARNING,
1099 445f735d René Nussbaumer
  OOB_STATUS_CRITICAL,
1100 445f735d René Nussbaumer
  OOB_STATUS_UNKNOWN,
1101 445f735d René Nussbaumer
  ])
1102 445f735d René Nussbaumer
1103 4ef7f423 Guido Trotter
# Instance Parameters Profile
1104 4ef7f423 Guido Trotter
PP_DEFAULT = "default"
1105 e64b8beb Iustin Pop
1106 246f4067 Guido Trotter
# NIC_* constants are used inside the ganeti config
1107 ac061be9 Guido Trotter
NIC_MODE = "mode"
1108 ac061be9 Guido Trotter
NIC_LINK = "link"
1109 ac061be9 Guido Trotter
1110 ac061be9 Guido Trotter
NIC_MODE_BRIDGED = "bridged"
1111 ac061be9 Guido Trotter
NIC_MODE_ROUTED = "routed"
1112 57fb6fcb Guido Trotter
NIC_MODE_OVS = "openvswitch"
1113 eaa4c57c Dimitris Aragiorgis
NIC_IP_POOL = "pool"
1114 ac061be9 Guido Trotter
1115 b8028dcf Michael Hanselmann
NIC_VALID_MODES = compat.UniqueFrozenset([
1116 b8028dcf Michael Hanselmann
  NIC_MODE_BRIDGED,
1117 b8028dcf Michael Hanselmann
  NIC_MODE_ROUTED,
1118 b8028dcf Michael Hanselmann
  NIC_MODE_OVS,
1119 b8028dcf Michael Hanselmann
  ])
1120 ac061be9 Guido Trotter
1121 2556424d Iustin Pop
RESERVE_ACTION = "reserve"
1122 2556424d Iustin Pop
RELEASE_ACTION = "release"
1123 e81eef56 Dimitris Aragiorgis
1124 eaa4c57c Dimitris Aragiorgis
# An extra description of the network.
1125 eaa4c57c Dimitris Aragiorgis
# Can be used by hooks/kvm-vif-bridge to apply different rules
1126 eaa4c57c Dimitris Aragiorgis
NETWORK_TYPE_PRIVATE = "private"
1127 eaa4c57c Dimitris Aragiorgis
NETWORK_TYPE_PUBLIC = "public"
1128 eaa4c57c Dimitris Aragiorgis
1129 b8028dcf Michael Hanselmann
NETWORK_VALID_TYPES = compat.UniqueFrozenset([
1130 b8028dcf Michael Hanselmann
  NETWORK_TYPE_PRIVATE,
1131 b8028dcf Michael Hanselmann
  NETWORK_TYPE_PUBLIC,
1132 b8028dcf Michael Hanselmann
  ])
1133 eaa4c57c Dimitris Aragiorgis
1134 ac061be9 Guido Trotter
NICS_PARAMETER_TYPES = {
1135 2e1a6024 Guido Trotter
  NIC_MODE: VTYPE_STRING,
1136 2e1a6024 Guido Trotter
  NIC_LINK: VTYPE_STRING,
1137 2e1a6024 Guido Trotter
  }
1138 ac061be9 Guido Trotter
1139 ac061be9 Guido Trotter
NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys())
1140 e64b8beb Iustin Pop
1141 246f4067 Guido Trotter
# IDISK_* constants are used in opcodes, to create/change disks
1142 bd061c35 Guido Trotter
IDISK_SIZE = "size"
1143 bd061c35 Guido Trotter
IDISK_MODE = "mode"
1144 8494604f Apollon Oikonomopoulos
IDISK_ADOPT = "adopt"
1145 7af3534e Dmitry Chernyak
IDISK_VG = "vg"
1146 87001920 Iustin Pop
IDISK_METAVG = "metavg"
1147 8494604f Apollon Oikonomopoulos
IDISK_PARAMS_TYPES = {
1148 8494604f Apollon Oikonomopoulos
  IDISK_SIZE: VTYPE_SIZE,
1149 8494604f Apollon Oikonomopoulos
  IDISK_MODE: VTYPE_STRING,
1150 8494604f Apollon Oikonomopoulos
  IDISK_ADOPT: VTYPE_STRING,
1151 7af3534e Dmitry Chernyak
  IDISK_VG: VTYPE_STRING,
1152 87001920 Iustin Pop
  IDISK_METAVG: VTYPE_STRING,
1153 8494604f Apollon Oikonomopoulos
  }
1154 cc87d736 Michael Hanselmann
IDISK_PARAMS = frozenset(IDISK_PARAMS_TYPES.keys())
1155 cc87d736 Michael Hanselmann
1156 246f4067 Guido Trotter
# INIC_* constants are used in opcodes, to create/change nics
1157 bd061c35 Guido Trotter
INIC_MAC = "mac"
1158 bd061c35 Guido Trotter
INIC_IP = "ip"
1159 bd061c35 Guido Trotter
INIC_MODE = "mode"
1160 bd061c35 Guido Trotter
INIC_LINK = "link"
1161 eaa4c57c Dimitris Aragiorgis
INIC_NETWORK = "network"
1162 cc87d736 Michael Hanselmann
INIC_PARAMS_TYPES = {
1163 cc87d736 Michael Hanselmann
  INIC_IP: VTYPE_MAYBE_STRING,
1164 cc87d736 Michael Hanselmann
  INIC_LINK: VTYPE_STRING,
1165 cc87d736 Michael Hanselmann
  INIC_MAC: VTYPE_STRING,
1166 cc87d736 Michael Hanselmann
  INIC_MODE: VTYPE_STRING,
1167 eaa4c57c Dimitris Aragiorgis
  INIC_NETWORK: VTYPE_MAYBE_STRING,
1168 cc87d736 Michael Hanselmann
  }
1169 cc87d736 Michael Hanselmann
INIC_PARAMS = frozenset(INIC_PARAMS_TYPES.keys())
1170 bd061c35 Guido Trotter
1171 2584d4a4 Alexander Schreiber
# Hypervisor constants
1172 00cd937c Iustin Pop
HT_XEN_PVM = "xen-pvm"
1173 2584d4a4 Alexander Schreiber
HT_FAKE = "fake"
1174 00cd937c Iustin Pop
HT_XEN_HVM = "xen-hvm"
1175 550e49b9 Guido Trotter
HT_KVM = "kvm"
1176 48297fa2 Iustin Pop
HT_CHROOT = "chroot"
1177 4b5e40a5 Iustin Pop
HT_LXC = "lxc"
1178 b8028dcf Michael Hanselmann
HYPER_TYPES = compat.UniqueFrozenset([
1179 4b5e40a5 Iustin Pop
  HT_XEN_PVM,
1180 4b5e40a5 Iustin Pop
  HT_FAKE,
1181 4b5e40a5 Iustin Pop
  HT_XEN_HVM,
1182 4b5e40a5 Iustin Pop
  HT_KVM,
1183 4b5e40a5 Iustin Pop
  HT_CHROOT,
1184 4b5e40a5 Iustin Pop
  HT_LXC,
1185 4b5e40a5 Iustin Pop
  ])
1186 b8028dcf Michael Hanselmann
HTS_REQ_PORT = compat.UniqueFrozenset([HT_XEN_HVM, HT_KVM])
1187 2584d4a4 Alexander Schreiber
1188 377d74c9 Guido Trotter
VNC_BASE_PORT = 5900
1189 0d2cd893 Manuel Franceschini
VNC_DEFAULT_BIND_ADDRESS = IP4_ADDRESS_ANY
1190 e54c4c5e Guido Trotter
1191 835528af Iustin Pop
# NIC types
1192 d08f6067 Guido Trotter
HT_NIC_RTL8139 = "rtl8139"
1193 d08f6067 Guido Trotter
HT_NIC_NE2K_PCI = "ne2k_pci"
1194 d08f6067 Guido Trotter
HT_NIC_NE2K_ISA = "ne2k_isa"
1195 43440815 Guido Trotter
HT_NIC_I82551 = "i82551"
1196 43440815 Guido Trotter
HT_NIC_I85557B = "i82557b"
1197 43440815 Guido Trotter
HT_NIC_I8259ER = "i82559er"
1198 43440815 Guido Trotter
HT_NIC_PCNET = "pcnet"
1199 43440815 Guido Trotter
HT_NIC_E1000 = "e1000"
1200 d08f6067 Guido Trotter
HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
1201 43440815 Guido Trotter
1202 b8028dcf Michael Hanselmann
HT_HVM_VALID_NIC_TYPES = compat.UniqueFrozenset([
1203 21daa4a8 Stephen Shirley
  HT_NIC_RTL8139,
1204 21daa4a8 Stephen Shirley
  HT_NIC_NE2K_PCI,
1205 21daa4a8 Stephen Shirley
  HT_NIC_E1000,
1206 21daa4a8 Stephen Shirley
  HT_NIC_NE2K_ISA,
1207 3c286190 Dimitris Aragiorgis
  HT_NIC_PARAVIRTUAL,
1208 21daa4a8 Stephen Shirley
  ])
1209 b8028dcf Michael Hanselmann
HT_KVM_VALID_NIC_TYPES = compat.UniqueFrozenset([
1210 21daa4a8 Stephen Shirley
  HT_NIC_RTL8139,
1211 21daa4a8 Stephen Shirley
  HT_NIC_NE2K_PCI,
1212 21daa4a8 Stephen Shirley
  HT_NIC_NE2K_ISA,
1213 21daa4a8 Stephen Shirley
  HT_NIC_I82551,
1214 21daa4a8 Stephen Shirley
  HT_NIC_I85557B,
1215 21daa4a8 Stephen Shirley
  HT_NIC_I8259ER,
1216 21daa4a8 Stephen Shirley
  HT_NIC_PCNET,
1217 21daa4a8 Stephen Shirley
  HT_NIC_E1000,
1218 3c286190 Dimitris Aragiorgis
  HT_NIC_PARAVIRTUAL,
1219 21daa4a8 Stephen Shirley
  ])
1220 21daa4a8 Stephen Shirley
1221 835528af Iustin Pop
# Disk types
1222 835528af Iustin Pop
HT_DISK_IOEMU = "ioemu"
1223 835528af Iustin Pop
HT_DISK_IDE = "ide"
1224 835528af Iustin Pop
HT_DISK_SCSI = "scsi"
1225 835528af Iustin Pop
HT_DISK_SD = "sd"
1226 835528af Iustin Pop
HT_DISK_MTD = "mtd"
1227 835528af Iustin Pop
HT_DISK_PFLASH = "pflash"
1228 835528af Iustin Pop
1229 ea0f3d7a Iustin Pop
HT_CACHE_DEFAULT = "default"
1230 ea0f3d7a Iustin Pop
HT_CACHE_NONE = "none"
1231 ea0f3d7a Iustin Pop
HT_CACHE_WTHROUGH = "writethrough"
1232 ea0f3d7a Iustin Pop
HT_CACHE_WBACK = "writeback"
1233 b8028dcf Michael Hanselmann
HT_VALID_CACHE_TYPES = compat.UniqueFrozenset([
1234 21daa4a8 Stephen Shirley
  HT_CACHE_DEFAULT,
1235 21daa4a8 Stephen Shirley
  HT_CACHE_NONE,
1236 21daa4a8 Stephen Shirley
  HT_CACHE_WTHROUGH,
1237 3c286190 Dimitris Aragiorgis
  HT_CACHE_WBACK,
1238 21daa4a8 Stephen Shirley
  ])
1239 ea0f3d7a Iustin Pop
1240 b8028dcf Michael Hanselmann
HT_HVM_VALID_DISK_TYPES = compat.UniqueFrozenset([
1241 b8028dcf Michael Hanselmann
  HT_DISK_PARAVIRTUAL,
1242 b8028dcf Michael Hanselmann
  HT_DISK_IOEMU,
1243 b8028dcf Michael Hanselmann
  ])
1244 b8028dcf Michael Hanselmann
HT_KVM_VALID_DISK_TYPES = compat.UniqueFrozenset([
1245 21daa4a8 Stephen Shirley
  HT_DISK_PARAVIRTUAL,
1246 21daa4a8 Stephen Shirley
  HT_DISK_IDE,
1247 21daa4a8 Stephen Shirley
  HT_DISK_SCSI,
1248 21daa4a8 Stephen Shirley
  HT_DISK_SD,
1249 21daa4a8 Stephen Shirley
  HT_DISK_MTD,
1250 3c286190 Dimitris Aragiorgis
  HT_DISK_PFLASH,
1251 21daa4a8 Stephen Shirley
  ])
1252 b894f5a8 Alexander Schreiber
1253 835528af Iustin Pop
# Mouse types:
1254 835528af Iustin Pop
HT_MOUSE_MOUSE = "mouse"
1255 835528af Iustin Pop
HT_MOUSE_TABLET = "tablet"
1256 835528af Iustin Pop
1257 b8028dcf Michael Hanselmann
HT_KVM_VALID_MOUSE_TYPES = compat.UniqueFrozenset([
1258 b8028dcf Michael Hanselmann
  HT_MOUSE_MOUSE,
1259 b8028dcf Michael Hanselmann
  HT_MOUSE_TABLET,
1260 b8028dcf Michael Hanselmann
  ])
1261 835528af Iustin Pop
1262 835528af Iustin Pop
# Boot order
1263 cc130cc7 Marco Casavecchia
HT_BO_FLOPPY = "floppy"
1264 835528af Iustin Pop
HT_BO_CDROM = "cdrom"
1265 835528af Iustin Pop
HT_BO_DISK = "disk"
1266 835528af Iustin Pop
HT_BO_NETWORK = "network"
1267 835528af Iustin Pop
1268 b8028dcf Michael Hanselmann
HT_KVM_VALID_BO_TYPES = compat.UniqueFrozenset([
1269 21daa4a8 Stephen Shirley
  HT_BO_FLOPPY,
1270 21daa4a8 Stephen Shirley
  HT_BO_CDROM,
1271 21daa4a8 Stephen Shirley
  HT_BO_DISK,
1272 3c286190 Dimitris Aragiorgis
  HT_BO_NETWORK,
1273 21daa4a8 Stephen Shirley
  ])
1274 835528af Iustin Pop
1275 ea064d24 Andrea Spadaccini
# SPICE lossless image compression options
1276 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ = "auto_glz"
1277 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ = "auto_lz"
1278 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC = "quic"
1279 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ = "glz"
1280 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ = "lz"
1281 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF = "off"
1282 ea064d24 Andrea Spadaccini
1283 b8028dcf Michael Hanselmann
HT_KVM_SPICE_VALID_LOSSLESS_IMG_COMPR_OPTIONS = compat.UniqueFrozenset([
1284 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ,
1285 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ,
1286 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC,
1287 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ,
1288 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ,
1289 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF,
1290 ea064d24 Andrea Spadaccini
  ])
1291 ea064d24 Andrea Spadaccini
1292 ea064d24 Andrea Spadaccini
# SPICE lossy image compression options (valid for both jpeg and zlib-glz)
1293 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO = "auto"
1294 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER = "never"
1295 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS = "always"
1296 ea064d24 Andrea Spadaccini
1297 b8028dcf Michael Hanselmann
HT_KVM_SPICE_VALID_LOSSY_IMG_COMPR_OPTIONS = compat.UniqueFrozenset([
1298 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO,
1299 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER,
1300 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS,
1301 ea064d24 Andrea Spadaccini
  ])
1302 ea064d24 Andrea Spadaccini
1303 ea064d24 Andrea Spadaccini
# SPICE video stream detection
1304 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF = "off"
1305 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL = "all"
1306 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER = "filter"
1307 ea064d24 Andrea Spadaccini
1308 b8028dcf Michael Hanselmann
HT_KVM_SPICE_VALID_VIDEO_STREAM_DETECTION_OPTIONS = compat.UniqueFrozenset([
1309 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF,
1310 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL,
1311 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER,
1312 ea064d24 Andrea Spadaccini
  ])
1313 ea064d24 Andrea Spadaccini
1314 3424767f Guido Trotter
# Security models
1315 3424767f Guido Trotter
HT_SM_NONE = "none"
1316 3424767f Guido Trotter
HT_SM_USER = "user"
1317 3424767f Guido Trotter
HT_SM_POOL = "pool"
1318 3424767f Guido Trotter
1319 b8028dcf Michael Hanselmann
HT_KVM_VALID_SM_TYPES = compat.UniqueFrozenset([
1320 b8028dcf Michael Hanselmann
  HT_SM_NONE,
1321 b8028dcf Michael Hanselmann
  HT_SM_USER,
1322 b8028dcf Michael Hanselmann
  HT_SM_POOL,
1323 b8028dcf Michael Hanselmann
  ])
1324 3424767f Guido Trotter
1325 7ba594c0 Guido Trotter
# Kvm flag values
1326 7ba594c0 Guido Trotter
HT_KVM_ENABLED = "enabled"
1327 7ba594c0 Guido Trotter
HT_KVM_DISABLED = "disabled"
1328 7ba594c0 Guido Trotter
1329 b8028dcf Michael Hanselmann
HT_KVM_FLAG_VALUES = compat.UniqueFrozenset([HT_KVM_ENABLED, HT_KVM_DISABLED])
1330 7ba594c0 Guido Trotter
1331 e71b9ef4 Iustin Pop
# Migration type
1332 e71b9ef4 Iustin Pop
HT_MIGRATION_LIVE = "live"
1333 e71b9ef4 Iustin Pop
HT_MIGRATION_NONLIVE = "non-live"
1334 b8028dcf Michael Hanselmann
HT_MIGRATION_MODES = compat.UniqueFrozenset([
1335 b8028dcf Michael Hanselmann
  HT_MIGRATION_LIVE,
1336 b8028dcf Michael Hanselmann
  HT_MIGRATION_NONLIVE,
1337 b8028dcf Michael Hanselmann
  ])
1338 e71b9ef4 Iustin Pop
1339 e54c4c5e Guido Trotter
# Cluster Verify steps
1340 d0c8c01d Iustin Pop
VERIFY_NPLUSONE_MEM = "nplusone_mem"
1341 b8028dcf Michael Hanselmann
VERIFY_OPTIONAL_CHECKS = compat.UniqueFrozenset([VERIFY_NPLUSONE_MEM])
1342 e54c4c5e Guido Trotter
1343 eedf99b5 Andrea Spadaccini
# Cluster Verify error classes
1344 eedf99b5 Andrea Spadaccini
CV_TCLUSTER = "cluster"
1345 eedf99b5 Andrea Spadaccini
CV_TNODE = "node"
1346 eedf99b5 Andrea Spadaccini
CV_TINSTANCE = "instance"
1347 eedf99b5 Andrea Spadaccini
1348 3ac3f5e4 Andrea Spadaccini
# Cluster Verify error codes and documentation
1349 3ac3f5e4 Andrea Spadaccini
CV_ECLUSTERCFG = \
1350 3ac3f5e4 Andrea Spadaccini
  (CV_TCLUSTER, "ECLUSTERCFG", "Cluster configuration verification failure")
1351 3ac3f5e4 Andrea Spadaccini
CV_ECLUSTERCERT = \
1352 3ac3f5e4 Andrea Spadaccini
  (CV_TCLUSTER, "ECLUSTERCERT",
1353 3ac3f5e4 Andrea Spadaccini
   "Cluster certificate files verification failure")
1354 3ac3f5e4 Andrea Spadaccini
CV_ECLUSTERFILECHECK = \
1355 3ac3f5e4 Andrea Spadaccini
  (CV_TCLUSTER, "ECLUSTERFILECHECK",
1356 3ac3f5e4 Andrea Spadaccini
   "Cluster configuration verification failure")
1357 3ac3f5e4 Andrea Spadaccini
CV_ECLUSTERDANGLINGNODES = \
1358 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ECLUSTERDANGLINGNODES",
1359 3ac3f5e4 Andrea Spadaccini
   "Some nodes belong to non-existing groups")
1360 3ac3f5e4 Andrea Spadaccini
CV_ECLUSTERDANGLINGINST = \
1361 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ECLUSTERDANGLINGINST",
1362 3ac3f5e4 Andrea Spadaccini
   "Some instances have a non-existing primary node")
1363 3ac3f5e4 Andrea Spadaccini
CV_EINSTANCEBADNODE = \
1364 3ac3f5e4 Andrea Spadaccini
  (CV_TINSTANCE, "EINSTANCEBADNODE",
1365 3ac3f5e4 Andrea Spadaccini
   "Instance marked as running lives on an offline node")
1366 3ac3f5e4 Andrea Spadaccini
CV_EINSTANCEDOWN = \
1367 3ac3f5e4 Andrea Spadaccini
  (CV_TINSTANCE, "EINSTANCEDOWN", "Instance not running on its primary node")
1368 3ac3f5e4 Andrea Spadaccini
CV_EINSTANCELAYOUT = \
1369 3ac3f5e4 Andrea Spadaccini
  (CV_TINSTANCE, "EINSTANCELAYOUT", "Instance has multiple secondary nodes")
1370 3ac3f5e4 Andrea Spadaccini
CV_EINSTANCEMISSINGDISK = \
1371 3ac3f5e4 Andrea Spadaccini
  (CV_TINSTANCE, "EINSTANCEMISSINGDISK", "Missing volume on an instance")
1372 3ac3f5e4 Andrea Spadaccini
CV_EINSTANCEFAULTYDISK = \
1373 3ac3f5e4 Andrea Spadaccini
  (CV_TINSTANCE, "EINSTANCEFAULTYDISK",
1374 3ac3f5e4 Andrea Spadaccini
   "Impossible to retrieve status for a disk")
1375 3ac3f5e4 Andrea Spadaccini
CV_EINSTANCEWRONGNODE = \
1376 3ac3f5e4 Andrea Spadaccini
  (CV_TINSTANCE, "EINSTANCEWRONGNODE", "Instance running on the wrong node")
1377 3ac3f5e4 Andrea Spadaccini
CV_EINSTANCESPLITGROUPS = \
1378 3ac3f5e4 Andrea Spadaccini
  (CV_TINSTANCE, "EINSTANCESPLITGROUPS",
1379 3ac3f5e4 Andrea Spadaccini
   "Instance with primary and secondary nodes in different groups")
1380 38c37a51 Agata Murawska
CV_EINSTANCEPOLICY = \
1381 38c37a51 Agata Murawska
  (CV_TINSTANCE, "EINSTANCEPOLICY",
1382 38c37a51 Agata Murawska
   "Instance does not meet policy")
1383 3ac3f5e4 Andrea Spadaccini
CV_ENODEDRBD = \
1384 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODEDRBD", "Error parsing the DRBD status file")
1385 3ac3f5e4 Andrea Spadaccini
CV_ENODEDRBDHELPER = \
1386 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODEDRBDHELPER", "Error caused by the DRBD helper")
1387 3ac3f5e4 Andrea Spadaccini
CV_ENODEFILECHECK = \
1388 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODEFILECHECK",
1389 3ac3f5e4 Andrea Spadaccini
   "Error retrieving the checksum of the node files")
1390 3ac3f5e4 Andrea Spadaccini
CV_ENODEHOOKS = \
1391 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODEHOOKS", "Communication failure in hooks execution")
1392 3ac3f5e4 Andrea Spadaccini
CV_ENODEHV = \
1393 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODEHV", "Hypervisor parameters verification failure")
1394 3ac3f5e4 Andrea Spadaccini
CV_ENODELVM = \
1395 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODELVM", "LVM-related node error")
1396 3ac3f5e4 Andrea Spadaccini
CV_ENODEN1 = \
1397 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODEN1", "Not enough memory to accommodate instance failovers")
1398 3ac3f5e4 Andrea Spadaccini
CV_ENODENET = \
1399 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODENET", "Network-related node error")
1400 3ac3f5e4 Andrea Spadaccini
CV_ENODEOS = \
1401 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODEOS", "OS-related node error")
1402 3ac3f5e4 Andrea Spadaccini
CV_ENODEORPHANINSTANCE = \
1403 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODEORPHANINSTANCE", "Unknown intance running on a node")
1404 3ac3f5e4 Andrea Spadaccini
CV_ENODEORPHANLV = \
1405 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODEORPHANLV", "Unknown LVM logical volume")
1406 3ac3f5e4 Andrea Spadaccini
CV_ENODERPC = \
1407 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODERPC",
1408 3ac3f5e4 Andrea Spadaccini
   "Error during connection to the primary node of an instance")
1409 3ac3f5e4 Andrea Spadaccini
CV_ENODESSH = \
1410 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODESSH", "SSH-related node error")
1411 3ac3f5e4 Andrea Spadaccini
CV_ENODEVERSION = \
1412 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODEVERSION",
1413 3ac3f5e4 Andrea Spadaccini
   "Protocol version mismatch or Ganeti version mismatch")
1414 3ac3f5e4 Andrea Spadaccini
CV_ENODESETUP = \
1415 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODESETUP", "Node setup error")
1416 3ac3f5e4 Andrea Spadaccini
CV_ENODETIME = \
1417 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODETIME", "Node returned invalid time")
1418 3ac3f5e4 Andrea Spadaccini
CV_ENODEOOBPATH = \
1419 3ac3f5e4 Andrea Spadaccini
  (CV_TNODE, "ENODEOOBPATH", "Invalid Out Of Band path")
1420 17b0b812 Andrea Spadaccini
CV_ENODEUSERSCRIPTS = \
1421 17b0b812 Andrea Spadaccini
  (CV_TNODE, "ENODEUSERSCRIPTS", "User scripts not present or not executable")
1422 72b35807 Michael Hanselmann
CV_ENODEFILESTORAGEPATHS = \
1423 72b35807 Michael Hanselmann
  (CV_TNODE, "ENODEFILESTORAGEPATHS", "Detected bad file storage paths")
1424 eedf99b5 Andrea Spadaccini
1425 b8028dcf Michael Hanselmann
CV_ALL_ECODES = compat.UniqueFrozenset([
1426 eedf99b5 Andrea Spadaccini
  CV_ECLUSTERCFG,
1427 eedf99b5 Andrea Spadaccini
  CV_ECLUSTERCERT,
1428 eedf99b5 Andrea Spadaccini
  CV_ECLUSTERFILECHECK,
1429 eedf99b5 Andrea Spadaccini
  CV_ECLUSTERDANGLINGNODES,
1430 eedf99b5 Andrea Spadaccini
  CV_ECLUSTERDANGLINGINST,
1431 eedf99b5 Andrea Spadaccini
  CV_EINSTANCEBADNODE,
1432 eedf99b5 Andrea Spadaccini
  CV_EINSTANCEDOWN,
1433 eedf99b5 Andrea Spadaccini
  CV_EINSTANCELAYOUT,
1434 eedf99b5 Andrea Spadaccini
  CV_EINSTANCEMISSINGDISK,
1435 eedf99b5 Andrea Spadaccini
  CV_EINSTANCEFAULTYDISK,
1436 eedf99b5 Andrea Spadaccini
  CV_EINSTANCEWRONGNODE,
1437 eedf99b5 Andrea Spadaccini
  CV_EINSTANCESPLITGROUPS,
1438 38c37a51 Agata Murawska
  CV_EINSTANCEPOLICY,
1439 eedf99b5 Andrea Spadaccini
  CV_ENODEDRBD,
1440 eedf99b5 Andrea Spadaccini
  CV_ENODEDRBDHELPER,
1441 eedf99b5 Andrea Spadaccini
  CV_ENODEFILECHECK,
1442 eedf99b5 Andrea Spadaccini
  CV_ENODEHOOKS,
1443 eedf99b5 Andrea Spadaccini
  CV_ENODEHV,
1444 eedf99b5 Andrea Spadaccini
  CV_ENODELVM,
1445 eedf99b5 Andrea Spadaccini
  CV_ENODEN1,
1446 eedf99b5 Andrea Spadaccini
  CV_ENODENET,
1447 eedf99b5 Andrea Spadaccini
  CV_ENODEOS,
1448 eedf99b5 Andrea Spadaccini
  CV_ENODEORPHANINSTANCE,
1449 eedf99b5 Andrea Spadaccini
  CV_ENODEORPHANLV,
1450 eedf99b5 Andrea Spadaccini
  CV_ENODERPC,
1451 eedf99b5 Andrea Spadaccini
  CV_ENODESSH,
1452 eedf99b5 Andrea Spadaccini
  CV_ENODEVERSION,
1453 eedf99b5 Andrea Spadaccini
  CV_ENODESETUP,
1454 eedf99b5 Andrea Spadaccini
  CV_ENODETIME,
1455 eedf99b5 Andrea Spadaccini
  CV_ENODEOOBPATH,
1456 17b0b812 Andrea Spadaccini
  CV_ENODEUSERSCRIPTS,
1457 72b35807 Michael Hanselmann
  CV_ENODEFILESTORAGEPATHS,
1458 eedf99b5 Andrea Spadaccini
  ])
1459 eedf99b5 Andrea Spadaccini
1460 b8028dcf Michael Hanselmann
CV_ALL_ECODES_STRINGS = \
1461 b8028dcf Michael Hanselmann
  compat.UniqueFrozenset(estr for (_, estr, _) in CV_ALL_ECODES)
1462 eedf99b5 Andrea Spadaccini
1463 25361b9a Iustin Pop
# Node verify constants
1464 7ef40fbe Luca Bigliardi
NV_DRBDHELPER = "drbd-helper"
1465 b0d85178 Iustin Pop
NV_DRBDLIST = "drbd-list"
1466 25361b9a Iustin Pop
NV_FILELIST = "filelist"
1467 25361b9a Iustin Pop
NV_HVINFO = "hvinfo"
1468 25361b9a Iustin Pop
NV_HYPERVISOR = "hypervisor"
1469 58a59652 Iustin Pop
NV_HVPARAMS = "hvparms"
1470 25361b9a Iustin Pop
NV_INSTANCELIST = "instancelist"
1471 b0d85178 Iustin Pop
NV_LVLIST = "lvlist"
1472 b0d85178 Iustin Pop
NV_MASTERIP = "master-ip"
1473 25361b9a Iustin Pop
NV_NODELIST = "nodelist"
1474 25361b9a Iustin Pop
NV_NODENETTEST = "node-net-test"
1475 7c0aa8e9 Iustin Pop
NV_NODESETUP = "nodesetup"
1476 b0d85178 Iustin Pop
NV_OSLIST = "oslist"
1477 b0d85178 Iustin Pop
NV_PVLIST = "pvlist"
1478 313b2dd4 Michael Hanselmann
NV_TIME = "time"
1479 b0d85178 Iustin Pop
NV_VERSION = "version"
1480 b0d85178 Iustin Pop
NV_VGLIST = "vglist"
1481 8964ee14 Iustin Pop
NV_VMNODES = "vmnodes"
1482 16f41f24 René Nussbaumer
NV_OOB_PATHS = "oob-paths"
1483 20d317d4 Iustin Pop
NV_BRIDGES = "bridges"
1484 17b0b812 Andrea Spadaccini
NV_USERSCRIPTS = "user-scripts"
1485 72b35807 Michael Hanselmann
NV_FILE_STORAGE_PATHS = "file-storage-paths"
1486 25361b9a Iustin Pop
1487 61a980a9 Michael Hanselmann
# Instance status
1488 61a980a9 Michael Hanselmann
INSTST_RUNNING = "running"
1489 61a980a9 Michael Hanselmann
INSTST_ADMINDOWN = "ADMIN_down"
1490 2e04d454 Agata Murawska
INSTST_ADMINOFFLINE = "ADMIN_offline"
1491 61a980a9 Michael Hanselmann
INSTST_NODEOFFLINE = "ERROR_nodeoffline"
1492 61a980a9 Michael Hanselmann
INSTST_NODEDOWN = "ERROR_nodedown"
1493 61a980a9 Michael Hanselmann
INSTST_WRONGNODE = "ERROR_wrongnode"
1494 61a980a9 Michael Hanselmann
INSTST_ERRORUP = "ERROR_up"
1495 61a980a9 Michael Hanselmann
INSTST_ERRORDOWN = "ERROR_down"
1496 b8028dcf Michael Hanselmann
INSTST_ALL = compat.UniqueFrozenset([
1497 61a980a9 Michael Hanselmann
  INSTST_RUNNING,
1498 61a980a9 Michael Hanselmann
  INSTST_ADMINDOWN,
1499 2e04d454 Agata Murawska
  INSTST_ADMINOFFLINE,
1500 61a980a9 Michael Hanselmann
  INSTST_NODEOFFLINE,
1501 61a980a9 Michael Hanselmann
  INSTST_NODEDOWN,
1502 61a980a9 Michael Hanselmann
  INSTST_WRONGNODE,
1503 61a980a9 Michael Hanselmann
  INSTST_ERRORUP,
1504 61a980a9 Michael Hanselmann
  INSTST_ERRORDOWN,
1505 61a980a9 Michael Hanselmann
  ])
1506 61a980a9 Michael Hanselmann
1507 9ca8a7c5 Agata Murawska
# Admin states
1508 9ca8a7c5 Agata Murawska
ADMINST_UP = "up"
1509 9ca8a7c5 Agata Murawska
ADMINST_DOWN = "down"
1510 9ca8a7c5 Agata Murawska
ADMINST_OFFLINE = "offline"
1511 b8028dcf Michael Hanselmann
ADMINST_ALL = compat.UniqueFrozenset([
1512 9ca8a7c5 Agata Murawska
  ADMINST_UP,
1513 9ca8a7c5 Agata Murawska
  ADMINST_DOWN,
1514 9ca8a7c5 Agata Murawska
  ADMINST_OFFLINE,
1515 9ca8a7c5 Agata Murawska
  ])
1516 9ca8a7c5 Agata Murawska
1517 1e28e3b8 Michael Hanselmann
# Node roles
1518 1e28e3b8 Michael Hanselmann
NR_REGULAR = "R"
1519 1e28e3b8 Michael Hanselmann
NR_MASTER = "M"
1520 1e28e3b8 Michael Hanselmann
NR_MCANDIDATE = "C"
1521 1e28e3b8 Michael Hanselmann
NR_DRAINED = "D"
1522 1e28e3b8 Michael Hanselmann
NR_OFFLINE = "O"
1523 b8028dcf Michael Hanselmann
NR_ALL = compat.UniqueFrozenset([
1524 1e28e3b8 Michael Hanselmann
  NR_REGULAR,
1525 1e28e3b8 Michael Hanselmann
  NR_MASTER,
1526 1e28e3b8 Michael Hanselmann
  NR_MCANDIDATE,
1527 1e28e3b8 Michael Hanselmann
  NR_DRAINED,
1528 1e28e3b8 Michael Hanselmann
  NR_OFFLINE,
1529 1e28e3b8 Michael Hanselmann
  ])
1530 1e28e3b8 Michael Hanselmann
1531 b98bf262 Michael Hanselmann
# SSL certificate check constants (in days)
1532 b98bf262 Michael Hanselmann
SSL_CERT_EXPIRATION_WARN = 30
1533 b98bf262 Michael Hanselmann
SSL_CERT_EXPIRATION_ERROR = 7
1534 b98bf262 Michael Hanselmann
1535 d61df03e Iustin Pop
# Allocator framework constants
1536 77031881 Iustin Pop
IALLOCATOR_VERSION = 2
1537 298fe380 Iustin Pop
IALLOCATOR_DIR_IN = "in"
1538 298fe380 Iustin Pop
IALLOCATOR_DIR_OUT = "out"
1539 b8028dcf Michael Hanselmann
VALID_IALLOCATOR_DIRECTIONS = compat.UniqueFrozenset([
1540 3636400f Iustin Pop
  IALLOCATOR_DIR_IN,
1541 3636400f Iustin Pop
  IALLOCATOR_DIR_OUT,
1542 3636400f Iustin Pop
  ])
1543 298fe380 Iustin Pop
IALLOCATOR_MODE_ALLOC = "allocate"
1544 298fe380 Iustin Pop
IALLOCATOR_MODE_RELOC = "relocate"
1545 60152bbe Michael Hanselmann
IALLOCATOR_MODE_CHG_GROUP = "change-group"
1546 60152bbe Michael Hanselmann
IALLOCATOR_MODE_NODE_EVAC = "node-evacuate"
1547 85d96a3c René Nussbaumer
IALLOCATOR_MODE_MULTI_ALLOC = "multi-allocate"
1548 b8028dcf Michael Hanselmann
VALID_IALLOCATOR_MODES = compat.UniqueFrozenset([
1549 3636400f Iustin Pop
  IALLOCATOR_MODE_ALLOC,
1550 3636400f Iustin Pop
  IALLOCATOR_MODE_RELOC,
1551 60152bbe Michael Hanselmann
  IALLOCATOR_MODE_CHG_GROUP,
1552 60152bbe Michael Hanselmann
  IALLOCATOR_MODE_NODE_EVAC,
1553 85d96a3c René Nussbaumer
  IALLOCATOR_MODE_MULTI_ALLOC,
1554 3636400f Iustin Pop
  ])
1555 298fe380 Iustin Pop
IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH
1556 43a8f36a Bernardo Dal Seno
DEFAULT_IALLOCATOR_SHORTCUT = "."
1557 5f33b613 Michael Hanselmann
1558 60152bbe Michael Hanselmann
IALLOCATOR_NEVAC_PRI = "primary-only"
1559 60152bbe Michael Hanselmann
IALLOCATOR_NEVAC_SEC = "secondary-only"
1560 60152bbe Michael Hanselmann
IALLOCATOR_NEVAC_ALL = "all"
1561 b8028dcf Michael Hanselmann
IALLOCATOR_NEVAC_MODES = compat.UniqueFrozenset([
1562 60152bbe Michael Hanselmann
  IALLOCATOR_NEVAC_PRI,
1563 60152bbe Michael Hanselmann
  IALLOCATOR_NEVAC_SEC,
1564 60152bbe Michael Hanselmann
  IALLOCATOR_NEVAC_ALL,
1565 60152bbe Michael Hanselmann
  ])
1566 60152bbe Michael Hanselmann
1567 cb92e7a1 Michael Hanselmann
# Node evacuation
1568 cb92e7a1 Michael Hanselmann
NODE_EVAC_PRI = "primary-only"
1569 cb92e7a1 Michael Hanselmann
NODE_EVAC_SEC = "secondary-only"
1570 cb92e7a1 Michael Hanselmann
NODE_EVAC_ALL = "all"
1571 b8028dcf Michael Hanselmann
NODE_EVAC_MODES = compat.UniqueFrozenset([
1572 cb92e7a1 Michael Hanselmann
  NODE_EVAC_PRI,
1573 cb92e7a1 Michael Hanselmann
  NODE_EVAC_SEC,
1574 cb92e7a1 Michael Hanselmann
  NODE_EVAC_ALL,
1575 cb92e7a1 Michael Hanselmann
  ])
1576 cb92e7a1 Michael Hanselmann
1577 f1da30e6 Michael Hanselmann
# Job queue
1578 f1da30e6 Michael Hanselmann
JOB_QUEUE_VERSION = 1
1579 f87b405e Michael Hanselmann
JOB_QUEUE_SIZE_HARD_LIMIT = 5000
1580 f1da30e6 Michael Hanselmann
1581 bac5ffc3 Oleksiy Mishchenko
JOB_ID_TEMPLATE = r"\d+"
1582 cb66225d Michael Hanselmann
JOB_FILE_RE = re.compile(r"^job-(%s)$" % JOB_ID_TEMPLATE)
1583 bac5ffc3 Oleksiy Mishchenko
1584 5c735209 Iustin Pop
# unchanged job return
1585 5c735209 Iustin Pop
JOB_NOTCHANGED = "nochange"
1586 5c735209 Iustin Pop
1587 5f33b613 Michael Hanselmann
# Job status
1588 5f33b613 Michael Hanselmann
JOB_STATUS_QUEUED = "queued"
1589 47099cd1 Michael Hanselmann
JOB_STATUS_WAITING = "waiting"
1590 fbf0262f Michael Hanselmann
JOB_STATUS_CANCELING = "canceling"
1591 5f33b613 Michael Hanselmann
JOB_STATUS_RUNNING = "running"
1592 5f33b613 Michael Hanselmann
JOB_STATUS_CANCELED = "canceled"
1593 5f33b613 Michael Hanselmann
JOB_STATUS_SUCCESS = "success"
1594 5f33b613 Michael Hanselmann
JOB_STATUS_ERROR = "error"
1595 b8028dcf Michael Hanselmann
JOBS_PENDING = compat.UniqueFrozenset([
1596 1eaddbc6 Michael Hanselmann
  JOB_STATUS_QUEUED,
1597 1eaddbc6 Michael Hanselmann
  JOB_STATUS_WAITING,
1598 1eaddbc6 Michael Hanselmann
  JOB_STATUS_CANCELING,
1599 1eaddbc6 Michael Hanselmann
  ])
1600 b8028dcf Michael Hanselmann
JOBS_FINALIZED = compat.UniqueFrozenset([
1601 989a8bee Michael Hanselmann
  JOB_STATUS_CANCELED,
1602 989a8bee Michael Hanselmann
  JOB_STATUS_SUCCESS,
1603 989a8bee Michael Hanselmann
  JOB_STATUS_ERROR,
1604 989a8bee Michael Hanselmann
  ])
1605 b8028dcf Michael Hanselmann
JOB_STATUS_ALL = compat.UniqueFrozenset([
1606 db5bce34 Michael Hanselmann
  JOB_STATUS_RUNNING,
1607 1eaddbc6 Michael Hanselmann
  ]) | JOBS_PENDING | JOBS_FINALIZED
1608 5f33b613 Michael Hanselmann
1609 34327f51 Iustin Pop
# OpCode status
1610 34327f51 Iustin Pop
# not yet finalized
1611 5f33b613 Michael Hanselmann
OP_STATUS_QUEUED = "queued"
1612 47099cd1 Michael Hanselmann
OP_STATUS_WAITING = "waiting"
1613 fbf0262f Michael Hanselmann
OP_STATUS_CANCELING = "canceling"
1614 5f33b613 Michael Hanselmann
OP_STATUS_RUNNING = "running"
1615 34327f51 Iustin Pop
# finalized
1616 4cb1d919 Michael Hanselmann
OP_STATUS_CANCELED = "canceled"
1617 5f33b613 Michael Hanselmann
OP_STATUS_SUCCESS = "success"
1618 5f33b613 Michael Hanselmann
OP_STATUS_ERROR = "error"
1619 b8028dcf Michael Hanselmann
OPS_FINALIZED = compat.UniqueFrozenset([
1620 21daa4a8 Stephen Shirley
  OP_STATUS_CANCELED,
1621 21daa4a8 Stephen Shirley
  OP_STATUS_SUCCESS,
1622 3c286190 Dimitris Aragiorgis
  OP_STATUS_ERROR,
1623 21daa4a8 Stephen Shirley
  ])
1624 f1048938 Iustin Pop
1625 e5d8774b Michael Hanselmann
# OpCode priority
1626 e5d8774b Michael Hanselmann
OP_PRIO_LOWEST = +19
1627 e5d8774b Michael Hanselmann
OP_PRIO_HIGHEST = -20
1628 e5d8774b Michael Hanselmann
1629 e5d8774b Michael Hanselmann
OP_PRIO_LOW = +10
1630 e5d8774b Michael Hanselmann
OP_PRIO_NORMAL = 0
1631 e5d8774b Michael Hanselmann
OP_PRIO_HIGH = -10
1632 e5d8774b Michael Hanselmann
1633 b8028dcf Michael Hanselmann
OP_PRIO_SUBMIT_VALID = compat.UniqueFrozenset([
1634 e71c8147 Michael Hanselmann
  OP_PRIO_LOW,
1635 e71c8147 Michael Hanselmann
  OP_PRIO_NORMAL,
1636 e71c8147 Michael Hanselmann
  OP_PRIO_HIGH,
1637 e71c8147 Michael Hanselmann
  ])
1638 e71c8147 Michael Hanselmann
1639 e5d8774b Michael Hanselmann
OP_PRIO_DEFAULT = OP_PRIO_NORMAL
1640 e5d8774b Michael Hanselmann
1641 0b04b188 Michael Hanselmann
# Lock recalculate mode
1642 0b04b188 Michael Hanselmann
LOCKS_REPLACE = "replace"
1643 0b04b188 Michael Hanselmann
LOCKS_APPEND = "append"
1644 0b04b188 Michael Hanselmann
1645 0b04b188 Michael Hanselmann
# Lock timeout (sum) before we should go into blocking acquire (still
1646 0b04b188 Michael Hanselmann
# can be reset by priority change); computed as max time (10 hours)
1647 0b04b188 Michael Hanselmann
# before we should actually go into blocking acquire given that we
1648 0b04b188 Michael Hanselmann
# start from default priority level; in seconds
1649 0b04b188 Michael Hanselmann
# TODO
1650 0b04b188 Michael Hanselmann
LOCK_ATTEMPTS_TIMEOUT = 10 * 3600 / (OP_PRIO_DEFAULT - OP_PRIO_HIGHEST)
1651 0b04b188 Michael Hanselmann
LOCK_ATTEMPTS_MAXWAIT = 15.0
1652 0b04b188 Michael Hanselmann
LOCK_ATTEMPTS_MINWAIT = 1.0
1653 0b04b188 Michael Hanselmann
1654 f1048938 Iustin Pop
# Execution log types
1655 f1048938 Iustin Pop
ELOG_MESSAGE = "message"
1656 9bf56d77 Michael Hanselmann
ELOG_REMOTE_IMPORT = "remote-import"
1657 e58f87a9 Michael Hanselmann
ELOG_JQUEUE_TEST = "jqueue-test"
1658 e58f87a9 Michael Hanselmann
1659 19ddc57a René Nussbaumer
# /etc/hosts modification
1660 19ddc57a René Nussbaumer
ETC_HOSTS_ADD = "add"
1661 19ddc57a René Nussbaumer
ETC_HOSTS_REMOVE = "remove"
1662 19ddc57a René Nussbaumer
1663 e58f87a9 Michael Hanselmann
# Job queue test
1664 e58f87a9 Michael Hanselmann
JQT_MSGPREFIX = "TESTMSG="
1665 e58f87a9 Michael Hanselmann
JQT_EXPANDNAMES = "expandnames"
1666 e58f87a9 Michael Hanselmann
JQT_EXEC = "exec"
1667 e58f87a9 Michael Hanselmann
JQT_LOGMSG = "logmsg"
1668 f99010b2 Michael Hanselmann
JQT_STARTMSG = "startmsg"
1669 b8028dcf Michael Hanselmann
JQT_ALL = compat.UniqueFrozenset([
1670 e58f87a9 Michael Hanselmann
  JQT_EXPANDNAMES,
1671 e58f87a9 Michael Hanselmann
  JQT_EXEC,
1672 e58f87a9 Michael Hanselmann
  JQT_LOGMSG,
1673 f99010b2 Michael Hanselmann
  JQT_STARTMSG,
1674 e58f87a9 Michael Hanselmann
  ])
1675 d4104181 Iustin Pop
1676 4a917de6 Michael Hanselmann
# Query resources
1677 dff5f600 Michael Hanselmann
QR_CLUSTER = "cluster"
1678 4a917de6 Michael Hanselmann
QR_INSTANCE = "instance"
1679 4a917de6 Michael Hanselmann
QR_NODE = "node"
1680 24d16f76 Michael Hanselmann
QR_LOCK = "lock"
1681 e070c663 Adeodato Simo
QR_GROUP = "group"
1682 be3a4b14 Michael Hanselmann
QR_OS = "os"
1683 9665bb3a Michael Hanselmann
QR_JOB = "job"
1684 0fdf247d Michael Hanselmann
QR_EXPORT = "export"
1685 eaa4c57c Dimitris Aragiorgis
QR_NETWORK = "network"
1686 4a917de6 Michael Hanselmann
1687 4a917de6 Michael Hanselmann
#: List of resources which can be queried using L{opcodes.OpQuery}
1688 b8028dcf Michael Hanselmann
QR_VIA_OP = compat.UniqueFrozenset([
1689 dff5f600 Michael Hanselmann
  QR_CLUSTER,
1690 0fdf247d Michael Hanselmann
  QR_INSTANCE,
1691 0fdf247d Michael Hanselmann
  QR_NODE,
1692 0fdf247d Michael Hanselmann
  QR_GROUP,
1693 0fdf247d Michael Hanselmann
  QR_OS,
1694 0fdf247d Michael Hanselmann
  QR_EXPORT,
1695 eaa4c57c Dimitris Aragiorgis
  QR_NETWORK,
1696 0fdf247d Michael Hanselmann
  ])
1697 4a917de6 Michael Hanselmann
1698 3d5ebbf0 Stephen Shirley
#: List of resources which can be queried using Local UniX Interface
1699 abd66bf8 Michael Hanselmann
QR_VIA_LUXI = QR_VIA_OP.union([
1700 24d16f76 Michael Hanselmann
  QR_LOCK,
1701 9665bb3a Michael Hanselmann
  QR_JOB,
1702 28b71a76 Michael Hanselmann
  ])
1703 28b71a76 Michael Hanselmann
1704 abd66bf8 Michael Hanselmann
#: List of resources which can be queried using RAPI
1705 abd66bf8 Michael Hanselmann
QR_VIA_RAPI = QR_VIA_LUXI
1706 abd66bf8 Michael Hanselmann
1707 4a917de6 Michael Hanselmann
# Query field types
1708 4a917de6 Michael Hanselmann
QFT_UNKNOWN = "unknown"
1709 4a917de6 Michael Hanselmann
QFT_TEXT = "text"
1710 4a917de6 Michael Hanselmann
QFT_BOOL = "bool"
1711 4a917de6 Michael Hanselmann
QFT_NUMBER = "number"
1712 4a917de6 Michael Hanselmann
QFT_UNIT = "unit"
1713 4a917de6 Michael Hanselmann
QFT_TIMESTAMP = "timestamp"
1714 4a917de6 Michael Hanselmann
QFT_OTHER = "other"
1715 4a917de6 Michael Hanselmann
1716 4a917de6 Michael Hanselmann
#: All query field types
1717 b8028dcf Michael Hanselmann
QFT_ALL = compat.UniqueFrozenset([
1718 4a917de6 Michael Hanselmann
  QFT_UNKNOWN,
1719 4a917de6 Michael Hanselmann
  QFT_TEXT,
1720 4a917de6 Michael Hanselmann
  QFT_BOOL,
1721 4a917de6 Michael Hanselmann
  QFT_NUMBER,
1722 4a917de6 Michael Hanselmann
  QFT_UNIT,
1723 4a917de6 Michael Hanselmann
  QFT_TIMESTAMP,
1724 4a917de6 Michael Hanselmann
  QFT_OTHER,
1725 4a917de6 Michael Hanselmann
  ])
1726 4a917de6 Michael Hanselmann
1727 a6070ef7 Michael Hanselmann
# Query result field status (don't change or reuse values as they're used by
1728 a6070ef7 Michael Hanselmann
# clients)
1729 4a917de6 Michael Hanselmann
#: Normal field status
1730 cfb084ae René Nussbaumer
RS_NORMAL = 0
1731 4a917de6 Michael Hanselmann
#: Unknown field
1732 cfb084ae René Nussbaumer
RS_UNKNOWN = 1
1733 cfb084ae René Nussbaumer
#: No data (e.g. RPC error), can be used instead of L{RS_OFFLINE}
1734 cfb084ae René Nussbaumer
RS_NODATA = 2
1735 dcb9946c Iustin Pop
#: Value unavailable/unsupported for item; if this field is supported
1736 e18c6c47 Iustin Pop
#: but we cannot get the data for the moment, RS_NODATA or
1737 e18c6c47 Iustin Pop
#: RS_OFFLINE should be used
1738 cfb084ae René Nussbaumer
RS_UNAVAIL = 3
1739 a6070ef7 Michael Hanselmann
#: Resource marked offline
1740 cfb084ae René Nussbaumer
RS_OFFLINE = 4
1741 cfb084ae René Nussbaumer
1742 b8028dcf Michael Hanselmann
RS_ALL = compat.UniqueFrozenset([
1743 cfb084ae René Nussbaumer
  RS_NORMAL,
1744 cfb084ae René Nussbaumer
  RS_UNKNOWN,
1745 cfb084ae René Nussbaumer
  RS_NODATA,
1746 cfb084ae René Nussbaumer
  RS_UNAVAIL,
1747 cfb084ae René Nussbaumer
  RS_OFFLINE,
1748 ee3aedff Michael Hanselmann
  ])
1749 ee3aedff Michael Hanselmann
1750 f0b1bafe Iustin Pop
#: Dictionary with special field cases and their verbose/terse formatting
1751 f0b1bafe Iustin Pop
RSS_DESCRIPTION = {
1752 f0b1bafe Iustin Pop
  RS_UNKNOWN: ("(unknown)", "??"),
1753 e687ec01 Michael Hanselmann
  RS_NODATA: ("(nodata)", "?"),
1754 f0b1bafe Iustin Pop
  RS_OFFLINE: ("(offline)", "*"),
1755 f0b1bafe Iustin Pop
  RS_UNAVAIL: ("(unavail)", "-"),
1756 f0b1bafe Iustin Pop
  }
1757 f0b1bafe Iustin Pop
1758 c5e489f7 Iustin Pop
# max dynamic devices
1759 24991749 Iustin Pop
MAX_NICS = 8
1760 24991749 Iustin Pop
MAX_DISKS = 16
1761 24991749 Iustin Pop
1762 c09254c2 Iustin Pop
# SSCONF file prefix
1763 c09254c2 Iustin Pop
SSCONF_FILEPREFIX = "ssconf_"
1764 93384844 Iustin Pop
# SSCONF keys
1765 93384844 Iustin Pop
SS_CLUSTER_NAME = "cluster_name"
1766 5d60b3bd Iustin Pop
SS_CLUSTER_TAGS = "cluster_tags"
1767 93384844 Iustin Pop
SS_FILE_STORAGE_DIR = "file_storage_dir"
1768 4b97f902 Apollon Oikonomopoulos
SS_SHARED_FILE_STORAGE_DIR = "shared_file_storage_dir"
1769 f56618e0 Iustin Pop
SS_MASTER_CANDIDATES = "master_candidates"
1770 8113a52e Luca Bigliardi
SS_MASTER_CANDIDATES_IPS = "master_candidates_ips"
1771 93384844 Iustin Pop
SS_MASTER_IP = "master_ip"
1772 93384844 Iustin Pop
SS_MASTER_NETDEV = "master_netdev"
1773 5a8648eb Andrea Spadaccini
SS_MASTER_NETMASK = "master_netmask"
1774 93384844 Iustin Pop
SS_MASTER_NODE = "master_node"
1775 93384844 Iustin Pop
SS_NODE_LIST = "node_list"
1776 f9780ccd Luca Bigliardi
SS_NODE_PRIMARY_IPS = "node_primary_ips"
1777 f9780ccd Luca Bigliardi
SS_NODE_SECONDARY_IPS = "node_secondary_ips"
1778 a3316e4a Iustin Pop
SS_OFFLINE_NODES = "offline_nodes"
1779 81a49123 Iustin Pop
SS_ONLINE_NODES = "online_nodes"
1780 868a98ca Manuel Franceschini
SS_PRIMARY_IP_FAMILY = "primary_ip_family"
1781 81a49123 Iustin Pop
SS_INSTANCE_LIST = "instance_list"
1782 8a113c7a Iustin Pop
SS_RELEASE_VERSION = "release_version"
1783 4f7a6a10 Iustin Pop
SS_HYPERVISOR_LIST = "hypervisor_list"
1784 5c465a95 Iustin Pop
SS_MAINTAIN_NODE_HEALTH = "maintain_node_health"
1785 0fbae49a Balazs Lecz
SS_UID_POOL = "uid_pool"
1786 6f076453 Guido Trotter
SS_NODEGROUPS = "nodegroups"
1787 eaa4c57c Dimitris Aragiorgis
SS_NETWORKS = "networks"
1788 93384844 Iustin Pop
1789 cd57bab6 Michael Hanselmann
SS_FILE_PERMS = 0444
1790 cd57bab6 Michael Hanselmann
1791 7888a614 Alexander Schreiber
# cluster wide default parameters
1792 7888a614 Alexander Schreiber
DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM
1793 7888a614 Alexander Schreiber
1794 7888a614 Alexander Schreiber
HVC_DEFAULTS = {
1795 bd0ff7c2 Iustin Pop
  HT_XEN_PVM: {
1796 2f2dbb4b Jun Futagawa
    HV_USE_BOOTLOADER: False,
1797 2f2dbb4b Jun Futagawa
    HV_BOOTLOADER_PATH: XEN_BOOTLOADER,
1798 d0c8c01d Iustin Pop
    HV_BOOTLOADER_ARGS: "",
1799 3c4afa2e Iustin Pop
    HV_KERNEL_PATH: XEN_KERNEL,
1800 d0c8c01d Iustin Pop
    HV_INITRD_PATH: "",
1801 d0c8c01d Iustin Pop
    HV_ROOT_PATH: "/dev/sda1",
1802 d0c8c01d Iustin Pop
    HV_KERNEL_ARGS: "ro",
1803 78411c60 Iustin Pop
    HV_MIGRATION_PORT: 8002,
1804 783a6c0b Iustin Pop
    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1805 525011bc Maciej Bliziński
    HV_BLOCKDEV_PREFIX: "sd",
1806 990ade2d Stephen Shirley
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1807 7e7629c6 Tsachy Shacham
    HV_CPU_MASK: CPU_PINNING_ALL,
1808 8bd977e9 Sébastien Bocahu
    HV_CPU_CAP: 0,
1809 8bd977e9 Sébastien Bocahu
    HV_CPU_WEIGHT: 256,
1810 bd0ff7c2 Iustin Pop
    },
1811 bd0ff7c2 Iustin Pop
  HT_XEN_HVM: {
1812 bd0ff7c2 Iustin Pop
    HV_BOOT_ORDER: "cd",
1813 d0c8c01d Iustin Pop
    HV_CDROM_IMAGE_PATH: "",
1814 d08f6067 Guido Trotter
    HV_NIC_TYPE: HT_NIC_RTL8139,
1815 43440815 Guido Trotter
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1816 9769bb78 Manuel Franceschini
    HV_VNC_BIND_ADDRESS: IP4_ADDRESS_ANY,
1817 9f2265bc Michael Hanselmann
    HV_VNC_PASSWORD_FILE: pathutils.VNC_PASSWORD_FILE,
1818 bd0ff7c2 Iustin Pop
    HV_ACPI: True,
1819 bd0ff7c2 Iustin Pop
    HV_PAE: True,
1820 e2ee1cea Iustin Pop
    HV_KERNEL_PATH: "/usr/lib/xen/boot/hvmloader",
1821 09ea8710 Iustin Pop
    HV_DEVICE_MODEL: "/usr/lib/xen/bin/qemu-dm",
1822 78411c60 Iustin Pop
    HV_MIGRATION_PORT: 8002,
1823 783a6c0b Iustin Pop
    HV_MIGRATION_MODE: HT_MIGRATION_NONLIVE,
1824 6b970cef Jun Futagawa
    HV_USE_LOCALTIME: False,
1825 525011bc Maciej Bliziński
    HV_BLOCKDEV_PREFIX: "hd",
1826 87f0aa48 Jack
    HV_PASSTHROUGH: "",
1827 990ade2d Stephen Shirley
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1828 7e7629c6 Tsachy Shacham
    HV_CPU_MASK: CPU_PINNING_ALL,
1829 8bd977e9 Sébastien Bocahu
    HV_CPU_CAP: 0,
1830 8bd977e9 Sébastien Bocahu
    HV_CPU_WEIGHT: 256,
1831 bd0ff7c2 Iustin Pop
    },
1832 bd0ff7c2 Iustin Pop
  HT_KVM: {
1833 b8203e1e Iustin Pop
    HV_KERNEL_PATH: KVM_KERNEL,
1834 d0c8c01d Iustin Pop
    HV_INITRD_PATH: "",
1835 d0c8c01d Iustin Pop
    HV_KERNEL_ARGS: "ro",
1836 d0c8c01d Iustin Pop
    HV_ROOT_PATH: "/dev/vda1",
1837 bd0ff7c2 Iustin Pop
    HV_ACPI: True,
1838 bd0ff7c2 Iustin Pop
    HV_SERIAL_CONSOLE: True,
1839 d0c8c01d Iustin Pop
    HV_VNC_BIND_ADDRESS: "",
1840 8b2d1013 Guido Trotter
    HV_VNC_TLS: False,
1841 d0c8c01d Iustin Pop
    HV_VNC_X509: "",
1842 8b2d1013 Guido Trotter
    HV_VNC_X509_VERIFY: False,
1843 d0c8c01d Iustin Pop
    HV_VNC_PASSWORD_FILE: "",
1844 b1cb62bd Andrea Spadaccini
    HV_KVM_SPICE_BIND: "",
1845 b1cb62bd Andrea Spadaccini
    HV_KVM_SPICE_IP_VERSION: IFACE_NO_IP_VERSION_SPECIFIED,
1846 b451c4c7 Andrea Spadaccini
    HV_KVM_SPICE_PASSWORD_FILE: "",
1847 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_LOSSLESS_IMG_COMPR: "",
1848 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_JPEG_IMG_COMPR: "",
1849 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR: "",
1850 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_STREAMING_VIDEO_DETECTION: "",
1851 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_AUDIO_COMPR: True,
1852 bfe86c76 Andrea Spadaccini
    HV_KVM_SPICE_USE_TLS: False,
1853 3e40b587 Andrea Spadaccini
    HV_KVM_SPICE_TLS_CIPHERS: OPENSSL_CIPHERS,
1854 3e40b587 Andrea Spadaccini
    HV_KVM_SPICE_USE_VDAGENT: True,
1855 d0c8c01d Iustin Pop
    HV_KVM_FLOPPY_IMAGE_PATH: "",
1856 d0c8c01d Iustin Pop
    HV_CDROM_IMAGE_PATH: "",
1857 d0c8c01d Iustin Pop
    HV_KVM_CDROM2_IMAGE_PATH: "",
1858 835528af Iustin Pop
    HV_BOOT_ORDER: HT_BO_DISK,
1859 43440815 Guido Trotter
    HV_NIC_TYPE: HT_NIC_PARAVIRTUAL,
1860 43440815 Guido Trotter
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1861 d0c8c01d Iustin Pop
    HV_KVM_CDROM_DISK_TYPE: "",
1862 d0c8c01d Iustin Pop
    HV_USB_MOUSE: "",
1863 4f580fef Sébastien Bocahu
    HV_KEYMAP: "",
1864 3c075436 Iustin Pop
    HV_MIGRATION_PORT: 8102,
1865 e43d4f9f Apollon Oikonomopoulos
    HV_MIGRATION_BANDWIDTH: 32, # MiB/s
1866 e43d4f9f Apollon Oikonomopoulos
    HV_MIGRATION_DOWNTIME: 30,  # ms
1867 783a6c0b Iustin Pop
    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1868 6b970cef Jun Futagawa
    HV_USE_LOCALTIME: False,
1869 ea0f3d7a Iustin Pop
    HV_DISK_CACHE: HT_CACHE_DEFAULT,
1870 d19d94db Guido Trotter
    HV_SECURITY_MODEL: HT_SM_NONE,
1871 d0c8c01d Iustin Pop
    HV_SECURITY_DOMAIN: "",
1872 7ba594c0 Guido Trotter
    HV_KVM_FLAG: "",
1873 fbe27e2b Guido Trotter
    HV_VHOST_NET: False,
1874 84c08e4e Balazs Lecz
    HV_KVM_USE_CHROOT: False,
1875 4f958b0b Miguel Di Ciurcio Filho
    HV_MEM_PATH: "",
1876 990ade2d Stephen Shirley
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1877 7e7629c6 Tsachy Shacham
    HV_CPU_MASK: CPU_PINNING_ALL,
1878 7cb42171 Nikita Staroverov
    HV_CPU_TYPE: "",
1879 bd0ff7c2 Iustin Pop
    },
1880 5ae4945a Iustin Pop
  HT_FAKE: {},
1881 48297fa2 Iustin Pop
  HT_CHROOT: {
1882 48297fa2 Iustin Pop
    HV_INIT_SCRIPT: "/ganeti-chroot",
1883 48297fa2 Iustin Pop
    },
1884 4b5e40a5 Iustin Pop
  HT_LXC: {
1885 e3ed5316 Balazs Lecz
    HV_CPU_MASK: "",
1886 4b5e40a5 Iustin Pop
    },
1887 bd0ff7c2 Iustin Pop
  }
1888 7888a614 Alexander Schreiber
1889 b8028dcf Michael Hanselmann
HVC_GLOBALS = compat.UniqueFrozenset([
1890 7736a5f2 Iustin Pop
  HV_MIGRATION_PORT,
1891 e43d4f9f Apollon Oikonomopoulos
  HV_MIGRATION_BANDWIDTH,
1892 783a6c0b Iustin Pop
  HV_MIGRATION_MODE,
1893 7736a5f2 Iustin Pop
  ])
1894 7736a5f2 Iustin Pop
1895 7888a614 Alexander Schreiber
BEC_DEFAULTS = {
1896 8c72ab2b Guido Trotter
  BE_MINMEM: 128,
1897 8c72ab2b Guido Trotter
  BE_MAXMEM: 128,
1898 bd0ff7c2 Iustin Pop
  BE_VCPUS: 1,
1899 bd0ff7c2 Iustin Pop
  BE_AUTO_BALANCE: True,
1900 11dc66f3 Bernardo Dal Seno
  BE_ALWAYS_FAILOVER: False,
1901 34700f5b René Nussbaumer
  BE_SPINDLE_USE: 1,
1902 bd0ff7c2 Iustin Pop
  }
1903 c3e618cc Guido Trotter
1904 095e71aa René Nussbaumer
NDC_DEFAULTS = {
1905 1df4d430 Iustin Pop
  ND_OOB_PROGRAM: "",
1906 432e8e2f Iustin Pop
  ND_SPINDLE_COUNT: 1,
1907 0ea11dcb Bernardo Dal Seno
  ND_EXCLUSIVE_STORAGE: False,
1908 095e71aa René Nussbaumer
  }
1909 095e71aa René Nussbaumer
1910 bc5d0215 Andrea Spadaccini
DISK_LD_DEFAULTS = {
1911 bc5d0215 Andrea Spadaccini
  LD_DRBD8: {
1912 ac00bf1b Andrea Spadaccini
    LDP_RESYNC_RATE: CLASSIC_DRBD_SYNC_SPEED,
1913 ac00bf1b Andrea Spadaccini
    LDP_BARRIERS: _autoconf.DRBD_BARRIERS,
1914 ac00bf1b Andrea Spadaccini
    LDP_NO_META_FLUSH: _autoconf.DRBD_NO_META_FLUSH,
1915 8002e46b Andrea Spadaccini
    LDP_DEFAULT_METAVG: DEFAULT_VG,
1916 ad1dd4c7 Andrea Spadaccini
    LDP_DISK_CUSTOM: "",
1917 ad1dd4c7 Andrea Spadaccini
    LDP_NET_CUSTOM: "",
1918 f2f57b6e Andrea Spadaccini
    LDP_DYNAMIC_RESYNC: False,
1919 8584e922 Andrea Spadaccini
1920 8584e922 Andrea Spadaccini
    # The default values for the DRBD dynamic resync speed algorithm are taken
1921 8584e922 Andrea Spadaccini
    # from the drbsetup 8.3.11 man page, except for c-plan-ahead (that we
1922 8584e922 Andrea Spadaccini
    # don't need to set to 0, because we have a separate option to enable it)
1923 8584e922 Andrea Spadaccini
    # and for c-max-rate, that we cap to the default value for the static resync
1924 8584e922 Andrea Spadaccini
    # rate.
1925 8584e922 Andrea Spadaccini
    LDP_PLAN_AHEAD: 20, # ds
1926 8584e922 Andrea Spadaccini
    LDP_FILL_TARGET: 0, # sectors
1927 8584e922 Andrea Spadaccini
    LDP_DELAY_TARGET: 1, # ds
1928 8584e922 Andrea Spadaccini
    LDP_MAX_RATE: CLASSIC_DRBD_SYNC_SPEED, # KiB/s
1929 8584e922 Andrea Spadaccini
    LDP_MIN_RATE: 4 * 1024, # KiB/s
1930 bc5d0215 Andrea Spadaccini
    },
1931 bc5d0215 Andrea Spadaccini
  LD_LV: {
1932 ac00bf1b Andrea Spadaccini
    LDP_STRIPES: _autoconf.LVM_STRIPECOUNT
1933 bc5d0215 Andrea Spadaccini
    },
1934 5ae4945a Iustin Pop
  LD_FILE: {},
1935 5ae4945a Iustin Pop
  LD_BLOCKDEV: {},
1936 7181fba0 Constantinos Venetsanopoulos
  LD_RBD: {
1937 7181fba0 Constantinos Venetsanopoulos
    LDP_POOL: "rbd"
1938 7181fba0 Constantinos Venetsanopoulos
    },
1939 bc5d0215 Andrea Spadaccini
  }
1940 bc5d0215 Andrea Spadaccini
1941 8584e922 Andrea Spadaccini
# readability shortcuts
1942 8584e922 Andrea Spadaccini
_LV_DEFAULTS = DISK_LD_DEFAULTS[LD_LV]
1943 8584e922 Andrea Spadaccini
_DRBD_DEFAULTS = DISK_LD_DEFAULTS[LD_DRBD8]
1944 8584e922 Andrea Spadaccini
1945 bc5d0215 Andrea Spadaccini
DISK_DT_DEFAULTS = {
1946 bc5d0215 Andrea Spadaccini
  DT_PLAIN: {
1947 ac00bf1b Andrea Spadaccini
    LV_STRIPES: DISK_LD_DEFAULTS[LD_LV][LDP_STRIPES],
1948 bc5d0215 Andrea Spadaccini
    },
1949 bc5d0215 Andrea Spadaccini
  DT_DRBD8: {
1950 8584e922 Andrea Spadaccini
    DRBD_RESYNC_RATE: _DRBD_DEFAULTS[LDP_RESYNC_RATE],
1951 8584e922 Andrea Spadaccini
    DRBD_DATA_STRIPES: _LV_DEFAULTS[LDP_STRIPES],
1952 8584e922 Andrea Spadaccini
    DRBD_META_STRIPES: _LV_DEFAULTS[LDP_STRIPES],
1953 8584e922 Andrea Spadaccini
    DRBD_DISK_BARRIERS: _DRBD_DEFAULTS[LDP_BARRIERS],
1954 8584e922 Andrea Spadaccini
    DRBD_META_BARRIERS: _DRBD_DEFAULTS[LDP_NO_META_FLUSH],
1955 8584e922 Andrea Spadaccini
    DRBD_DEFAULT_METAVG: _DRBD_DEFAULTS[LDP_DEFAULT_METAVG],
1956 8584e922 Andrea Spadaccini
    DRBD_DISK_CUSTOM: _DRBD_DEFAULTS[LDP_DISK_CUSTOM],
1957 8584e922 Andrea Spadaccini
    DRBD_NET_CUSTOM: _DRBD_DEFAULTS[LDP_NET_CUSTOM],
1958 8584e922 Andrea Spadaccini
    DRBD_DYNAMIC_RESYNC: _DRBD_DEFAULTS[LDP_DYNAMIC_RESYNC],
1959 8584e922 Andrea Spadaccini
    DRBD_PLAN_AHEAD: _DRBD_DEFAULTS[LDP_PLAN_AHEAD],
1960 8584e922 Andrea Spadaccini
    DRBD_FILL_TARGET: _DRBD_DEFAULTS[LDP_FILL_TARGET],
1961 8584e922 Andrea Spadaccini
    DRBD_DELAY_TARGET: _DRBD_DEFAULTS[LDP_DELAY_TARGET],
1962 8584e922 Andrea Spadaccini
    DRBD_MAX_RATE: _DRBD_DEFAULTS[LDP_MAX_RATE],
1963 8584e922 Andrea Spadaccini
    DRBD_MIN_RATE: _DRBD_DEFAULTS[LDP_MIN_RATE],
1964 bc5d0215 Andrea Spadaccini
    },
1965 5ae4945a Iustin Pop
  DT_DISKLESS: {},
1966 5ae4945a Iustin Pop
  DT_FILE: {},
1967 5ae4945a Iustin Pop
  DT_SHARED_FILE: {},
1968 5ae4945a Iustin Pop
  DT_BLOCK: {},
1969 7181fba0 Constantinos Venetsanopoulos
  DT_RBD: {
1970 7181fba0 Constantinos Venetsanopoulos
    RBD_POOL: DISK_LD_DEFAULTS[LD_RBD][LDP_POOL]
1971 7181fba0 Constantinos Venetsanopoulos
    },
1972 bc5d0215 Andrea Spadaccini
  }
1973 bc5d0215 Andrea Spadaccini
1974 8584e922 Andrea Spadaccini
# we don't want to export the shortcuts
1975 8584e922 Andrea Spadaccini
del _LV_DEFAULTS, _DRBD_DEFAULTS
1976 8584e922 Andrea Spadaccini
1977 ac061be9 Guido Trotter
NICC_DEFAULTS = {
1978 ac061be9 Guido Trotter
  NIC_MODE: NIC_MODE_BRIDGED,
1979 ac061be9 Guido Trotter
  NIC_LINK: DEFAULT_BRIDGE,
1980 ac061be9 Guido Trotter
  }
1981 ac061be9 Guido Trotter
1982 a194dc28 Iustin Pop
# All of the following values are quite arbitrarily - there are no
1983 a194dc28 Iustin Pop
# "good" defaults, these must be customised per-site
1984 918eb80b Agata Murawska
IPOLICY_DEFAULTS = {
1985 4f725341 Agata Murawska
  ISPECS_MIN: {
1986 4f725341 Agata Murawska
    ISPEC_MEM_SIZE: 128,
1987 4f725341 Agata Murawska
    ISPEC_CPU_COUNT: 1,
1988 4f725341 Agata Murawska
    ISPEC_DISK_COUNT: 1,
1989 4f725341 Agata Murawska
    ISPEC_DISK_SIZE: 1024,
1990 4f725341 Agata Murawska
    ISPEC_NIC_COUNT: 1,
1991 553cb5f7 René Nussbaumer
    ISPEC_SPINDLE_USE: 1,
1992 918eb80b Agata Murawska
    },
1993 4f725341 Agata Murawska
  ISPECS_MAX: {
1994 b32f3c0c Iustin Pop
    ISPEC_MEM_SIZE: 32768,
1995 b32f3c0c Iustin Pop
    ISPEC_CPU_COUNT: 8,
1996 b32f3c0c Iustin Pop
    ISPEC_DISK_COUNT: MAX_DISKS,
1997 b32f3c0c Iustin Pop
    ISPEC_DISK_SIZE: 1024 * 1024,
1998 b32f3c0c Iustin Pop
    ISPEC_NIC_COUNT: MAX_NICS,
1999 553cb5f7 René Nussbaumer
    ISPEC_SPINDLE_USE: 12,
2000 918eb80b Agata Murawska
    },
2001 4f725341 Agata Murawska
  ISPECS_STD: {
2002 4f725341 Agata Murawska
    ISPEC_MEM_SIZE: 128,
2003 4f725341 Agata Murawska
    ISPEC_CPU_COUNT: 1,
2004 4f725341 Agata Murawska
    ISPEC_DISK_COUNT: 1,
2005 4f725341 Agata Murawska
    ISPEC_DISK_SIZE: 1024,
2006 4f725341 Agata Murawska
    ISPEC_NIC_COUNT: 1,
2007 553cb5f7 René Nussbaumer
    ISPEC_SPINDLE_USE: 1,
2008 2cc673a3 Iustin Pop
    },
2009 d04c9d45 Iustin Pop
  IPOLICY_DTS: DISK_TEMPLATES,
2010 ff6c5e55 Iustin Pop
  IPOLICY_VCPU_RATIO: 4.0,
2011 a194dc28 Iustin Pop
  IPOLICY_SPINDLE_RATIO: 32.0,
2012 918eb80b Agata Murawska
  }
2013 918eb80b Agata Murawska
2014 c3e618cc Guido Trotter
MASTER_POOL_SIZE_DEFAULT = 10
2015 ea1518af Guido Trotter
2016 ea1518af Guido Trotter
CONFD_PROTOCOL_VERSION = 1
2017 ea1518af Guido Trotter
2018 09444532 Guido Trotter
CONFD_REQ_PING = 0
2019 ea1518af Guido Trotter
CONFD_REQ_NODE_ROLE_BYNAME = 1
2020 ea1518af Guido Trotter
CONFD_REQ_NODE_PIP_BY_INSTANCE_IP = 2
2021 48166551 Guido Trotter
CONFD_REQ_CLUSTER_MASTER = 3
2022 efbb4fd2 Luca Bigliardi
CONFD_REQ_NODE_PIP_LIST = 4
2023 efbb4fd2 Luca Bigliardi
CONFD_REQ_MC_PIP_LIST = 5
2024 d01ae714 Luca Bigliardi
CONFD_REQ_INSTANCES_IPS_LIST = 6
2025 792f8e55 Iustin Pop
CONFD_REQ_NODE_DRBD = 7
2026 ea1518af Guido Trotter
2027 19351457 Guido Trotter
# Confd request query fields. These are used to narrow down queries.
2028 19351457 Guido Trotter
# These must be strings rather than integers, because json-encoding
2029 19351457 Guido Trotter
# converts them to strings anyway, as they're used as dict-keys.
2030 19351457 Guido Trotter
CONFD_REQQ_LINK = "0"
2031 19351457 Guido Trotter
CONFD_REQQ_IP = "1"
2032 19351457 Guido Trotter
CONFD_REQQ_IPLIST = "2"
2033 250554a9 Guido Trotter
CONFD_REQQ_FIELDS = "3"
2034 250554a9 Guido Trotter
2035 250554a9 Guido Trotter
CONFD_REQFIELD_NAME = "0"
2036 250554a9 Guido Trotter
CONFD_REQFIELD_IP = "1"
2037 43dc8496 Guido Trotter
CONFD_REQFIELD_MNODE_PIP = "2"
2038 19351457 Guido Trotter
2039 b8028dcf Michael Hanselmann
CONFD_REQS = compat.UniqueFrozenset([
2040 09444532 Guido Trotter
  CONFD_REQ_PING,
2041 ea1518af Guido Trotter
  CONFD_REQ_NODE_ROLE_BYNAME,
2042 ea1518af Guido Trotter
  CONFD_REQ_NODE_PIP_BY_INSTANCE_IP,
2043 48166551 Guido Trotter
  CONFD_REQ_CLUSTER_MASTER,
2044 efbb4fd2 Luca Bigliardi
  CONFD_REQ_NODE_PIP_LIST,
2045 efbb4fd2 Luca Bigliardi
  CONFD_REQ_MC_PIP_LIST,
2046 d01ae714 Luca Bigliardi
  CONFD_REQ_INSTANCES_IPS_LIST,
2047 792f8e55 Iustin Pop
  CONFD_REQ_NODE_DRBD,
2048 ea1518af Guido Trotter
  ])
2049 ea1518af Guido Trotter
2050 31c2a99e Guido Trotter
CONFD_REPL_STATUS_OK = 0
2051 31c2a99e Guido Trotter
CONFD_REPL_STATUS_ERROR = 1
2052 31c2a99e Guido Trotter
CONFD_REPL_STATUS_NOTIMPLEMENTED = 2
2053 31c2a99e Guido Trotter
2054 b8028dcf Michael Hanselmann
CONFD_REPL_STATUSES = compat.UniqueFrozenset([
2055 31c2a99e Guido Trotter
  CONFD_REPL_STATUS_OK,
2056 31c2a99e Guido Trotter
  CONFD_REPL_STATUS_ERROR,
2057 31c2a99e Guido Trotter
  CONFD_REPL_STATUS_NOTIMPLEMENTED,
2058 31c2a99e Guido Trotter
  ])
2059 31c2a99e Guido Trotter
2060 89c52785 Guido Trotter
(CONFD_NODE_ROLE_MASTER,
2061 89c52785 Guido Trotter
 CONFD_NODE_ROLE_CANDIDATE,
2062 89c52785 Guido Trotter
 CONFD_NODE_ROLE_OFFLINE,
2063 197b0f5d Guido Trotter
 CONFD_NODE_ROLE_DRAINED,
2064 197b0f5d Guido Trotter
 CONFD_NODE_ROLE_REGULAR,
2065 197b0f5d Guido Trotter
 ) = range(5)
2066 89c52785 Guido Trotter
2067 ca2a5b13 Guido Trotter
# A few common errors for confd
2068 ca2a5b13 Guido Trotter
CONFD_ERROR_UNKNOWN_ENTRY = 1
2069 7189e790 Guido Trotter
CONFD_ERROR_INTERNAL = 2
2070 19351457 Guido Trotter
CONFD_ERROR_ARGUMENT = 3
2071 ca2a5b13 Guido Trotter
2072 71f27d19 Guido Trotter
# Each request is "salted" by the current timestamp.
2073 71f27d19 Guido Trotter
# This constants decides how many seconds of skew to accept.
2074 71f27d19 Guido Trotter
# TODO: make this a default and allow the value to be more configurable
2075 313b2dd4 Michael Hanselmann
CONFD_MAX_CLOCK_SKEW = 2 * NODE_MAX_CLOCK_SKEW
2076 84c3ab28 Guido Trotter
2077 84c3ab28 Guido Trotter
# When we haven't reloaded the config for more than this amount of seconds, we
2078 84c3ab28 Guido Trotter
# force a test to see if inotify is betraying us.
2079 84c3ab28 Guido Trotter
CONFD_CONFIG_RELOAD_TIMEOUT = 60
2080 84c3ab28 Guido Trotter
2081 84c3ab28 Guido Trotter
# If we receive more than one update in this amount of seconds, we move to
2082 84c3ab28 Guido Trotter
# polling every RATELIMIT seconds, rather than relying on inotify, to be able
2083 84c3ab28 Guido Trotter
# to serve more requests.
2084 84c3ab28 Guido Trotter
CONFD_CONFIG_RELOAD_RATELIMIT = 2
2085 c8eded0b Guido Trotter
2086 a3758ab2 Guido Trotter
# Magic number prepended to all confd queries.
2087 a3758ab2 Guido Trotter
# This allows us to distinguish different types of confd protocols and handle
2088 a3758ab2 Guido Trotter
# them. For example by changing this we can move the whole payload to be
2089 a3758ab2 Guido Trotter
# compressed, or move away from json.
2090 d0c8c01d Iustin Pop
CONFD_MAGIC_FOURCC = "plj0"
2091 a3758ab2 Guido Trotter
2092 e4ccf6cd Guido Trotter
# By default a confd request is sent to the minimum between this number and all
2093 e4ccf6cd Guido Trotter
# MCs. 6 was chosen because even in the case of a disastrous 50% response rate,
2094 e4ccf6cd Guido Trotter
# we should have enough answers to be able to compare more than one.
2095 e4ccf6cd Guido Trotter
CONFD_DEFAULT_REQ_COVERAGE = 6
2096 e4ccf6cd Guido Trotter
2097 e4ccf6cd Guido Trotter
# Timeout in seconds to expire pending query request in the confd client
2098 e4ccf6cd Guido Trotter
# library. We don't actually expect any answer more than 10 seconds after we
2099 e4ccf6cd Guido Trotter
# sent a request.
2100 e4ccf6cd Guido Trotter
CONFD_CLIENT_EXPIRE_TIMEOUT = 10
2101 e4ccf6cd Guido Trotter
2102 c8eded0b Guido Trotter
# Maximum UDP datagram size.
2103 c8eded0b Guido Trotter
# On IPv4: 64K - 20 (ip header size) - 8 (udp header size) = 65507
2104 c8eded0b Guido Trotter
# On IPv6: 64K - 40 (ip6 header size) - 8 (udp header size) = 65487
2105 c8eded0b Guido Trotter
#   (assuming we can't use jumbo frames)
2106 c8eded0b Guido Trotter
# We just set this to 60K, which should be enough
2107 c8eded0b Guido Trotter
MAX_UDP_DATA_SIZE = 61440
2108 6d127406 Balazs Lecz
2109 6d127406 Balazs Lecz
# User-id pool minimum/maximum acceptable user-ids.
2110 6d127406 Balazs Lecz
UIDPOOL_UID_MIN = 0
2111 e687ec01 Michael Hanselmann
UIDPOOL_UID_MAX = 2 ** 32 - 1 # Assuming 32 bit user-ids
2112 649bcdd8 Balazs Lecz
2113 649bcdd8 Balazs Lecz
# Name or path of the pgrep command
2114 649bcdd8 Balazs Lecz
PGREP = "pgrep"
2115 75cf411a Adeodato Simo
2116 75cf411a Adeodato Simo
# Name of the node group that gets created at cluster init or upgrade
2117 75cf411a Adeodato Simo
INITIAL_NODE_GROUP_NAME = "default"
2118 90e99856 Adeodato Simo
2119 90e99856 Adeodato Simo
# Possible values for NodeGroup.alloc_policy
2120 90e99856 Adeodato Simo
ALLOC_POLICY_PREFERRED = "preferred"
2121 90e99856 Adeodato Simo
ALLOC_POLICY_LAST_RESORT = "last_resort"
2122 90e99856 Adeodato Simo
ALLOC_POLICY_UNALLOCABLE = "unallocable"
2123 90e99856 Adeodato Simo
VALID_ALLOC_POLICIES = [
2124 90e99856 Adeodato Simo
  ALLOC_POLICY_PREFERRED,
2125 90e99856 Adeodato Simo
  ALLOC_POLICY_LAST_RESORT,
2126 90e99856 Adeodato Simo
  ALLOC_POLICY_UNALLOCABLE,
2127 90e99856 Adeodato Simo
  ]
2128 b6135bbc Apollon Oikonomopoulos
2129 b6135bbc Apollon Oikonomopoulos
# Temporary external/shared storage parameters
2130 b6135bbc Apollon Oikonomopoulos
BLOCKDEV_DRIVER_MANUAL = "manual"
2131 e5395072 Iustin Pop
2132 a002ed79 Agata Murawska
# qemu-img path, required for ovfconverter
2133 a002ed79 Agata Murawska
QEMUIMG_PATH = _autoconf.QEMUIMG_PATH
2134 a002ed79 Agata Murawska
2135 e5395072 Iustin Pop
# Whether htools was enabled at compilation time
2136 e5395072 Iustin Pop
HTOOLS = _autoconf.HTOOLS
2137 e5395072 Iustin Pop
# The hail iallocator
2138 e5395072 Iustin Pop
IALLOC_HAIL = "hail"
2139 b8d51bb2 Michael Hanselmann
2140 2d88fdd3 Andrea Spadaccini
# Fake opcodes for functions that have hooks attached to them via
2141 2d88fdd3 Andrea Spadaccini
# backend.RunLocalHooks
2142 2d88fdd3 Andrea Spadaccini
FAKE_OP_MASTER_TURNUP = "OP_CLUSTER_IP_TURNUP"
2143 2d88fdd3 Andrea Spadaccini
FAKE_OP_MASTER_TURNDOWN = "OP_CLUSTER_IP_TURNDOWN"
2144 2d88fdd3 Andrea Spadaccini
2145 8a3c9e8a Michael Hanselmann
# SSH key types
2146 8a3c9e8a Michael Hanselmann
SSHK_RSA = "rsa"
2147 8a3c9e8a Michael Hanselmann
SSHK_DSA = "dsa"
2148 b8028dcf Michael Hanselmann
SSHK_ALL = compat.UniqueFrozenset([SSHK_RSA, SSHK_DSA])
2149 8a3c9e8a Michael Hanselmann
2150 d12b9f66 Michael Hanselmann
# SSH authorized key types
2151 d12b9f66 Michael Hanselmann
SSHAK_RSA = "ssh-rsa"
2152 d12b9f66 Michael Hanselmann
SSHAK_DSS = "ssh-dss"
2153 b8028dcf Michael Hanselmann
SSHAK_ALL = compat.UniqueFrozenset([SSHAK_RSA, SSHAK_DSS])
2154 d12b9f66 Michael Hanselmann
2155 d12b9f66 Michael Hanselmann
# SSH setup
2156 d12b9f66 Michael Hanselmann
SSHS_CLUSTER_NAME = "cluster_name"
2157 d12b9f66 Michael Hanselmann
SSHS_SSH_HOST_KEY = "ssh_host_key"
2158 d12b9f66 Michael Hanselmann
SSHS_SSH_ROOT_KEY = "ssh_root_key"
2159 d12b9f66 Michael Hanselmann
SSHS_NODE_DAEMON_CERTIFICATE = "node_daemon_certificate"
2160 d12b9f66 Michael Hanselmann
2161 ebae9e37 Michael Hanselmann
#: Key files for SSH daemon
2162 ebae9e37 Michael Hanselmann
SSH_DAEMON_KEYFILES = {
2163 ebae9e37 Michael Hanselmann
  SSHK_RSA: (pathutils.SSH_HOST_RSA_PRIV, pathutils.SSH_HOST_RSA_PUB),
2164 ebae9e37 Michael Hanselmann
  SSHK_DSA: (pathutils.SSH_HOST_DSA_PRIV, pathutils.SSH_HOST_DSA_PUB),
2165 ebae9e37 Michael Hanselmann
  }
2166 ebae9e37 Michael Hanselmann
2167 69e5fefc Michael Hanselmann
# Node daemon setup
2168 69e5fefc Michael Hanselmann
NDS_CLUSTER_NAME = "cluster_name"
2169 69e5fefc Michael Hanselmann
NDS_NODE_DAEMON_CERTIFICATE = "node_daemon_certificate"
2170 69e5fefc Michael Hanselmann
NDS_SSCONF = "ssconf"
2171 69e5fefc Michael Hanselmann
NDS_START_NODE_DAEMON = "start_node_daemon"
2172 69e5fefc Michael Hanselmann
2173 b8d51bb2 Michael Hanselmann
# Do not re-export imported modules
2174 b8028dcf Michael Hanselmann
del re, _vcsversion, _autoconf, socket, pathutils, compat