Statistics
| Branch: | Tag: | Revision:

root / lib / constants.py @ 9849cec7

History | View | Annotate | Download (39.8 kB)

1 2f31098c Iustin Pop
#
2 a8083063 Iustin Pop
#
3 a8083063 Iustin Pop
4 dcb9946c Iustin Pop
# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 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 4fe80ef2 Iustin Pop
26 2ec08468 Michael Hanselmann
from ganeti import _autoconf
27 13aeae6a Iustin Pop
from ganeti import _vcsversion
28 7c18ef8e Michael Hanselmann
29 a8083063 Iustin Pop
# various versions
30 2ec08468 Michael Hanselmann
RELEASE_VERSION = _autoconf.PACKAGE_VERSION
31 d1a7d66f Guido Trotter
OS_API_V10 = 10
32 d1a7d66f Guido Trotter
OS_API_V15 = 15
33 b41b3516 Iustin Pop
OS_API_V20 = 20
34 b41b3516 Iustin Pop
OS_API_VERSIONS = frozenset([OS_API_V10, OS_API_V15, OS_API_V20])
35 13aeae6a Iustin Pop
VCS_VERSION = _vcsversion.VCS_VERSION
36 a8083063 Iustin Pop
EXPORT_VERSION = 0
37 bac5ffc3 Oleksiy Mishchenko
RAPI_VERSION = 2
38 a8083063 Iustin Pop
39 1b45f4e5 Michael Hanselmann
40 243cdbcc Michael Hanselmann
# Format for CONFIG_VERSION:
41 243cdbcc Michael Hanselmann
#   01 03 0123 = 01030123
42 243cdbcc Michael Hanselmann
#   ^^ ^^ ^^^^
43 243cdbcc Michael Hanselmann
#   |  |  + Configuration version/revision
44 243cdbcc Michael Hanselmann
#   |  + Minor version
45 243cdbcc Michael Hanselmann
#   + Major version
46 243cdbcc Michael Hanselmann
#
47 243cdbcc Michael Hanselmann
# It stored as an integer. Make sure not to write an octal number.
48 1b45f4e5 Michael Hanselmann
49 1b45f4e5 Michael Hanselmann
# BuildVersion and SplitVersion must be in here because we can't import other
50 1b45f4e5 Michael Hanselmann
# modules. The cfgupgrade tool must be able to read and write version numbers
51 1b45f4e5 Michael Hanselmann
# and thus requires these functions. To avoid code duplication, they're kept in
52 1b45f4e5 Michael Hanselmann
# here.
53 1b45f4e5 Michael Hanselmann
54 1b45f4e5 Michael Hanselmann
def BuildVersion(major, minor, revision):
55 1b45f4e5 Michael Hanselmann
  """Calculates int version number from major, minor and revision numbers.
56 1b45f4e5 Michael Hanselmann

57 1b45f4e5 Michael Hanselmann
  Returns: int representing version number
58 1b45f4e5 Michael Hanselmann

59 1b45f4e5 Michael Hanselmann
  """
60 1b45f4e5 Michael Hanselmann
  assert isinstance(major, int)
61 1b45f4e5 Michael Hanselmann
  assert isinstance(minor, int)
62 1b45f4e5 Michael Hanselmann
  assert isinstance(revision, int)
63 1b45f4e5 Michael Hanselmann
  return (1000000 * major +
64 1b45f4e5 Michael Hanselmann
            10000 * minor +
65 1b45f4e5 Michael Hanselmann
                1 * revision)
66 1b45f4e5 Michael Hanselmann
67 1b45f4e5 Michael Hanselmann
68 1b45f4e5 Michael Hanselmann
def SplitVersion(version):
69 1b45f4e5 Michael Hanselmann
  """Splits version number stored in an int.
70 1b45f4e5 Michael Hanselmann

71 1b45f4e5 Michael Hanselmann
  Returns: tuple; (major, minor, revision)
72 1b45f4e5 Michael Hanselmann

73 1b45f4e5 Michael Hanselmann
  """
74 1b45f4e5 Michael Hanselmann
  assert isinstance(version, int)
75 1b45f4e5 Michael Hanselmann
76 1b45f4e5 Michael Hanselmann
  (major, remainder) = divmod(version, 1000000)
77 1b45f4e5 Michael Hanselmann
  (minor, revision) = divmod(remainder, 10000)
78 1b45f4e5 Michael Hanselmann
79 1b45f4e5 Michael Hanselmann
  return (major, minor, revision)
80 1b45f4e5 Michael Hanselmann
81 1b45f4e5 Michael Hanselmann
82 243cdbcc Michael Hanselmann
CONFIG_MAJOR = int(_autoconf.VERSION_MAJOR)
83 243cdbcc Michael Hanselmann
CONFIG_MINOR = int(_autoconf.VERSION_MINOR)
84 243cdbcc Michael Hanselmann
CONFIG_REVISION = 0
85 1b45f4e5 Michael Hanselmann
CONFIG_VERSION = BuildVersion(CONFIG_MAJOR, CONFIG_MINOR, CONFIG_REVISION)
86 a8083063 Iustin Pop
87 cc7d6f1a Michael Hanselmann
#: RPC protocol version
88 cc7d6f1a Michael Hanselmann
PROTOCOL_VERSION = BuildVersion(CONFIG_MAJOR, CONFIG_MINOR, 0)
89 cc7d6f1a Michael Hanselmann
90 8b72b05c René Nussbaumer
# user separation
91 8b72b05c René Nussbaumer
DAEMONS_GROUP = _autoconf.DAEMONS_GROUP
92 f12e1736 René Nussbaumer
ADMIN_GROUP = _autoconf.ADMIN_GROUP
93 8b72b05c René Nussbaumer
MASTERD_USER = _autoconf.MASTERD_USER
94 f12e1736 René Nussbaumer
MASTERD_GROUP = _autoconf.MASTERD_GROUP
95 8b72b05c René Nussbaumer
RAPI_USER = _autoconf.RAPI_USER
96 f12e1736 René Nussbaumer
RAPI_GROUP = _autoconf.RAPI_GROUP
97 f12e1736 René Nussbaumer
CONFD_USER = _autoconf.CONFD_USER
98 f12e1736 René Nussbaumer
CONFD_GROUP = _autoconf.CONFD_GROUP
99 f12e1736 René Nussbaumer
NODED_USER = _autoconf.NODED_USER
100 03881cb0 René Nussbaumer
NODED_GROUP = _autoconf.NODED_GROUP
101 8b72b05c René Nussbaumer
102 a03fcb26 René Nussbaumer
103 6e991d0e René Nussbaumer
# Wipe
104 da63bb4e René Nussbaumer
DD_CMD = "dd"
105 e687ec01 Michael Hanselmann
WIPE_BLOCK_SIZE = 1024 ** 2
106 a03fcb26 René Nussbaumer
MAX_WIPE_CHUNK = 1024 # 1GB
107 a03fcb26 René Nussbaumer
MIN_WIPE_CHUNK_PERCENT = 10
108 a03fcb26 René Nussbaumer
109 6e991d0e René Nussbaumer
110 a8083063 Iustin Pop
# file paths
111 2ec08468 Michael Hanselmann
DATA_DIR = _autoconf.LOCALSTATEDIR + "/lib/ganeti"
112 1ed70996 Iustin Pop
RUN_DIR = _autoconf.LOCALSTATEDIR + "/run"
113 75afaefc Iustin Pop
RUN_GANETI_DIR = RUN_DIR + "/ganeti"
114 42ff3343 Guido Trotter
BDEV_CACHE_DIR = RUN_GANETI_DIR + "/bdev-cache"
115 75afaefc Iustin Pop
DISK_LINKS_DIR = RUN_GANETI_DIR + "/instance-disks"
116 8b72b05c René Nussbaumer
RUN_DIRS_MODE = 0775
117 b4442fd9 Guido Trotter
SOCKET_DIR = RUN_GANETI_DIR + "/socket"
118 5bae14d9 Guido Trotter
SECURE_DIR_MODE = 0700
119 637c8ab8 Balazs Lecz
SECURE_FILE_MODE = 0600
120 8b72b05c René Nussbaumer
SOCKET_DIR_MODE = 0750
121 f942a838 Michael Hanselmann
CRYPTO_KEYS_DIR = RUN_GANETI_DIR + "/crypto"
122 01144827 Guido Trotter
CRYPTO_KEYS_DIR_MODE = SECURE_DIR_MODE
123 1651d116 Michael Hanselmann
IMPORT_EXPORT_DIR = RUN_GANETI_DIR + "/import-export"
124 1651d116 Michael Hanselmann
IMPORT_EXPORT_DIR_MODE = 0755
125 b6135bbc Apollon Oikonomopoulos
ADOPTABLE_BLOCKDEV_ROOT = "/dev/disk/"
126 75afaefc Iustin Pop
# keep RUN_GANETI_DIR first here, to make sure all get created when the node
127 75afaefc Iustin Pop
# daemon is started (this takes care of RUN_DIR being tmpfs)
128 e687ec01 Michael Hanselmann
SUB_RUN_DIRS = [
129 e687ec01 Michael Hanselmann
  RUN_GANETI_DIR,
130 e687ec01 Michael Hanselmann
  BDEV_CACHE_DIR,
131 e687ec01 Michael Hanselmann
  DISK_LINKS_DIR,
132 e687ec01 Michael Hanselmann
  ]
133 3aecd2c7 Iustin Pop
LOCK_DIR = _autoconf.LOCALSTATEDIR + "/lock"
134 0c223ea9 Michael Hanselmann
SSCONF_LOCK_FILE = LOCK_DIR + "/ganeti-ssconf.lock"
135 649bcdd8 Balazs Lecz
# User-id pool lock directory
136 649bcdd8 Balazs Lecz
# The user-ids that are in use have a corresponding lock file in this directory
137 649bcdd8 Balazs Lecz
UIDPOOL_LOCKDIR = RUN_GANETI_DIR + "/uid-pool"
138 a8083063 Iustin Pop
CLUSTER_CONF_FILE = DATA_DIR + "/config.data"
139 168c1de2 Michael Hanselmann
NODED_CERT_FILE = DATA_DIR + "/server.pem"
140 61a08fa3 Michael Hanselmann
RAPI_CERT_FILE = DATA_DIR + "/rapi.pem"
141 6b7d5878 Michael Hanselmann
CONFD_HMAC_KEY = DATA_DIR + "/hmac.key"
142 3db3eb2a Michael Hanselmann
CLUSTER_DOMAIN_SECRET_FILE = DATA_DIR + "/cluster-domain-secret"
143 bcf0450d Michael Hanselmann
INSTANCE_STATUS_FILE = RUN_GANETI_DIR + "/instance-status"
144 82122173 Iustin Pop
SSH_KNOWN_HOSTS_FILE = DATA_DIR + "/known_hosts"
145 fdd9ac5b Michael Hanselmann
RAPI_USERS_FILE = DATA_DIR + "/rapi/users"
146 f1da30e6 Michael Hanselmann
QUEUE_DIR = DATA_DIR + "/queue"
147 f154a7a3 Michael Hanselmann
DAEMON_UTIL = _autoconf.PKGLIBDIR + "/daemon-util"
148 2e6469a1 René Nussbaumer
SETUP_SSH = _autoconf.TOOLSDIR + "/setup-ssh"
149 26916aad Apollon Oikonomopoulos
KVM_IFUP = _autoconf.PKGLIBDIR + "/kvm-ifup"
150 2f4c951e Stephen Shirley
KVM_CONSOLE_WRAPPER = _autoconf.PKGLIBDIR + "/tools/kvm-console-wrapper"
151 61631293 Stephen Shirley
XM_CONSOLE_WRAPPER = _autoconf.PKGLIBDIR + "/tools/xm-console-wrapper"
152 c8a0948f Michael Hanselmann
ETC_HOSTS = "/etc/hosts"
153 1abbbbe2 Manuel Franceschini
DEFAULT_FILE_STORAGE_DIR = _autoconf.FILE_STORAGE_DIR
154 4b97f902 Apollon Oikonomopoulos
DEFAULT_SHARED_FILE_STORAGE_DIR = _autoconf.SHARED_FILE_STORAGE_DIR
155 cb7c0198 Iustin Pop
ENABLE_FILE_STORAGE = _autoconf.ENABLE_FILE_STORAGE
156 4b97f902 Apollon Oikonomopoulos
ENABLE_SHARED_FILE_STORAGE = _autoconf.ENABLE_SHARED_FILE_STORAGE
157 5420ffc9 Guido Trotter
SYSCONFDIR = _autoconf.SYSCONFDIR
158 bea60381 Michael Hanselmann
TOOLSDIR = _autoconf.TOOLSDIR
159 131178b9 Luca Bigliardi
CONF_DIR = SYSCONFDIR + "/ganeti"
160 9894ece7 Michael Hanselmann
161 9d7b1e53 Michael Hanselmann
#: Lock file for watcher, locked in shared mode by watcher; lock in exclusive
162 9d7b1e53 Michael Hanselmann
# mode to block watcher (see L{cli._RunWhileClusterStoppedHelper.Call}
163 9d7b1e53 Michael Hanselmann
WATCHER_LOCK_FILE = LOCK_DIR + "/ganeti-watcher.lock"
164 9d7b1e53 Michael Hanselmann
165 9d7b1e53 Michael Hanselmann
#: Status file for per-group watcher, locked in exclusive mode by watcher
166 9d7b1e53 Michael Hanselmann
WATCHER_GROUP_STATE_FILE = DATA_DIR + "/watcher.%s.data"
167 9d7b1e53 Michael Hanselmann
168 9bb69bb5 Michael Hanselmann
#: File for per-group instance status, merged into L{INSTANCE_STATUS_FILE} by
169 9bb69bb5 Michael Hanselmann
#: per-group processes
170 9bb69bb5 Michael Hanselmann
WATCHER_GROUP_INSTANCE_STATUS_FILE = DATA_DIR + "/watcher.%s.instance-status"
171 9bb69bb5 Michael Hanselmann
172 9d7b1e53 Michael Hanselmann
#: File containing Unix timestamp until which watcher should be paused
173 9d7b1e53 Michael Hanselmann
WATCHER_PAUSEFILE = DATA_DIR + "/watcher.pause"
174 9d7b1e53 Michael Hanselmann
175 9849cec7 Guido Trotter
ALL_CERT_FILES = frozenset([NODED_CERT_FILE, RAPI_CERT_FILE])
176 d3100055 Michael Hanselmann
177 227647ac Guido Trotter
MASTER_SOCKET = SOCKET_DIR + "/ganeti-master"
178 a8083063 Iustin Pop
179 cd50653c Guido Trotter
NODED = "ganeti-noded"
180 18679072 Guido Trotter
CONFD = "ganeti-confd"
181 8c96d01f Guido Trotter
RAPI = "ganeti-rapi"
182 dae3fdd2 Guido Trotter
MASTERD = "ganeti-masterd"
183 4d32feba Guido Trotter
# used in the ganeti-nbma project
184 4d32feba Guido Trotter
NLD = "ganeti-nld"
185 cd50653c Guido Trotter
186 cd50653c Guido Trotter
DAEMONS_PORTS = {
187 cd50653c Guido Trotter
  # daemon-name: ("proto", "default-port")
188 cd50653c Guido Trotter
  NODED: ("tcp", 1811),
189 18679072 Guido Trotter
  CONFD: ("udp", 1814),
190 8c96d01f Guido Trotter
  RAPI: ("tcp", 5080),
191 2089573e René Nussbaumer
  "ssh": ("tcp", 22),
192 4d32feba Guido Trotter
  # used in the ganeti-nbma project
193 4d32feba Guido Trotter
  NLD: ("udp", 1816),
194 cd50653c Guido Trotter
}
195 cd50653c Guido Trotter
DEFAULT_NODED_PORT = DAEMONS_PORTS[NODED][1]
196 18679072 Guido Trotter
DEFAULT_CONFD_PORT = DAEMONS_PORTS[CONFD][1]
197 8c96d01f Guido Trotter
DEFAULT_RAPI_PORT = DAEMONS_PORTS[RAPI][1]
198 4d32feba Guido Trotter
# used in the ganeti-nbma project
199 4d32feba Guido Trotter
DEFAULT_NLD_PORT = DAEMONS_PORTS[NLD][1]
200 cd50653c Guido Trotter
201 a8083063 Iustin Pop
FIRST_DRBD_PORT = 11000
202 a8083063 Iustin Pop
LAST_DRBD_PORT = 14999
203 880478f8 Iustin Pop
MASTER_SCRIPT = "ganeti-master"
204 a8083063 Iustin Pop
205 9936bd63 Iustin Pop
LOG_DIR = _autoconf.LOCALSTATEDIR + "/log/ganeti/"
206 dae3fdd2 Guido Trotter
DAEMONS_LOGFILES = {
207 d73ef63f Michael Hanselmann
  # "daemon-name": "logfile"
208 d73ef63f Michael Hanselmann
  NODED: LOG_DIR + "node-daemon.log",
209 d73ef63f Michael Hanselmann
  CONFD: LOG_DIR + "conf-daemon.log",
210 d73ef63f Michael Hanselmann
  RAPI: LOG_DIR + "rapi-daemon.log",
211 d73ef63f Michael Hanselmann
  MASTERD: LOG_DIR + "master-daemon.log",
212 4d32feba Guido Trotter
  # used in the ganeti-nbma project
213 4d32feba Guido Trotter
  NLD: LOG_DIR + "nl-daemon.log",
214 d73ef63f Michael Hanselmann
  }
