Statistics
| Branch: | Tag: | Revision:

root / lib / constants.py @ 26082b7e

History | View | Annotate | Download (40.2 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 fe5ca2bb Andrea Spadaccini
HOOKS_PATH = "/sbin:/bin:/usr/sbin:/usr/bin"
336 a8083063 Iustin Pop
337 a8083063 Iustin Pop
# hooks subject type (what object type does the LU deal with)
338 a8083063 Iustin Pop
HTYPE_CLUSTER = "CLUSTER"
339 a8083063 Iustin Pop
HTYPE_NODE = "NODE"
340 b1ee5610 Adeodato Simo
HTYPE_GROUP = "GROUP"
341 a8083063 Iustin Pop
HTYPE_INSTANCE = "INSTANCE"
342 a8083063 Iustin Pop
343 a8083063 Iustin Pop
HKR_SKIP = 0
344 a8083063 Iustin Pop
HKR_FAIL = 1
345 a8083063 Iustin Pop
HKR_SUCCESS = 2
346 a8083063 Iustin Pop
347 ac2d0fe4 Michael Hanselmann
# Storage types
348 ac2d0fe4 Michael Hanselmann
ST_FILE = "file"
349 ac2d0fe4 Michael Hanselmann
ST_LVM_PV = "lvm-pv"
350 ac2d0fe4 Michael Hanselmann
ST_LVM_VG = "lvm-vg"
351 6032697c Michael Hanselmann
352 6032697c Michael Hanselmann
# Storage fields
353 620a85fd Iustin Pop
# first two are valid in LU context only, not passed to backend
354 620a85fd Iustin Pop
SF_NODE = "node"
355 620a85fd Iustin Pop
SF_TYPE = "type"
356 620a85fd Iustin Pop
# and the rest are valid in backend
357 6032697c Michael Hanselmann
SF_NAME = "name"
358 6032697c Michael Hanselmann
SF_SIZE = "size"
359 6032697c Michael Hanselmann
SF_FREE = "free"
360 6032697c Michael Hanselmann
SF_USED = "used"
361 6032697c Michael Hanselmann
SF_ALLOCATABLE = "allocatable"
362 6032697c Michael Hanselmann
363 6c3c6db9 Michael Hanselmann
# Storage operations
364 6c3c6db9 Michael Hanselmann
SO_FIX_CONSISTENCY = "fix-consistency"
365 6c3c6db9 Michael Hanselmann
366 6032697c Michael Hanselmann
# Available fields per storage type
367 21daa4a8 Stephen Shirley
VALID_STORAGE_FIELDS = frozenset([
368 21daa4a8 Stephen Shirley
  SF_NAME,
369 21daa4a8 Stephen Shirley
  SF_TYPE,
370 21daa4a8 Stephen Shirley
  SF_SIZE,
371 21daa4a8 Stephen Shirley
  SF_USED,
372 21daa4a8 Stephen Shirley
  SF_FREE,
373 21daa4a8 Stephen Shirley
  SF_ALLOCATABLE
374 21daa4a8 Stephen Shirley
  ])
375 620a85fd Iustin Pop
376 620a85fd Iustin Pop
VALID_STORAGE_TYPES = frozenset([ST_FILE, ST_LVM_PV, ST_LVM_VG])
377 a8083063 Iustin Pop
378 efb8da02 Michael Hanselmann
MODIFIABLE_STORAGE_FIELDS = {
379 efb8da02 Michael Hanselmann
  ST_LVM_PV: frozenset([SF_ALLOCATABLE]),
380 efb8da02 Michael Hanselmann
  }
381 efb8da02 Michael Hanselmann
382 4b37cac5 Michael Hanselmann
VALID_STORAGE_OPERATIONS = {
383 6c3c6db9 Michael Hanselmann
  ST_LVM_VG: frozenset([SO_FIX_CONSISTENCY]),
384 4b37cac5 Michael Hanselmann
  }
385 4b37cac5 Michael Hanselmann
386 74f37195 Michael Hanselmann
# Local disk status
387 74f37195 Michael Hanselmann
# Note: Code depends on LDS_OKAY < LDS_UNKNOWN < LDS_FAULTY
388 74f37195 Michael Hanselmann
(LDS_OKAY,
389 74f37195 Michael Hanselmann
 LDS_UNKNOWN,
390 74f37195 Michael Hanselmann
 LDS_FAULTY) = range(1, 4)
391 74f37195 Michael Hanselmann
392 a8083063 Iustin Pop
# disk template types
393 a8083063 Iustin Pop
DT_DISKLESS = "diskless"
394 a8083063 Iustin Pop
DT_PLAIN = "plain"
395 a1f445d3 Iustin Pop
DT_DRBD8 = "drbd"
396 04fa07f2 Manuel Franceschini
DT_FILE = "file"
397 4b97f902 Apollon Oikonomopoulos
DT_SHARED_FILE = "sharedfile"
398 b6135bbc Apollon Oikonomopoulos
DT_BLOCK = "blockdev"
399 a1f445d3 Iustin Pop
400 a1f445d3 Iustin Pop
# the set of network-mirrored disk templates
401 3429a076 Apollon Oikonomopoulos
DTS_INT_MIRROR = frozenset([DT_DRBD8])
402 a8083063 Iustin Pop
403 b6135bbc Apollon Oikonomopoulos
# the set of externally-mirrored disk templates (e.g. SAN, NAS)
404 b6135bbc Apollon Oikonomopoulos
DTS_EXT_MIRROR = frozenset([DT_SHARED_FILE, DT_BLOCK])
405 4b97f902 Apollon Oikonomopoulos
406 d63e148a Manuel Franceschini
# the set of non-lvm-based disk templates
407 b6135bbc Apollon Oikonomopoulos
DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE, DT_SHARED_FILE, DT_BLOCK])
408 d63e148a Manuel Franceschini
409 728489a3 Guido Trotter
# the set of disk templates which can be grown
410 4b97f902 Apollon Oikonomopoulos
DTS_GROWABLE = frozenset([DT_PLAIN, DT_DRBD8, DT_FILE, DT_SHARED_FILE])
411 728489a3 Guido Trotter
412 3b08cd1c Apollon Oikonomopoulos
# the set of disk templates that allow adoption
413 b6135bbc Apollon Oikonomopoulos
DTS_MAY_ADOPT = frozenset([DT_PLAIN, DT_BLOCK])
414 b6135bbc Apollon Oikonomopoulos
415 b6135bbc Apollon Oikonomopoulos
# the set of disk templates that *must* use adoption
416 b6135bbc Apollon Oikonomopoulos
DTS_MUST_ADOPT = frozenset([DT_BLOCK])
417 3b08cd1c Apollon Oikonomopoulos
418 85a0ff7e Apollon Oikonomopoulos
# the set of disk templates that allow migrations
419 3429a076 Apollon Oikonomopoulos
DTS_MIRRORED = frozenset.union(DTS_INT_MIRROR, DTS_EXT_MIRROR)
420 85a0ff7e Apollon Oikonomopoulos
421 c16915bd Guido Trotter
# the set of file based disk templates
422 c16915bd Guido Trotter
DTS_FILEBASED = frozenset([DT_FILE, DT_SHARED_FILE])
423 85a0ff7e Apollon Oikonomopoulos
424 fe96220b Iustin Pop
# logical disk types
425 fe96220b Iustin Pop
LD_LV = "lvm"
426 a1f445d3 Iustin Pop
LD_DRBD8 = "drbd8"
427 04fa07f2 Manuel Franceschini
LD_FILE = "file"
428 b6135bbc Apollon Oikonomopoulos
LD_BLOCKDEV = "blockdev"
429 b6135bbc Apollon Oikonomopoulos
LDS_BLOCK = frozenset([LD_LV, LD_DRBD8, LD_BLOCKDEV])
430 04fa07f2 Manuel Franceschini
431 2899d9de Iustin Pop
# drbd constants
432 2899d9de Iustin Pop
DRBD_HMAC_ALG = "md5"
433 3c03759a Iustin Pop
DRBD_NET_PROTOCOL = "C"
434 89b70f39 Iustin Pop
DRBD_BARRIERS = _autoconf.DRBD_BARRIERS
435 2899d9de Iustin Pop
436 04fa07f2 Manuel Franceschini
# file backend driver
437 04fa07f2 Manuel Franceschini
FD_LOOP = "loop"
438 04fa07f2 Manuel Franceschini
FD_BLKTAP = "blktap"
439 a1f445d3 Iustin Pop
440 a1f445d3 Iustin Pop
# the set of drbd-like disk types
441 abdf0113 Iustin Pop
LDS_DRBD = frozenset([LD_DRBD8])
442 fe96220b Iustin Pop
443 08db7c5c Iustin Pop
# disk access mode
444 24991749 Iustin Pop
DISK_RDONLY = "ro"
445 24991749 Iustin Pop
DISK_RDWR = "rw"
446 08db7c5c Iustin Pop
DISK_ACCESS_SET = frozenset([DISK_RDONLY, DISK_RDWR])
447 08db7c5c Iustin Pop
448 a9e0c397 Iustin Pop
# disk replacement mode
449 cfacfd6e Iustin Pop
REPLACE_DISK_PRI = "replace_on_primary"    # replace disks on primary
450 cfacfd6e Iustin Pop
REPLACE_DISK_SEC = "replace_on_secondary"  # replace disks on secondary
451 cfacfd6e Iustin Pop
REPLACE_DISK_CHG = "replace_new_secondary" # change secondary node
452 942be002 Michael Hanselmann
REPLACE_DISK_AUTO = "replace_auto"
453 3636400f Iustin Pop
REPLACE_MODES = frozenset([
454 3636400f Iustin Pop
  REPLACE_DISK_PRI,
455 3636400f Iustin Pop
  REPLACE_DISK_SEC,
456 3636400f Iustin Pop
  REPLACE_DISK_CHG,
457 3636400f Iustin Pop
  REPLACE_DISK_AUTO,
458 3636400f Iustin Pop
  ])
459 a9e0c397 Iustin Pop
460 4a96f1d1 Michael Hanselmann
# Instance export mode
461 4a96f1d1 Michael Hanselmann
EXPORT_MODE_LOCAL = "local"
462 4a96f1d1 Michael Hanselmann
EXPORT_MODE_REMOTE = "remote"
463 4a96f1d1 Michael Hanselmann
EXPORT_MODES = frozenset([
464 4a96f1d1 Michael Hanselmann
  EXPORT_MODE_LOCAL,
465 4a96f1d1 Michael Hanselmann
  EXPORT_MODE_REMOTE,
466 4a96f1d1 Michael Hanselmann
  ])
467 4a96f1d1 Michael Hanselmann
468 d385a174 Iustin Pop
# Lock recalculate mode
469 d0c8c01d Iustin Pop
LOCKS_REPLACE = "replace"
470 d0c8c01d Iustin Pop
LOCKS_APPEND = "append"
471 f6d9a522 Guido Trotter
472 d385a174 Iustin Pop
# Lock timeout (sum) before we should go into blocking acquire (still
473 d385a174 Iustin Pop
# can be reset by priority change); computed as max time (10 hours)
474 d385a174 Iustin Pop
# before we should actually go into blocking acquire given that we
475 d385a174 Iustin Pop
# start from default priority level; in seconds
476 d385a174 Iustin Pop
LOCK_ATTEMPTS_TIMEOUT = 10 * 3600 / 20.0
477 d385a174 Iustin Pop
LOCK_ATTEMPTS_MAXWAIT = 15.0
478 d385a174 Iustin Pop
LOCK_ATTEMPTS_MINWAIT = 1.0
479 d385a174 Iustin Pop
480 2f6eebee Guido Trotter
# instance creation modes
481 a8083063 Iustin Pop
INSTANCE_CREATE = "create"
482 a8083063 Iustin Pop
INSTANCE_IMPORT = "import"
483 9bf56d77 Michael Hanselmann
INSTANCE_REMOTE_IMPORT = "remote-import"
484 9bf56d77 Michael Hanselmann
INSTANCE_CREATE_MODES = frozenset([
485 9bf56d77 Michael Hanselmann
  INSTANCE_CREATE,
486 9bf56d77 Michael Hanselmann
  INSTANCE_IMPORT,
487 9bf56d77 Michael Hanselmann
  INSTANCE_REMOTE_IMPORT,
488 9bf56d77 Michael Hanselmann
  ])
