Statistics
| Branch: | Tag: | Revision:

root / lib / constants.py @ 0376655e

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

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

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

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

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