215 57fd6d0b Michael Hanselmann
216 9936bd63 Iustin Pop
LOG_OS_DIR = LOG_DIR + "os"
217 9936bd63 Iustin Pop
LOG_WATCHER = LOG_DIR + "watcher.log"
218 9936bd63 Iustin Pop
LOG_COMMANDS = LOG_DIR + "commands.log"
219 6abe9194 Iustin Pop
LOG_BURNIN = LOG_DIR + "burnin.log"
220 2089573e René Nussbaumer
LOG_SETUP_SSH = LOG_DIR + "setup-ssh.log"
221 a8083063 Iustin Pop
222 481d47e8 Luca Bigliardi
DEV_CONSOLE = "/dev/console"
223 481d47e8 Luca Bigliardi
224 1b045f5d Balazs Lecz
PROC_MOUNTS = "/proc/mounts"
225 1b045f5d Balazs Lecz
226 3d5ebbf0 Stephen Shirley
# Local UniX Interface related constants
227 25942a6c Guido Trotter
LUXI_EOM = "\3"
228 e986f20c Michael Hanselmann
LUXI_VERSION = CONFIG_VERSION
229 25942a6c Guido Trotter
230 d0c8c01d Iustin Pop
# one of "no", "yes", "only"
231 551b6283 Iustin Pop
SYSLOG_USAGE = _autoconf.SYSLOG_USAGE
232 551b6283 Iustin Pop
SYSLOG_NO = "no"
233 551b6283 Iustin Pop
SYSLOG_YES = "yes"
234 551b6283 Iustin Pop
SYSLOG_ONLY = "only"
235 551b6283 Iustin Pop
SYSLOG_SOCKET = "/dev/log"
236 551b6283 Iustin Pop
237 7c3d51d4 Guido Trotter
OS_SEARCH_PATH = _autoconf.OS_SEARCH_PATH
238 68dccc07 Guido Trotter
EXPORT_DIR = _autoconf.EXPORT_DIR
239 a8083063 Iustin Pop
240 a8083063 Iustin Pop
EXPORT_CONF_FILE = "config.ini"
241 a8083063 Iustin Pop
242 2f2dbb4b Jun Futagawa
XEN_BOOTLOADER = _autoconf.XEN_BOOTLOADER
243 f00b46bc Michael Hanselmann
XEN_KERNEL = _autoconf.XEN_KERNEL
244 f00b46bc Michael Hanselmann
XEN_INITRD = _autoconf.XEN_INITRD
245 2876c2d6 Guido Trotter
XEN_CMD = "xm"
246 f00b46bc Michael Hanselmann
247 7e2c5b9e Guido Trotter
KVM_PATH = _autoconf.KVM_PATH
248 14aa53cb Guido Trotter
SOCAT_PATH = _autoconf.SOCAT_PATH
249 fe5b0c42 Michael Hanselmann
SOCAT_USE_ESCAPE = _autoconf.SOCAT_USE_ESCAPE
250 e90739d6 Michael Hanselmann
SOCAT_USE_COMPRESS = _autoconf.SOCAT_USE_COMPRESS
251 86d6bc2a Guido Trotter
SOCAT_ESCAPE_CODE = "0x1d"
252 7e2c5b9e Guido Trotter
253 25ce3ec4 Michael Hanselmann
#: Console as SSH command
254 25ce3ec4 Michael Hanselmann
CONS_SSH = "ssh"
255 25ce3ec4 Michael Hanselmann
256 25ce3ec4 Michael Hanselmann
#: Console as VNC server
257 25ce3ec4 Michael Hanselmann
CONS_VNC = "vnc"
258 25ce3ec4 Michael Hanselmann
259 4d2cdb5a Andrea Spadaccini
#: Console as SPICE server
260 4d2cdb5a Andrea Spadaccini
CONS_SPICE = "spice"
261 4d2cdb5a Andrea Spadaccini
262 25ce3ec4 Michael Hanselmann
#: Display a message for console access
263 25ce3ec4 Michael Hanselmann
CONS_MESSAGE = "msg"
264 25ce3ec4 Michael Hanselmann
265 25ce3ec4 Michael Hanselmann
#: All console types
266 4d2cdb5a Andrea Spadaccini
CONS_ALL = frozenset([CONS_SSH, CONS_VNC, CONS_SPICE, CONS_MESSAGE])
267 25ce3ec4 Michael Hanselmann
268 bdd5e420 Michael Hanselmann
# For RSA keys more bits are better, but they also make operations more
269 bdd5e420 Michael Hanselmann
# expensive. NIST SP 800-131 recommends a minimum of 2048 bits from the year
270 bdd5e420 Michael Hanselmann
# 2010 on.
271 bdd5e420 Michael Hanselmann
RSA_KEY_BITS = 2048
272 bdd5e420 Michael Hanselmann
273 971bbd84 Michael Hanselmann
# Ciphers allowed for SSL connections. For the format, see ciphers(1). A better
274 971bbd84 Michael Hanselmann
# way to disable ciphers would be to use the exclamation mark (!), but socat
275 971bbd84 Michael Hanselmann
# versions below 1.5 can't parse exclamation marks in options properly. When
276 7407c2d5 Adeodato Simo
# modifying the ciphers, ensure not to accidentially add something after it's
277 971bbd84 Michael Hanselmann
# been removed. Use the "openssl" utility to check the allowed ciphers, e.g.
278 971bbd84 Michael Hanselmann
# "openssl ciphers -v HIGH:-DES".
279 971bbd84 Michael Hanselmann
OPENSSL_CIPHERS = "HIGH:-DES:-3DES:-EXPORT:-ADH"
280 971bbd84 Michael Hanselmann
281 bdd5e420 Michael Hanselmann
# Digest used to sign certificates ("openssl x509" uses SHA1 by default)
282 bdd5e420 Michael Hanselmann
X509_CERT_SIGN_DIGEST = "SHA1"
283 bdd5e420 Michael Hanselmann
284 600535f0 Manuel Franceschini
# Default validity of certificates in days
285 600535f0 Manuel Franceschini
X509_CERT_DEFAULT_VALIDITY = 365 * 5
286 600535f0 Manuel Franceschini
287 600535f0 Manuel Franceschini
# commonName (CN) used in certificates
288 600535f0 Manuel Franceschini
X509_CERT_CN = "ganeti.example.com"
289 600535f0 Manuel Franceschini
290 68857643 Michael Hanselmann
X509_CERT_SIGNATURE_HEADER = "X-Ganeti-Signature"
291 68857643 Michael Hanselmann
292 2d76b580 Michael Hanselmann
IMPORT_EXPORT_DAEMON = _autoconf.PKGLIBDIR + "/import-export"
293 2d76b580 Michael Hanselmann
294 2d76b580 Michael Hanselmann
# Import/export daemon mode
295 2d76b580 Michael Hanselmann
IEM_IMPORT = "import"
296 2d76b580 Michael Hanselmann
IEM_EXPORT = "export"
297 2d76b580 Michael Hanselmann
298 7e3c1da6 Michael Hanselmann
# Import/export transport compression
299 7e3c1da6 Michael Hanselmann
IEC_NONE = "none"
300 7e3c1da6 Michael Hanselmann
IEC_GZIP = "gzip"
301 7e3c1da6 Michael Hanselmann
IEC_ALL = frozenset([
302 7e3c1da6 Michael Hanselmann
  IEC_NONE,
303 7e3c1da6 Michael Hanselmann
  IEC_GZIP,
304 7e3c1da6 Michael Hanselmann
  ])
305 7e3c1da6 Michael Hanselmann
306 f9323011 Michael Hanselmann
IE_CUSTOM_SIZE = "fd"
307 f9323011 Michael Hanselmann
308 1d3dfa29 Michael Hanselmann
IE_MAGIC_RE = re.compile(r"^[-_.a-zA-Z0-9]{5,100}$")
309 1d3dfa29 Michael Hanselmann
310 1651d116 Michael Hanselmann
# Import/export I/O
311 1651d116 Michael Hanselmann
# Direct file I/O, equivalent to a shell's I/O redirection using '<' or '>'
312 1651d116 Michael Hanselmann
IEIO_FILE = "file"
313 1651d116 Michael Hanselmann
# Raw block device I/O using "dd"
314 1651d116 Michael Hanselmann
IEIO_RAW_DISK = "raw"
315 1651d116 Michael Hanselmann
# OS definition import/export script
316 1651d116 Michael Hanselmann
IEIO_SCRIPT = "script"
317 1651d116 Michael Hanselmann
318 973d7867 Iustin Pop
VALUE_DEFAULT = "default"
319 4c566ede Guido Trotter
VALUE_AUTO = "auto"
320 4c566ede Guido Trotter
VALUE_GENERATE = "generate"
321 973d7867 Iustin Pop
VALUE_NONE = "none"
322 1817f49b Guido Trotter
VALUE_TRUE = "true"
323 1817f49b Guido Trotter
VALUE_FALSE = "false"
324 973d7867 Iustin Pop
325 4fe80ef2 Iustin Pop
# External script validation mask
326 4fe80ef2 Iustin Pop
EXT_PLUGIN_MASK = re.compile("^[a-zA-Z0-9_-]+$")
327 4fe80ef2 Iustin Pop
328 a8083063 Iustin Pop
# hooks-related constants
329 131178b9 Luca Bigliardi
HOOKS_BASE_DIR = CONF_DIR + "/hooks"
330 a8083063 Iustin Pop
HOOKS_PHASE_PRE = "pre"
331 a8083063 Iustin Pop
HOOKS_PHASE_POST = "post"
332 6a4aa7c1 Iustin Pop
HOOKS_NAME_CFGUPDATE = "config-update"
333 9e289e36 Guido Trotter
HOOKS_NAME_WATCHER = "watcher"
334 f3e2e4c6 Iustin Pop
HOOKS_VERSION = 2
335 a8083063 Iustin Pop
336 a8083063 Iustin Pop
# hooks subject type (what object type does the LU deal with)
337 a8083063 Iustin Pop
HTYPE_CLUSTER = "CLUSTER"
338 a8083063 Iustin Pop
HTYPE_NODE = "NODE"
339 b1ee5610 Adeodato Simo
HTYPE_GROUP = "GROUP"
340 a8083063 Iustin Pop
HTYPE_INSTANCE = "INSTANCE"
341 a8083063 Iustin Pop
342 a8083063 Iustin Pop
HKR_SKIP = 0
343 a8083063 Iustin Pop
HKR_FAIL = 1
344 a8083063 Iustin Pop
HKR_SUCCESS = 2
345 a8083063 Iustin Pop
346 ac2d0fe4 Michael Hanselmann
# Storage types
347 ac2d0fe4 Michael Hanselmann
ST_FILE = "file"
348 ac2d0fe4 Michael Hanselmann
ST_LVM_PV = "lvm-pv"
349 ac2d0fe4 Michael Hanselmann
ST_LVM_VG = "lvm-vg"
350 6032697c Michael Hanselmann
351 6032697c Michael Hanselmann
# Storage fields
352 620a85fd Iustin Pop
# first two are valid in LU context only, not passed to backend
353 620a85fd Iustin Pop
SF_NODE = "node"
354 620a85fd Iustin Pop
SF_TYPE = "type"
355 620a85fd Iustin Pop
# and the rest are valid in backend
356 6032697c Michael Hanselmann
SF_NAME = "name"
357 6032697c Michael Hanselmann
SF_SIZE = "size"
358 6032697c Michael Hanselmann
SF_FREE = "free"
359 6032697c Michael Hanselmann
SF_USED = "used"
360 6032697c Michael Hanselmann
SF_ALLOCATABLE = "allocatable"
361 6032697c Michael Hanselmann
362 6c3c6db9 Michael Hanselmann
# Storage operations
363 6c3c6db9 Michael Hanselmann
SO_FIX_CONSISTENCY = "fix-consistency"
364 6c3c6db9 Michael Hanselmann
365 6032697c Michael Hanselmann
# Available fields per storage type
366 21daa4a8 Stephen Shirley
VALID_STORAGE_FIELDS = frozenset([
367 21daa4a8 Stephen Shirley
  SF_NAME,
368 21daa4a8 Stephen Shirley
  SF_TYPE,
369 21daa4a8 Stephen Shirley
  SF_SIZE,
370 21daa4a8 Stephen Shirley
  SF_USED,
371 21daa4a8 Stephen Shirley
  SF_FREE,
372 21daa4a8 Stephen Shirley
  SF_ALLOCATABLE
373 21daa4a8 Stephen Shirley
  ])
374 620a85fd Iustin Pop
375 620a85fd Iustin Pop
VALID_STORAGE_TYPES = frozenset([ST_FILE, ST_LVM_PV, ST_LVM_VG])
376 a8083063 Iustin Pop
377 efb8da02 Michael Hanselmann
MODIFIABLE_STORAGE_FIELDS = {
378 efb8da02 Michael Hanselmann
  ST_LVM_PV: frozenset([SF_ALLOCATABLE]),
379 efb8da02 Michael Hanselmann
  }
380 efb8da02 Michael Hanselmann
381 4b37cac5 Michael Hanselmann
VALID_STORAGE_OPERATIONS = {
382 6c3c6db9 Michael Hanselmann
  ST_LVM_VG: frozenset([SO_FIX_CONSISTENCY]),
383 4b37cac5 Michael Hanselmann
  }