489 a8083063 Iustin Pop
490 1410fa8d Michael Hanselmann
# Remote import/export handshake message and version
491 1410fa8d Michael Hanselmann
RIE_VERSION = 0
492 1410fa8d Michael Hanselmann
RIE_HANDSHAKE = "Hi, I'm Ganeti"
493 1410fa8d Michael Hanselmann
494 1410fa8d Michael Hanselmann
# Remote import/export certificate validity in seconds
495 1410fa8d Michael Hanselmann
RIE_CERT_VALIDITY = 24 * 60 * 60
496 1410fa8d Michael Hanselmann
497 4478301b Michael Hanselmann
# Overall timeout for establishing connection
498 8fd2e34c Michael Hanselmann
RIE_CONNECT_TIMEOUT = 180
499 4a96f1d1 Michael Hanselmann
500 4478301b Michael Hanselmann
# Export only: how long to wait per connection attempt (seconds)
501 4478301b Michael Hanselmann
RIE_CONNECT_ATTEMPT_TIMEOUT = 20
502 4478301b Michael Hanselmann
503 4478301b Michael Hanselmann
# Export only: number of attempts to connect
504 4478301b Michael Hanselmann
RIE_CONNECT_RETRIES = 10
505 4478301b Michael Hanselmann
506 c74cda62 René Nussbaumer
#: Give child process up to 5 seconds to exit after sending a signal
507 c74cda62 René Nussbaumer
CHILD_LINGER_TIMEOUT = 5.0
508 4a96f1d1 Michael Hanselmann
509 21daa4a8 Stephen Shirley
DISK_TEMPLATES = frozenset([
510 21daa4a8 Stephen Shirley
  DT_DISKLESS,
511 21daa4a8 Stephen Shirley
  DT_PLAIN,
512 21daa4a8 Stephen Shirley
  DT_DRBD8,
513 21daa4a8 Stephen Shirley
  DT_FILE,
514 21daa4a8 Stephen Shirley
  DT_SHARED_FILE,
515 21daa4a8 Stephen Shirley
  DT_BLOCK
516 21daa4a8 Stephen Shirley
  ])
517 04fa07f2 Manuel Franceschini
518 04fa07f2 Manuel Franceschini
FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP])
519 a8083063 Iustin Pop
520 a8083063 Iustin Pop
# import/export config options
521 a8083063 Iustin Pop
INISECT_EXP = "export"
522 a8083063 Iustin Pop
INISECT_INS = "instance"
523 3c8954ad Iustin Pop
INISECT_HYP = "hypervisor"
524 3c8954ad Iustin Pop
INISECT_BEP = "backend"
525 535b49cb Iustin Pop
INISECT_OSP = "os"
526 38242904 Iustin Pop
527 24991749 Iustin Pop
# dynamic device modification
528 61a14bb3 Iustin Pop
DDM_ADD = "add"
529 61a14bb3 Iustin Pop
DDM_REMOVE = "remove"
530 61a14bb3 Iustin Pop
DDMS_VALUES = frozenset([DDM_ADD, DDM_REMOVE])
531 24991749 Iustin Pop
532 38242904 Iustin Pop
# common exit codes
533 a5bc662a Iustin Pop
EXIT_SUCCESS = 0
534 438b45d4 Michael Hanselmann
EXIT_FAILURE = 1
535 46479775 Guido Trotter
EXIT_NOTCLUSTER = 5
536 38242904 Iustin Pop
EXIT_NOTMASTER = 11
537 619fdc8e Iustin Pop
EXIT_NODESETUP_ERROR = 12
538 a5bc662a Iustin Pop
EXIT_CONFIRMATION = 13 # need user confirmation
539 cf62a272 Michael Hanselmann
540 ee3aedff Michael Hanselmann
#: Exit code for query operations with unknown fields
541 ee3aedff Michael Hanselmann
EXIT_UNKNOWN_FIELD = 14
542 ee3aedff Michael Hanselmann
543 5c947f38 Iustin Pop
# tags
544 5c947f38 Iustin Pop
TAG_CLUSTER = "cluster"
545 1ffd2673 Michael Hanselmann
TAG_NODEGROUP = "nodegroup"
546 5c947f38 Iustin Pop
TAG_NODE = "node"
547 5c947f38 Iustin Pop
TAG_INSTANCE = "instance"
548 3636400f Iustin Pop
VALID_TAG_TYPES = frozenset([
549 3636400f Iustin Pop
  TAG_CLUSTER,
550 1ffd2673 Michael Hanselmann
  TAG_NODEGROUP,
551 3636400f Iustin Pop
  TAG_NODE,
552 3636400f Iustin Pop
  TAG_INSTANCE,
553 3636400f Iustin Pop
  ])
554 5c947f38 Iustin Pop
MAX_TAG_LEN = 128
555 5c947f38 Iustin Pop
MAX_TAGS_PER_OBJ = 4096
556 5c947f38 Iustin Pop
557 cf62a272 Michael Hanselmann
# others
558 cf62a272 Michael Hanselmann
DEFAULT_BRIDGE = "xen-br0"
559 24b0d752 Iustin Pop
SYNC_SPEED = 60 * 1024
560 9769bb78 Manuel Franceschini
IP4_ADDRESS_LOCALHOST = "127.0.0.1"
561 9769bb78 Manuel Franceschini
IP4_ADDRESS_ANY = "0.0.0.0"
562 0d2cd893 Manuel Franceschini
IP6_ADDRESS_LOCALHOST = "::1"
563 0d2cd893 Manuel Franceschini
IP6_ADDRESS_ANY = "::"
564 2f20d07b Manuel Franceschini
IP4_VERSION = 4
565 2f20d07b Manuel Franceschini
IP6_VERSION = 6
566 b1cb62bd Andrea Spadaccini
VALID_IP_VERSIONS = frozenset([IP4_VERSION, IP6_VERSION])
567 16abfbc2 Alexander Schreiber
TCP_PING_TIMEOUT = 10
568 7900ed01 Iustin Pop
GANETI_RUNAS = "root"
569 d63e148a Manuel Franceschini
DEFAULT_VG = "xenvg"
570 ee2f0ed4 Luca Bigliardi
DEFAULT_DRBD_HELPER = "/bin/true"
571 8d1a2a64 Michael Hanselmann
MIN_VG_SIZE = 20480
572 c5e489f7 Iustin Pop
DEFAULT_MAC_PREFIX = "aa:00:00"
573 3736cb6b Iustin Pop
LVM_STRIPECOUNT = _autoconf.LVM_STRIPECOUNT
574 88cd08aa Guido Trotter
# default maximum instance wait time, in seconds.
575 88cd08aa Guido Trotter
DEFAULT_SHUTDOWN_TIMEOUT = 120
576 313b2dd4 Michael Hanselmann
NODE_MAX_CLOCK_SKEW = 150
577 033a1d00 Michael Hanselmann
# Time for an intra-cluster disk transfer to wait for a connection
578 81635b5a Iustin Pop
DISK_TRANSFER_CONNECT_TIMEOUT = 60
579 3536c792 Iustin Pop
# Disk index separator
580 3536c792 Iustin Pop
DISK_SEPARATOR = _autoconf.DISK_SEPARATOR
581 c4dfb0b6 Andrea Spadaccini
IP_COMMAND_PATH = _autoconf.IP_PATH
582 7900ed01 Iustin Pop
583 6a373640 Michael Hanselmann
#: Key for job IDs in opcode result
584 6a373640 Michael Hanselmann
JOB_IDS_KEY = "jobs"
585 6a373640 Michael Hanselmann
586 6bb65e3a Guido Trotter
# runparts results
587 6bb65e3a Guido Trotter
(RUNPARTS_SKIP,
588 6bb65e3a Guido Trotter
 RUNPARTS_RUN,
589 6bb65e3a Guido Trotter
 RUNPARTS_ERR) = range(3)
590 6bb65e3a Guido Trotter
591 6bb65e3a Guido Trotter
RUNPARTS_STATUS = frozenset([RUNPARTS_SKIP, RUNPARTS_RUN, RUNPARTS_ERR])
592 6bb65e3a Guido Trotter
593 12bce260 Michael Hanselmann
# RPC constants
594 12bce260 Michael Hanselmann
(RPC_ENCODING_NONE,
595 12bce260 Michael Hanselmann
 RPC_ENCODING_ZLIB_BASE64) = range(2)
596 12bce260 Michael Hanselmann
597 ded1c679 Guido Trotter
# os related constants
598 d0c8c01d Iustin Pop
OS_SCRIPT_CREATE = "create"
599 d0c8c01d Iustin Pop
OS_SCRIPT_IMPORT = "import"
600 d0c8c01d Iustin Pop
OS_SCRIPT_EXPORT = "export"
601 d0c8c01d Iustin Pop
OS_SCRIPT_RENAME = "rename"
602 d0c8c01d Iustin Pop
OS_SCRIPT_VERIFY = "verify"
603 21daa4a8 Stephen Shirley
OS_SCRIPTS = frozenset([
604 21daa4a8 Stephen Shirley
  OS_SCRIPT_CREATE,
605 21daa4a8 Stephen Shirley
  OS_SCRIPT_IMPORT,
606 21daa4a8 Stephen Shirley
  OS_SCRIPT_EXPORT,
607 21daa4a8 Stephen Shirley
  OS_SCRIPT_RENAME,
608 21daa4a8 Stephen Shirley
  OS_SCRIPT_VERIFY
609 21daa4a8 Stephen Shirley
  ])
610 37482e7b Guido Trotter
611 d0c8c01d Iustin Pop
OS_API_FILE = "ganeti_api_version"
612 d0c8c01d Iustin Pop
OS_VARIANTS_FILE = "variants.list"
613 d0c8c01d Iustin Pop
OS_PARAMETERS_FILE = "parameters.list"
614 b41b3516 Iustin Pop
615 d0c8c01d Iustin Pop
OS_VALIDATE_PARAMETERS = "parameters"
616 acd9ff9e Iustin Pop
OS_VALIDATE_CALLS = frozenset([OS_VALIDATE_PARAMETERS])
617 b6b45e0d Guido Trotter
618 70d9e3d8 Iustin Pop
# ssh constants
619 553bd93f Vitaly Kuznetsov
SSH_CONFIG_DIR = _autoconf.SSH_CONFIG_DIR
620 553bd93f Vitaly Kuznetsov
SSH_HOST_DSA_PRIV = SSH_CONFIG_DIR + "/ssh_host_dsa_key"
621 70d9e3d8 Iustin Pop
SSH_HOST_DSA_PUB = SSH_HOST_DSA_PRIV + ".pub"
622 553bd93f Vitaly Kuznetsov
SSH_HOST_RSA_PRIV = SSH_CONFIG_DIR + "/ssh_host_rsa_key"
623 70d9e3d8 Iustin Pop
SSH_HOST_RSA_PUB = SSH_HOST_RSA_PRIV + ".pub"
624 fff33d70 Michael Hanselmann
SSH = "ssh"
625 fff33d70 Michael Hanselmann
SCP = "scp"
626 007a2f3e Alexander Schreiber
627 007a2f3e Alexander Schreiber
# reboot types
628 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_SOFT = "soft"
629 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_HARD = "hard"
630 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_FULL = "full"
631 2584d4a4 Alexander Schreiber
632 990ade2d Stephen Shirley
REBOOT_TYPES = frozenset([
633 990ade2d Stephen Shirley
  INSTANCE_REBOOT_SOFT,
634 990ade2d Stephen Shirley
  INSTANCE_REBOOT_HARD,
635 990ade2d Stephen Shirley
  INSTANCE_REBOOT_FULL
636 990ade2d Stephen Shirley
  ])
637 990ade2d Stephen Shirley
638 990ade2d Stephen Shirley
# instance reboot behaviors
639 990ade2d Stephen Shirley
INSTANCE_REBOOT_ALLOWED = "reboot"
640 990ade2d Stephen Shirley
INSTANCE_REBOOT_EXIT = "exit"
641 990ade2d Stephen Shirley
642 990ade2d Stephen Shirley
REBOOT_BEHAVIORS = frozenset([
643 990ade2d Stephen Shirley
  INSTANCE_REBOOT_ALLOWED,
644 990ade2d Stephen Shirley
  INSTANCE_REBOOT_EXIT
645 990ade2d Stephen Shirley
  ])