384 4b37cac5 Michael Hanselmann
385 74f37195 Michael Hanselmann
# Local disk status
386 74f37195 Michael Hanselmann
# Note: Code depends on LDS_OKAY < LDS_UNKNOWN < LDS_FAULTY
387 74f37195 Michael Hanselmann
(LDS_OKAY,
388 74f37195 Michael Hanselmann
 LDS_UNKNOWN,
389 74f37195 Michael Hanselmann
 LDS_FAULTY) = range(1, 4)
390 74f37195 Michael Hanselmann
391 a8083063 Iustin Pop
# disk template types
392 a8083063 Iustin Pop
DT_DISKLESS = "diskless"
393 a8083063 Iustin Pop
DT_PLAIN = "plain"
394 a1f445d3 Iustin Pop
DT_DRBD8 = "drbd"
395 04fa07f2 Manuel Franceschini
DT_FILE = "file"
396 4b97f902 Apollon Oikonomopoulos
DT_SHARED_FILE = "sharedfile"
397 b6135bbc Apollon Oikonomopoulos
DT_BLOCK = "blockdev"
398 a1f445d3 Iustin Pop
399 a1f445d3 Iustin Pop
# the set of network-mirrored disk templates
400 3429a076 Apollon Oikonomopoulos
DTS_INT_MIRROR = frozenset([DT_DRBD8])
401 a8083063 Iustin Pop
402 b6135bbc Apollon Oikonomopoulos
# the set of externally-mirrored disk templates (e.g. SAN, NAS)
403 b6135bbc Apollon Oikonomopoulos
DTS_EXT_MIRROR = frozenset([DT_SHARED_FILE, DT_BLOCK])
404 4b97f902 Apollon Oikonomopoulos
405 d63e148a Manuel Franceschini
# the set of non-lvm-based disk templates
406 b6135bbc Apollon Oikonomopoulos
DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE, DT_SHARED_FILE, DT_BLOCK])
407 d63e148a Manuel Franceschini
408 728489a3 Guido Trotter
# the set of disk templates which can be grown
409 4b97f902 Apollon Oikonomopoulos
DTS_GROWABLE = frozenset([DT_PLAIN, DT_DRBD8, DT_FILE, DT_SHARED_FILE])
410 728489a3 Guido Trotter
411 3b08cd1c Apollon Oikonomopoulos
# the set of disk templates that allow adoption
412 b6135bbc Apollon Oikonomopoulos
DTS_MAY_ADOPT = frozenset([DT_PLAIN, DT_BLOCK])
413 b6135bbc Apollon Oikonomopoulos
414 b6135bbc Apollon Oikonomopoulos
# the set of disk templates that *must* use adoption
415 b6135bbc Apollon Oikonomopoulos
DTS_MUST_ADOPT = frozenset([DT_BLOCK])
416 3b08cd1c Apollon Oikonomopoulos
417 85a0ff7e Apollon Oikonomopoulos
# the set of disk templates that allow migrations
418 3429a076 Apollon Oikonomopoulos
DTS_MIRRORED = frozenset.union(DTS_INT_MIRROR, DTS_EXT_MIRROR)
419 85a0ff7e Apollon Oikonomopoulos
420 c16915bd Guido Trotter
# the set of file based disk templates
421 c16915bd Guido Trotter
DTS_FILEBASED = frozenset([DT_FILE, DT_SHARED_FILE])
422 85a0ff7e Apollon Oikonomopoulos
423 fe96220b Iustin Pop
# logical disk types
424 fe96220b Iustin Pop
LD_LV = "lvm"
425 a1f445d3 Iustin Pop
LD_DRBD8 = "drbd8"
426 04fa07f2 Manuel Franceschini
LD_FILE = "file"
427 b6135bbc Apollon Oikonomopoulos
LD_BLOCKDEV = "blockdev"
428 b6135bbc Apollon Oikonomopoulos
LDS_BLOCK = frozenset([LD_LV, LD_DRBD8, LD_BLOCKDEV])
429 04fa07f2 Manuel Franceschini
430 2899d9de Iustin Pop
# drbd constants
431 2899d9de Iustin Pop
DRBD_HMAC_ALG = "md5"
432 3c03759a Iustin Pop
DRBD_NET_PROTOCOL = "C"
433 89b70f39 Iustin Pop
DRBD_BARRIERS = _autoconf.DRBD_BARRIERS
434 2899d9de Iustin Pop
435 04fa07f2 Manuel Franceschini
# file backend driver
436 04fa07f2 Manuel Franceschini
FD_LOOP = "loop"
437 04fa07f2 Manuel Franceschini
FD_BLKTAP = "blktap"
438 a1f445d3 Iustin Pop
439 a1f445d3 Iustin Pop
# the set of drbd-like disk types
440 abdf0113 Iustin Pop
LDS_DRBD = frozenset([LD_DRBD8])
441 fe96220b Iustin Pop
442 08db7c5c Iustin Pop
# disk access mode
443 24991749 Iustin Pop
DISK_RDONLY = "ro"
444 24991749 Iustin Pop
DISK_RDWR = "rw"
445 08db7c5c Iustin Pop
DISK_ACCESS_SET = frozenset([DISK_RDONLY, DISK_RDWR])
446 08db7c5c Iustin Pop
447 a9e0c397 Iustin Pop
# disk replacement mode
448 cfacfd6e Iustin Pop
REPLACE_DISK_PRI = "replace_on_primary"    # replace disks on primary
449 cfacfd6e Iustin Pop
REPLACE_DISK_SEC = "replace_on_secondary"  # replace disks on secondary
450 cfacfd6e Iustin Pop
REPLACE_DISK_CHG = "replace_new_secondary" # change secondary node
451 942be002 Michael Hanselmann
REPLACE_DISK_AUTO = "replace_auto"
452 3636400f Iustin Pop
REPLACE_MODES = frozenset([
453 3636400f Iustin Pop
  REPLACE_DISK_PRI,
454 3636400f Iustin Pop
  REPLACE_DISK_SEC,
455 3636400f Iustin Pop
  REPLACE_DISK_CHG,
456 3636400f Iustin Pop
  REPLACE_DISK_AUTO,
457 3636400f Iustin Pop
  ])
458 a9e0c397 Iustin Pop
459 4a96f1d1 Michael Hanselmann
# Instance export mode
460 4a96f1d1 Michael Hanselmann
EXPORT_MODE_LOCAL = "local"
461 4a96f1d1 Michael Hanselmann
EXPORT_MODE_REMOTE = "remote"
462 4a96f1d1 Michael Hanselmann
EXPORT_MODES = frozenset([
463 4a96f1d1 Michael Hanselmann
  EXPORT_MODE_LOCAL,
464 4a96f1d1 Michael Hanselmann
  EXPORT_MODE_REMOTE,
465 4a96f1d1 Michael Hanselmann
  ])
466 4a96f1d1 Michael Hanselmann
467 d385a174 Iustin Pop
# Lock recalculate mode
468 d0c8c01d Iustin Pop
LOCKS_REPLACE = "replace"
469 d0c8c01d Iustin Pop
LOCKS_APPEND = "append"
470 f6d9a522 Guido Trotter
471 d385a174 Iustin Pop
# Lock timeout (sum) before we should go into blocking acquire (still
472 d385a174 Iustin Pop
# can be reset by priority change); computed as max time (10 hours)
473 d385a174 Iustin Pop
# before we should actually go into blocking acquire given that we
474 d385a174 Iustin Pop
# start from default priority level; in seconds
475 d385a174 Iustin Pop
LOCK_ATTEMPTS_TIMEOUT = 10 * 3600 / 20.0
476 d385a174 Iustin Pop
LOCK_ATTEMPTS_MAXWAIT = 15.0
477 d385a174 Iustin Pop
LOCK_ATTEMPTS_MINWAIT = 1.0
478 d385a174 Iustin Pop
479 2f6eebee Guido Trotter
# instance creation modes
480 a8083063 Iustin Pop
INSTANCE_CREATE = "create"
481 a8083063 Iustin Pop
INSTANCE_IMPORT = "import"
482 9bf56d77 Michael Hanselmann
INSTANCE_REMOTE_IMPORT = "remote-import"
483 9bf56d77 Michael Hanselmann
INSTANCE_CREATE_MODES = frozenset([
484 9bf56d77 Michael Hanselmann
  INSTANCE_CREATE,
485 9bf56d77 Michael Hanselmann
  INSTANCE_IMPORT,
486 9bf56d77 Michael Hanselmann
  INSTANCE_REMOTE_IMPORT,
487 9bf56d77 Michael Hanselmann
  ])
488 a8083063 Iustin Pop
489 1410fa8d Michael Hanselmann
# Remote import/export handshake message and version
490 1410fa8d Michael Hanselmann
RIE_VERSION = 0
491 1410fa8d Michael Hanselmann
RIE_HANDSHAKE = "Hi, I'm Ganeti"
492 1410fa8d Michael Hanselmann
493 1410fa8d Michael Hanselmann
# Remote import/export certificate validity in seconds
494 1410fa8d Michael Hanselmann
RIE_CERT_VALIDITY = 24 * 60 * 60
495 1410fa8d Michael Hanselmann
496 4478301b Michael Hanselmann
# Overall timeout for establishing connection
497 8fd2e34c Michael Hanselmann
RIE_CONNECT_TIMEOUT = 180
498 4a96f1d1 Michael Hanselmann
499 4478301b Michael Hanselmann
# Export only: how long to wait per connection attempt (seconds)
500 4478301b Michael Hanselmann
RIE_CONNECT_ATTEMPT_TIMEOUT = 20
501 4478301b Michael Hanselmann
502 4478301b Michael Hanselmann
# Export only: number of attempts to connect
503 4478301b Michael Hanselmann
RIE_CONNECT_RETRIES = 10
504 4478301b Michael Hanselmann
505 c74cda62 René Nussbaumer
#: Give child process up to 5 seconds to exit after sending a signal
506 c74cda62 René Nussbaumer
CHILD_LINGER_TIMEOUT = 5.0
507 4a96f1d1 Michael Hanselmann
508 21daa4a8 Stephen Shirley
DISK_TEMPLATES = frozenset([
509 21daa4a8 Stephen Shirley
  DT_DISKLESS,
510 21daa4a8 Stephen Shirley
  DT_PLAIN,
511 21daa4a8 Stephen Shirley
  DT_DRBD8,
512 21daa4a8 Stephen Shirley
  DT_FILE,
513 21daa4a8 Stephen Shirley
  DT_SHARED_FILE,
514 21daa4a8 Stephen Shirley
  DT_BLOCK
515 21daa4a8 Stephen Shirley
  ])
516 04fa07f2 Manuel Franceschini
517 04fa07f2 Manuel Franceschini
FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP])
518 a8083063 Iustin Pop
519 a8083063 Iustin Pop
# import/export config options
520 a8083063 Iustin Pop
INISECT_EXP = "export"
521 a8083063 Iustin Pop
INISECT_INS = "instance"
522 3c8954ad Iustin Pop
INISECT_HYP = "hypervisor"
523 3c8954ad Iustin Pop
INISECT_BEP = "backend"
524 535b49cb Iustin Pop
INISECT_OSP = "os"
525 38242904 Iustin Pop
526 24991749 Iustin Pop
# dynamic device modification
527 61a14bb3 Iustin Pop
DDM_ADD = "add"
528 61a14bb3 Iustin Pop
DDM_REMOVE = "remove"
529 61a14bb3 Iustin Pop
DDMS_VALUES = frozenset([DDM_ADD, DDM_REMOVE])
530 24991749 Iustin Pop
531 38242904 Iustin Pop
# common exit codes
532 a5bc662a Iustin Pop
EXIT_SUCCESS = 0
533 438b45d4 Michael Hanselmann
EXIT_FAILURE = 1
534 46479775 Guido Trotter
EXIT_NOTCLUSTER = 5
535 38242904 Iustin Pop
EXIT_NOTMASTER = 11
536 619fdc8e Iustin Pop
EXIT_NODESETUP_ERROR = 12
537 a5bc662a Iustin Pop
EXIT_CONFIRMATION = 13 # need user confirmation
538 cf62a272 Michael Hanselmann
539 ee3aedff Michael Hanselmann
#: Exit code for query operations with unknown fields
540 ee3aedff Michael Hanselmann
EXIT_UNKNOWN_FIELD = 14
541 ee3aedff Michael Hanselmann
542 5c947f38 Iustin Pop
# tags
543 5c947f38 Iustin Pop
TAG_CLUSTER = "cluster"
544 1ffd2673 Michael Hanselmann
TAG_NODEGROUP = "nodegroup"
545 5c947f38 Iustin Pop
TAG_NODE = "node"
546 5c947f38 Iustin Pop
TAG_INSTANCE = "instance"
547 3636400f Iustin Pop
VALID_TAG_TYPES = frozenset([
548 3636400f Iustin Pop
  TAG_CLUSTER,
549 1ffd2673 Michael Hanselmann
  TAG_NODEGROUP,
550 3636400f Iustin Pop
  TAG_NODE,
551 3636400f Iustin Pop
  TAG_INSTANCE,
552 3636400f Iustin Pop
  ])
553 5c947f38 Iustin Pop
MAX_TAG_LEN = 128
554 5c947f38 Iustin Pop
MAX_TAGS_PER_OBJ = 4096
555 5c947f38 Iustin Pop
556 cf62a272 Michael Hanselmann
# others
557 cf62a272 Michael Hanselmann
DEFAULT_BRIDGE = "xen-br0"
558 24b0d752 Iustin Pop
SYNC_SPEED = 60 * 1024
559 9769bb78 Manuel Franceschini
IP4_ADDRESS_LOCALHOST = "127.0.0.1"
560 9769bb78 Manuel Franceschini
IP4_ADDRESS_ANY = "0.0.0.0"
561 0d2cd893 Manuel Franceschini
IP6_ADDRESS_LOCALHOST = "::1"
562 0d2cd893 Manuel Franceschini
IP6_ADDRESS_ANY = "::"
563 2f20d07b Manuel Franceschini
IP4_VERSION = 4
564 2f20d07b Manuel Franceschini
IP6_VERSION = 6
565 b1cb62bd Andrea Spadaccini
VALID_IP_VERSIONS = frozenset([IP4_VERSION, IP6_VERSION])
566 16abfbc2 Alexander Schreiber
TCP_PING_TIMEOUT = 10
567 7900ed01 Iustin Pop
GANETI_RUNAS = "root"
568 d63e148a Manuel Franceschini
DEFAULT_VG = "xenvg"
569 ee2f0ed4 Luca Bigliardi
DEFAULT_DRBD_HELPER = "/bin/true"
570 8d1a2a64 Michael Hanselmann
MIN_VG_SIZE = 20480
571 c5e489f7 Iustin Pop
DEFAULT_MAC_PREFIX = "aa:00:00"
572 3736cb6b Iustin Pop
LVM_STRIPECOUNT = _autoconf.LVM_STRIPECOUNT
573 88cd08aa Guido Trotter
# default maximum instance wait time, in seconds.
574 88cd08aa Guido Trotter
DEFAULT_SHUTDOWN_TIMEOUT = 120
575 313b2dd4 Michael Hanselmann
NODE_MAX_CLOCK_SKEW = 150
576 033a1d00 Michael Hanselmann
# Time for an intra-cluster disk transfer to wait for a connection
577 81635b5a Iustin Pop
DISK_TRANSFER_CONNECT_TIMEOUT = 60
578 3536c792 Iustin Pop
# Disk index separator
579 3536c792 Iustin Pop
DISK_SEPARATOR = _autoconf.DISK_SEPARATOR
580 c4dfb0b6 Andrea Spadaccini
IP_COMMAND_PATH = _autoconf.IP_PATH
581 7900ed01 Iustin Pop
582 6a373640 Michael Hanselmann
#: Key for job IDs in opcode result
583 6a373640 Michael Hanselmann
JOB_IDS_KEY = "jobs"
584 6a373640 Michael Hanselmann
585 6bb65e3a Guido Trotter
# runparts results
586 6bb65e3a Guido Trotter
(RUNPARTS_SKIP,
587 6bb65e3a Guido Trotter
 RUNPARTS_RUN,
588 6bb65e3a Guido Trotter
 RUNPARTS_ERR) = range(3)