646 00f91f29 Iustin Pop
647 d0c8c01d Iustin Pop
VTYPE_STRING = "string"
648 59525e1f Michael Hanselmann
VTYPE_MAYBE_STRING = "maybe-string"
649 d0c8c01d Iustin Pop
VTYPE_BOOL = "bool"
650 d0c8c01d Iustin Pop
VTYPE_SIZE = "size" # size, in MiBs
651 d0c8c01d Iustin Pop
VTYPE_INT = "int"
652 a5728081 Guido Trotter
ENFORCEABLE_TYPES = frozenset([
653 21daa4a8 Stephen Shirley
  VTYPE_STRING,
654 21daa4a8 Stephen Shirley
  VTYPE_MAYBE_STRING,
655 21daa4a8 Stephen Shirley
  VTYPE_BOOL,
656 21daa4a8 Stephen Shirley
  VTYPE_SIZE,
657 21daa4a8 Stephen Shirley
  VTYPE_INT,
658 21daa4a8 Stephen Shirley
  ])
659 a5728081 Guido Trotter
660 b1cb62bd Andrea Spadaccini
# Constant representing that the user does not specify any IP version
661 b1cb62bd Andrea Spadaccini
IFACE_NO_IP_VERSION_SPECIFIED = 0
662 b1cb62bd Andrea Spadaccini
663 e64b8beb Iustin Pop
# HV parameter names (global namespace)
664 e64b8beb Iustin Pop
HV_BOOT_ORDER = "boot_order"
665 e64b8beb Iustin Pop
HV_CDROM_IMAGE_PATH = "cdrom_image_path"
666 cc130cc7 Marco Casavecchia
HV_KVM_CDROM2_IMAGE_PATH = "cdrom2_image_path"
667 cc130cc7 Marco Casavecchia
HV_KVM_FLOPPY_IMAGE_PATH = "floppy_image_path"
668 e64b8beb Iustin Pop
HV_NIC_TYPE = "nic_type"
669 e64b8beb Iustin Pop
HV_DISK_TYPE = "disk_type"
670 cc130cc7 Marco Casavecchia
HV_KVM_CDROM_DISK_TYPE = "cdrom_disk_type"
671 e64b8beb Iustin Pop
HV_VNC_BIND_ADDRESS = "vnc_bind_address"
672 6e6bb8d5 Guido Trotter
HV_VNC_PASSWORD_FILE = "vnc_password_file"
673 8b2d1013 Guido Trotter
HV_VNC_TLS = "vnc_tls"
674 8b2d1013 Guido Trotter
HV_VNC_X509 = "vnc_x509_path"
675 8b2d1013 Guido Trotter
HV_VNC_X509_VERIFY = "vnc_x509_verify"
676 b1cb62bd Andrea Spadaccini
HV_KVM_SPICE_BIND = "spice_bind"
677 b1cb62bd Andrea Spadaccini
HV_KVM_SPICE_IP_VERSION = "spice_ip_version"
678 b451c4c7 Andrea Spadaccini
HV_KVM_SPICE_PASSWORD_FILE = "spice_password_file"
679 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_LOSSLESS_IMG_COMPR = "spice_image_compression"
680 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_JPEG_IMG_COMPR = "spice_jpeg_wan_compression"
681 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR = "spice_zlib_glz_wan_compression"
682 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_STREAMING_VIDEO_DETECTION = "spice_streaming_video"
683 ea064d24 Andrea Spadaccini
HV_KVM_SPICE_AUDIO_COMPR = "spice_playback_compression"
684 e64b8beb Iustin Pop
HV_ACPI = "acpi"
685 e64b8beb Iustin Pop
HV_PAE = "pae"
686 2f2dbb4b Jun Futagawa
HV_USE_BOOTLOADER = "use_bootloader"
687 2f2dbb4b Jun Futagawa
HV_BOOTLOADER_ARGS = "bootloader_args"
688 2f2dbb4b Jun Futagawa
HV_BOOTLOADER_PATH = "bootloader_path"
689 f9d6542d Iustin Pop
HV_KERNEL_ARGS = "kernel_args"
690 e64b8beb Iustin Pop
HV_KERNEL_PATH = "kernel_path"
691 e64b8beb Iustin Pop
HV_INITRD_PATH = "initrd_path"
692 074ca009 Guido Trotter
HV_ROOT_PATH = "root_path"
693 a2faf9ee Guido Trotter
HV_SERIAL_CONSOLE = "serial_console"
694 11344a50 Guido Trotter
HV_USB_MOUSE = "usb_mouse"
695 4f580fef Sébastien Bocahu
HV_KEYMAP = "keymap"
696 09ea8710 Iustin Pop
HV_DEVICE_MODEL = "device_model"
697 48297fa2 Iustin Pop
HV_INIT_SCRIPT = "init_script"
698 78411c60 Iustin Pop
HV_MIGRATION_PORT = "migration_port"
699 e43d4f9f Apollon Oikonomopoulos
HV_MIGRATION_BANDWIDTH = "migration_bandwidth"
700 e43d4f9f Apollon Oikonomopoulos
HV_MIGRATION_DOWNTIME = "migration_downtime"
701 783a6c0b Iustin Pop
HV_MIGRATION_MODE = "migration_mode"
702 6b970cef Jun Futagawa
HV_USE_LOCALTIME = "use_localtime"
703 ea0f3d7a Iustin Pop
HV_DISK_CACHE = "disk_cache"
704 3424767f Guido Trotter
HV_SECURITY_MODEL = "security_model"
705 3424767f Guido Trotter
HV_SECURITY_DOMAIN = "security_domain"
706 7ba594c0 Guido Trotter
HV_KVM_FLAG = "kvm_flag"
707 fbe27e2b Guido Trotter
HV_VHOST_NET = "vhost_net"
708 84c08e4e Balazs Lecz
HV_KVM_USE_CHROOT = "use_chroot"
709 e3ed5316 Balazs Lecz
HV_CPU_MASK = "cpu_mask"
710 4f958b0b Miguel Di Ciurcio Filho
HV_MEM_PATH = "mem_path"
711 525011bc Maciej Bliziński
HV_BLOCKDEV_PREFIX = "blockdev_prefix"
712 990ade2d Stephen Shirley
HV_REBOOT_BEHAVIOR = "reboot_behavior"
713 e64b8beb Iustin Pop
714 a5728081 Guido Trotter
HVS_PARAMETER_TYPES = {
715 a5728081 Guido Trotter
  HV_BOOT_ORDER: VTYPE_STRING,
716 cc130cc7 Marco Casavecchia
  HV_KVM_FLOPPY_IMAGE_PATH: VTYPE_STRING,
717 a5728081 Guido Trotter
  HV_CDROM_IMAGE_PATH: VTYPE_STRING,
718 cc130cc7 Marco Casavecchia
  HV_KVM_CDROM2_IMAGE_PATH: VTYPE_STRING,
719 a5728081 Guido Trotter
  HV_NIC_TYPE: VTYPE_STRING,
720 a5728081 Guido Trotter
  HV_DISK_TYPE: VTYPE_STRING,
721 cc130cc7 Marco Casavecchia
  HV_KVM_CDROM_DISK_TYPE: VTYPE_STRING,
722 6e6bb8d5 Guido Trotter
  HV_VNC_PASSWORD_FILE: VTYPE_STRING,
723 a5728081 Guido Trotter
  HV_VNC_BIND_ADDRESS: VTYPE_STRING,
724 a5728081 Guido Trotter
  HV_VNC_TLS: VTYPE_BOOL,
725 a5728081 Guido Trotter
  HV_VNC_X509: VTYPE_STRING,
726 a5728081 Guido Trotter
  HV_VNC_X509_VERIFY: VTYPE_BOOL,
727 b1cb62bd Andrea Spadaccini
  HV_KVM_SPICE_BIND: VTYPE_STRING,
728 b1cb62bd Andrea Spadaccini
  HV_KVM_SPICE_IP_VERSION: VTYPE_INT,
729 b451c4c7 Andrea Spadaccini
  HV_KVM_SPICE_PASSWORD_FILE: VTYPE_STRING,
730 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_LOSSLESS_IMG_COMPR: VTYPE_STRING,
731 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_JPEG_IMG_COMPR: VTYPE_STRING,
732 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR: VTYPE_STRING,
733 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_STREAMING_VIDEO_DETECTION: VTYPE_STRING,
734 ea064d24 Andrea Spadaccini
  HV_KVM_SPICE_AUDIO_COMPR: VTYPE_BOOL,
735 a5728081 Guido Trotter
  HV_ACPI: VTYPE_BOOL,
736 a5728081 Guido Trotter
  HV_PAE: VTYPE_BOOL,
737 2f2dbb4b Jun Futagawa
  HV_USE_BOOTLOADER: VTYPE_BOOL,
738 2f2dbb4b Jun Futagawa
  HV_BOOTLOADER_PATH: VTYPE_STRING,
739 2f2dbb4b Jun Futagawa
  HV_BOOTLOADER_ARGS: VTYPE_STRING,
740 a5728081 Guido Trotter
  HV_KERNEL_PATH: VTYPE_STRING,
741 f9d6542d Iustin Pop
  HV_KERNEL_ARGS: VTYPE_STRING,
742 a5728081 Guido Trotter
  HV_INITRD_PATH: VTYPE_STRING,
743 7adf7814 René Nussbaumer
  HV_ROOT_PATH: VTYPE_MAYBE_STRING,
744 a5728081 Guido Trotter
  HV_SERIAL_CONSOLE: VTYPE_BOOL,
745 a5728081 Guido Trotter
  HV_USB_MOUSE: VTYPE_STRING,
746 4f580fef Sébastien Bocahu
  HV_KEYMAP: VTYPE_STRING,
747 09ea8710 Iustin Pop
  HV_DEVICE_MODEL: VTYPE_STRING,
748 48297fa2 Iustin Pop
  HV_INIT_SCRIPT: VTYPE_STRING,
749 78411c60 Iustin Pop
  HV_MIGRATION_PORT: VTYPE_INT,
750 e43d4f9f Apollon Oikonomopoulos
  HV_MIGRATION_BANDWIDTH: VTYPE_INT,
751 e43d4f9f Apollon Oikonomopoulos
  HV_MIGRATION_DOWNTIME: VTYPE_INT,
752 783a6c0b Iustin Pop
  HV_MIGRATION_MODE: VTYPE_STRING,
753 6b970cef Jun Futagawa
  HV_USE_LOCALTIME: VTYPE_BOOL,
754 ea0f3d7a Iustin Pop
  HV_DISK_CACHE: VTYPE_STRING,
755 3424767f Guido Trotter
  HV_SECURITY_MODEL: VTYPE_STRING,
756 3424767f Guido Trotter
  HV_SECURITY_DOMAIN: VTYPE_STRING,
757 7ba594c0 Guido Trotter
  HV_KVM_FLAG: VTYPE_STRING,
758 fbe27e2b Guido Trotter
  HV_VHOST_NET: VTYPE_BOOL,
759 84c08e4e Balazs Lecz
  HV_KVM_USE_CHROOT: VTYPE_BOOL,
760 e3ed5316 Balazs Lecz
  HV_CPU_MASK: VTYPE_STRING,
761 4f958b0b Miguel Di Ciurcio Filho
  HV_MEM_PATH: VTYPE_STRING,
762 525011bc Maciej Bliziński
  HV_BLOCKDEV_PREFIX: VTYPE_STRING,
763 990ade2d Stephen Shirley
  HV_REBOOT_BEHAVIOR: VTYPE_STRING,
764 a5728081 Guido Trotter
  }
765 a5728081 Guido Trotter
766 a5728081 Guido Trotter
HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
767 5018a335 Iustin Pop
768 34fbc862 Andrea Spadaccini
# Node info keys
769 34fbc862 Andrea Spadaccini
HV_NODEINFO_KEY_VERSION = "hv_version"
770 34fbc862 Andrea Spadaccini
771 3d5ebbf0 Stephen Shirley
# Backend parameter names
772 cd3ab26e Iustin Pop
BE_MEMORY = "memory"
773 e64b8beb Iustin Pop
BE_VCPUS = "vcpus"
774 c0f2b229 Iustin Pop
BE_AUTO_BALANCE = "auto_balance"
775 e64b8beb Iustin Pop
776 a5728081 Guido Trotter
BES_PARAMETER_TYPES = {
777 a5728081 Guido Trotter
    BE_MEMORY: VTYPE_SIZE,
778 a5728081 Guido Trotter
    BE_VCPUS: VTYPE_INT,
779 a5728081 Guido Trotter
    BE_AUTO_BALANCE: VTYPE_BOOL,
780 a5728081 Guido Trotter
    }