589 6bb65e3a Guido Trotter
590 6bb65e3a Guido Trotter
RUNPARTS_STATUS = frozenset([RUNPARTS_SKIP, RUNPARTS_RUN, RUNPARTS_ERR])
591 6bb65e3a Guido Trotter
592 12bce260 Michael Hanselmann
# RPC constants
593 12bce260 Michael Hanselmann
(RPC_ENCODING_NONE,
594 12bce260 Michael Hanselmann
 RPC_ENCODING_ZLIB_BASE64) = range(2)
595 12bce260 Michael Hanselmann
596 ded1c679 Guido Trotter
# os related constants
597 d0c8c01d Iustin Pop
OS_SCRIPT_CREATE = "create"
598 d0c8c01d Iustin Pop
OS_SCRIPT_IMPORT = "import"
599 d0c8c01d Iustin Pop
OS_SCRIPT_EXPORT = "export"
600 d0c8c01d Iustin Pop
OS_SCRIPT_RENAME = "rename"
601 d0c8c01d Iustin Pop
OS_SCRIPT_VERIFY = "verify"
602 21daa4a8 Stephen Shirley
OS_SCRIPTS = frozenset([
603 21daa4a8 Stephen Shirley
  OS_SCRIPT_CREATE,
604 21daa4a8 Stephen Shirley
  OS_SCRIPT_IMPORT,
605 21daa4a8 Stephen Shirley
  OS_SCRIPT_EXPORT,
606 21daa4a8 Stephen Shirley
  OS_SCRIPT_RENAME,
607 21daa4a8 Stephen Shirley
  OS_SCRIPT_VERIFY
608 21daa4a8 Stephen Shirley
  ])
609 37482e7b Guido Trotter
610 d0c8c01d Iustin Pop
OS_API_FILE = "ganeti_api_version"
611 d0c8c01d Iustin Pop
OS_VARIANTS_FILE = "variants.list"
612 d0c8c01d Iustin Pop
OS_PARAMETERS_FILE = "parameters.list"
613 b41b3516 Iustin Pop
614 d0c8c01d Iustin Pop
OS_VALIDATE_PARAMETERS = "parameters"
615 acd9ff9e Iustin Pop
OS_VALIDATE_CALLS = frozenset([OS_VALIDATE_PARAMETERS])
616 b6b45e0d Guido Trotter
617 70d9e3d8 Iustin Pop
# ssh constants
618 553bd93f Vitaly Kuznetsov
SSH_CONFIG_DIR = _autoconf.SSH_CONFIG_DIR
619 553bd93f Vitaly Kuznetsov
SSH_HOST_DSA_PRIV = SSH_CONFIG_DIR + "/ssh_host_dsa_key"
620 70d9e3d8 Iustin Pop
SSH_HOST_DSA_PUB = SSH_HOST_DSA_PRIV + ".pub"
621 553bd93f Vitaly Kuznetsov
SSH_HOST_RSA_PRIV = SSH_CONFIG_DIR + "/ssh_host_rsa_key"
622 70d9e3d8 Iustin Pop
SSH_HOST_RSA_PUB = SSH_HOST_RSA_PRIV + ".pub"
623 fff33d70 Michael Hanselmann
SSH = "ssh"
624 fff33d70 Michael Hanselmann
SCP = "scp"
625 007a2f3e Alexander Schreiber
626 007a2f3e Alexander Schreiber
# reboot types
627 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_SOFT = "soft"
628 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_HARD = "hard"
629 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_FULL = "full"
630 2584d4a4 Alexander Schreiber
631 990ade2d Stephen Shirley
REBOOT_TYPES = frozenset([
632 990ade2d Stephen Shirley
  INSTANCE_REBOOT_SOFT,
633 990ade2d Stephen Shirley
  INSTANCE_REBOOT_HARD,
634 990ade2d Stephen Shirley
  INSTANCE_REBOOT_FULL
635 990ade2d Stephen Shirley
  ])
636 990ade2d Stephen Shirley
637 990ade2d Stephen Shirley
# instance reboot behaviors
638 990ade2d Stephen Shirley
INSTANCE_REBOOT_ALLOWED = "reboot"
639 990ade2d Stephen Shirley
INSTANCE_REBOOT_EXIT = "exit"
640 990ade2d Stephen Shirley
641 990ade2d Stephen Shirley
REBOOT_BEHAVIORS = frozenset([
642 990ade2d Stephen Shirley
  INSTANCE_REBOOT_ALLOWED,
643 990ade2d Stephen Shirley
  INSTANCE_REBOOT_EXIT
644 990ade2d Stephen Shirley
  ])
645 00f91f29 Iustin Pop
646 d0c8c01d Iustin Pop
VTYPE_STRING = "string"
647 59525e1f Michael Hanselmann
VTYPE_MAYBE_STRING = "maybe-string"
648 d0c8c01d Iustin Pop
VTYPE_BOOL = "bool"
649 d0c8c01d Iustin Pop
VTYPE_SIZE = "size" # size, in MiBs
650 d0c8c01d Iustin Pop
VTYPE_INT = "int"
651 a5728081 Guido Trotter
ENFORCEABLE_TYPES = frozenset([
652 21daa4a8 Stephen Shirley
  VTYPE_STRING,
653 21daa4a8 Stephen Shirley
  VTYPE_MAYBE_STRING,
654 21daa4a8 Stephen Shirley
  VTYPE_BOOL,
655 21daa4a8 Stephen Shirley
  VTYPE_SIZE,
656 21daa4a8 Stephen Shirley
  VTYPE_INT,
657 21daa4a8 Stephen Shirley
  ])
658 a5728081 Guido Trotter
659 b1cb62bd Andrea Spadaccini
# Constant representing that the user does not specify any IP version
660 b1cb62bd Andrea Spadaccini
IFACE_NO_IP_VERSION_SPECIFIED = 0
661 b1cb62bd Andrea Spadaccini
662 e64b8beb Iustin Pop
# HV parameter names (global namespace)
663 e64b8beb Iustin Pop
HV_BOOT_ORDER = "boot_order"
664 e64b8beb Iustin Pop
HV_CDROM_IMAGE_PATH = "cdrom_image_path"
665 cc130cc7 Marco Casavecchia
HV_KVM_CDROM2_IMAGE_PATH = "cdrom2_image_path"
666 cc130cc7 Marco Casavecchia
HV_KVM_FLOPPY_IMAGE_PATH = "floppy_image_path"
667 e64b8beb Iustin Pop
HV_NIC_TYPE = "nic_type"
668 e64b8beb Iustin Pop
HV_DISK_TYPE = "disk_type"
669 cc130cc7 Marco Casavecchia
HV_KVM_CDROM_DISK_TYPE = "cdrom_disk_type"
670 e64b8beb Iustin Pop
HV_VNC_BIND_ADDRESS = "vnc_bind_address"
671 6e6bb8d5 Guido Trotter
HV_VNC_PASSWORD_FILE = "vnc_password_file"
672 8b2d1013 Guido Trotter
HV_VNC_TLS = "vnc_tls"
673 8b2d1013 Guido Trotter
HV_VNC_X509 = "vnc_x509_path"
674 8b2d1013 Guido Trotter
HV_VNC_X509_VERIFY = "vnc_x509_verify"
675 b1cb62bd Andrea Spadaccini
HV_KVM_SPICE_BIND = "spice_bind"
676 b1cb62bd Andrea Spadaccini
HV_KVM_SPICE_IP_VERSION = "spice_ip_version"
677 b451c4c7 Andrea Spadaccini
HV_KVM_SPICE_PASSWORD_FILE = "spice_password_file"
678 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_LOSSLESS_IMG_COMPR = "spice_image_compression"
679 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_JPEG_IMG_COMPR = "spice_jpeg_wan_compression"
680 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR = "spice_zlib_glz_wan_compression"
681 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_STREAMING_VIDEO_DETECTION = "spice_streaming_video"
682 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_AUDIO_COMPR = "spice_playback_compression"
683 e64b8beb Iustin Pop
HV_ACPI = "acpi"
684 e64b8beb Iustin Pop
HV_PAE = "pae"
685 2f2dbb4b Jun Futagawa
HV_USE_BOOTLOADER = "use_bootloader"
686 2f2dbb4b Jun Futagawa
HV_BOOTLOADER_ARGS = "bootloader_args"
687 2f2dbb4b Jun Futagawa
HV_BOOTLOADER_PATH = "bootloader_path"
688 f9d6542d Iustin Pop
HV_KERNEL_ARGS = "kernel_args"
689 e64b8beb Iustin Pop
HV_KERNEL_PATH = "kernel_path"
690 e64b8beb Iustin Pop
HV_INITRD_PATH = "initrd_path"
691 074ca009 Guido Trotter
HV_ROOT_PATH = "root_path"
692 a2faf9ee Guido Trotter
HV_SERIAL_CONSOLE = "serial_console"
693 11344a50 Guido Trotter
HV_USB_MOUSE = "usb_mouse"
694 4f580fef Sébastien Bocahu
HV_KEYMAP = "keymap"
695 09ea8710 Iustin Pop
HV_DEVICE_MODEL = "device_model"
696 48297fa2 Iustin Pop
HV_INIT_SCRIPT = "init_script"
697 78411c60 Iustin Pop
HV_MIGRATION_PORT = "migration_port"
698 e43d4f9f Apollon Oikonomopoulos
HV_MIGRATION_BANDWIDTH = "migration_bandwidth"
699 e43d4f9f Apollon Oikonomopoulos
HV_MIGRATION_DOWNTIME = "migration_downtime"
700 783a6c0b Iustin Pop
HV_MIGRATION_MODE = "migration_mode"
701 6b970cef Jun Futagawa
HV_USE_LOCALTIME = "use_localtime"
702 ea0f3d7a Iustin Pop
HV_DISK_CACHE = "disk_cache"
703 3424767f Guido Trotter
HV_SECURITY_MODEL = "security_model"
704 3424767f Guido Trotter
HV_SECURITY_DOMAIN = "security_domain"
705 7ba594c0 Guido Trotter
HV_KVM_FLAG = "kvm_flag"
706 fbe27e2b Guido Trotter
HV_VHOST_NET = "vhost_net"
707 84c08e4e Balazs Lecz
HV_KVM_USE_CHROOT = "use_chroot"
708 e3ed5316 Balazs Lecz
HV_CPU_MASK = "cpu_mask"
709 4f958b0b Miguel Di Ciurcio Filho
HV_MEM_PATH = "mem_path"
710 525011bc Maciej Bliziński
HV_BLOCKDEV_PREFIX = "blockdev_prefix"
711 990ade2d Stephen Shirley
HV_REBOOT_BEHAVIOR = "reboot_behavior"
712 e64b8beb Iustin Pop
713 a5728081 Guido Trotter
HVS_PARAMETER_TYPES = {
714 a5728081 Guido Trotter
  HV_BOOT_ORDER: VTYPE_STRING,
715 cc130cc7 Marco Casavecchia
  HV_KVM_FLOPPY_IMAGE_PATH: VTYPE_STRING,
716 a5728081 Guido Trotter
  HV_CDROM_IMAGE_PATH: VTYPE_STRING,
717 cc130cc7 Marco Casavecchia
  HV_KVM_CDROM2_IMAGE_PATH: VTYPE_STRING,
718 a5728081 Guido Trotter
  HV_NIC_TYPE: VTYPE_STRING,
719 a5728081 Guido Trotter
  HV_DISK_TYPE: VTYPE_STRING,
720 cc130cc7 Marco Casavecchia
  HV_KVM_CDROM_DISK_TYPE: VTYPE_STRING,
721 6e6bb8d5 Guido Trotter
  HV_VNC_PASSWORD_FILE: VTYPE_STRING,
722 a5728081 Guido Trotter
  HV_VNC_BIND_ADDRESS: VTYPE_STRING,
723 a5728081 Guido Trotter
  HV_VNC_TLS: VTYPE_BOOL,
724 a5728081 Guido Trotter
  HV_VNC_X509: VTYPE_STRING,
725 a5728081 Guido Trotter
  HV_VNC_X509_VERIFY: VTYPE_BOOL,
726 b1cb62bd Andrea Spadaccini
  HV_KVM_SPICE_BIND: VTYPE_STRING,
727 b1cb62bd Andrea Spadaccini
  HV_KVM_SPICE_IP_VERSION: VTYPE_INT,
728 b451c4c7 Andrea Spadaccini
  HV_KVM_SPICE_PASSWORD_FILE: VTYPE_STRING,
729 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_LOSSLESS_IMG_COMPR: VTYPE_STRING,
730 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_JPEG_IMG_COMPR: VTYPE_STRING,
731 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR: VTYPE_STRING,
732 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_STREAMING_VIDEO_DETECTION: VTYPE_STRING,
733 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_AUDIO_COMPR: VTYPE_BOOL,
734 a5728081 Guido Trotter
  HV_ACPI: VTYPE_BOOL,
735 a5728081 Guido Trotter
  HV_PAE: VTYPE_BOOL,
736 2f2dbb4b Jun Futagawa
  HV_USE_BOOTLOADER: VTYPE_BOOL,
737 2f2dbb4b Jun Futagawa
  HV_BOOTLOADER_PATH: VTYPE_STRING,
738 2f2dbb4b Jun Futagawa
  HV_BOOTLOADER_ARGS: VTYPE_STRING,
739 a5728081 Guido Trotter
  HV_KERNEL_PATH: VTYPE_STRING,
740 f9d6542d Iustin Pop
  HV_KERNEL_ARGS: VTYPE_STRING,
741 a5728081 Guido Trotter
  HV_INITRD_PATH: VTYPE_STRING,
742 7adf7814 René Nussbaumer
  HV_ROOT_PATH: VTYPE_MAYBE_STRING,
743 a5728081 Guido Trotter
  HV_SERIAL_CONSOLE: VTYPE_BOOL,
744 a5728081 Guido Trotter
  HV_USB_MOUSE: VTYPE_STRING,
745 4f580fef Sébastien Bocahu
  HV_KEYMAP: VTYPE_STRING,
746 09ea8710 Iustin Pop
  HV_DEVICE_MODEL: VTYPE_STRING,
747 48297fa2 Iustin Pop
  HV_INIT_SCRIPT: VTYPE_STRING,
748 78411c60 Iustin Pop
  HV_MIGRATION_PORT: VTYPE_INT,
749 e43d4f9f Apollon Oikonomopoulos
  HV_MIGRATION_BANDWIDTH: VTYPE_INT,
750 e43d4f9f Apollon Oikonomopoulos
  HV_MIGRATION_DOWNTIME: VTYPE_INT,
751 783a6c0b Iustin Pop
  HV_MIGRATION_MODE: VTYPE_STRING,
752 6b970cef Jun Futagawa
  HV_USE_LOCALTIME: VTYPE_BOOL,
753 ea0f3d7a Iustin Pop
  HV_DISK_CACHE: VTYPE_STRING,
754 3424767f Guido Trotter
  HV_SECURITY_MODEL: VTYPE_STRING,
755 3424767f Guido Trotter
  HV_SECURITY_DOMAIN: VTYPE_STRING,
756 7ba594c0 Guido Trotter
  HV_KVM_FLAG: VTYPE_STRING,
757 fbe27e2b Guido Trotter
  HV_VHOST_NET: VTYPE_BOOL,
758 84c08e4e Balazs Lecz
  HV_KVM_USE_CHROOT: VTYPE_BOOL,
759 e3ed5316 Balazs Lecz
  HV_CPU_MASK: VTYPE_STRING,
760 4f958b0b Miguel Di Ciurcio Filho
  HV_MEM_PATH: VTYPE_STRING,
761 525011bc Maciej Bliziński
  HV_BLOCKDEV_PREFIX: VTYPE_STRING,
762 990ade2d Stephen Shirley
  HV_REBOOT_BEHAVIOR: VTYPE_STRING,
763 a5728081 Guido Trotter
  }
764 a5728081 Guido Trotter
765 a5728081 Guido Trotter
HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
766 5018a335 Iustin Pop
767 34fbc862 Andrea Spadaccini
# Node info keys
768 34fbc862 Andrea Spadaccini
HV_NODEINFO_KEY_VERSION = "hv_version"
769 34fbc862 Andrea Spadaccini
770 3d5ebbf0 Stephen Shirley
# Backend parameter names
771 cd3ab26e Iustin Pop
BE_MEMORY = "memory"
772 e64b8beb Iustin Pop
BE_VCPUS = "vcpus"
773 c0f2b229 Iustin Pop
BE_AUTO_BALANCE = "auto_balance"
774 e64b8beb Iustin Pop
775 a5728081 Guido Trotter
BES_PARAMETER_TYPES = {
776 a5728081 Guido Trotter
    BE_MEMORY: VTYPE_SIZE,
777 a5728081 Guido Trotter
    BE_VCPUS: VTYPE_INT,
778 a5728081 Guido Trotter
    BE_AUTO_BALANCE: VTYPE_BOOL,
779 a5728081 Guido Trotter
    }
780 a5728081 Guido Trotter
781 a5728081 Guido Trotter
BES_PARAMETERS = frozenset(BES_PARAMETER_TYPES.keys())
782 cd3ab26e Iustin Pop
783 095e71aa René Nussbaumer
# Node parameter names
784 095e71aa René Nussbaumer
ND_OOB_PROGRAM = "oob_program"
785 095e71aa René Nussbaumer
786 095e71aa René Nussbaumer
NDS_PARAMETER_TYPES = {
787 095e71aa René Nussbaumer
    ND_OOB_PROGRAM: VTYPE_MAYBE_STRING,
788 095e71aa René Nussbaumer
    }
789 095e71aa René Nussbaumer
790 095e71aa René Nussbaumer
NDS_PARAMETERS = frozenset(NDS_PARAMETER_TYPES.keys())
791 095e71aa René Nussbaumer
792 b2f29800 René Nussbaumer
# OOB supported commands
793 b2f29800 René Nussbaumer
OOB_POWER_ON = "power-on"
794 b2f29800 René Nussbaumer
OOB_POWER_OFF = "power-off"
795 b2f29800 René Nussbaumer
OOB_POWER_CYCLE = "power-cycle"
796 b2f29800 René Nussbaumer
OOB_POWER_STATUS = "power-status"
797 b2f29800 René Nussbaumer
OOB_HEALTH = "health"
798 b2f29800 René Nussbaumer
799 21daa4a8 Stephen Shirley
OOB_COMMANDS = frozenset([
800 21daa4a8 Stephen Shirley
  OOB_POWER_ON,
801 21daa4a8 Stephen Shirley
  OOB_POWER_OFF,
802 21daa4a8 Stephen Shirley
  OOB_POWER_CYCLE,
803 21daa4a8 Stephen Shirley
  OOB_POWER_STATUS,
804 21daa4a8 Stephen Shirley
  OOB_HEALTH
805 21daa4a8 Stephen Shirley
  ])
806 b2f29800 René Nussbaumer
807 b528a12d René Nussbaumer
OOB_POWER_STATUS_POWERED = "powered"
808 b528a12d René Nussbaumer
809 445f735d René Nussbaumer
OOB_TIMEOUT = 60 # 60 seconds
810 beff3779 René Nussbaumer
OOB_POWER_DELAY = 2.0 # 2 seconds
811 445f735d René Nussbaumer
812 445f735d René Nussbaumer
OOB_STATUS_OK = "OK"
813 445f735d René Nussbaumer
OOB_STATUS_WARNING = "WARNING"
814 445f735d René Nussbaumer
OOB_STATUS_CRITICAL = "CRITICAL"
815 445f735d René Nussbaumer
OOB_STATUS_UNKNOWN = "UNKNOWN"
816 445f735d René Nussbaumer
817 445f735d René Nussbaumer
OOB_STATUSES = frozenset([
818 445f735d René Nussbaumer
  OOB_STATUS_OK,
819 445f735d René Nussbaumer
  OOB_STATUS_WARNING,
820 445f735d René Nussbaumer
  OOB_STATUS_CRITICAL,
821 445f735d René Nussbaumer
  OOB_STATUS_UNKNOWN,
822 445f735d René Nussbaumer
  ])
823 445f735d René Nussbaumer
824 4ef7f423 Guido Trotter
# Instance Parameters Profile
825 4ef7f423 Guido Trotter
PP_DEFAULT = "default"
826 e64b8beb Iustin Pop
827 246f4067 Guido Trotter
# NIC_* constants are used inside the ganeti config
828 ac061be9 Guido Trotter
NIC_MODE = "mode"
829 ac061be9 Guido Trotter
NIC_LINK = "link"
830 ac061be9 Guido Trotter
831 ac061be9 Guido Trotter
NIC_MODE_BRIDGED = "bridged"
832 ac061be9 Guido Trotter
NIC_MODE_ROUTED = "routed"
833 ac061be9 Guido Trotter
834 ac061be9 Guido Trotter
NIC_VALID_MODES = frozenset([NIC_MODE_BRIDGED, NIC_MODE_ROUTED])
835 ac061be9 Guido Trotter
836 ac061be9 Guido Trotter
NICS_PARAMETER_TYPES = {
837 ac061be9 Guido Trotter
    NIC_MODE: VTYPE_STRING,
838 ac061be9 Guido Trotter
    NIC_LINK: VTYPE_STRING,
839 ac061be9 Guido Trotter
    }
840 ac061be9 Guido Trotter
841 ac061be9 Guido Trotter
NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys())
842 e64b8beb Iustin Pop
843 246f4067 Guido Trotter
# IDISK_* constants are used in opcodes, to create/change disks
844 bd061c35 Guido Trotter
IDISK_SIZE = "size"
845 bd061c35 Guido Trotter
IDISK_MODE = "mode"
846 8494604f Apollon Oikonomopoulos
IDISK_ADOPT = "adopt"
847 7af3534e Dmitry Chernyak
IDISK_VG = "vg"
848 87001920 Iustin Pop
IDISK_METAVG = "metavg"
849 8494604f Apollon Oikonomopoulos
IDISK_PARAMS_TYPES = {
850 8494604f Apollon Oikonomopoulos
  IDISK_SIZE: VTYPE_SIZE,
851 8494604f Apollon Oikonomopoulos
  IDISK_MODE: VTYPE_STRING,
852 8494604f Apollon Oikonomopoulos
  IDISK_ADOPT: VTYPE_STRING,
853 7af3534e Dmitry Chernyak
  IDISK_VG: VTYPE_STRING,
854 87001920 Iustin Pop
  IDISK_METAVG: VTYPE_STRING,
855 8494604f Apollon Oikonomopoulos
  }
856 cc87d736 Michael Hanselmann
IDISK_PARAMS = frozenset(IDISK_PARAMS_TYPES.keys())
857 cc87d736 Michael Hanselmann
858 246f4067 Guido Trotter
# INIC_* constants are used in opcodes, to create/change nics
859 bd061c35 Guido Trotter
INIC_MAC = "mac"
860 bd061c35 Guido Trotter
INIC_IP = "ip"
861 bd061c35 Guido Trotter
INIC_MODE = "mode"
862 bd061c35 Guido Trotter
INIC_LINK = "link"
863 cc87d736 Michael Hanselmann
INIC_PARAMS_TYPES = {
864 cc87d736 Michael Hanselmann
  INIC_IP: VTYPE_MAYBE_STRING,
865 cc87d736 Michael Hanselmann
  INIC_LINK: VTYPE_STRING,
866 cc87d736 Michael Hanselmann
  INIC_MAC: VTYPE_STRING,
867 cc87d736 Michael Hanselmann
  INIC_MODE: VTYPE_STRING,
868 cc87d736 Michael Hanselmann
  }
869 cc87d736 Michael Hanselmann
INIC_PARAMS = frozenset(INIC_PARAMS_TYPES.keys())
870 bd061c35 Guido Trotter
871 2584d4a4 Alexander Schreiber
# Hypervisor constants
872 00cd937c Iustin Pop
HT_XEN_PVM = "xen-pvm"
873 2584d4a4 Alexander Schreiber
HT_FAKE = "fake"
874 00cd937c Iustin Pop
HT_XEN_HVM = "xen-hvm"
875 550e49b9 Guido Trotter
HT_KVM = "kvm"
876 48297fa2 Iustin Pop
HT_CHROOT = "chroot"
877 4b5e40a5 Iustin Pop
HT_LXC = "lxc"
878 4b5e40a5 Iustin Pop
HYPER_TYPES = frozenset([
879 4b5e40a5 Iustin Pop
  HT_XEN_PVM,
880 4b5e40a5 Iustin Pop
  HT_FAKE,
881 4b5e40a5 Iustin Pop
  HT_XEN_HVM,
882 4b5e40a5 Iustin Pop
  HT_KVM,
883 4b5e40a5 Iustin Pop
  HT_CHROOT,
884 4b5e40a5 Iustin Pop
  HT_LXC,
885 4b5e40a5 Iustin Pop
  ])
886 fd4daa3a Guido Trotter
HTS_REQ_PORT = frozenset([HT_XEN_HVM, HT_KVM])
887 2584d4a4 Alexander Schreiber
888 377d74c9 Guido Trotter
VNC_BASE_PORT = 5900
889 131178b9 Luca Bigliardi
VNC_PASSWORD_FILE = CONF_DIR + "/vnc-cluster-password"
890 0d2cd893 Manuel Franceschini
VNC_DEFAULT_BIND_ADDRESS = IP4_ADDRESS_ANY
891 e54c4c5e Guido Trotter
892 835528af Iustin Pop
# NIC types
893 d08f6067 Guido Trotter
HT_NIC_RTL8139 = "rtl8139"
894 d08f6067 Guido Trotter
HT_NIC_NE2K_PCI = "ne2k_pci"
895 d08f6067 Guido Trotter
HT_NIC_NE2K_ISA = "ne2k_isa"
896 43440815 Guido Trotter
HT_NIC_I82551 = "i82551"
897 43440815 Guido Trotter
HT_NIC_I85557B = "i82557b"
898 43440815 Guido Trotter
HT_NIC_I8259ER = "i82559er"
899 43440815 Guido Trotter
HT_NIC_PCNET = "pcnet"
900 43440815 Guido Trotter
HT_NIC_E1000 = "e1000"
901 d08f6067 Guido Trotter
HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
902 43440815 Guido Trotter
903 21daa4a8 Stephen Shirley
HT_HVM_VALID_NIC_TYPES = frozenset([
904 21daa4a8 Stephen Shirley
  HT_NIC_RTL8139,
905 21daa4a8 Stephen Shirley
  HT_NIC_NE2K_PCI,
906 21daa4a8 Stephen Shirley
  HT_NIC_E1000,
907 21daa4a8 Stephen Shirley
  HT_NIC_NE2K_ISA,
908 21daa4a8 Stephen Shirley
  HT_NIC_PARAVIRTUAL
909 21daa4a8 Stephen Shirley
  ])
910 21daa4a8 Stephen Shirley
HT_KVM_VALID_NIC_TYPES = frozenset([
911 21daa4a8 Stephen Shirley
  HT_NIC_RTL8139,
912 21daa4a8 Stephen Shirley
  HT_NIC_NE2K_PCI,
913 21daa4a8 Stephen Shirley
  HT_NIC_NE2K_ISA,
914 21daa4a8 Stephen Shirley
  HT_NIC_I82551,
915 21daa4a8 Stephen Shirley
  HT_NIC_I85557B,
916 21daa4a8 Stephen Shirley
  HT_NIC_I8259ER,
917 21daa4a8 Stephen Shirley
  HT_NIC_PCNET,
918 21daa4a8 Stephen Shirley
  HT_NIC_E1000,
919 21daa4a8 Stephen Shirley
  HT_NIC_PARAVIRTUAL
920 21daa4a8 Stephen Shirley
  ])
921 21daa4a8 Stephen Shirley
922 835528af Iustin Pop
# Disk types
923 835528af Iustin Pop
HT_DISK_IOEMU = "ioemu"
924 835528af Iustin Pop
HT_DISK_IDE = "ide"
925 835528af Iustin Pop
HT_DISK_SCSI = "scsi"
926 835528af Iustin Pop
HT_DISK_SD = "sd"
927 835528af Iustin Pop
HT_DISK_MTD = "mtd"
928 835528af Iustin Pop
HT_DISK_PFLASH = "pflash"
929 835528af Iustin Pop
930 ea0f3d7a Iustin Pop
HT_CACHE_DEFAULT = "default"
931 ea0f3d7a Iustin Pop
HT_CACHE_NONE = "none"
932 ea0f3d7a Iustin Pop
HT_CACHE_WTHROUGH = "writethrough"
933 ea0f3d7a Iustin Pop
HT_CACHE_WBACK = "writeback"
934 21daa4a8 Stephen Shirley
HT_VALID_CACHE_TYPES = frozenset([
935 21daa4a8 Stephen Shirley
  HT_CACHE_DEFAULT,
936 21daa4a8 Stephen Shirley
  HT_CACHE_NONE,
937 21daa4a8 Stephen Shirley
  HT_CACHE_WTHROUGH,
938 21daa4a8 Stephen Shirley
  HT_CACHE_WBACK
939 21daa4a8 Stephen Shirley
  ])
940 ea0f3d7a Iustin Pop
941 835528af Iustin Pop
HT_HVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IOEMU])
942 21daa4a8 Stephen Shirley
HT_KVM_VALID_DISK_TYPES = frozenset([
943 21daa4a8 Stephen Shirley
  HT_DISK_PARAVIRTUAL,
944 21daa4a8 Stephen Shirley
  HT_DISK_IDE,
945 21daa4a8 Stephen Shirley
  HT_DISK_SCSI,
946 21daa4a8 Stephen Shirley
  HT_DISK_SD,
947 21daa4a8 Stephen Shirley
  HT_DISK_MTD,
948 21daa4a8 Stephen Shirley
  HT_DISK_PFLASH
949 21daa4a8 Stephen Shirley
  ])