781 a5728081 Guido Trotter
782 a5728081 Guido Trotter
BES_PARAMETERS = frozenset(BES_PARAMETER_TYPES.keys())
783 cd3ab26e Iustin Pop
784 095e71aa René Nussbaumer
# Node parameter names
785 095e71aa René Nussbaumer
ND_OOB_PROGRAM = "oob_program"
786 095e71aa René Nussbaumer
787 095e71aa René Nussbaumer
NDS_PARAMETER_TYPES = {
788 095e71aa René Nussbaumer
    ND_OOB_PROGRAM: VTYPE_MAYBE_STRING,
789 095e71aa René Nussbaumer
    }
790 095e71aa René Nussbaumer
791 095e71aa René Nussbaumer
NDS_PARAMETERS = frozenset(NDS_PARAMETER_TYPES.keys())
792 095e71aa René Nussbaumer
793 b2f29800 René Nussbaumer
# OOB supported commands
794 b2f29800 René Nussbaumer
OOB_POWER_ON = "power-on"
795 b2f29800 René Nussbaumer
OOB_POWER_OFF = "power-off"
796 b2f29800 René Nussbaumer
OOB_POWER_CYCLE = "power-cycle"
797 b2f29800 René Nussbaumer
OOB_POWER_STATUS = "power-status"
798 b2f29800 René Nussbaumer
OOB_HEALTH = "health"
799 b2f29800 René Nussbaumer
800 21daa4a8 Stephen Shirley
OOB_COMMANDS = frozenset([
801 21daa4a8 Stephen Shirley
  OOB_POWER_ON,
802 21daa4a8 Stephen Shirley
  OOB_POWER_OFF,
803 21daa4a8 Stephen Shirley
  OOB_POWER_CYCLE,
804 21daa4a8 Stephen Shirley
  OOB_POWER_STATUS,
805 21daa4a8 Stephen Shirley
  OOB_HEALTH
806 21daa4a8 Stephen Shirley
  ])
807 b2f29800 René Nussbaumer
808 b528a12d René Nussbaumer
OOB_POWER_STATUS_POWERED = "powered"
809 b528a12d René Nussbaumer
810 445f735d René Nussbaumer
OOB_TIMEOUT = 60 # 60 seconds
811 beff3779 René Nussbaumer
OOB_POWER_DELAY = 2.0 # 2 seconds
812 445f735d René Nussbaumer
813 445f735d René Nussbaumer
OOB_STATUS_OK = "OK"
814 445f735d René Nussbaumer
OOB_STATUS_WARNING = "WARNING"
815 445f735d René Nussbaumer
OOB_STATUS_CRITICAL = "CRITICAL"
816 445f735d René Nussbaumer
OOB_STATUS_UNKNOWN = "UNKNOWN"
817 445f735d René Nussbaumer
818 445f735d René Nussbaumer
OOB_STATUSES = frozenset([
819 445f735d René Nussbaumer
  OOB_STATUS_OK,
820 445f735d René Nussbaumer
  OOB_STATUS_WARNING,
821 445f735d René Nussbaumer
  OOB_STATUS_CRITICAL,
822 445f735d René Nussbaumer
  OOB_STATUS_UNKNOWN,
823 445f735d René Nussbaumer
  ])
824 445f735d René Nussbaumer
825 4ef7f423 Guido Trotter
# Instance Parameters Profile
826 4ef7f423 Guido Trotter
PP_DEFAULT = "default"
827 e64b8beb Iustin Pop
828 246f4067 Guido Trotter
# NIC_* constants are used inside the ganeti config
829 ac061be9 Guido Trotter
NIC_MODE = "mode"
830 ac061be9 Guido Trotter
NIC_LINK = "link"
831 ac061be9 Guido Trotter
832 ac061be9 Guido Trotter
NIC_MODE_BRIDGED = "bridged"
833 ac061be9 Guido Trotter
NIC_MODE_ROUTED = "routed"
834 ac061be9 Guido Trotter
835 ac061be9 Guido Trotter
NIC_VALID_MODES = frozenset([NIC_MODE_BRIDGED, NIC_MODE_ROUTED])
836 ac061be9 Guido Trotter
837 ac061be9 Guido Trotter
NICS_PARAMETER_TYPES = {
838 ac061be9 Guido Trotter
    NIC_MODE: VTYPE_STRING,
839 ac061be9 Guido Trotter
    NIC_LINK: VTYPE_STRING,
840 ac061be9 Guido Trotter
    }
841 ac061be9 Guido Trotter
842 ac061be9 Guido Trotter
NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys())
843 e64b8beb Iustin Pop
844 246f4067 Guido Trotter
# IDISK_* constants are used in opcodes, to create/change disks
845 bd061c35 Guido Trotter
IDISK_SIZE = "size"
846 bd061c35 Guido Trotter
IDISK_MODE = "mode"
847 8494604f Apollon Oikonomopoulos
IDISK_ADOPT = "adopt"
848 7af3534e Dmitry Chernyak
IDISK_VG = "vg"
849 87001920 Iustin Pop
IDISK_METAVG = "metavg"
850 8494604f Apollon Oikonomopoulos
IDISK_PARAMS_TYPES = {
851 8494604f Apollon Oikonomopoulos
  IDISK_SIZE: VTYPE_SIZE,
852 8494604f Apollon Oikonomopoulos
  IDISK_MODE: VTYPE_STRING,
853 8494604f Apollon Oikonomopoulos
  IDISK_ADOPT: VTYPE_STRING,
854 7af3534e Dmitry Chernyak
  IDISK_VG: VTYPE_STRING,
855 87001920 Iustin Pop
  IDISK_METAVG: VTYPE_STRING,
856 8494604f Apollon Oikonomopoulos
  }
857 cc87d736 Michael Hanselmann
IDISK_PARAMS = frozenset(IDISK_PARAMS_TYPES.keys())
858 cc87d736 Michael Hanselmann
859 246f4067 Guido Trotter
# INIC_* constants are used in opcodes, to create/change nics
860 bd061c35 Guido Trotter
INIC_MAC = "mac"
861 bd061c35 Guido Trotter
INIC_IP = "ip"
862 bd061c35 Guido Trotter
INIC_MODE = "mode"
863 bd061c35 Guido Trotter
INIC_LINK = "link"
864 cc87d736 Michael Hanselmann
INIC_PARAMS_TYPES = {
865 cc87d736 Michael Hanselmann
  INIC_IP: VTYPE_MAYBE_STRING,
866 cc87d736 Michael Hanselmann
  INIC_LINK: VTYPE_STRING,
867 cc87d736 Michael Hanselmann
  INIC_MAC: VTYPE_STRING,
868 cc87d736 Michael Hanselmann
  INIC_MODE: VTYPE_STRING,
869 cc87d736 Michael Hanselmann
  }
870 cc87d736 Michael Hanselmann
INIC_PARAMS = frozenset(INIC_PARAMS_TYPES.keys())
871 bd061c35 Guido Trotter
872 2584d4a4 Alexander Schreiber
# Hypervisor constants
873 00cd937c Iustin Pop
HT_XEN_PVM = "xen-pvm"
874 2584d4a4 Alexander Schreiber
HT_FAKE = "fake"
875 00cd937c Iustin Pop
HT_XEN_HVM = "xen-hvm"
876 550e49b9 Guido Trotter
HT_KVM = "kvm"
877 48297fa2 Iustin Pop
HT_CHROOT = "chroot"
878 4b5e40a5 Iustin Pop
HT_LXC = "lxc"
879 4b5e40a5 Iustin Pop
HYPER_TYPES = frozenset([
880 4b5e40a5 Iustin Pop
  HT_XEN_PVM,
881 4b5e40a5 Iustin Pop
  HT_FAKE,
882 4b5e40a5 Iustin Pop
  HT_XEN_HVM,
883 4b5e40a5 Iustin Pop
  HT_KVM,
884 4b5e40a5 Iustin Pop
  HT_CHROOT,
885 4b5e40a5 Iustin Pop
  HT_LXC,
886 4b5e40a5 Iustin Pop
  ])
887 fd4daa3a Guido Trotter
HTS_REQ_PORT = frozenset([HT_XEN_HVM, HT_KVM])
888 2584d4a4 Alexander Schreiber
889 377d74c9 Guido Trotter
VNC_BASE_PORT = 5900
890 131178b9 Luca Bigliardi
VNC_PASSWORD_FILE = CONF_DIR + "/vnc-cluster-password"
891 0d2cd893 Manuel Franceschini
VNC_DEFAULT_BIND_ADDRESS = IP4_ADDRESS_ANY
892 e54c4c5e Guido Trotter
893 835528af Iustin Pop
# NIC types
894 d08f6067 Guido Trotter
HT_NIC_RTL8139 = "rtl8139"
895 d08f6067 Guido Trotter
HT_NIC_NE2K_PCI = "ne2k_pci"
896 d08f6067 Guido Trotter
HT_NIC_NE2K_ISA = "ne2k_isa"
897 43440815 Guido Trotter
HT_NIC_I82551 = "i82551"
898 43440815 Guido Trotter
HT_NIC_I85557B = "i82557b"
899 43440815 Guido Trotter
HT_NIC_I8259ER = "i82559er"
900 43440815 Guido Trotter
HT_NIC_PCNET = "pcnet"
901 43440815 Guido Trotter
HT_NIC_E1000 = "e1000"
902 d08f6067 Guido Trotter
HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
903 43440815 Guido Trotter
904 21daa4a8 Stephen Shirley
HT_HVM_VALID_NIC_TYPES = frozenset([
905 21daa4a8 Stephen Shirley
  HT_NIC_RTL8139,
906 21daa4a8 Stephen Shirley
  HT_NIC_NE2K_PCI,
907 21daa4a8 Stephen Shirley
  HT_NIC_E1000,
908 21daa4a8 Stephen Shirley
  HT_NIC_NE2K_ISA,
909 21daa4a8 Stephen Shirley
  HT_NIC_PARAVIRTUAL
910 21daa4a8 Stephen Shirley
  ])
911 21daa4a8 Stephen Shirley
HT_KVM_VALID_NIC_TYPES = frozenset([
912 21daa4a8 Stephen Shirley
  HT_NIC_RTL8139,
913 21daa4a8 Stephen Shirley
  HT_NIC_NE2K_PCI,
914 21daa4a8 Stephen Shirley
  HT_NIC_NE2K_ISA,
915 21daa4a8 Stephen Shirley
  HT_NIC_I82551,
916 21daa4a8 Stephen Shirley
  HT_NIC_I85557B,
917 21daa4a8 Stephen Shirley
  HT_NIC_I8259ER,
918 21daa4a8 Stephen Shirley
  HT_NIC_PCNET,
919 21daa4a8 Stephen Shirley
  HT_NIC_E1000,
920 21daa4a8 Stephen Shirley
  HT_NIC_PARAVIRTUAL
921 21daa4a8 Stephen Shirley
  ])
922 21daa4a8 Stephen Shirley
923 835528af Iustin Pop
# Disk types
924 835528af Iustin Pop
HT_DISK_IOEMU = "ioemu"
925 835528af Iustin Pop
HT_DISK_IDE = "ide"
926 835528af Iustin Pop
HT_DISK_SCSI = "scsi"
927 835528af Iustin Pop
HT_DISK_SD = "sd"
928 835528af Iustin Pop
HT_DISK_MTD = "mtd"
929 835528af Iustin Pop
HT_DISK_PFLASH = "pflash"
930 835528af Iustin Pop
931 ea0f3d7a Iustin Pop
HT_CACHE_DEFAULT = "default"
932 ea0f3d7a Iustin Pop
HT_CACHE_NONE = "none"
933 ea0f3d7a Iustin Pop
HT_CACHE_WTHROUGH = "writethrough"
934 ea0f3d7a Iustin Pop
HT_CACHE_WBACK = "writeback"
935 21daa4a8 Stephen Shirley
HT_VALID_CACHE_TYPES = frozenset([
936 21daa4a8 Stephen Shirley
  HT_CACHE_DEFAULT,
937 21daa4a8 Stephen Shirley
  HT_CACHE_NONE,
938 21daa4a8 Stephen Shirley
  HT_CACHE_WTHROUGH,
939 21daa4a8 Stephen Shirley
  HT_CACHE_WBACK
940 21daa4a8 Stephen Shirley
  ])