950 b894f5a8 Alexander Schreiber
951 835528af Iustin Pop
# Mouse types:
952 835528af Iustin Pop
HT_MOUSE_MOUSE = "mouse"
953 835528af Iustin Pop
HT_MOUSE_TABLET = "tablet"
954 835528af Iustin Pop
955 835528af Iustin Pop
HT_KVM_VALID_MOUSE_TYPES = frozenset([HT_MOUSE_MOUSE, HT_MOUSE_TABLET])
956 835528af Iustin Pop
957 835528af Iustin Pop
# Boot order
958 cc130cc7 Marco Casavecchia
HT_BO_FLOPPY = "floppy"
959 835528af Iustin Pop
HT_BO_CDROM = "cdrom"
960 835528af Iustin Pop
HT_BO_DISK = "disk"
961 835528af Iustin Pop
HT_BO_NETWORK = "network"
962 835528af Iustin Pop
963 21daa4a8 Stephen Shirley
HT_KVM_VALID_BO_TYPES = frozenset([
964 21daa4a8 Stephen Shirley
  HT_BO_FLOPPY,
965 21daa4a8 Stephen Shirley
  HT_BO_CDROM,
966 21daa4a8 Stephen Shirley
  HT_BO_DISK,
967 21daa4a8 Stephen Shirley
  HT_BO_NETWORK
968 21daa4a8 Stephen Shirley
  ])
969 835528af Iustin Pop
970 ea064d24 Andrea Spadaccini
# SPICE lossless image compression options
971 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ = "auto_glz"
972 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ = "auto_lz"
973 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC = "quic"
974 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ = "glz"
975 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ = "lz"
976 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF = "off"
977 ea064d24 Andrea Spadaccini
978 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VALID_LOSSLESS_IMG_COMPR_OPTIONS = frozenset([
979 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ,
980 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ,
981 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC,
982 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ,
983 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ,
984 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF,
985 ea064d24 Andrea Spadaccini
  ])
986 ea064d24 Andrea Spadaccini
987 ea064d24 Andrea Spadaccini
# SPICE lossy image compression options (valid for both jpeg and zlib-glz)
988 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO = "auto"
989 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER = "never"
990 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS = "always"
991 ea064d24 Andrea Spadaccini
992 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VALID_LOSSY_IMG_COMPR_OPTIONS = frozenset([
993 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO,
994 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER,
995 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS,
996 ea064d24 Andrea Spadaccini
  ])
997 ea064d24 Andrea Spadaccini
998 ea064d24 Andrea Spadaccini
# SPICE video stream detection
999 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF = "off"
1000 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL = "all"
1001 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER = "filter"
1002 ea064d24 Andrea Spadaccini
1003 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VALID_VIDEO_STREAM_DETECTION_OPTIONS = frozenset([
1004 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF,
1005 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL,
1006 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER,
1007 ea064d24 Andrea Spadaccini
  ])
1008 ea064d24 Andrea Spadaccini
1009 3424767f Guido Trotter
# Security models
1010 3424767f Guido Trotter
HT_SM_NONE = "none"
1011 3424767f Guido Trotter
HT_SM_USER = "user"
1012 3424767f Guido Trotter
HT_SM_POOL = "pool"
1013 3424767f Guido Trotter
1014 3424767f Guido Trotter
HT_KVM_VALID_SM_TYPES = frozenset([HT_SM_NONE, HT_SM_USER, HT_SM_POOL])
1015 3424767f Guido Trotter
1016 7ba594c0 Guido Trotter
# Kvm flag values
1017 7ba594c0 Guido Trotter
HT_KVM_ENABLED = "enabled"
1018 7ba594c0 Guido Trotter
HT_KVM_DISABLED = "disabled"
1019 7ba594c0 Guido Trotter
1020 7ba594c0 Guido Trotter
HT_KVM_FLAG_VALUES = frozenset([HT_KVM_ENABLED, HT_KVM_DISABLED])
1021 7ba594c0 Guido Trotter
1022 e71b9ef4 Iustin Pop
# Migration type
1023 e71b9ef4 Iustin Pop
HT_MIGRATION_LIVE = "live"
1024 e71b9ef4 Iustin Pop
HT_MIGRATION_NONLIVE = "non-live"
1025 783a6c0b Iustin Pop
HT_MIGRATION_MODES = frozenset([HT_MIGRATION_LIVE, HT_MIGRATION_NONLIVE])
1026 e71b9ef4 Iustin Pop
1027 e54c4c5e Guido Trotter
# Cluster Verify steps
1028 d0c8c01d Iustin Pop
VERIFY_NPLUSONE_MEM = "nplusone_mem"
1029 e54c4c5e Guido Trotter
VERIFY_OPTIONAL_CHECKS = frozenset([VERIFY_NPLUSONE_MEM])
1030 e54c4c5e Guido Trotter
1031 25361b9a Iustin Pop
# Node verify constants
1032 7ef40fbe Luca Bigliardi
NV_DRBDHELPER = "drbd-helper"
1033 b0d85178 Iustin Pop
NV_DRBDLIST = "drbd-list"
1034 25361b9a Iustin Pop
NV_FILELIST = "filelist"
1035 25361b9a Iustin Pop
NV_HVINFO = "hvinfo"
1036 25361b9a Iustin Pop
NV_HYPERVISOR = "hypervisor"
1037 58a59652 Iustin Pop
NV_HVPARAMS = "hvparms"
1038 25361b9a Iustin Pop
NV_INSTANCELIST = "instancelist"
1039 b0d85178 Iustin Pop
NV_LVLIST = "lvlist"
1040 b0d85178 Iustin Pop
NV_MASTERIP = "master-ip"
1041 25361b9a Iustin Pop
NV_NODELIST = "nodelist"
1042 25361b9a Iustin Pop
NV_NODENETTEST = "node-net-test"
1043 7c0aa8e9 Iustin Pop
NV_NODESETUP = "nodesetup"
1044 b0d85178 Iustin Pop
NV_OSLIST = "oslist"
1045 b0d85178 Iustin Pop
NV_PVLIST = "pvlist"
1046 313b2dd4 Michael Hanselmann
NV_TIME = "time"
1047 b0d85178 Iustin Pop
NV_VERSION = "version"
1048 b0d85178 Iustin Pop
NV_VGLIST = "vglist"
1049 8964ee14 Iustin Pop
NV_VMNODES = "vmnodes"
1050 16f41f24 René Nussbaumer
NV_OOB_PATHS = "oob-paths"
1051 20d317d4 Iustin Pop
NV_BRIDGES = "bridges"
1052 25361b9a Iustin Pop
1053 61a980a9 Michael Hanselmann
# Instance status
1054 61a980a9 Michael Hanselmann
INSTST_RUNNING = "running"
1055 61a980a9 Michael Hanselmann
INSTST_ADMINDOWN = "ADMIN_down"
1056 61a980a9 Michael Hanselmann
INSTST_NODEOFFLINE = "ERROR_nodeoffline"
1057 61a980a9 Michael Hanselmann
INSTST_NODEDOWN = "ERROR_nodedown"
1058 61a980a9 Michael Hanselmann
INSTST_WRONGNODE = "ERROR_wrongnode"
1059 61a980a9 Michael Hanselmann
INSTST_ERRORUP = "ERROR_up"
1060 61a980a9 Michael Hanselmann
INSTST_ERRORDOWN = "ERROR_down"
1061 61a980a9 Michael Hanselmann
INSTST_ALL = frozenset([
1062 61a980a9 Michael Hanselmann
  INSTST_RUNNING,
1063 61a980a9 Michael Hanselmann
  INSTST_ADMINDOWN,
1064 61a980a9 Michael Hanselmann
  INSTST_NODEOFFLINE,
1065 61a980a9 Michael Hanselmann
  INSTST_NODEDOWN,
1066 61a980a9 Michael Hanselmann
  INSTST_WRONGNODE,
1067 61a980a9 Michael Hanselmann
  INSTST_ERRORUP,
1068 61a980a9 Michael Hanselmann
  INSTST_ERRORDOWN,
1069 61a980a9 Michael Hanselmann
  ])
1070 61a980a9 Michael Hanselmann
1071 1e28e3b8 Michael Hanselmann
# Node roles
1072 1e28e3b8 Michael Hanselmann
NR_REGULAR = "R"
1073 1e28e3b8 Michael Hanselmann
NR_MASTER = "M"
1074 1e28e3b8 Michael Hanselmann
NR_MCANDIDATE = "C"
1075 1e28e3b8 Michael Hanselmann
NR_DRAINED = "D"
1076 1e28e3b8 Michael Hanselmann
NR_OFFLINE = "O"
1077 1e28e3b8 Michael Hanselmann
NR_ALL = frozenset([
1078 1e28e3b8 Michael Hanselmann
  NR_REGULAR,
1079 1e28e3b8 Michael Hanselmann
  NR_MASTER,
1080 1e28e3b8 Michael Hanselmann
  NR_MCANDIDATE,
1081 1e28e3b8 Michael Hanselmann
  NR_DRAINED,
1082 1e28e3b8 Michael Hanselmann
  NR_OFFLINE,
1083 1e28e3b8 Michael Hanselmann
  ])
1084 1e28e3b8 Michael Hanselmann
1085 b98bf262 Michael Hanselmann
# SSL certificate check constants (in days)
1086 b98bf262 Michael Hanselmann
SSL_CERT_EXPIRATION_WARN = 30
1087 b98bf262 Michael Hanselmann
SSL_CERT_EXPIRATION_ERROR = 7
1088 b98bf262 Michael Hanselmann
1089 d61df03e Iustin Pop
# Allocator framework constants
1090 77031881 Iustin Pop
IALLOCATOR_VERSION = 2
1091 298fe380 Iustin Pop
IALLOCATOR_DIR_IN = "in"
1092 298fe380 Iustin Pop
IALLOCATOR_DIR_OUT = "out"
1093 3636400f Iustin Pop
VALID_IALLOCATOR_DIRECTIONS = frozenset([
1094 3636400f Iustin Pop
  IALLOCATOR_DIR_IN,
1095 3636400f Iustin Pop
  IALLOCATOR_DIR_OUT,
1096 3636400f Iustin Pop
  ])
1097 298fe380 Iustin Pop
IALLOCATOR_MODE_ALLOC = "allocate"
1098 298fe380 Iustin Pop
IALLOCATOR_MODE_RELOC = "relocate"
1099 60152bbe Michael Hanselmann
IALLOCATOR_MODE_CHG_GROUP = "change-group"
1100 60152bbe Michael Hanselmann
IALLOCATOR_MODE_NODE_EVAC = "node-evacuate"
1101 3636400f Iustin Pop
VALID_IALLOCATOR_MODES = frozenset([
1102 3636400f Iustin Pop
  IALLOCATOR_MODE_ALLOC,
1103 3636400f Iustin Pop
  IALLOCATOR_MODE_RELOC,
1104 60152bbe Michael Hanselmann
  IALLOCATOR_MODE_CHG_GROUP,
1105 60152bbe Michael Hanselmann
  IALLOCATOR_MODE_NODE_EVAC,
1106 3636400f Iustin Pop
  ])
1107 298fe380 Iustin Pop
IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH
1108 5f33b613 Michael Hanselmann
1109 60152bbe Michael Hanselmann
IALLOCATOR_NEVAC_PRI = "primary-only"
1110 60152bbe Michael Hanselmann
IALLOCATOR_NEVAC_SEC = "secondary-only"
1111 60152bbe Michael Hanselmann
IALLOCATOR_NEVAC_ALL = "all"
1112 60152bbe Michael Hanselmann
IALLOCATOR_NEVAC_MODES = frozenset([
1113 60152bbe Michael Hanselmann
  IALLOCATOR_NEVAC_PRI,
1114 60152bbe Michael Hanselmann
  IALLOCATOR_NEVAC_SEC,
1115 60152bbe Michael Hanselmann
  IALLOCATOR_NEVAC_ALL,
1116 60152bbe Michael Hanselmann
  ])
1117 60152bbe Michael Hanselmann
1118 f1da30e6 Michael Hanselmann
# Job queue
1119 f1da30e6 Michael Hanselmann
JOB_QUEUE_VERSION = 1
1120 f1da30e6 Michael Hanselmann
JOB_QUEUE_LOCK_FILE = QUEUE_DIR + "/lock"
1121 f1da30e6 Michael Hanselmann
JOB_QUEUE_VERSION_FILE = QUEUE_DIR + "/version"
1122 f1da30e6 Michael Hanselmann
JOB_QUEUE_SERIAL_FILE = QUEUE_DIR + "/serial"
1123 0cb94105 Michael Hanselmann
JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive"
1124 686d7433 Iustin Pop
JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain"
1125 f87b405e Michael Hanselmann
JOB_QUEUE_SIZE_HARD_LIMIT = 5000
1126 c33549ef Guido Trotter
JOB_QUEUE_DIRS = [QUEUE_DIR, JOB_QUEUE_ARCHIVE_DIR]
1127 5bae14d9 Guido Trotter
JOB_QUEUE_DIRS_MODE = SECURE_DIR_MODE
1128 f1da30e6 Michael Hanselmann
1129 bac5ffc3 Oleksiy Mishchenko
JOB_ID_TEMPLATE = r"\d+"
1130 cb66225d Michael Hanselmann
JOB_FILE_RE = re.compile(r"^job-(%s)$" % JOB_ID_TEMPLATE)
1131 bac5ffc3 Oleksiy Mishchenko
1132 5c735209 Iustin Pop
# unchanged job return
1133 5c735209 Iustin Pop
JOB_NOTCHANGED = "nochange"
1134 5c735209 Iustin Pop
1135 5f33b613 Michael Hanselmann
# Job status
1136 5f33b613 Michael Hanselmann
JOB_STATUS_QUEUED = "queued"
1137 47099cd1 Michael Hanselmann
JOB_STATUS_WAITING = "waiting"
1138 fbf0262f Michael Hanselmann
JOB_STATUS_CANCELING = "canceling"
1139 5f33b613 Michael Hanselmann
JOB_STATUS_RUNNING = "running"
1140 5f33b613 Michael Hanselmann
JOB_STATUS_CANCELED = "canceled"
1141 5f33b613 Michael Hanselmann
JOB_STATUS_SUCCESS = "success"
1142 5f33b613 Michael Hanselmann
JOB_STATUS_ERROR = "error"
1143 989a8bee Michael Hanselmann
JOBS_FINALIZED = frozenset([
1144 989a8bee Michael Hanselmann
  JOB_STATUS_CANCELED,
1145 989a8bee Michael Hanselmann
  JOB_STATUS_SUCCESS,
1146 989a8bee Michael Hanselmann
  JOB_STATUS_ERROR,
1147 989a8bee Michael Hanselmann
  ])
1148 db5bce34 Michael Hanselmann
JOB_STATUS_ALL = frozenset([
1149 db5bce34 Michael Hanselmann
  JOB_STATUS_QUEUED,
1150 47099cd1 Michael Hanselmann
  JOB_STATUS_WAITING,
1151 db5bce34 Michael Hanselmann
  JOB_STATUS_CANCELING,
1152 db5bce34 Michael Hanselmann
  JOB_STATUS_RUNNING,
1153 db5bce34 Michael Hanselmann
  ]) | JOBS_FINALIZED
1154 5f33b613 Michael Hanselmann
1155 34327f51 Iustin Pop
# OpCode status
1156 34327f51 Iustin Pop
# not yet finalized
1157 5f33b613 Michael Hanselmann
OP_STATUS_QUEUED = "queued"
1158 47099cd1 Michael Hanselmann
OP_STATUS_WAITING = "waiting"
1159 fbf0262f Michael Hanselmann
OP_STATUS_CANCELING = "canceling"
1160 5f33b613 Michael Hanselmann
OP_STATUS_RUNNING = "running"
1161 34327f51 Iustin Pop
# finalized
1162 4cb1d919 Michael Hanselmann
OP_STATUS_CANCELED = "canceled"
1163 5f33b613 Michael Hanselmann
OP_STATUS_SUCCESS = "success"
1164 5f33b613 Michael Hanselmann
OP_STATUS_ERROR = "error"
1165 21daa4a8 Stephen Shirley
OPS_FINALIZED = frozenset([
1166 21daa4a8 Stephen Shirley
  OP_STATUS_CANCELED,
1167 21daa4a8 Stephen Shirley
  OP_STATUS_SUCCESS,
1168 21daa4a8 Stephen Shirley
  OP_STATUS_ERROR
1169 21daa4a8 Stephen Shirley
  ])
1170 f1048938 Iustin Pop
1171 e5d8774b Michael Hanselmann
# OpCode priority
1172 e5d8774b Michael Hanselmann
OP_PRIO_LOWEST = +19
1173 e5d8774b Michael Hanselmann
OP_PRIO_HIGHEST = -20
1174 e5d8774b Michael Hanselmann
1175 e5d8774b Michael Hanselmann
OP_PRIO_LOW = +10
1176 e5d8774b Michael Hanselmann
OP_PRIO_NORMAL = 0
1177 e5d8774b Michael Hanselmann
OP_PRIO_HIGH = -10
1178 e5d8774b Michael Hanselmann
1179 e71c8147 Michael Hanselmann
OP_PRIO_SUBMIT_VALID = frozenset([
1180 e71c8147 Michael Hanselmann
  OP_PRIO_LOW,
1181 e71c8147 Michael Hanselmann
  OP_PRIO_NORMAL,
1182 e71c8147 Michael Hanselmann
  OP_PRIO_HIGH,
1183 e71c8147 Michael Hanselmann
  ])
1184 e71c8147 Michael Hanselmann
1185 e5d8774b Michael Hanselmann
OP_PRIO_DEFAULT = OP_PRIO_NORMAL
1186 e5d8774b Michael Hanselmann
1187 f1048938 Iustin Pop
# Execution log types
1188 f1048938 Iustin Pop
ELOG_MESSAGE = "message"
1189 f1048938 Iustin Pop
ELOG_PROGRESS = "progress"
1190 9bf56d77 Michael Hanselmann
ELOG_REMOTE_IMPORT = "remote-import"
1191 e58f87a9 Michael Hanselmann
ELOG_JQUEUE_TEST = "jqueue-test"
1192 e58f87a9 Michael Hanselmann
1193 19ddc57a René Nussbaumer
# /etc/hosts modification
1194 19ddc57a René Nussbaumer
ETC_HOSTS_ADD = "add"
1195 19ddc57a René Nussbaumer
ETC_HOSTS_REMOVE = "remove"
1196 19ddc57a René Nussbaumer
1197 e58f87a9 Michael Hanselmann
# Job queue test
1198 e58f87a9 Michael Hanselmann
JQT_MSGPREFIX = "TESTMSG="
1199 e58f87a9 Michael Hanselmann
JQT_EXPANDNAMES = "expandnames"
1200 e58f87a9 Michael Hanselmann
JQT_EXEC = "exec"
1201 e58f87a9 Michael Hanselmann
JQT_LOGMSG = "logmsg"
1202 f99010b2 Michael Hanselmann
JQT_STARTMSG = "startmsg"
1203 e58f87a9 Michael Hanselmann
JQT_ALL = frozenset([
1204 e58f87a9 Michael Hanselmann
  JQT_EXPANDNAMES,
1205 e58f87a9 Michael Hanselmann
  JQT_EXEC,
1206 e58f87a9 Michael Hanselmann
  JQT_LOGMSG,
1207 f99010b2 Michael Hanselmann
  JQT_STARTMSG,
1208 e58f87a9 Michael Hanselmann
  ])
1209 d4104181 Iustin Pop
1210 4a917de6 Michael Hanselmann
# Query resources
1211 4a917de6 Michael Hanselmann
QR_INSTANCE = "instance"
1212 4a917de6 Michael Hanselmann
QR_NODE = "node"
1213 24d16f76 Michael Hanselmann
QR_LOCK = "lock"
1214 e070c663 Adeodato Simo
QR_GROUP = "group"
1215 be3a4b14 Michael Hanselmann
QR_OS = "os"
1216 4a917de6 Michael Hanselmann
1217 4a917de6 Michael Hanselmann
#: List of resources which can be queried using L{opcodes.OpQuery}
1218 abd66bf8 Michael Hanselmann
QR_VIA_OP = frozenset([QR_INSTANCE, QR_NODE, QR_GROUP, QR_OS])
1219 4a917de6 Michael Hanselmann
1220 3d5ebbf0 Stephen Shirley
#: List of resources which can be queried using Local UniX Interface
1221 abd66bf8 Michael Hanselmann
QR_VIA_LUXI = QR_VIA_OP.union([
1222 24d16f76 Michael Hanselmann
  QR_LOCK,
1223 28b71a76 Michael Hanselmann
  ])
1224 28b71a76 Michael Hanselmann
1225 abd66bf8 Michael Hanselmann
#: List of resources which can be queried using RAPI
1226 abd66bf8 Michael Hanselmann
QR_VIA_RAPI = QR_VIA_LUXI
1227 abd66bf8 Michael Hanselmann
1228 4a917de6 Michael Hanselmann
# Query field types
1229 4a917de6 Michael Hanselmann
QFT_UNKNOWN = "unknown"
1230 4a917de6 Michael Hanselmann
QFT_TEXT = "text"
1231 4a917de6 Michael Hanselmann
QFT_BOOL = "bool"
1232 4a917de6 Michael Hanselmann
QFT_NUMBER = "number"
1233 4a917de6 Michael Hanselmann
QFT_UNIT = "unit"
1234 4a917de6 Michael Hanselmann
QFT_TIMESTAMP = "timestamp"
1235 4a917de6 Michael Hanselmann
QFT_OTHER = "other"
1236 4a917de6 Michael Hanselmann
1237 4a917de6 Michael Hanselmann
#: All query field types
1238 4a917de6 Michael Hanselmann
QFT_ALL = frozenset([
1239 4a917de6 Michael Hanselmann
  QFT_UNKNOWN,
1240 4a917de6 Michael Hanselmann
  QFT_TEXT,
1241 4a917de6 Michael Hanselmann
  QFT_BOOL,
1242 4a917de6 Michael Hanselmann
  QFT_NUMBER,
1243 4a917de6 Michael Hanselmann
  QFT_UNIT,
1244 4a917de6 Michael Hanselmann
  QFT_TIMESTAMP,
1245 4a917de6 Michael Hanselmann
  QFT_OTHER,
1246 4a917de6 Michael Hanselmann
  ])
1247 4a917de6 Michael Hanselmann
1248 a6070ef7 Michael Hanselmann
# Query result field status (don't change or reuse values as they're used by
1249 a6070ef7 Michael Hanselmann
# clients)
1250 4a917de6 Michael Hanselmann
#: Normal field status
1251 cfb084ae René Nussbaumer
RS_NORMAL = 0
1252 4a917de6 Michael Hanselmann
#: Unknown field
1253 cfb084ae René Nussbaumer
RS_UNKNOWN = 1
1254 cfb084ae René Nussbaumer
#: No data (e.g. RPC error), can be used instead of L{RS_OFFLINE}
1255 cfb084ae René Nussbaumer
RS_NODATA = 2
1256 dcb9946c Iustin Pop
#: Value unavailable/unsupported for item; if this field is supported
1257 e18c6c47 Iustin Pop
#: but we cannot get the data for the moment, RS_NODATA or
1258 e18c6c47 Iustin Pop
#: RS_OFFLINE should be used
1259 cfb084ae René Nussbaumer
RS_UNAVAIL = 3
1260 a6070ef7 Michael Hanselmann
#: Resource marked offline
1261 cfb084ae René Nussbaumer
RS_OFFLINE = 4
1262 cfb084ae René Nussbaumer
1263 cfb084ae René Nussbaumer
RS_ALL = frozenset([
1264 cfb084ae René Nussbaumer
  RS_NORMAL,
1265 cfb084ae René Nussbaumer
  RS_UNKNOWN,
1266 cfb084ae René Nussbaumer
  RS_NODATA,
1267 cfb084ae René Nussbaumer
  RS_UNAVAIL,
1268 cfb084ae René Nussbaumer
  RS_OFFLINE,
1269 ee3aedff Michael Hanselmann
  ])
1270 ee3aedff Michael Hanselmann
1271 f0b1bafe Iustin Pop
#: Dictionary with special field cases and their verbose/terse formatting
1272 f0b1bafe Iustin Pop
RSS_DESCRIPTION = {
1273 f0b1bafe Iustin Pop
  RS_UNKNOWN: ("(unknown)", "??"),
1274 e687ec01 Michael Hanselmann
  RS_NODATA: ("(nodata)", "?"),
1275 f0b1bafe Iustin Pop
  RS_OFFLINE: ("(offline)", "*"),
1276 f0b1bafe Iustin Pop
  RS_UNAVAIL: ("(unavail)", "-"),
1277 f0b1bafe Iustin Pop
  }
1278 f0b1bafe Iustin Pop
1279 c5e489f7 Iustin Pop
# max dynamic devices
1280 24991749 Iustin Pop
MAX_NICS = 8
1281 24991749 Iustin Pop
MAX_DISKS = 16
1282 24991749 Iustin Pop
1283 93384844 Iustin Pop
# SSCONF keys
1284 93384844 Iustin Pop
SS_CLUSTER_NAME = "cluster_name"
1285 5d60b3bd Iustin Pop
SS_CLUSTER_TAGS = "cluster_tags"
1286 93384844 Iustin Pop
SS_FILE_STORAGE_DIR = "file_storage_dir"
1287 4b97f902 Apollon Oikonomopoulos
SS_SHARED_FILE_STORAGE_DIR = "shared_file_storage_dir"
1288 f56618e0 Iustin Pop
SS_MASTER_CANDIDATES = "master_candidates"
1289 8113a52e Luca Bigliardi
SS_MASTER_CANDIDATES_IPS = "master_candidates_ips"
1290 93384844 Iustin Pop
SS_MASTER_IP = "master_ip"
1291 93384844 Iustin Pop
SS_MASTER_NETDEV = "master_netdev"
1292 93384844 Iustin Pop
SS_MASTER_NODE = "master_node"
1293 93384844 Iustin Pop
SS_NODE_LIST = "node_list"
1294 f9780ccd Luca Bigliardi
SS_NODE_PRIMARY_IPS = "node_primary_ips"
1295 f9780ccd Luca Bigliardi
SS_NODE_SECONDARY_IPS = "node_secondary_ips"
1296 a3316e4a Iustin Pop
SS_OFFLINE_NODES = "offline_nodes"
1297 81a49123 Iustin Pop
SS_ONLINE_NODES = "online_nodes"
1298 868a98ca Manuel Franceschini
SS_PRIMARY_IP_FAMILY = "primary_ip_family"
1299 81a49123 Iustin Pop
SS_INSTANCE_LIST = "instance_list"
1300 8a113c7a Iustin Pop
SS_RELEASE_VERSION = "release_version"
1301 4f7a6a10 Iustin Pop
SS_HYPERVISOR_LIST = "hypervisor_list"
1302 5c465a95 Iustin Pop
SS_MAINTAIN_NODE_HEALTH = "maintain_node_health"
1303 0fbae49a Balazs Lecz
SS_UID_POOL = "uid_pool"
1304 6f076453 Guido Trotter
SS_NODEGROUPS = "nodegroups"
1305 93384844 Iustin Pop
1306 cd57bab6 Michael Hanselmann
SS_FILE_PERMS = 0444
1307 cd57bab6 Michael Hanselmann
1308 7888a614 Alexander Schreiber
# cluster wide default parameters
1309 7888a614 Alexander Schreiber
DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM
1310 7888a614 Alexander Schreiber
1311 7888a614 Alexander Schreiber
HVC_DEFAULTS = {
1312 bd0ff7c2 Iustin Pop
  HT_XEN_PVM: {
1313 2f2dbb4b Jun Futagawa
    HV_USE_BOOTLOADER: False,
1314 2f2dbb4b Jun Futagawa
    HV_BOOTLOADER_PATH: XEN_BOOTLOADER,
1315 d0c8c01d Iustin Pop
    HV_BOOTLOADER_ARGS: "",
1316 bd0ff7c2 Iustin Pop
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-xenU",
1317 d0c8c01d Iustin Pop
    HV_INITRD_PATH: "",
1318 d0c8c01d Iustin Pop
    HV_ROOT_PATH: "/dev/sda1",
1319 d0c8c01d Iustin Pop
    HV_KERNEL_ARGS: "ro",
1320 78411c60 Iustin Pop
    HV_MIGRATION_PORT: 8002,
1321 783a6c0b Iustin Pop
    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1322 525011bc Maciej Bliziński
    HV_BLOCKDEV_PREFIX: "sd",
1323 990ade2d Stephen Shirley
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1324 bd0ff7c2 Iustin Pop
    },
1325 bd0ff7c2 Iustin Pop
  HT_XEN_HVM: {
1326 bd0ff7c2 Iustin Pop
    HV_BOOT_ORDER: "cd",
1327 d0c8c01d Iustin Pop
    HV_CDROM_IMAGE_PATH: "",
1328 d08f6067 Guido Trotter
    HV_NIC_TYPE: HT_NIC_RTL8139,
1329 43440815 Guido Trotter
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1330 9769bb78 Manuel Franceschini
    HV_VNC_BIND_ADDRESS: IP4_ADDRESS_ANY,
1331 6e6bb8d5 Guido Trotter
    HV_VNC_PASSWORD_FILE: VNC_PASSWORD_FILE,
1332 bd0ff7c2 Iustin Pop
    HV_ACPI: True,
1333 bd0ff7c2 Iustin Pop
    HV_PAE: True,
1334 e2ee1cea Iustin Pop
    HV_KERNEL_PATH: "/usr/lib/xen/boot/hvmloader",
1335 09ea8710 Iustin Pop
    HV_DEVICE_MODEL: "/usr/lib/xen/bin/qemu-dm",
1336 78411c60 Iustin Pop
    HV_MIGRATION_PORT: 8002,
1337 783a6c0b Iustin Pop
    HV_MIGRATION_MODE: HT_MIGRATION_NONLIVE,
1338 6b970cef Jun Futagawa
    HV_USE_LOCALTIME: False,
1339 525011bc Maciej Bliziński
    HV_BLOCKDEV_PREFIX: "hd",
1340 990ade2d Stephen Shirley
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1341 bd0ff7c2 Iustin Pop
    },
1342 bd0ff7c2 Iustin Pop
  HT_KVM: {
1343 bd0ff7c2 Iustin Pop
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-kvmU",
1344 d0c8c01d Iustin Pop
    HV_INITRD_PATH: "",
1345 d0c8c01d Iustin Pop
    HV_KERNEL_ARGS: "ro",
1346 d0c8c01d Iustin Pop
    HV_ROOT_PATH: "/dev/vda1",
1347 bd0ff7c2 Iustin Pop
    HV_ACPI: True,
1348 bd0ff7c2 Iustin Pop
    HV_SERIAL_CONSOLE: True,
1349 d0c8c01d Iustin Pop
    HV_VNC_BIND_ADDRESS: "",
1350 8b2d1013 Guido Trotter
    HV_VNC_TLS: False,
1351 d0c8c01d Iustin Pop
    HV_VNC_X509: "",
1352 8b2d1013 Guido Trotter
    HV_VNC_X509_VERIFY: False,
1353 d0c8c01d Iustin Pop
    HV_VNC_PASSWORD_FILE: "",
1354 b1cb62bd Andrea Spadaccini
    HV_KVM_SPICE_BIND: "",
1355 b1cb62bd Andrea Spadaccini
    HV_KVM_SPICE_IP_VERSION: IFACE_NO_IP_VERSION_SPECIFIED,
1356 b451c4c7 Andrea Spadaccini
    HV_KVM_SPICE_PASSWORD_FILE: "",
1357 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_LOSSLESS_IMG_COMPR: "",
1358 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_JPEG_IMG_COMPR: "",
1359 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR: "",
1360 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_STREAMING_VIDEO_DETECTION: "",
1361 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_AUDIO_COMPR: True,
1362 d0c8c01d Iustin Pop
    HV_KVM_FLOPPY_IMAGE_PATH: "",
1363 d0c8c01d Iustin Pop
    HV_CDROM_IMAGE_PATH: "",
1364 d0c8c01d Iustin Pop
    HV_KVM_CDROM2_IMAGE_PATH: "",
1365 835528af Iustin Pop
    HV_BOOT_ORDER: HT_BO_DISK,
1366 43440815 Guido Trotter
    HV_NIC_TYPE: HT_NIC_PARAVIRTUAL,
1367 43440815 Guido Trotter
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1368 d0c8c01d Iustin Pop
    HV_KVM_CDROM_DISK_TYPE: "",
1369 d0c8c01d Iustin Pop
    HV_USB_MOUSE: "",
1370 4f580fef Sébastien Bocahu
    HV_KEYMAP: "",
1371 3c075436 Iustin Pop
    HV_MIGRATION_PORT: 8102,
1372 e43d4f9f Apollon Oikonomopoulos
    HV_MIGRATION_BANDWIDTH: 32, # MiB/s
1373 e43d4f9f Apollon Oikonomopoulos
    HV_MIGRATION_DOWNTIME: 30,  # ms
1374 783a6c0b Iustin Pop
    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1375 6b970cef Jun Futagawa
    HV_USE_LOCALTIME: False,
1376 ea0f3d7a Iustin Pop
    HV_DISK_CACHE: HT_CACHE_DEFAULT,
1377 d19d94db Guido Trotter
    HV_SECURITY_MODEL: HT_SM_NONE,
1378 d0c8c01d Iustin Pop
    HV_SECURITY_DOMAIN: "",
1379 7ba594c0 Guido Trotter
    HV_KVM_FLAG: "",
1380 fbe27e2b Guido Trotter
    HV_VHOST_NET: False,
1381 84c08e4e Balazs Lecz
    HV_KVM_USE_CHROOT: False,
1382 4f958b0b Miguel Di Ciurcio Filho
    HV_MEM_PATH: "",
1383 990ade2d Stephen Shirley
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1384 bd0ff7c2 Iustin Pop
    },
1385 bd0ff7c2 Iustin Pop
  HT_FAKE: {
1386 bd0ff7c2 Iustin Pop
    },
1387 48297fa2 Iustin Pop
  HT_CHROOT: {
1388 48297fa2 Iustin Pop
    HV_INIT_SCRIPT: "/ganeti-chroot",
1389 48297fa2 Iustin Pop
    },
1390 4b5e40a5 Iustin Pop
  HT_LXC: {
1391 e3ed5316 Balazs Lecz
    HV_CPU_MASK: "",
1392 4b5e40a5 Iustin Pop
    },
1393 bd0ff7c2 Iustin Pop
  }