941 ea0f3d7a Iustin Pop
942 835528af Iustin Pop
HT_HVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IOEMU])
943 21daa4a8 Stephen Shirley
HT_KVM_VALID_DISK_TYPES = frozenset([
944 21daa4a8 Stephen Shirley
  HT_DISK_PARAVIRTUAL,
945 21daa4a8 Stephen Shirley
  HT_DISK_IDE,
946 21daa4a8 Stephen Shirley
  HT_DISK_SCSI,
947 21daa4a8 Stephen Shirley
  HT_DISK_SD,
948 21daa4a8 Stephen Shirley
  HT_DISK_MTD,
949 21daa4a8 Stephen Shirley
  HT_DISK_PFLASH
950 21daa4a8 Stephen Shirley
  ])
951 b894f5a8 Alexander Schreiber
952 835528af Iustin Pop
# Mouse types:
953 835528af Iustin Pop
HT_MOUSE_MOUSE = "mouse"
954 835528af Iustin Pop
HT_MOUSE_TABLET = "tablet"
955 835528af Iustin Pop
956 835528af Iustin Pop
HT_KVM_VALID_MOUSE_TYPES = frozenset([HT_MOUSE_MOUSE, HT_MOUSE_TABLET])
957 835528af Iustin Pop
958 835528af Iustin Pop
# Boot order
959 cc130cc7 Marco Casavecchia
HT_BO_FLOPPY = "floppy"
960 835528af Iustin Pop
HT_BO_CDROM = "cdrom"
961 835528af Iustin Pop
HT_BO_DISK = "disk"
962 835528af Iustin Pop
HT_BO_NETWORK = "network"
963 835528af Iustin Pop
964 21daa4a8 Stephen Shirley
HT_KVM_VALID_BO_TYPES = frozenset([
965 21daa4a8 Stephen Shirley
  HT_BO_FLOPPY,
966 21daa4a8 Stephen Shirley
  HT_BO_CDROM,
967 21daa4a8 Stephen Shirley
  HT_BO_DISK,
968 21daa4a8 Stephen Shirley
  HT_BO_NETWORK
969 21daa4a8 Stephen Shirley
  ])
970 835528af Iustin Pop
971 ea064d24 Andrea Spadaccini
# SPICE lossless image compression options
972 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ = "auto_glz"
973 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ = "auto_lz"
974 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC = "quic"
975 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ = "glz"
976 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ = "lz"
977 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF = "off"
978 ea064d24 Andrea Spadaccini
979 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VALID_LOSSLESS_IMG_COMPR_OPTIONS = frozenset([
980 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_GLZ,
981 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_AUTO_LZ,
982 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_QUIC,
983 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_GLZ,
984 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_LZ,
985 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSLESS_IMG_COMPR_OFF,
986 ea064d24 Andrea Spadaccini
  ])
987 ea064d24 Andrea Spadaccini
988 ea064d24 Andrea Spadaccini
# SPICE lossy image compression options (valid for both jpeg and zlib-glz)
989 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO = "auto"
990 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER = "never"
991 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS = "always"
992 ea064d24 Andrea Spadaccini
993 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VALID_LOSSY_IMG_COMPR_OPTIONS = frozenset([
994 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSY_IMG_COMPR_AUTO,
995 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSY_IMG_COMPR_NEVER,
996 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_LOSSY_IMG_COMPR_ALWAYS,
997 ea064d24 Andrea Spadaccini
  ])
998 ea064d24 Andrea Spadaccini
999 ea064d24 Andrea Spadaccini
# SPICE video stream detection
1000 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF = "off"
1001 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL = "all"
1002 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER = "filter"
1003 ea064d24 Andrea Spadaccini
1004 ea064d24 Andrea Spadaccini
HT_KVM_SPICE_VALID_VIDEO_STREAM_DETECTION_OPTIONS = frozenset([
1005 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_OFF,
1006 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_ALL,
1007 ea064d24 Andrea Spadaccini
  HT_KVM_SPICE_VIDEO_STREAM_DETECTION_FILTER,
1008 ea064d24 Andrea Spadaccini
  ])
1009 ea064d24 Andrea Spadaccini
1010 3424767f Guido Trotter
# Security models
1011 3424767f Guido Trotter
HT_SM_NONE = "none"
1012 3424767f Guido Trotter
HT_SM_USER = "user"
1013 3424767f Guido Trotter
HT_SM_POOL = "pool"
1014 3424767f Guido Trotter
1015 3424767f Guido Trotter
HT_KVM_VALID_SM_TYPES = frozenset([HT_SM_NONE, HT_SM_USER, HT_SM_POOL])
1016 3424767f Guido Trotter
1017 7ba594c0 Guido Trotter
# Kvm flag values
1018 7ba594c0 Guido Trotter
HT_KVM_ENABLED = "enabled"
1019 7ba594c0 Guido Trotter
HT_KVM_DISABLED = "disabled"
1020 7ba594c0 Guido Trotter
1021 7ba594c0 Guido Trotter
HT_KVM_FLAG_VALUES = frozenset([HT_KVM_ENABLED, HT_KVM_DISABLED])
1022 7ba594c0 Guido Trotter
1023 e71b9ef4 Iustin Pop
# Migration type
1024 e71b9ef4 Iustin Pop
HT_MIGRATION_LIVE = "live"
1025 e71b9ef4 Iustin Pop
HT_MIGRATION_NONLIVE = "non-live"
1026 783a6c0b Iustin Pop
HT_MIGRATION_MODES = frozenset([HT_MIGRATION_LIVE, HT_MIGRATION_NONLIVE])
1027 e71b9ef4 Iustin Pop
1028 e54c4c5e Guido Trotter
# Cluster Verify steps
1029 d0c8c01d Iustin Pop
VERIFY_NPLUSONE_MEM = "nplusone_mem"
1030 e54c4c5e Guido Trotter
VERIFY_OPTIONAL_CHECKS = frozenset([VERIFY_NPLUSONE_MEM])
1031 e54c4c5e Guido Trotter
1032 25361b9a Iustin Pop
# Node verify constants
1033 7ef40fbe Luca Bigliardi
NV_DRBDHELPER = "drbd-helper"
1034 b0d85178 Iustin Pop
NV_DRBDLIST = "drbd-list"
1035 25361b9a Iustin Pop
NV_FILELIST = "filelist"
1036 25361b9a Iustin Pop
NV_HVINFO = "hvinfo"
1037 25361b9a Iustin Pop
NV_HYPERVISOR = "hypervisor"
1038 58a59652 Iustin Pop
NV_HVPARAMS = "hvparms"
1039 25361b9a Iustin Pop
NV_INSTANCELIST = "instancelist"
1040 b0d85178 Iustin Pop
NV_LVLIST = "lvlist"
1041 b0d85178 Iustin Pop
NV_MASTERIP = "master-ip"
1042 25361b9a Iustin Pop
NV_NODELIST = "nodelist"
1043 25361b9a Iustin Pop
NV_NODENETTEST = "node-net-test"
1044 7c0aa8e9 Iustin Pop
NV_NODESETUP = "nodesetup"
1045 b0d85178 Iustin Pop
NV_OSLIST = "oslist"
1046 b0d85178 Iustin Pop
NV_PVLIST = "pvlist"
1047 313b2dd4 Michael Hanselmann
NV_TIME = "time"
1048 b0d85178 Iustin Pop
NV_VERSION = "version"
1049 b0d85178 Iustin Pop
NV_VGLIST = "vglist"
1050 8964ee14 Iustin Pop
NV_VMNODES = "vmnodes"
1051 16f41f24 René Nussbaumer
NV_OOB_PATHS = "oob-paths"
1052 20d317d4 Iustin Pop
NV_BRIDGES = "bridges"
1053 25361b9a Iustin Pop
1054 61a980a9 Michael Hanselmann
# Instance status
1055 61a980a9 Michael Hanselmann
INSTST_RUNNING = "running"
1056 61a980a9 Michael Hanselmann
INSTST_ADMINDOWN = "ADMIN_down"
1057 61a980a9 Michael Hanselmann
INSTST_NODEOFFLINE = "ERROR_nodeoffline"
1058 61a980a9 Michael Hanselmann
INSTST_NODEDOWN = "ERROR_nodedown"
1059 61a980a9 Michael Hanselmann
INSTST_WRONGNODE = "ERROR_wrongnode"
1060 61a980a9 Michael Hanselmann
INSTST_ERRORUP = "ERROR_up"
1061 61a980a9 Michael Hanselmann
INSTST_ERRORDOWN = "ERROR_down"
1062 61a980a9 Michael Hanselmann
INSTST_ALL = frozenset([
1063 61a980a9 Michael Hanselmann
  INSTST_RUNNING,
1064 61a980a9 Michael Hanselmann
  INSTST_ADMINDOWN,
1065 61a980a9 Michael Hanselmann
  INSTST_NODEOFFLINE,
1066 61a980a9 Michael Hanselmann
  INSTST_NODEDOWN,
1067 61a980a9 Michael Hanselmann
  INSTST_WRONGNODE,
1068 61a980a9 Michael Hanselmann
  INSTST_ERRORUP,
1069 61a980a9 Michael Hanselmann
  INSTST_ERRORDOWN,
1070 61a980a9 Michael Hanselmann
  ])
1071 61a980a9 Michael Hanselmann
1072 1e28e3b8 Michael Hanselmann
# Node roles
1073 1e28e3b8 Michael Hanselmann
NR_REGULAR = "R"
1074 1e28e3b8 Michael Hanselmann
NR_MASTER = "M"
1075 1e28e3b8 Michael Hanselmann
NR_MCANDIDATE = "C"
1076 1e28e3b8 Michael Hanselmann
NR_DRAINED = "D"
1077 1e28e3b8 Michael Hanselmann
NR_OFFLINE = "O"
1078 1e28e3b8 Michael Hanselmann
NR_ALL = frozenset([
1079 1e28e3b8 Michael Hanselmann
  NR_REGULAR,
1080 1e28e3b8 Michael Hanselmann
  NR_MASTER,
1081 1e28e3b8 Michael Hanselmann
  NR_MCANDIDATE,
1082 1e28e3b8 Michael Hanselmann
  NR_DRAINED,
1083 1e28e3b8 Michael Hanselmann
  NR_OFFLINE,
1084 1e28e3b8 Michael Hanselmann
  ])
1085 1e28e3b8 Michael Hanselmann
1086 b98bf262 Michael Hanselmann
# SSL certificate check constants (in days)
1087 b98bf262 Michael Hanselmann
SSL_CERT_EXPIRATION_WARN = 30
1088 b98bf262 Michael Hanselmann
SSL_CERT_EXPIRATION_ERROR = 7
1089 b98bf262 Michael Hanselmann
1090 d61df03e Iustin Pop
# Allocator framework constants
1091 77031881 Iustin Pop
IALLOCATOR_VERSION = 2
1092 298fe380 Iustin Pop
IALLOCATOR_DIR_IN = "in"
1093 298fe380 Iustin Pop
IALLOCATOR_DIR_OUT = "out"
1094 3636400f Iustin Pop
VALID_IALLOCATOR_DIRECTIONS = frozenset([
1095 3636400f Iustin Pop
  IALLOCATOR_DIR_IN,
1096 3636400f Iustin Pop
  IALLOCATOR_DIR_OUT,
1097 3636400f Iustin Pop
  ])
1098 298fe380 Iustin Pop
IALLOCATOR_MODE_ALLOC = "allocate"
1099 298fe380 Iustin Pop
IALLOCATOR_MODE_RELOC = "relocate"
1100 60152bbe Michael Hanselmann
IALLOCATOR_MODE_CHG_GROUP = "change-group"
1101 60152bbe Michael Hanselmann
IALLOCATOR_MODE_NODE_EVAC = "node-evacuate"
1102 3636400f Iustin Pop
VALID_IALLOCATOR_MODES = frozenset([
1103 3636400f Iustin Pop
  IALLOCATOR_MODE_ALLOC,
1104 3636400f Iustin Pop
  IALLOCATOR_MODE_RELOC,
1105 60152bbe Michael Hanselmann
  IALLOCATOR_MODE_CHG_GROUP,
1106 60152bbe Michael Hanselmann
  IALLOCATOR_MODE_NODE_EVAC,
1107 3636400f Iustin Pop
  ])