1394 7888a614 Alexander Schreiber
1395 7736a5f2 Iustin Pop
HVC_GLOBALS = frozenset([
1396 7736a5f2 Iustin Pop
  HV_MIGRATION_PORT,
1397 e43d4f9f Apollon Oikonomopoulos
  HV_MIGRATION_BANDWIDTH,
1398 783a6c0b Iustin Pop
  HV_MIGRATION_MODE,
1399 7736a5f2 Iustin Pop
  ])
1400 7736a5f2 Iustin Pop
1401 7888a614 Alexander Schreiber
BEC_DEFAULTS = {
1402 bd0ff7c2 Iustin Pop
  BE_MEMORY: 128,
1403 bd0ff7c2 Iustin Pop
  BE_VCPUS: 1,
1404 bd0ff7c2 Iustin Pop
  BE_AUTO_BALANCE: True,
1405 bd0ff7c2 Iustin Pop
  }
1406 c3e618cc Guido Trotter
1407 095e71aa René Nussbaumer
NDC_DEFAULTS = {
1408 095e71aa René Nussbaumer
  ND_OOB_PROGRAM: None,
1409 095e71aa René Nussbaumer
  }
1410 095e71aa René Nussbaumer
1411 ac061be9 Guido Trotter
NICC_DEFAULTS = {
1412 ac061be9 Guido Trotter
  NIC_MODE: NIC_MODE_BRIDGED,
1413 ac061be9 Guido Trotter
  NIC_LINK: DEFAULT_BRIDGE,
1414 ac061be9 Guido Trotter
  }
1415 ac061be9 Guido Trotter
1416 c3e618cc Guido Trotter
MASTER_POOL_SIZE_DEFAULT = 10
1417 ea1518af Guido Trotter
1418 ea1518af Guido Trotter
CONFD_PROTOCOL_VERSION = 1
1419 ea1518af Guido Trotter
1420 09444532 Guido Trotter
CONFD_REQ_PING = 0
1421 ea1518af Guido Trotter
CONFD_REQ_NODE_ROLE_BYNAME = 1
1422 ea1518af Guido Trotter
CONFD_REQ_NODE_PIP_BY_INSTANCE_IP = 2
1423 48166551 Guido Trotter
CONFD_REQ_CLUSTER_MASTER = 3
1424 efbb4fd2 Luca Bigliardi
CONFD_REQ_NODE_PIP_LIST = 4
1425 efbb4fd2 Luca Bigliardi
CONFD_REQ_MC_PIP_LIST = 5
1426 d01ae714 Luca Bigliardi
CONFD_REQ_INSTANCES_IPS_LIST = 6
1427 ea1518af Guido Trotter
1428 19351457 Guido Trotter
# Confd request query fields. These are used to narrow down queries.
1429 19351457 Guido Trotter
# These must be strings rather than integers, because json-encoding
1430 19351457 Guido Trotter
# converts them to strings anyway, as they're used as dict-keys.
1431 19351457 Guido Trotter
CONFD_REQQ_LINK = "0"
1432 19351457 Guido Trotter
CONFD_REQQ_IP = "1"
1433 19351457 Guido Trotter
CONFD_REQQ_IPLIST = "2"
1434 250554a9 Guido Trotter
CONFD_REQQ_FIELDS = "3"
1435 250554a9 Guido Trotter
1436 250554a9 Guido Trotter
CONFD_REQFIELD_NAME = "0"
1437 250554a9 Guido Trotter
CONFD_REQFIELD_IP = "1"
1438 43dc8496 Guido Trotter
CONFD_REQFIELD_MNODE_PIP = "2"
1439 19351457 Guido Trotter
1440 ea1518af Guido Trotter
CONFD_REQS = frozenset([
1441 09444532 Guido Trotter
  CONFD_REQ_PING,
1442 ea1518af Guido Trotter
  CONFD_REQ_NODE_ROLE_BYNAME,
1443 ea1518af Guido Trotter
  CONFD_REQ_NODE_PIP_BY_INSTANCE_IP,
1444 48166551 Guido Trotter
  CONFD_REQ_CLUSTER_MASTER,
1445 efbb4fd2 Luca Bigliardi
  CONFD_REQ_NODE_PIP_LIST,
1446 efbb4fd2 Luca Bigliardi
  CONFD_REQ_MC_PIP_LIST,
1447 d01ae714 Luca Bigliardi
  CONFD_REQ_INSTANCES_IPS_LIST,
1448 ea1518af Guido Trotter
  ])
1449 ea1518af Guido Trotter
1450 31c2a99e Guido Trotter
CONFD_REPL_STATUS_OK = 0
1451 31c2a99e Guido Trotter
CONFD_REPL_STATUS_ERROR = 1
1452 31c2a99e Guido Trotter
CONFD_REPL_STATUS_NOTIMPLEMENTED = 2
1453 31c2a99e Guido Trotter
1454 31c2a99e Guido Trotter
CONFD_REPL_STATUSES = frozenset([
1455 31c2a99e Guido Trotter
  CONFD_REPL_STATUS_OK,
1456 31c2a99e Guido Trotter
  CONFD_REPL_STATUS_ERROR,
1457 31c2a99e Guido Trotter
  CONFD_REPL_STATUS_NOTIMPLEMENTED,
1458 31c2a99e Guido Trotter
  ])
1459 31c2a99e Guido Trotter
1460 89c52785 Guido Trotter
(CONFD_NODE_ROLE_MASTER,
1461 89c52785 Guido Trotter
 CONFD_NODE_ROLE_CANDIDATE,
1462 89c52785 Guido Trotter
 CONFD_NODE_ROLE_OFFLINE,
1463 197b0f5d Guido Trotter
 CONFD_NODE_ROLE_DRAINED,
1464 197b0f5d Guido Trotter
 CONFD_NODE_ROLE_REGULAR,
1465 197b0f5d Guido Trotter
 ) = range(5)
1466 89c52785 Guido Trotter
1467 ca2a5b13 Guido Trotter
# A few common errors for confd
1468 ca2a5b13 Guido Trotter
CONFD_ERROR_UNKNOWN_ENTRY = 1
1469 7189e790 Guido Trotter
CONFD_ERROR_INTERNAL = 2
1470 19351457 Guido Trotter
CONFD_ERROR_ARGUMENT = 3
1471 ca2a5b13 Guido Trotter
1472 71f27d19 Guido Trotter
# Each request is "salted" by the current timestamp.
1473 71f27d19 Guido Trotter
# This constants decides how many seconds of skew to accept.
1474 71f27d19 Guido Trotter
# TODO: make this a default and allow the value to be more configurable
1475 313b2dd4 Michael Hanselmann
CONFD_MAX_CLOCK_SKEW = 2 * NODE_MAX_CLOCK_SKEW
1476 84c3ab28 Guido Trotter
1477 84c3ab28 Guido Trotter
# When we haven't reloaded the config for more than this amount of seconds, we
1478 84c3ab28 Guido Trotter
# force a test to see if inotify is betraying us.
1479 84c3ab28 Guido Trotter
CONFD_CONFIG_RELOAD_TIMEOUT = 60
1480 84c3ab28 Guido Trotter
1481 84c3ab28 Guido Trotter
# If we receive more than one update in this amount of seconds, we move to
1482 84c3ab28 Guido Trotter
# polling every RATELIMIT seconds, rather than relying on inotify, to be able
1483 84c3ab28 Guido Trotter
# to serve more requests.
1484 84c3ab28 Guido Trotter
CONFD_CONFIG_RELOAD_RATELIMIT = 2
1485 c8eded0b Guido Trotter
1486 a3758ab2 Guido Trotter
# Magic number prepended to all confd queries.
1487 a3758ab2 Guido Trotter
# This allows us to distinguish different types of confd protocols and handle
1488 a3758ab2 Guido Trotter
# them. For example by changing this we can move the whole payload to be
1489 a3758ab2 Guido Trotter
# compressed, or move away from json.
1490 d0c8c01d Iustin Pop
CONFD_MAGIC_FOURCC = "plj0"
1491 a3758ab2 Guido Trotter
1492 e4ccf6cd Guido Trotter
# By default a confd request is sent to the minimum between this number and all
1493 e4ccf6cd Guido Trotter
# MCs. 6 was chosen because even in the case of a disastrous 50% response rate,
1494 e4ccf6cd Guido Trotter
# we should have enough answers to be able to compare more than one.
1495 e4ccf6cd Guido Trotter
CONFD_DEFAULT_REQ_COVERAGE = 6
1496 e4ccf6cd Guido Trotter
1497 e4ccf6cd Guido Trotter
# Timeout in seconds to expire pending query request in the confd client
1498 e4ccf6cd Guido Trotter
# library. We don't actually expect any answer more than 10 seconds after we
1499 e4ccf6cd Guido Trotter
# sent a request.
1500 e4ccf6cd Guido Trotter
CONFD_CLIENT_EXPIRE_TIMEOUT = 10
1501 e4ccf6cd Guido Trotter
1502 c8eded0b Guido Trotter
# Maximum UDP datagram size.
1503 c8eded0b Guido Trotter
# On IPv4: 64K - 20 (ip header size) - 8 (udp header size) = 65507
1504 c8eded0b Guido Trotter
# On IPv6: 64K - 40 (ip6 header size) - 8 (udp header size) = 65487
1505 c8eded0b Guido Trotter
#   (assuming we can't use jumbo frames)
1506 c8eded0b Guido Trotter
# We just set this to 60K, which should be enough
1507 c8eded0b Guido Trotter
MAX_UDP_DATA_SIZE = 61440
1508 6d127406 Balazs Lecz
1509 6d127406 Balazs Lecz
# User-id pool minimum/maximum acceptable user-ids.
1510 6d127406 Balazs Lecz
UIDPOOL_UID_MIN = 0
1511 e687ec01 Michael Hanselmann
UIDPOOL_UID_MAX = 2 ** 32 - 1 # Assuming 32 bit user-ids
1512 649bcdd8 Balazs Lecz
1513 649bcdd8 Balazs Lecz
# Name or path of the pgrep command
1514 649bcdd8 Balazs Lecz
PGREP = "pgrep"
1515 75cf411a Adeodato Simo
1516 75cf411a Adeodato Simo
# Name of the node group that gets created at cluster init or upgrade
1517 75cf411a Adeodato Simo
INITIAL_NODE_GROUP_NAME = "default"
1518 90e99856 Adeodato Simo
1519 90e99856 Adeodato Simo
# Possible values for NodeGroup.alloc_policy
1520 90e99856 Adeodato Simo
ALLOC_POLICY_PREFERRED = "preferred"
1521 90e99856 Adeodato Simo
ALLOC_POLICY_LAST_RESORT = "last_resort"
1522 90e99856 Adeodato Simo
ALLOC_POLICY_UNALLOCABLE = "unallocable"
1523 90e99856 Adeodato Simo
VALID_ALLOC_POLICIES = [
1524 90e99856 Adeodato Simo
  ALLOC_POLICY_PREFERRED,
1525 90e99856 Adeodato Simo
  ALLOC_POLICY_LAST_RESORT,
1526 90e99856 Adeodato Simo
  ALLOC_POLICY_UNALLOCABLE,
1527 90e99856 Adeodato Simo
  ]
1528 b6135bbc Apollon Oikonomopoulos
1529 b6135bbc Apollon Oikonomopoulos
# Temporary external/shared storage parameters
1530 b6135bbc Apollon Oikonomopoulos
BLOCKDEV_DRIVER_MANUAL = "manual"
1531 e5395072 Iustin Pop
1532 e5395072 Iustin Pop
# Whether htools was enabled at compilation time
1533 e5395072 Iustin Pop
HTOOLS = _autoconf.HTOOLS
1534 e5395072 Iustin Pop
# The hail iallocator
1535 e5395072 Iustin Pop
IALLOC_HAIL = "hail"