1108 298fe380 Iustin Pop
IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH
1109 5f33b613 Michael Hanselmann
1110 60152bbe Michael Hanselmann
IALLOCATOR_NEVAC_PRI = "primary-only"
1111 60152bbe Michael Hanselmann
IALLOCATOR_NEVAC_SEC = "secondary-only"
1112 60152bbe Michael Hanselmann
IALLOCATOR_NEVAC_ALL = "all"
1113 60152bbe Michael Hanselmann
IALLOCATOR_NEVAC_MODES = frozenset([
1114 60152bbe Michael Hanselmann
  IALLOCATOR_NEVAC_PRI,
1115 60152bbe Michael Hanselmann
  IALLOCATOR_NEVAC_SEC,
1116 60152bbe Michael Hanselmann
  IALLOCATOR_NEVAC_ALL,
1117 60152bbe Michael Hanselmann
  ])
1118 60152bbe Michael Hanselmann
1119 cb92e7a1 Michael Hanselmann
# Node evacuation
1120 cb92e7a1 Michael Hanselmann
NODE_EVAC_PRI = "primary-only"
1121 cb92e7a1 Michael Hanselmann
NODE_EVAC_SEC = "secondary-only"
1122 cb92e7a1 Michael Hanselmann
NODE_EVAC_ALL = "all"
1123 cb92e7a1 Michael Hanselmann
NODE_EVAC_MODES = frozenset([
1124 cb92e7a1 Michael Hanselmann
  NODE_EVAC_PRI,
1125 cb92e7a1 Michael Hanselmann
  NODE_EVAC_SEC,
1126 cb92e7a1 Michael Hanselmann
  NODE_EVAC_ALL,
1127 cb92e7a1 Michael Hanselmann
  ])
1128 cb92e7a1 Michael Hanselmann
1129 f1da30e6 Michael Hanselmann
# Job queue
1130 f1da30e6 Michael Hanselmann
JOB_QUEUE_VERSION = 1
1131 f1da30e6 Michael Hanselmann
JOB_QUEUE_LOCK_FILE = QUEUE_DIR + "/lock"
1132 f1da30e6 Michael Hanselmann
JOB_QUEUE_VERSION_FILE = QUEUE_DIR + "/version"
1133 f1da30e6 Michael Hanselmann
JOB_QUEUE_SERIAL_FILE = QUEUE_DIR + "/serial"
1134 0cb94105 Michael Hanselmann
JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive"
1135 686d7433 Iustin Pop
JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain"
1136 f87b405e Michael Hanselmann
JOB_QUEUE_SIZE_HARD_LIMIT = 5000
1137 c33549ef Guido Trotter
JOB_QUEUE_DIRS = [QUEUE_DIR, JOB_QUEUE_ARCHIVE_DIR]
1138 5bae14d9 Guido Trotter
JOB_QUEUE_DIRS_MODE = SECURE_DIR_MODE
1139 f1da30e6 Michael Hanselmann
1140 bac5ffc3 Oleksiy Mishchenko
JOB_ID_TEMPLATE = r"\d+"
1141 cb66225d Michael Hanselmann
JOB_FILE_RE = re.compile(r"^job-(%s)$" % JOB_ID_TEMPLATE)
1142 bac5ffc3 Oleksiy Mishchenko
1143 5c735209 Iustin Pop
# unchanged job return
1144 5c735209 Iustin Pop
JOB_NOTCHANGED = "nochange"
1145 5c735209 Iustin Pop
1146 5f33b613 Michael Hanselmann
# Job status
1147 5f33b613 Michael Hanselmann
JOB_STATUS_QUEUED = "queued"
1148 47099cd1 Michael Hanselmann
JOB_STATUS_WAITING = "waiting"
1149 fbf0262f Michael Hanselmann
JOB_STATUS_CANCELING = "canceling"
1150 5f33b613 Michael Hanselmann
JOB_STATUS_RUNNING = "running"
1151 5f33b613 Michael Hanselmann
JOB_STATUS_CANCELED = "canceled"
1152 5f33b613 Michael Hanselmann
JOB_STATUS_SUCCESS = "success"
1153 5f33b613 Michael Hanselmann
JOB_STATUS_ERROR = "error"
1154 989a8bee Michael Hanselmann
JOBS_FINALIZED = frozenset([
1155 989a8bee Michael Hanselmann
  JOB_STATUS_CANCELED,
1156 989a8bee Michael Hanselmann
  JOB_STATUS_SUCCESS,
1157 989a8bee Michael Hanselmann
  JOB_STATUS_ERROR,
1158 989a8bee Michael Hanselmann
  ])
1159 db5bce34 Michael Hanselmann
JOB_STATUS_ALL = frozenset([
1160 db5bce34 Michael Hanselmann
  JOB_STATUS_QUEUED,
1161 47099cd1 Michael Hanselmann
  JOB_STATUS_WAITING,
1162 db5bce34 Michael Hanselmann
  JOB_STATUS_CANCELING,
1163 db5bce34 Michael Hanselmann
  JOB_STATUS_RUNNING,
1164 db5bce34 Michael Hanselmann
  ]) | JOBS_FINALIZED
1165 5f33b613 Michael Hanselmann
1166 34327f51 Iustin Pop
# OpCode status
1167 34327f51 Iustin Pop
# not yet finalized
1168 5f33b613 Michael Hanselmann
OP_STATUS_QUEUED = "queued"
1169 47099cd1 Michael Hanselmann
OP_STATUS_WAITING = "waiting"
1170 fbf0262f Michael Hanselmann
OP_STATUS_CANCELING = "canceling"
1171 5f33b613 Michael Hanselmann
OP_STATUS_RUNNING = "running"
1172 34327f51 Iustin Pop
# finalized
1173 4cb1d919 Michael Hanselmann
OP_STATUS_CANCELED = "canceled"
1174 5f33b613 Michael Hanselmann
OP_STATUS_SUCCESS = "success"
1175 5f33b613 Michael Hanselmann
OP_STATUS_ERROR = "error"
1176 21daa4a8 Stephen Shirley
OPS_FINALIZED = frozenset([
1177 21daa4a8 Stephen Shirley
  OP_STATUS_CANCELED,
1178 21daa4a8 Stephen Shirley
  OP_STATUS_SUCCESS,
1179 21daa4a8 Stephen Shirley
  OP_STATUS_ERROR
1180 21daa4a8 Stephen Shirley
  ])
1181 f1048938 Iustin Pop
1182 e5d8774b Michael Hanselmann
# OpCode priority
1183 e5d8774b Michael Hanselmann
OP_PRIO_LOWEST = +19
1184 e5d8774b Michael Hanselmann
OP_PRIO_HIGHEST = -20
1185 e5d8774b Michael Hanselmann
1186 e5d8774b Michael Hanselmann
OP_PRIO_LOW = +10
1187 e5d8774b Michael Hanselmann
OP_PRIO_NORMAL = 0
1188 e5d8774b Michael Hanselmann
OP_PRIO_HIGH = -10
1189 e5d8774b Michael Hanselmann
1190 e71c8147 Michael Hanselmann
OP_PRIO_SUBMIT_VALID = frozenset([
1191 e71c8147 Michael Hanselmann
  OP_PRIO_LOW,
1192 e71c8147 Michael Hanselmann
  OP_PRIO_NORMAL,
1193 e71c8147 Michael Hanselmann
  OP_PRIO_HIGH,
1194 e71c8147 Michael Hanselmann
  ])
1195 e71c8147 Michael Hanselmann
1196 e5d8774b Michael Hanselmann
OP_PRIO_DEFAULT = OP_PRIO_NORMAL
1197 e5d8774b Michael Hanselmann
1198 f1048938 Iustin Pop
# Execution log types
1199 f1048938 Iustin Pop
ELOG_MESSAGE = "message"
1200 f1048938 Iustin Pop
ELOG_PROGRESS = "progress"
1201 9bf56d77 Michael Hanselmann
ELOG_REMOTE_IMPORT = "remote-import"
1202 e58f87a9 Michael Hanselmann
ELOG_JQUEUE_TEST = "jqueue-test"
1203 e58f87a9 Michael Hanselmann
1204 19ddc57a René Nussbaumer
# /etc/hosts modification
1205 19ddc57a René Nussbaumer
ETC_HOSTS_ADD = "add"
1206 19ddc57a René Nussbaumer
ETC_HOSTS_REMOVE = "remove"
1207 19ddc57a René Nussbaumer
1208 e58f87a9 Michael Hanselmann
# Job queue test
1209 e58f87a9 Michael Hanselmann
JQT_MSGPREFIX = "TESTMSG="
1210 e58f87a9 Michael Hanselmann
JQT_EXPANDNAMES = "expandnames"
1211 e58f87a9 Michael Hanselmann
JQT_EXEC = "exec"
1212 e58f87a9 Michael Hanselmann
JQT_LOGMSG = "logmsg"
1213 f99010b2 Michael Hanselmann
JQT_STARTMSG = "startmsg"
1214 e58f87a9 Michael Hanselmann
JQT_ALL = frozenset([
1215 e58f87a9 Michael Hanselmann
  JQT_EXPANDNAMES,
1216 e58f87a9 Michael Hanselmann
  JQT_EXEC,
1217 e58f87a9 Michael Hanselmann
  JQT_LOGMSG,
1218 f99010b2 Michael Hanselmann
  JQT_STARTMSG,
1219 e58f87a9 Michael Hanselmann
  ])
1220 d4104181 Iustin Pop
1221 4a917de6 Michael Hanselmann
# Query resources
1222 4a917de6 Michael Hanselmann
QR_INSTANCE = "instance"
1223 4a917de6 Michael Hanselmann
QR_NODE = "node"
1224 24d16f76 Michael Hanselmann
QR_LOCK = "lock"
1225 e070c663 Adeodato Simo
QR_GROUP = "group"
1226 be3a4b14 Michael Hanselmann
QR_OS = "os"
1227 4a917de6 Michael Hanselmann
1228 4a917de6 Michael Hanselmann
#: List of resources which can be queried using L{opcodes.OpQuery}
1229 abd66bf8 Michael Hanselmann
QR_VIA_OP = frozenset([QR_INSTANCE, QR_NODE, QR_GROUP, QR_OS])
1230 4a917de6 Michael Hanselmann
1231 3d5ebbf0 Stephen Shirley
#: List of resources which can be queried using Local UniX Interface
1232 abd66bf8 Michael Hanselmann
QR_VIA_LUXI = QR_VIA_OP.union([
1233 24d16f76 Michael Hanselmann
  QR_LOCK,
1234 28b71a76 Michael Hanselmann
  ])
1235 28b71a76 Michael Hanselmann
1236 abd66bf8 Michael Hanselmann
#: List of resources which can be queried using RAPI
1237 abd66bf8 Michael Hanselmann
QR_VIA_RAPI = QR_VIA_LUXI
1238 abd66bf8 Michael Hanselmann
1239 4a917de6 Michael Hanselmann
# Query field types
1240 4a917de6 Michael Hanselmann
QFT_UNKNOWN = "unknown"
1241 4a917de6 Michael Hanselmann
QFT_TEXT = "text"
1242 4a917de6 Michael Hanselmann
QFT_BOOL = "bool"
1243 4a917de6 Michael Hanselmann
QFT_NUMBER = "number"
1244 4a917de6 Michael Hanselmann
QFT_UNIT = "unit"
1245 4a917de6 Michael Hanselmann
QFT_TIMESTAMP = "timestamp"
1246 4a917de6 Michael Hanselmann
QFT_OTHER = "other"
1247 4a917de6 Michael Hanselmann
1248 4a917de6 Michael Hanselmann
#: All query field types
1249 4a917de6 Michael Hanselmann
QFT_ALL = frozenset([
1250 4a917de6 Michael Hanselmann
  QFT_UNKNOWN,
1251 4a917de6 Michael Hanselmann
  QFT_TEXT,
1252 4a917de6 Michael Hanselmann
  QFT_BOOL,
1253 4a917de6 Michael Hanselmann
  QFT_NUMBER,
1254 4a917de6 Michael Hanselmann
  QFT_UNIT,
1255 4a917de6 Michael Hanselmann
  QFT_TIMESTAMP,
1256 4a917de6 Michael Hanselmann
  QFT_OTHER,
1257 4a917de6 Michael Hanselmann
  ])
1258 4a917de6 Michael Hanselmann
1259 a6070ef7 Michael Hanselmann
# Query result field status (don't change or reuse values as they're used by
1260 a6070ef7 Michael Hanselmann
# clients)
1261 4a917de6 Michael Hanselmann
#: Normal field status
1262 cfb084ae René Nussbaumer
RS_NORMAL = 0
1263 4a917de6 Michael Hanselmann
#: Unknown field
1264 cfb084ae René Nussbaumer
RS_UNKNOWN = 1
1265 cfb084ae René Nussbaumer
#: No data (e.g. RPC error), can be used instead of L{RS_OFFLINE}
1266 cfb084ae René Nussbaumer
RS_NODATA = 2
1267 dcb9946c Iustin Pop
#: Value unavailable/unsupported for item; if this field is supported
1268 e18c6c47 Iustin Pop
#: but we cannot get the data for the moment, RS_NODATA or
1269 e18c6c47 Iustin Pop
#: RS_OFFLINE should be used
1270 cfb084ae René Nussbaumer
RS_UNAVAIL = 3
1271 a6070ef7 Michael Hanselmann
#: Resource marked offline
1272 cfb084ae René Nussbaumer
RS_OFFLINE = 4
1273 cfb084ae René Nussbaumer
1274 cfb084ae René Nussbaumer
RS_ALL = frozenset([
1275 cfb084ae René Nussbaumer
  RS_NORMAL,
1276 cfb084ae René Nussbaumer
  RS_UNKNOWN,
1277 cfb084ae René Nussbaumer
  RS_NODATA,
1278 cfb084ae René Nussbaumer
  RS_UNAVAIL,
1279 cfb084ae René Nussbaumer
  RS_OFFLINE,
1280 ee3aedff Michael Hanselmann
  ])
1281 ee3aedff Michael Hanselmann
1282 f0b1bafe Iustin Pop
#: Dictionary with special field cases and their verbose/terse formatting
1283 f0b1bafe Iustin Pop
RSS_DESCRIPTION = {
1284 f0b1bafe Iustin Pop
  RS_UNKNOWN: ("(unknown)", "??"),
1285 e687ec01 Michael Hanselmann
  RS_NODATA: ("(nodata)", "?"),
1286 f0b1bafe Iustin Pop
  RS_OFFLINE: ("(offline)", "*"),
1287 f0b1bafe Iustin Pop
  RS_UNAVAIL: ("(unavail)", "-"),
1288 f0b1bafe Iustin Pop
  }
1289 f0b1bafe Iustin Pop
1290 c5e489f7 Iustin Pop
# max dynamic devices
1291 24991749 Iustin Pop
MAX_NICS = 8
1292 24991749 Iustin Pop
MAX_DISKS = 16
1293 24991749 Iustin Pop
1294 93384844 Iustin Pop
# SSCONF keys
1295 93384844 Iustin Pop
SS_CLUSTER_NAME = "cluster_name"
1296 5d60b3bd Iustin Pop
SS_CLUSTER_TAGS = "cluster_tags"
1297 93384844 Iustin Pop
SS_FILE_STORAGE_DIR = "file_storage_dir"
1298 4b97f902 Apollon Oikonomopoulos
SS_SHARED_FILE_STORAGE_DIR = "shared_file_storage_dir"
1299 f56618e0 Iustin Pop
SS_MASTER_CANDIDATES = "master_candidates"
1300 8113a52e Luca Bigliardi
SS_MASTER_CANDIDATES_IPS = "master_candidates_ips"
1301 93384844 Iustin Pop
SS_MASTER_IP = "master_ip"
1302 93384844 Iustin Pop
SS_MASTER_NETDEV = "master_netdev"
1303 93384844 Iustin Pop
SS_MASTER_NODE = "master_node"
1304 93384844 Iustin Pop
SS_NODE_LIST = "node_list"
1305 f9780ccd Luca Bigliardi
SS_NODE_PRIMARY_IPS = "node_primary_ips"
1306 f9780ccd Luca Bigliardi
SS_NODE_SECONDARY_IPS = "node_secondary_ips"
1307 a3316e4a Iustin Pop
SS_OFFLINE_NODES = "offline_nodes"
1308 81a49123 Iustin Pop
SS_ONLINE_NODES = "online_nodes"
1309 868a98ca Manuel Franceschini
SS_PRIMARY_IP_FAMILY = "primary_ip_family"
1310 81a49123 Iustin Pop
SS_INSTANCE_LIST = "instance_list"
1311 8a113c7a Iustin Pop
SS_RELEASE_VERSION = "release_version"
1312 4f7a6a10 Iustin Pop
SS_HYPERVISOR_LIST = "hypervisor_list"
1313 5c465a95 Iustin Pop
SS_MAINTAIN_NODE_HEALTH = "maintain_node_health"
1314 0fbae49a Balazs Lecz
SS_UID_POOL = "uid_pool"
1315 6f076453 Guido Trotter
SS_NODEGROUPS = "nodegroups"
1316 93384844 Iustin Pop
1317 cd57bab6 Michael Hanselmann
SS_FILE_PERMS = 0444
1318 cd57bab6 Michael Hanselmann
1319 7888a614 Alexander Schreiber
# cluster wide default parameters
1320 7888a614 Alexander Schreiber
DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM
1321 7888a614 Alexander Schreiber
1322 7888a614 Alexander Schreiber
HVC_DEFAULTS = {
1323 bd0ff7c2 Iustin Pop
  HT_XEN_PVM: {
1324 2f2dbb4b Jun Futagawa
    HV_USE_BOOTLOADER: False,
1325 2f2dbb4b Jun Futagawa
    HV_BOOTLOADER_PATH: XEN_BOOTLOADER,
1326 d0c8c01d Iustin Pop
    HV_BOOTLOADER_ARGS: "",
1327 bd0ff7c2 Iustin Pop
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-xenU",
1328 d0c8c01d Iustin Pop
    HV_INITRD_PATH: "",
1329 d0c8c01d Iustin Pop
    HV_ROOT_PATH: "/dev/sda1",
1330 d0c8c01d Iustin Pop
    HV_KERNEL_ARGS: "ro",
1331 78411c60 Iustin Pop
    HV_MIGRATION_PORT: 8002,
1332 783a6c0b Iustin Pop
    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1333 525011bc Maciej Bliziński
    HV_BLOCKDEV_PREFIX: "sd",
1334 990ade2d Stephen Shirley
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1335 bd0ff7c2 Iustin Pop
    },
1336 bd0ff7c2 Iustin Pop
  HT_XEN_HVM: {
1337 bd0ff7c2 Iustin Pop
    HV_BOOT_ORDER: "cd",
1338 d0c8c01d Iustin Pop
    HV_CDROM_IMAGE_PATH: "",
1339 d08f6067 Guido Trotter
    HV_NIC_TYPE: HT_NIC_RTL8139,
1340 43440815 Guido Trotter
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1341 9769bb78 Manuel Franceschini
    HV_VNC_BIND_ADDRESS: IP4_ADDRESS_ANY,
1342 6e6bb8d5 Guido Trotter
    HV_VNC_PASSWORD_FILE: VNC_PASSWORD_FILE,
1343 bd0ff7c2 Iustin Pop
    HV_ACPI: True,
1344 bd0ff7c2 Iustin Pop
    HV_PAE: True,
1345 e2ee1cea Iustin Pop
    HV_KERNEL_PATH: "/usr/lib/xen/boot/hvmloader",
1346 09ea8710 Iustin Pop
    HV_DEVICE_MODEL: "/usr/lib/xen/bin/qemu-dm",
1347 78411c60 Iustin Pop
    HV_MIGRATION_PORT: 8002,
1348 783a6c0b Iustin Pop
    HV_MIGRATION_MODE: HT_MIGRATION_NONLIVE,
1349 6b970cef Jun Futagawa
    HV_USE_LOCALTIME: False,
1350 525011bc Maciej Bliziński
    HV_BLOCKDEV_PREFIX: "hd",
1351 990ade2d Stephen Shirley
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1352 bd0ff7c2 Iustin Pop
    },
1353 bd0ff7c2 Iustin Pop
  HT_KVM: {
1354 bd0ff7c2 Iustin Pop
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-kvmU",
1355 d0c8c01d Iustin Pop
    HV_INITRD_PATH: "",
1356 d0c8c01d Iustin Pop
    HV_KERNEL_ARGS: "ro",
1357 d0c8c01d Iustin Pop
    HV_ROOT_PATH: "/dev/vda1",
1358 bd0ff7c2 Iustin Pop
    HV_ACPI: True,
1359 bd0ff7c2 Iustin Pop
    HV_SERIAL_CONSOLE: True,
1360 d0c8c01d Iustin Pop
    HV_VNC_BIND_ADDRESS: "",
1361 8b2d1013 Guido Trotter
    HV_VNC_TLS: False,
1362 d0c8c01d Iustin Pop
    HV_VNC_X509: "",
1363 8b2d1013 Guido Trotter
    HV_VNC_X509_VERIFY: False,
1364 d0c8c01d Iustin Pop
    HV_VNC_PASSWORD_FILE: "",
1365 b1cb62bd Andrea Spadaccini
    HV_KVM_SPICE_BIND: "",
1366 b1cb62bd Andrea Spadaccini
    HV_KVM_SPICE_IP_VERSION: IFACE_NO_IP_VERSION_SPECIFIED,
1367 b451c4c7 Andrea Spadaccini
    HV_KVM_SPICE_PASSWORD_FILE: "",
1368 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_LOSSLESS_IMG_COMPR: "",
1369 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_JPEG_IMG_COMPR: "",
1370 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_ZLIB_GLZ_IMG_COMPR: "",
1371 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_STREAMING_VIDEO_DETECTION: "",
1372 ea064d24 Andrea Spadaccini
    HV_KVM_SPICE_AUDIO_COMPR: True,
1373 d0c8c01d Iustin Pop
    HV_KVM_FLOPPY_IMAGE_PATH: "",
1374 d0c8c01d Iustin Pop
    HV_CDROM_IMAGE_PATH: "",
1375 d0c8c01d Iustin Pop
    HV_KVM_CDROM2_IMAGE_PATH: "",
1376 835528af Iustin Pop
    HV_BOOT_ORDER: HT_BO_DISK,
1377 43440815 Guido Trotter
    HV_NIC_TYPE: HT_NIC_PARAVIRTUAL,
1378 43440815 Guido Trotter
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
1379 d0c8c01d Iustin Pop
    HV_KVM_CDROM_DISK_TYPE: "",
1380 d0c8c01d Iustin Pop
    HV_USB_MOUSE: "",
1381 4f580fef Sébastien Bocahu
    HV_KEYMAP: "",
1382 3c075436 Iustin Pop
    HV_MIGRATION_PORT: 8102,
1383 e43d4f9f Apollon Oikonomopoulos
    HV_MIGRATION_BANDWIDTH: 32, # MiB/s
1384 e43d4f9f Apollon Oikonomopoulos
    HV_MIGRATION_DOWNTIME: 30,  # ms
1385 783a6c0b Iustin Pop
    HV_MIGRATION_MODE: HT_MIGRATION_LIVE,
1386 6b970cef Jun Futagawa
    HV_USE_LOCALTIME: False,
1387 ea0f3d7a Iustin Pop
    HV_DISK_CACHE: HT_CACHE_DEFAULT,
1388 d19d94db Guido Trotter
    HV_SECURITY_MODEL: HT_SM_NONE,
1389 d0c8c01d Iustin Pop
    HV_SECURITY_DOMAIN: "",
1390 7ba594c0 Guido Trotter
    HV_KVM_FLAG: "",
1391 fbe27e2b Guido Trotter
    HV_VHOST_NET: False,
1392 84c08e4e Balazs Lecz
    HV_KVM_USE_CHROOT: False,
1393 4f958b0b Miguel Di Ciurcio Filho
    HV_MEM_PATH: "",
1394 990ade2d Stephen Shirley
    HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED,
1395 bd0ff7c2 Iustin Pop
    },
1396 bd0ff7c2 Iustin Pop
  HT_FAKE: {
1397 bd0ff7c2 Iustin Pop
    },
1398 48297fa2 Iustin Pop
  HT_CHROOT: {
1399 48297fa2 Iustin Pop
    HV_INIT_SCRIPT: "/ganeti-chroot",
1400 48297fa2 Iustin Pop
    },
1401 4b5e40a5 Iustin Pop
  HT_LXC: {
1402 e3ed5316 Balazs Lecz
    HV_CPU_MASK: "",
1403 4b5e40a5 Iustin Pop
    },
1404 bd0ff7c2 Iustin Pop
  }
1405 7888a614 Alexander Schreiber
1406 7736a5f2 Iustin Pop
HVC_GLOBALS = frozenset([
1407 7736a5f2 Iustin Pop
  HV_MIGRATION_PORT,
1408 e43d4f9f Apollon Oikonomopoulos
  HV_MIGRATION_BANDWIDTH,
1409 783a6c0b Iustin Pop
  HV_MIGRATION_MODE,
1410 7736a5f2 Iustin Pop
  ])
1411 7736a5f2 Iustin Pop
1412 7888a614 Alexander Schreiber
BEC_DEFAULTS = {
1413 bd0ff7c2 Iustin Pop
  BE_MEMORY: 128,
1414 bd0ff7c2 Iustin Pop
  BE_VCPUS: 1,
1415 bd0ff7c2 Iustin Pop
  BE_AUTO_BALANCE: True,
1416 bd0ff7c2 Iustin Pop
  }
1417 c3e618cc Guido Trotter
1418 095e71aa René Nussbaumer
NDC_DEFAULTS = {
1419 095e71aa René Nussbaumer
  ND_OOB_PROGRAM: None,
1420 095e71aa René Nussbaumer
  }
1421 095e71aa René Nussbaumer
1422 ac061be9 Guido Trotter
NICC_DEFAULTS = {
1423 ac061be9 Guido Trotter
  NIC_MODE: NIC_MODE_BRIDGED,
1424 ac061be9 Guido Trotter
  NIC_LINK: DEFAULT_BRIDGE,
1425 ac061be9 Guido Trotter
  }
1426 ac061be9 Guido Trotter
1427 c3e618cc Guido Trotter
MASTER_POOL_SIZE_DEFAULT = 10
1428 ea1518af Guido Trotter
1429 ea1518af Guido Trotter
CONFD_PROTOCOL_VERSION = 1
1430 ea1518af Guido Trotter
1431 09444532 Guido Trotter
CONFD_REQ_PING = 0
1432 ea1518af Guido Trotter
CONFD_REQ_NODE_ROLE_BYNAME = 1
1433 ea1518af Guido Trotter
CONFD_REQ_NODE_PIP_BY_INSTANCE_IP = 2
1434 48166551 Guido Trotter
CONFD_REQ_CLUSTER_MASTER = 3
1435 efbb4fd2 Luca Bigliardi
CONFD_REQ_NODE_PIP_LIST = 4
1436 efbb4fd2 Luca Bigliardi
CONFD_REQ_MC_PIP_LIST = 5
1437 d01ae714 Luca Bigliardi
CONFD_REQ_INSTANCES_IPS_LIST = 6
1438 ea1518af Guido Trotter
1439 19351457 Guido Trotter
# Confd request query fields. These are used to narrow down queries.
1440 19351457 Guido Trotter
# These must be strings rather than integers, because json-encoding
1441 19351457 Guido Trotter
# converts them to strings anyway, as they're used as dict-keys.
1442 19351457 Guido Trotter
CONFD_REQQ_LINK = "0"
1443 19351457 Guido Trotter
CONFD_REQQ_IP = "1"
1444 19351457 Guido Trotter
CONFD_REQQ_IPLIST = "2"
1445 250554a9 Guido Trotter
CONFD_REQQ_FIELDS = "3"
1446 250554a9 Guido Trotter
1447 250554a9 Guido Trotter
CONFD_REQFIELD_NAME = "0"
1448 250554a9 Guido Trotter
CONFD_REQFIELD_IP = "1"
1449 43dc8496 Guido Trotter
CONFD_REQFIELD_MNODE_PIP = "2"
1450 19351457 Guido Trotter
1451 ea1518af Guido Trotter
CONFD_REQS = frozenset([
1452 09444532 Guido Trotter
  CONFD_REQ_PING,
1453 ea1518af Guido Trotter
  CONFD_REQ_NODE_ROLE_BYNAME,
1454 ea1518af Guido Trotter
  CONFD_REQ_NODE_PIP_BY_INSTANCE_IP,
1455 48166551 Guido Trotter
  CONFD_REQ_CLUSTER_MASTER,
1456 efbb4fd2 Luca Bigliardi
  CONFD_REQ_NODE_PIP_LIST,
1457 efbb4fd2 Luca Bigliardi
  CONFD_REQ_MC_PIP_LIST,
1458 d01ae714 Luca Bigliardi
  CONFD_REQ_INSTANCES_IPS_LIST,
1459 ea1518af Guido Trotter
  ])
1460 ea1518af Guido Trotter
1461 31c2a99e Guido Trotter
CONFD_REPL_STATUS_OK = 0
1462 31c2a99e Guido Trotter
CONFD_REPL_STATUS_ERROR = 1
1463 31c2a99e Guido Trotter
CONFD_REPL_STATUS_NOTIMPLEMENTED = 2
1464 31c2a99e Guido Trotter
1465 31c2a99e Guido Trotter
CONFD_REPL_STATUSES = frozenset([
1466 31c2a99e Guido Trotter
  CONFD_REPL_STATUS_OK,
1467 31c2a99e Guido Trotter
  CONFD_REPL_STATUS_ERROR,
1468 31c2a99e Guido Trotter
  CONFD_REPL_STATUS_NOTIMPLEMENTED,
1469 31c2a99e Guido Trotter
  ])
1470 31c2a99e Guido Trotter
1471 89c52785 Guido Trotter
(CONFD_NODE_ROLE_MASTER,
1472 89c52785 Guido Trotter
 CONFD_NODE_ROLE_CANDIDATE,
1473 89c52785 Guido Trotter
 CONFD_NODE_ROLE_OFFLINE,
1474 197b0f5d Guido Trotter
 CONFD_NODE_ROLE_DRAINED,
1475 197b0f5d Guido Trotter
 CONFD_NODE_ROLE_REGULAR,
1476 197b0f5d Guido Trotter
 ) = range(5)
1477 89c52785 Guido Trotter
1478 ca2a5b13 Guido Trotter
# A few common errors for confd
1479 ca2a5b13 Guido Trotter
CONFD_ERROR_UNKNOWN_ENTRY = 1
1480 7189e790 Guido Trotter
CONFD_ERROR_INTERNAL = 2
1481 19351457 Guido Trotter
CONFD_ERROR_ARGUMENT = 3
1482 ca2a5b13 Guido Trotter
1483 71f27d19 Guido Trotter
# Each request is "salted" by the current timestamp.
1484 71f27d19 Guido Trotter
# This constants decides how many seconds of skew to accept.
1485 71f27d19 Guido Trotter
# TODO: make this a default and allow the value to be more configurable
1486 313b2dd4 Michael Hanselmann
CONFD_MAX_CLOCK_SKEW = 2 * NODE_MAX_CLOCK_SKEW
1487 84c3ab28 Guido Trotter
1488 84c3ab28 Guido Trotter
# When we haven't reloaded the config for more than this amount of seconds, we
1489 84c3ab28 Guido Trotter
# force a test to see if inotify is betraying us.
1490 84c3ab28 Guido Trotter
CONFD_CONFIG_RELOAD_TIMEOUT = 60
1491 84c3ab28 Guido Trotter
1492 84c3ab28 Guido Trotter
# If we receive more than one update in this amount of seconds, we move to
1493 84c3ab28 Guido Trotter
# polling every RATELIMIT seconds, rather than relying on inotify, to be able
1494 84c3ab28 Guido Trotter
# to serve more requests.
1495 84c3ab28 Guido Trotter
CONFD_CONFIG_RELOAD_RATELIMIT = 2
1496 c8eded0b Guido Trotter
1497 a3758ab2 Guido Trotter
# Magic number prepended to all confd queries.
1498 a3758ab2 Guido Trotter
# This allows us to distinguish different types of confd protocols and handle
1499 a3758ab2 Guido Trotter
# them. For example by changing this we can move the whole payload to be
1500 a3758ab2 Guido Trotter
# compressed, or move away from json.
1501 d0c8c01d Iustin Pop
CONFD_MAGIC_FOURCC = "plj0"
1502 a3758ab2 Guido Trotter
1503 e4ccf6cd Guido Trotter
# By default a confd request is sent to the minimum between this number and all
1504 e4ccf6cd Guido Trotter
# MCs. 6 was chosen because even in the case of a disastrous 50% response rate,
1505 e4ccf6cd Guido Trotter
# we should have enough answers to be able to compare more than one.
1506 e4ccf6cd Guido Trotter
CONFD_DEFAULT_REQ_COVERAGE = 6
1507 e4ccf6cd Guido Trotter
1508 e4ccf6cd Guido Trotter
# Timeout in seconds to expire pending query request in the confd client
1509 e4ccf6cd Guido Trotter
# library. We don't actually expect any answer more than 10 seconds after we
1510 e4ccf6cd Guido Trotter
# sent a request.
1511 e4ccf6cd Guido Trotter
CONFD_CLIENT_EXPIRE_TIMEOUT = 10
1512 e4ccf6cd Guido Trotter
1513 c8eded0b Guido Trotter
# Maximum UDP datagram size.
1514 c8eded0b Guido Trotter
# On IPv4: 64K - 20 (ip header size) - 8 (udp header size) = 65507
1515 c8eded0b Guido Trotter
# On IPv6: 64K - 40 (ip6 header size) - 8 (udp header size) = 65487
1516 c8eded0b Guido Trotter
#   (assuming we can't use jumbo frames)
1517 c8eded0b Guido Trotter
# We just set this to 60K, which should be enough
1518 c8eded0b Guido Trotter
MAX_UDP_DATA_SIZE = 61440
1519 6d127406 Balazs Lecz
1520 6d127406 Balazs Lecz
# User-id pool minimum/maximum acceptable user-ids.
1521 6d127406 Balazs Lecz
UIDPOOL_UID_MIN = 0
1522 e687ec01 Michael Hanselmann
UIDPOOL_UID_MAX = 2 ** 32 - 1 # Assuming 32 bit user-ids
1523 649bcdd8 Balazs Lecz
1524 649bcdd8 Balazs Lecz
# Name or path of the pgrep command
1525 649bcdd8 Balazs Lecz
PGREP = "pgrep"
1526 75cf411a Adeodato Simo
1527 75cf411a Adeodato Simo
# Name of the node group that gets created at cluster init or upgrade
1528 75cf411a Adeodato Simo
INITIAL_NODE_GROUP_NAME = "default"
1529 90e99856 Adeodato Simo
1530 90e99856 Adeodato Simo
# Possible values for NodeGroup.alloc_policy
1531 90e99856 Adeodato Simo
ALLOC_POLICY_PREFERRED = "preferred"
1532 90e99856 Adeodato Simo
ALLOC_POLICY_LAST_RESORT = "last_resort"
1533 90e99856 Adeodato Simo
ALLOC_POLICY_UNALLOCABLE = "unallocable"
1534 90e99856 Adeodato Simo
VALID_ALLOC_POLICIES = [
1535 90e99856 Adeodato Simo
  ALLOC_POLICY_PREFERRED,
1536 90e99856 Adeodato Simo
  ALLOC_POLICY_LAST_RESORT,
1537 90e99856 Adeodato Simo
  ALLOC_POLICY_UNALLOCABLE,
1538 90e99856 Adeodato Simo
  ]
1539 b6135bbc Apollon Oikonomopoulos
1540 b6135bbc Apollon Oikonomopoulos
# Temporary external/shared storage parameters
1541 b6135bbc Apollon Oikonomopoulos
BLOCKDEV_DRIVER_MANUAL = "manual"
1542 e5395072 Iustin Pop
1543 e5395072 Iustin Pop
# Whether htools was enabled at compilation time
1544 e5395072 Iustin Pop
HTOOLS = _autoconf.HTOOLS
1545 e5395072 Iustin Pop
# The hail iallocator
1546 e5395072 Iustin Pop
IALLOC_HAIL = "hail"
1547 28aedbc1 Andrea Spadaccini
1548 28aedbc1 Andrea Spadaccini
# Fake opcodes for functions that have hooks attached to them via
1549 28aedbc1 Andrea Spadaccini
# backend.RunLocalHooks
1550 28aedbc1 Andrea Spadaccini
FAKE_OP_MASTER_TURNUP = "OP_CLUSTER_IP_TURNUP"
1551 28aedbc1 Andrea Spadaccini
FAKE_OP_MASTER_TURNDOWN = "OP_CLUSTER_IP_TURNDOWN"