Statistics
| Branch: | Tag: | Revision:

root / lib / constants.py @ 649bcdd8

History | View | Annotate | Download (23.1 kB)

1 2f31098c Iustin Pop
#
2 a8083063 Iustin Pop
#
3 a8083063 Iustin Pop
4 a8083063 Iustin Pop
# Copyright (C) 2006, 2007 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 72456eb2 Michael Hanselmann
PROTOCOL_VERSION = 30
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 d1a7d66f Guido Trotter
OS_API_VERSIONS = frozenset([OS_API_V10, OS_API_V15])
34 a8083063 Iustin Pop
EXPORT_VERSION = 0
35 bac5ffc3 Oleksiy Mishchenko
RAPI_VERSION = 2
36 a8083063 Iustin Pop
37 1b45f4e5 Michael Hanselmann
38 243cdbcc Michael Hanselmann
# Format for CONFIG_VERSION:
39 243cdbcc Michael Hanselmann
#   01 03 0123 = 01030123
40 243cdbcc Michael Hanselmann
#   ^^ ^^ ^^^^
41 243cdbcc Michael Hanselmann
#   |  |  + Configuration version/revision
42 243cdbcc Michael Hanselmann
#   |  + Minor version
43 243cdbcc Michael Hanselmann
#   + Major version
44 243cdbcc Michael Hanselmann
#
45 243cdbcc Michael Hanselmann
# It stored as an integer. Make sure not to write an octal number.
46 1b45f4e5 Michael Hanselmann
47 1b45f4e5 Michael Hanselmann
# BuildVersion and SplitVersion must be in here because we can't import other
48 1b45f4e5 Michael Hanselmann
# modules. The cfgupgrade tool must be able to read and write version numbers
49 1b45f4e5 Michael Hanselmann
# and thus requires these functions. To avoid code duplication, they're kept in
50 1b45f4e5 Michael Hanselmann
# here.
51 1b45f4e5 Michael Hanselmann
52 1b45f4e5 Michael Hanselmann
def BuildVersion(major, minor, revision):
53 1b45f4e5 Michael Hanselmann
  """Calculates int version number from major, minor and revision numbers.
54 1b45f4e5 Michael Hanselmann

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

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

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

71 1b45f4e5 Michael Hanselmann
  """
72 1b45f4e5 Michael Hanselmann
  assert isinstance(version, int)
73 1b45f4e5 Michael Hanselmann
74 1b45f4e5 Michael Hanselmann
  (major, remainder) = divmod(version, 1000000)
75 1b45f4e5 Michael Hanselmann
  (minor, revision) = divmod(remainder, 10000)
76 1b45f4e5 Michael Hanselmann
77 1b45f4e5 Michael Hanselmann
  return (major, minor, revision)
78 1b45f4e5 Michael Hanselmann
79 1b45f4e5 Michael Hanselmann
80 243cdbcc Michael Hanselmann
CONFIG_MAJOR = int(_autoconf.VERSION_MAJOR)
81 243cdbcc Michael Hanselmann
CONFIG_MINOR = int(_autoconf.VERSION_MINOR)
82 243cdbcc Michael Hanselmann
CONFIG_REVISION = 0
83 1b45f4e5 Michael Hanselmann
CONFIG_VERSION = BuildVersion(CONFIG_MAJOR, CONFIG_MINOR, CONFIG_REVISION)
84 a8083063 Iustin Pop
85 a8083063 Iustin Pop
# file paths
86 2ec08468 Michael Hanselmann
DATA_DIR = _autoconf.LOCALSTATEDIR + "/lib/ganeti"
87 1ed70996 Iustin Pop
RUN_DIR = _autoconf.LOCALSTATEDIR + "/run"
88 75afaefc Iustin Pop
RUN_GANETI_DIR = RUN_DIR + "/ganeti"
89 42ff3343 Guido Trotter
BDEV_CACHE_DIR = RUN_GANETI_DIR + "/bdev-cache"
90 75afaefc Iustin Pop
DISK_LINKS_DIR = RUN_GANETI_DIR + "/instance-disks"
91 817a030d Guido Trotter
RUN_DIRS_MODE = 0755
92 b4442fd9 Guido Trotter
SOCKET_DIR = RUN_GANETI_DIR + "/socket"
93 5ecb7e48 Guido Trotter
SOCKET_DIR_MODE = 0700
94 75afaefc Iustin Pop
# keep RUN_GANETI_DIR first here, to make sure all get created when the node
95 75afaefc Iustin Pop
# daemon is started (this takes care of RUN_DIR being tmpfs)
96 75afaefc Iustin Pop
SUB_RUN_DIRS = [ RUN_GANETI_DIR, BDEV_CACHE_DIR, DISK_LINKS_DIR ]
97 3aecd2c7 Iustin Pop
LOCK_DIR = _autoconf.LOCALSTATEDIR + "/lock"
98 0c223ea9 Michael Hanselmann
SSCONF_LOCK_FILE = LOCK_DIR + "/ganeti-ssconf.lock"
99 649bcdd8 Balazs Lecz
# User-id pool lock directory
100 649bcdd8 Balazs Lecz
# The user-ids that are in use have a corresponding lock file in this directory
101 649bcdd8 Balazs Lecz
UIDPOOL_LOCKDIR = RUN_GANETI_DIR + "/uid-pool"
102 a8083063 Iustin Pop
CLUSTER_CONF_FILE = DATA_DIR + "/config.data"
103 168c1de2 Michael Hanselmann
NODED_CERT_FILE = DATA_DIR + "/server.pem"
104 61a08fa3 Michael Hanselmann
RAPI_CERT_FILE = DATA_DIR + "/rapi.pem"
105 6b7d5878 Michael Hanselmann
CONFD_HMAC_KEY = DATA_DIR + "/hmac.key"
106 5a3103e9 Michael Hanselmann
WATCHER_STATEFILE = DATA_DIR + "/watcher.data"
107 05e50653 Michael Hanselmann
WATCHER_PAUSEFILE = DATA_DIR + "/watcher.pause"
108 78f44650 Iustin Pop
INSTANCE_UPFILE = RUN_GANETI_DIR + "/instance-status"
109 82122173 Iustin Pop
SSH_KNOWN_HOSTS_FILE = DATA_DIR + "/known_hosts"
110 b5b67ef9 Michael Hanselmann
RAPI_USERS_FILE = DATA_DIR + "/rapi_users"
111 f1da30e6 Michael Hanselmann
QUEUE_DIR = DATA_DIR + "/queue"
112 f154a7a3 Michael Hanselmann
DAEMON_UTIL = _autoconf.PKGLIBDIR + "/daemon-util"
113 c8a0948f Michael Hanselmann
ETC_HOSTS = "/etc/hosts"
114 1abbbbe2 Manuel Franceschini
DEFAULT_FILE_STORAGE_DIR = _autoconf.FILE_STORAGE_DIR
115 cb7c0198 Iustin Pop
ENABLE_FILE_STORAGE = _autoconf.ENABLE_FILE_STORAGE
116 5420ffc9 Guido Trotter
SYSCONFDIR = _autoconf.SYSCONFDIR
117 bea60381 Michael Hanselmann
TOOLSDIR = _autoconf.TOOLSDIR
118 131178b9 Luca Bigliardi
CONF_DIR = SYSCONFDIR + "/ganeti"
119 9894ece7 Michael Hanselmann
120 168c1de2 Michael Hanselmann
ALL_CERT_FILES = frozenset([NODED_CERT_FILE, RAPI_CERT_FILE])
121 d3100055 Michael Hanselmann
122 227647ac Guido Trotter
MASTER_SOCKET = SOCKET_DIR + "/ganeti-master"
123 a8083063 Iustin Pop
124 cd50653c Guido Trotter
NODED = "ganeti-noded"
125 18679072 Guido Trotter
CONFD = "ganeti-confd"
126 8c96d01f Guido Trotter
RAPI = "ganeti-rapi"
127 dae3fdd2 Guido Trotter
MASTERD = "ganeti-masterd"
128 4d32feba Guido Trotter
# used in the ganeti-nbma project
129 4d32feba Guido Trotter
NLD = "ganeti-nld"
130 cd50653c Guido Trotter
131 04ccf5e9 Guido Trotter
MULTITHREADED_DAEMONS = frozenset([MASTERD])
132 04ccf5e9 Guido Trotter
133 3b1b0cb6 Guido Trotter
DAEMONS_SSL = {
134 3b1b0cb6 Guido Trotter
  # daemon-name: (default-cert-path, default-key-path)
135 168c1de2 Michael Hanselmann
  NODED: (NODED_CERT_FILE, NODED_CERT_FILE),
136 3b1b0cb6 Guido Trotter
  RAPI: (RAPI_CERT_FILE, RAPI_CERT_FILE),
137 3b1b0cb6 Guido Trotter
}
138 3b1b0cb6 Guido Trotter
139 cd50653c Guido Trotter
DAEMONS_PORTS = {
140 cd50653c Guido Trotter
  # daemon-name: ("proto", "default-port")
141 cd50653c Guido Trotter
  NODED: ("tcp", 1811),
142 18679072 Guido Trotter
  CONFD: ("udp", 1814),
143 8c96d01f Guido Trotter
  RAPI: ("tcp", 5080),
144 4d32feba Guido Trotter
  # used in the ganeti-nbma project
145 4d32feba Guido Trotter
  NLD: ("udp", 1816),
146 cd50653c Guido Trotter
}
147 cd50653c Guido Trotter
DEFAULT_NODED_PORT = DAEMONS_PORTS[NODED][1]
148 18679072 Guido Trotter
DEFAULT_CONFD_PORT = DAEMONS_PORTS[CONFD][1]
149 8c96d01f Guido Trotter
DEFAULT_RAPI_PORT = DAEMONS_PORTS[RAPI][1]
150 4d32feba Guido Trotter
# used in the ganeti-nbma project
151 4d32feba Guido Trotter
DEFAULT_NLD_PORT = DAEMONS_PORTS[NLD][1]
152 cd50653c Guido Trotter
153 a8083063 Iustin Pop
FIRST_DRBD_PORT = 11000
154 a8083063 Iustin Pop
LAST_DRBD_PORT = 14999
155 880478f8 Iustin Pop
MASTER_SCRIPT = "ganeti-master"
156 a8083063 Iustin Pop
157 9936bd63 Iustin Pop
LOG_DIR = _autoconf.LOCALSTATEDIR + "/log/ganeti/"
158 dae3fdd2 Guido Trotter
DAEMONS_LOGFILES = {
159 d73ef63f Michael Hanselmann
  # "daemon-name": "logfile"
160 d73ef63f Michael Hanselmann
  NODED: LOG_DIR + "node-daemon.log",
161 d73ef63f Michael Hanselmann
  CONFD: LOG_DIR + "conf-daemon.log",
162 d73ef63f Michael Hanselmann
  RAPI: LOG_DIR + "rapi-daemon.log",
163 d73ef63f Michael Hanselmann
  MASTERD: LOG_DIR + "master-daemon.log",
164 4d32feba Guido Trotter
  # used in the ganeti-nbma project
165 4d32feba Guido Trotter
  NLD: LOG_DIR + "nl-daemon.log",
166 d73ef63f Michael Hanselmann
  }
167 9936bd63 Iustin Pop
LOG_OS_DIR = LOG_DIR + "os"
168 9936bd63 Iustin Pop
LOG_WATCHER = LOG_DIR + "watcher.log"
169 9936bd63 Iustin Pop
LOG_COMMANDS = LOG_DIR + "commands.log"
170 6abe9194 Iustin Pop
LOG_BURNIN = LOG_DIR + "burnin.log"
171 a8083063 Iustin Pop
172 551b6283 Iustin Pop
# one of 'no', 'yes', 'only'
173 551b6283 Iustin Pop
SYSLOG_USAGE = _autoconf.SYSLOG_USAGE
174 551b6283 Iustin Pop
SYSLOG_NO = "no"
175 551b6283 Iustin Pop
SYSLOG_YES = "yes"
176 551b6283 Iustin Pop
SYSLOG_ONLY = "only"
177 551b6283 Iustin Pop
SYSLOG_SOCKET = "/dev/log"
178 551b6283 Iustin Pop
179 7c3d51d4 Guido Trotter
OS_SEARCH_PATH = _autoconf.OS_SEARCH_PATH
180 68dccc07 Guido Trotter
EXPORT_DIR = _autoconf.EXPORT_DIR
181 a8083063 Iustin Pop
182 a8083063 Iustin Pop
EXPORT_CONF_FILE = "config.ini"
183 a8083063 Iustin Pop
184 2f2dbb4b Jun Futagawa
XEN_BOOTLOADER = _autoconf.XEN_BOOTLOADER
185 f00b46bc Michael Hanselmann
XEN_KERNEL = _autoconf.XEN_KERNEL
186 f00b46bc Michael Hanselmann
XEN_INITRD = _autoconf.XEN_INITRD
187 f00b46bc Michael Hanselmann
188 7e2c5b9e Guido Trotter
KVM_PATH = _autoconf.KVM_PATH
189 14aa53cb Guido Trotter
SOCAT_PATH = _autoconf.SOCAT_PATH
190 fe5b0c42 Michael Hanselmann
SOCAT_USE_ESCAPE = _autoconf.SOCAT_USE_ESCAPE
191 86d6bc2a Guido Trotter
SOCAT_ESCAPE_CODE = "0x1d"
192 7e2c5b9e Guido Trotter
193 973d7867 Iustin Pop
VALUE_DEFAULT = "default"
194 4c566ede Guido Trotter
VALUE_AUTO = "auto"
195 4c566ede Guido Trotter
VALUE_GENERATE = "generate"
196 973d7867 Iustin Pop
VALUE_NONE = "none"
197 1817f49b Guido Trotter
VALUE_TRUE = "true"
198 1817f49b Guido Trotter
VALUE_FALSE = "false"
199 973d7867 Iustin Pop
200 4fe80ef2 Iustin Pop
# External script validation mask
201 4fe80ef2 Iustin Pop
EXT_PLUGIN_MASK = re.compile("^[a-zA-Z0-9_-]+$")
202 4fe80ef2 Iustin Pop
203 a8083063 Iustin Pop
# hooks-related constants
204 131178b9 Luca Bigliardi
HOOKS_BASE_DIR = CONF_DIR + "/hooks"
205 a8083063 Iustin Pop
HOOKS_PHASE_PRE = "pre"
206 a8083063 Iustin Pop
HOOKS_PHASE_POST = "post"
207 6a4aa7c1 Iustin Pop
HOOKS_NAME_CFGUPDATE = "config-update"
208 9e289e36 Guido Trotter
HOOKS_NAME_WATCHER = "watcher"
209 f3e2e4c6 Iustin Pop
HOOKS_VERSION = 2
210 a8083063 Iustin Pop
211 a8083063 Iustin Pop
# hooks subject type (what object type does the LU deal with)
212 a8083063 Iustin Pop
HTYPE_CLUSTER = "CLUSTER"
213 a8083063 Iustin Pop
HTYPE_NODE = "NODE"
214 a8083063 Iustin Pop
HTYPE_INSTANCE = "INSTANCE"
215 a8083063 Iustin Pop
216 a8083063 Iustin Pop
HKR_SKIP = 0
217 a8083063 Iustin Pop
HKR_FAIL = 1
218 a8083063 Iustin Pop
HKR_SUCCESS = 2
219 a8083063 Iustin Pop
220 ac2d0fe4 Michael Hanselmann
# Storage types
221 ac2d0fe4 Michael Hanselmann
ST_FILE = "file"
222 ac2d0fe4 Michael Hanselmann
ST_LVM_PV = "lvm-pv"
223 ac2d0fe4 Michael Hanselmann
ST_LVM_VG = "lvm-vg"
224 6032697c Michael Hanselmann
225 6032697c Michael Hanselmann
# Storage fields
226 620a85fd Iustin Pop
# first two are valid in LU context only, not passed to backend
227 620a85fd Iustin Pop
SF_NODE = "node"
228 620a85fd Iustin Pop
SF_TYPE = "type"
229 620a85fd Iustin Pop
# and the rest are valid in backend
230 6032697c Michael Hanselmann
SF_NAME = "name"
231 6032697c Michael Hanselmann
SF_SIZE = "size"
232 6032697c Michael Hanselmann
SF_FREE = "free"
233 6032697c Michael Hanselmann
SF_USED = "used"
234 6032697c Michael Hanselmann
SF_ALLOCATABLE = "allocatable"
235 6032697c Michael Hanselmann
236 6c3c6db9 Michael Hanselmann
# Storage operations
237 6c3c6db9 Michael Hanselmann
SO_FIX_CONSISTENCY = "fix-consistency"
238 6c3c6db9 Michael Hanselmann
239 6032697c Michael Hanselmann
# Available fields per storage type
240 620a85fd Iustin Pop
VALID_STORAGE_FIELDS = frozenset([SF_NAME, SF_TYPE, SF_SIZE,
241 620a85fd Iustin Pop
                                  SF_USED, SF_FREE, SF_ALLOCATABLE])
242 620a85fd Iustin Pop
243 620a85fd Iustin Pop
VALID_STORAGE_TYPES = frozenset([ST_FILE, ST_LVM_PV, ST_LVM_VG])
244 a8083063 Iustin Pop
245 efb8da02 Michael Hanselmann
MODIFIABLE_STORAGE_FIELDS = {
246 efb8da02 Michael Hanselmann
  ST_LVM_PV: frozenset([SF_ALLOCATABLE]),
247 efb8da02 Michael Hanselmann
  }
248 efb8da02 Michael Hanselmann
249 4b37cac5 Michael Hanselmann
VALID_STORAGE_OPERATIONS = {
250 6c3c6db9 Michael Hanselmann
  ST_LVM_VG: frozenset([SO_FIX_CONSISTENCY]),
251 4b37cac5 Michael Hanselmann
  }
252 4b37cac5 Michael Hanselmann
253 74f37195 Michael Hanselmann
# Local disk status
254 74f37195 Michael Hanselmann
# Note: Code depends on LDS_OKAY < LDS_UNKNOWN < LDS_FAULTY
255 74f37195 Michael Hanselmann
(LDS_OKAY,
256 74f37195 Michael Hanselmann
 LDS_UNKNOWN,
257 74f37195 Michael Hanselmann
 LDS_FAULTY) = range(1, 4)
258 74f37195 Michael Hanselmann
259 a8083063 Iustin Pop
# disk template types
260 a8083063 Iustin Pop
DT_DISKLESS = "diskless"
261 a8083063 Iustin Pop
DT_PLAIN = "plain"
262 a1f445d3 Iustin Pop
DT_DRBD8 = "drbd"
263 04fa07f2 Manuel Franceschini
DT_FILE = "file"
264 a1f445d3 Iustin Pop
265 a1f445d3 Iustin Pop
# the set of network-mirrored disk templates
266 abdf0113 Iustin Pop
DTS_NET_MIRROR = frozenset([DT_DRBD8])
267 a8083063 Iustin Pop
268 d63e148a Manuel Franceschini
# the set of non-lvm-based disk templates
269 d63e148a Manuel Franceschini
DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE])
270 d63e148a Manuel Franceschini
271 728489a3 Guido Trotter
# the set of disk templates which can be grown
272 2c42c5df Guido Trotter
DTS_GROWABLE = frozenset([DT_PLAIN, DT_DRBD8, DT_FILE])
273 728489a3 Guido Trotter
274 fe96220b Iustin Pop
# logical disk types
275 fe96220b Iustin Pop
LD_LV = "lvm"
276 a1f445d3 Iustin Pop
LD_DRBD8 = "drbd8"
277 04fa07f2 Manuel Franceschini
LD_FILE = "file"
278 464736ae Guido Trotter
LDS_BLOCK = frozenset([LD_LV, LD_DRBD8])
279 04fa07f2 Manuel Franceschini
280 2899d9de Iustin Pop
# drbd constants
281 2899d9de Iustin Pop
DRBD_HMAC_ALG = "md5"
282 3c03759a Iustin Pop
DRBD_NET_PROTOCOL = "C"
283 89b70f39 Iustin Pop
DRBD_BARRIERS = _autoconf.DRBD_BARRIERS
284 2899d9de Iustin Pop
285 04fa07f2 Manuel Franceschini
# file backend driver
286 04fa07f2 Manuel Franceschini
FD_LOOP = "loop"
287 04fa07f2 Manuel Franceschini
FD_BLKTAP = "blktap"
288 a1f445d3 Iustin Pop
289 a1f445d3 Iustin Pop
# the set of drbd-like disk types
290 abdf0113 Iustin Pop
LDS_DRBD = frozenset([LD_DRBD8])
291 fe96220b Iustin Pop
292 08db7c5c Iustin Pop
# disk access mode
293 24991749 Iustin Pop
DISK_RDONLY = "ro"
294 24991749 Iustin Pop
DISK_RDWR = "rw"
295 08db7c5c Iustin Pop
DISK_ACCESS_SET = frozenset([DISK_RDONLY, DISK_RDWR])
296 08db7c5c Iustin Pop
297 a9e0c397 Iustin Pop
# disk replacement mode
298 cfacfd6e Iustin Pop
REPLACE_DISK_PRI = "replace_on_primary"    # replace disks on primary
299 cfacfd6e Iustin Pop
REPLACE_DISK_SEC = "replace_on_secondary"  # replace disks on secondary
300 cfacfd6e Iustin Pop
REPLACE_DISK_CHG = "replace_new_secondary" # change secondary node
301 942be002 Michael Hanselmann
REPLACE_DISK_AUTO = "replace_auto"
302 a9e0c397 Iustin Pop
303 f6d9a522 Guido Trotter
# lock recalculate mode
304 f6d9a522 Guido Trotter
LOCKS_REPLACE = 'replace'
305 9513b6ab Guido Trotter
LOCKS_APPEND = 'append'
306 f6d9a522 Guido Trotter
307 2f6eebee Guido Trotter
# instance creation modes
308 a8083063 Iustin Pop
INSTANCE_CREATE = "create"
309 a8083063 Iustin Pop
INSTANCE_IMPORT = "import"
310 a8083063 Iustin Pop
311 a8083063 Iustin Pop
DISK_TEMPLATES = frozenset([DT_DISKLESS, DT_PLAIN,
312 04fa07f2 Manuel Franceschini
                            DT_DRBD8, DT_FILE])
313 04fa07f2 Manuel Franceschini
314 04fa07f2 Manuel Franceschini
FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP])
315 a8083063 Iustin Pop
316 a8083063 Iustin Pop
# import/export config options
317 a8083063 Iustin Pop
INISECT_EXP = "export"
318 a8083063 Iustin Pop
INISECT_INS = "instance"
319 3c8954ad Iustin Pop
INISECT_HYP = "hypervisor"
320 3c8954ad Iustin Pop
INISECT_BEP = "backend"
321 38242904 Iustin Pop
322 24991749 Iustin Pop
# dynamic device modification
323 24991749 Iustin Pop
324 24991749 Iustin Pop
DDM_ADD = 'add'
325 24991749 Iustin Pop
DDM_REMOVE = 'remove'
326 24991749 Iustin Pop
327 38242904 Iustin Pop
# common exit codes
328 a5bc662a Iustin Pop
EXIT_SUCCESS = 0
329 438b45d4 Michael Hanselmann
EXIT_FAILURE = 1
330 46479775 Guido Trotter
EXIT_NOTCLUSTER = 5
331 38242904 Iustin Pop
EXIT_NOTMASTER = 11
332 619fdc8e Iustin Pop
EXIT_NODESETUP_ERROR = 12
333 a5bc662a Iustin Pop
EXIT_CONFIRMATION = 13 # need user confirmation
334 3f71b464 Guido Trotter
EXIT_NOTCANDIDATE = 14
335 cf62a272 Michael Hanselmann
336 5c947f38 Iustin Pop
# tags
337 5c947f38 Iustin Pop
TAG_CLUSTER = "cluster"
338 5c947f38 Iustin Pop
TAG_NODE = "node"
339 5c947f38 Iustin Pop
TAG_INSTANCE = "instance"
340 5c947f38 Iustin Pop
MAX_TAG_LEN = 128
341 5c947f38 Iustin Pop
MAX_TAGS_PER_OBJ = 4096
342 5c947f38 Iustin Pop
343 cf62a272 Michael Hanselmann
# others
344 cf62a272 Michael Hanselmann
DEFAULT_BRIDGE = "xen-br0"
345 24b0d752 Iustin Pop
SYNC_SPEED = 60 * 1024
346 aa4260ca Iustin Pop
LOCALHOST_IP_ADDRESS = "127.0.0.1"
347 16abfbc2 Alexander Schreiber
TCP_PING_TIMEOUT = 10
348 7900ed01 Iustin Pop
GANETI_RUNAS = "root"
349 d63e148a Manuel Franceschini
DEFAULT_VG = "xenvg"
350 31a853d2 Iustin Pop
BIND_ADDRESS_GLOBAL = "0.0.0.0"
351 8d1a2a64 Michael Hanselmann
MIN_VG_SIZE = 20480
352 c5e489f7 Iustin Pop
DEFAULT_MAC_PREFIX = "aa:00:00"
353 3736cb6b Iustin Pop
LVM_STRIPECOUNT = _autoconf.LVM_STRIPECOUNT
354 88cd08aa Guido Trotter
# default maximum instance wait time, in seconds.
355 88cd08aa Guido Trotter
DEFAULT_SHUTDOWN_TIMEOUT = 120
356 313b2dd4 Michael Hanselmann
NODE_MAX_CLOCK_SKEW = 150
357 7900ed01 Iustin Pop
358 6bb65e3a Guido Trotter
# runparts results
359 6bb65e3a Guido Trotter
(RUNPARTS_SKIP,
360 6bb65e3a Guido Trotter
 RUNPARTS_RUN,
361 6bb65e3a Guido Trotter
 RUNPARTS_ERR) = range(3)
362 6bb65e3a Guido Trotter
363 6bb65e3a Guido Trotter
RUNPARTS_STATUS = frozenset([RUNPARTS_SKIP, RUNPARTS_RUN, RUNPARTS_ERR])
364 6bb65e3a Guido Trotter
365 12bce260 Michael Hanselmann
# RPC constants
366 12bce260 Michael Hanselmann
(RPC_ENCODING_NONE,
367 12bce260 Michael Hanselmann
 RPC_ENCODING_ZLIB_BASE64) = range(2)
368 12bce260 Michael Hanselmann
369 ded1c679 Guido Trotter
# os related constants
370 ded1c679 Guido Trotter
OS_SCRIPT_CREATE = 'create'
371 ded1c679 Guido Trotter
OS_SCRIPT_IMPORT = 'import'
372 ded1c679 Guido Trotter
OS_SCRIPT_EXPORT = 'export'
373 ded1c679 Guido Trotter
OS_SCRIPT_RENAME = 'rename'
374 16653425 Iustin Pop
OS_SCRIPTS = frozenset([OS_SCRIPT_CREATE, OS_SCRIPT_IMPORT,
375 ded1c679 Guido Trotter
                        OS_SCRIPT_EXPORT, OS_SCRIPT_RENAME])
376 37482e7b Guido Trotter
377 b6b45e0d Guido Trotter
OS_API_FILE = 'ganeti_api_version'
378 6d79896b Guido Trotter
OS_VARIANTS_FILE = 'variants.list'
379 b6b45e0d Guido Trotter
380 70d9e3d8 Iustin Pop
# ssh constants
381 553bd93f Vitaly Kuznetsov
SSH_CONFIG_DIR = _autoconf.SSH_CONFIG_DIR
382 553bd93f Vitaly Kuznetsov
SSH_HOST_DSA_PRIV = SSH_CONFIG_DIR + "/ssh_host_dsa_key"
383 70d9e3d8 Iustin Pop
SSH_HOST_DSA_PUB = SSH_HOST_DSA_PRIV + ".pub"
384 553bd93f Vitaly Kuznetsov
SSH_HOST_RSA_PRIV = SSH_CONFIG_DIR + "/ssh_host_rsa_key"
385 70d9e3d8 Iustin Pop
SSH_HOST_RSA_PUB = SSH_HOST_RSA_PRIV + ".pub"
386 fff33d70 Michael Hanselmann
SSH = "ssh"
387 fff33d70 Michael Hanselmann
SCP = "scp"
388 007a2f3e Alexander Schreiber
389 007a2f3e Alexander Schreiber
# reboot types
390 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_SOFT = "soft"
391 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_HARD = "hard"
392 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_FULL = "full"
393 2584d4a4 Alexander Schreiber
394 00f91f29 Iustin Pop
REBOOT_TYPES = frozenset([INSTANCE_REBOOT_SOFT,
395 00f91f29 Iustin Pop
                          INSTANCE_REBOOT_HARD,
396 00f91f29 Iustin Pop
                          INSTANCE_REBOOT_FULL])
397 00f91f29 Iustin Pop
398 a5728081 Guido Trotter
VTYPE_STRING = 'string'
399 a5728081 Guido Trotter
VTYPE_BOOL = 'bool'
400 a5728081 Guido Trotter
VTYPE_SIZE = 'size' # size, in MiBs
401 a5728081 Guido Trotter
VTYPE_INT = 'int'
402 a5728081 Guido Trotter
ENFORCEABLE_TYPES = frozenset([
403 a5728081 Guido Trotter
                      VTYPE_STRING,
404 a5728081 Guido Trotter
                      VTYPE_BOOL,
405 a5728081 Guido Trotter
                      VTYPE_SIZE,
406 a5728081 Guido Trotter
                      VTYPE_INT,
407 a5728081 Guido Trotter
                      ])
408 a5728081 Guido Trotter
409 e64b8beb Iustin Pop
# HV parameter names (global namespace)
410 e64b8beb Iustin Pop
HV_BOOT_ORDER = "boot_order"
411 e64b8beb Iustin Pop
HV_CDROM_IMAGE_PATH = "cdrom_image_path"
412 e64b8beb Iustin Pop
HV_NIC_TYPE = "nic_type"
413 e64b8beb Iustin Pop
HV_DISK_TYPE = "disk_type"
414 e64b8beb Iustin Pop
HV_VNC_BIND_ADDRESS = "vnc_bind_address"
415 6e6bb8d5 Guido Trotter
HV_VNC_PASSWORD_FILE = "vnc_password_file"
416 8b2d1013 Guido Trotter
HV_VNC_TLS = "vnc_tls"
417 8b2d1013 Guido Trotter
HV_VNC_X509 = "vnc_x509_path"
418 8b2d1013 Guido Trotter
HV_VNC_X509_VERIFY = "vnc_x509_verify"
419 e64b8beb Iustin Pop
HV_ACPI = "acpi"
420 e64b8beb Iustin Pop
HV_PAE = "pae"
421 2f2dbb4b Jun Futagawa
HV_USE_BOOTLOADER = "use_bootloader"
422 2f2dbb4b Jun Futagawa
HV_BOOTLOADER_ARGS = "bootloader_args"
423 2f2dbb4b Jun Futagawa
HV_BOOTLOADER_PATH = "bootloader_path"
424 f9d6542d Iustin Pop
HV_KERNEL_ARGS = "kernel_args"
425 e64b8beb Iustin Pop
HV_KERNEL_PATH = "kernel_path"
426 e64b8beb Iustin Pop
HV_INITRD_PATH = "initrd_path"
427 074ca009 Guido Trotter
HV_ROOT_PATH = "root_path"
428 a2faf9ee Guido Trotter
HV_SERIAL_CONSOLE = "serial_console"
429 11344a50 Guido Trotter
HV_USB_MOUSE = "usb_mouse"
430 09ea8710 Iustin Pop
HV_DEVICE_MODEL = "device_model"
431 48297fa2 Iustin Pop
HV_INIT_SCRIPT = "init_script"
432 78411c60 Iustin Pop
HV_MIGRATION_PORT = "migration_port"
433 6b970cef Jun Futagawa
HV_USE_LOCALTIME = "use_localtime"
434 19572932 Iustin Pop
HV_DISK_CACHE = "disk_cache"
435 3424767f Guido Trotter
HV_SECURITY_MODEL = "security_model"
436 3424767f Guido Trotter
HV_SECURITY_DOMAIN = "security_domain"
437 7ba594c0 Guido Trotter
HV_KVM_FLAG = "kvm_flag"
438 e64b8beb Iustin Pop
439 a5728081 Guido Trotter
HVS_PARAMETER_TYPES = {
440 a5728081 Guido Trotter
  HV_BOOT_ORDER: VTYPE_STRING,
441 a5728081 Guido Trotter
  HV_CDROM_IMAGE_PATH: VTYPE_STRING,
442 a5728081 Guido Trotter
  HV_NIC_TYPE: VTYPE_STRING,
443 a5728081 Guido Trotter
  HV_DISK_TYPE: VTYPE_STRING,
444 6e6bb8d5 Guido Trotter
  HV_VNC_PASSWORD_FILE: VTYPE_STRING,
445 a5728081 Guido Trotter
  HV_VNC_BIND_ADDRESS: VTYPE_STRING,
446 a5728081 Guido Trotter
  HV_VNC_TLS: VTYPE_BOOL,
447 a5728081 Guido Trotter
  HV_VNC_X509: VTYPE_STRING,
448 a5728081 Guido Trotter
  HV_VNC_X509_VERIFY: VTYPE_BOOL,
449 a5728081 Guido Trotter
  HV_ACPI: VTYPE_BOOL,
450 a5728081 Guido Trotter
  HV_PAE: VTYPE_BOOL,
451 2f2dbb4b Jun Futagawa
  HV_USE_BOOTLOADER: VTYPE_BOOL,
452 2f2dbb4b Jun Futagawa
  HV_BOOTLOADER_PATH: VTYPE_STRING,
453 2f2dbb4b Jun Futagawa
  HV_BOOTLOADER_ARGS: VTYPE_STRING,
454 a5728081 Guido Trotter
  HV_KERNEL_PATH: VTYPE_STRING,
455 f9d6542d Iustin Pop
  HV_KERNEL_ARGS: VTYPE_STRING,
456 a5728081 Guido Trotter
  HV_INITRD_PATH: VTYPE_STRING,
457 a5728081 Guido Trotter
  HV_ROOT_PATH: VTYPE_STRING,
458 a5728081 Guido Trotter
  HV_SERIAL_CONSOLE: VTYPE_BOOL,
459 a5728081 Guido Trotter
  HV_USB_MOUSE: VTYPE_STRING,
460 09ea8710 Iustin Pop
  HV_DEVICE_MODEL: VTYPE_STRING,
461 48297fa2 Iustin Pop
  HV_INIT_SCRIPT: VTYPE_STRING,
462 78411c60 Iustin Pop
  HV_MIGRATION_PORT: VTYPE_INT,
463 6b970cef Jun Futagawa
  HV_USE_LOCALTIME: VTYPE_BOOL,
464 19572932 Iustin Pop
  HV_DISK_CACHE: VTYPE_STRING,
465 3424767f Guido Trotter
  HV_SECURITY_MODEL: VTYPE_STRING,
466 3424767f Guido Trotter
  HV_SECURITY_DOMAIN: VTYPE_STRING,
467 7ba594c0 Guido Trotter
  HV_KVM_FLAG: VTYPE_STRING,
468 a5728081 Guido Trotter
  }
469 a5728081 Guido Trotter
470 a5728081 Guido Trotter
HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
471 5018a335 Iustin Pop
472 e64b8beb Iustin Pop
# BE parameter names
473 cd3ab26e Iustin Pop
BE_MEMORY = "memory"
474 e64b8beb Iustin Pop
BE_VCPUS = "vcpus"
475 c0f2b229 Iustin Pop
BE_AUTO_BALANCE = "auto_balance"
476 e64b8beb Iustin Pop
477 a5728081 Guido Trotter
BES_PARAMETER_TYPES = {
478 a5728081 Guido Trotter
    BE_MEMORY: VTYPE_SIZE,
479 a5728081 Guido Trotter
    BE_VCPUS: VTYPE_INT,
480 a5728081 Guido Trotter
    BE_AUTO_BALANCE: VTYPE_BOOL,
481 a5728081 Guido Trotter
    }
482 a5728081 Guido Trotter
483 a5728081 Guido Trotter
BES_PARAMETERS = frozenset(BES_PARAMETER_TYPES.keys())
484 cd3ab26e Iustin Pop
485 4ef7f423 Guido Trotter
# Instance Parameters Profile
486 4ef7f423 Guido Trotter
PP_DEFAULT = "default"
487 e64b8beb Iustin Pop
488 ac061be9 Guido Trotter
NIC_MODE = "mode"
489 ac061be9 Guido Trotter
NIC_LINK = "link"
490 ac061be9 Guido Trotter
491 ac061be9 Guido Trotter
NIC_MODE_BRIDGED = "bridged"
492 ac061be9 Guido Trotter
NIC_MODE_ROUTED = "routed"
493 ac061be9 Guido Trotter
494 ac061be9 Guido Trotter
NIC_VALID_MODES = frozenset([NIC_MODE_BRIDGED, NIC_MODE_ROUTED])
495 ac061be9 Guido Trotter
496 ac061be9 Guido Trotter
NICS_PARAMETER_TYPES = {
497 ac061be9 Guido Trotter
    NIC_MODE: VTYPE_STRING,
498 ac061be9 Guido Trotter
    NIC_LINK: VTYPE_STRING,
499 ac061be9 Guido Trotter
    }
500 ac061be9 Guido Trotter
501 ac061be9 Guido Trotter
NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys())
502 e64b8beb Iustin Pop
503 2584d4a4 Alexander Schreiber
# Hypervisor constants
504 00cd937c Iustin Pop
HT_XEN_PVM = "xen-pvm"
505 2584d4a4 Alexander Schreiber
HT_FAKE = "fake"
506 00cd937c Iustin Pop
HT_XEN_HVM = "xen-hvm"
507 550e49b9 Guido Trotter
HT_KVM = "kvm"
508 48297fa2 Iustin Pop
HT_CHROOT = "chroot"
509 48297fa2 Iustin Pop
HYPER_TYPES = frozenset([HT_XEN_PVM, HT_FAKE, HT_XEN_HVM, HT_KVM, HT_CHROOT])
510 fd4daa3a Guido Trotter
HTS_REQ_PORT = frozenset([HT_XEN_HVM, HT_KVM])
511 2584d4a4 Alexander Schreiber
512 377d74c9 Guido Trotter
VNC_BASE_PORT = 5900
513 131178b9 Luca Bigliardi
VNC_PASSWORD_FILE = CONF_DIR + "/vnc-cluster-password"
514 31a853d2 Iustin Pop
VNC_DEFAULT_BIND_ADDRESS = '0.0.0.0'
515 e54c4c5e Guido Trotter
516 835528af Iustin Pop
# NIC types
517 d08f6067 Guido Trotter
HT_NIC_RTL8139 = "rtl8139"
518 d08f6067 Guido Trotter
HT_NIC_NE2K_PCI = "ne2k_pci"
519 d08f6067 Guido Trotter
HT_NIC_NE2K_ISA = "ne2k_isa"
520 43440815 Guido Trotter
HT_NIC_I82551 = "i82551"
521 43440815 Guido Trotter
HT_NIC_I85557B = "i82557b"
522 43440815 Guido Trotter
HT_NIC_I8259ER = "i82559er"
523 43440815 Guido Trotter
HT_NIC_PCNET = "pcnet"
524 43440815 Guido Trotter
HT_NIC_E1000 = "e1000"
525 d08f6067 Guido Trotter
HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
526 43440815 Guido Trotter
527 d08f6067 Guido Trotter
HT_HVM_VALID_NIC_TYPES = frozenset([HT_NIC_RTL8139, HT_NIC_NE2K_PCI,
528 d08f6067 Guido Trotter
                                    HT_NIC_NE2K_ISA, HT_NIC_PARAVIRTUAL])
529 43440815 Guido Trotter
HT_KVM_VALID_NIC_TYPES = frozenset([HT_NIC_RTL8139, HT_NIC_NE2K_PCI,
530 43440815 Guido Trotter
                                    HT_NIC_NE2K_ISA, HT_NIC_I82551,
531 43440815 Guido Trotter
                                    HT_NIC_I85557B, HT_NIC_I8259ER,
532 43440815 Guido Trotter
                                    HT_NIC_PCNET, HT_NIC_E1000,
533 43440815 Guido Trotter
                                    HT_NIC_PARAVIRTUAL])
534 835528af Iustin Pop
# Disk types
535 835528af Iustin Pop
HT_DISK_IOEMU = "ioemu"
536 835528af Iustin Pop
HT_DISK_IDE = "ide"
537 835528af Iustin Pop
HT_DISK_SCSI = "scsi"
538 835528af Iustin Pop
HT_DISK_SD = "sd"
539 835528af Iustin Pop
HT_DISK_MTD = "mtd"
540 835528af Iustin Pop
HT_DISK_PFLASH = "pflash"
541 835528af Iustin Pop
542 19572932 Iustin Pop
HT_CACHE_DEFAULT = "default"
543 19572932 Iustin Pop
HT_CACHE_NONE = "none"
544 19572932 Iustin Pop
HT_CACHE_WTHROUGH = "writethrough"
545 19572932 Iustin Pop
HT_CACHE_WBACK = "writeback"
546 19572932 Iustin Pop
HT_VALID_CACHE_TYPES = frozenset([HT_CACHE_DEFAULT,
547 19572932 Iustin Pop
                                  HT_CACHE_NONE,
548 19572932 Iustin Pop
                                  HT_CACHE_WTHROUGH,
549 19572932 Iustin Pop
                                  HT_CACHE_WBACK])
550 19572932 Iustin Pop
551 835528af Iustin Pop
HT_HVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IOEMU])
552 43440815 Guido Trotter
HT_KVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IDE,
553 43440815 Guido Trotter
                                     HT_DISK_SCSI, HT_DISK_SD, HT_DISK_MTD,
554 43440815 Guido Trotter
                                     HT_DISK_PFLASH])
555 b894f5a8 Alexander Schreiber
556 835528af Iustin Pop
# Mouse types:
557 835528af Iustin Pop
HT_MOUSE_MOUSE = "mouse"
558 835528af Iustin Pop
HT_MOUSE_TABLET = "tablet"
559 835528af Iustin Pop
560 835528af Iustin Pop
HT_KVM_VALID_MOUSE_TYPES = frozenset([HT_MOUSE_MOUSE, HT_MOUSE_TABLET])
561 835528af Iustin Pop
562 835528af Iustin Pop
# Boot order
563 835528af Iustin Pop
HT_BO_CDROM = "cdrom"
564 835528af Iustin Pop
HT_BO_DISK = "disk"
565 835528af Iustin Pop
HT_BO_NETWORK = "network"
566 835528af Iustin Pop
567 835528af Iustin Pop
HT_KVM_VALID_BO_TYPES = frozenset([HT_BO_CDROM, HT_BO_DISK, HT_BO_NETWORK])
568 835528af Iustin Pop
569 3424767f Guido Trotter
# Security models
570 3424767f Guido Trotter
HT_SM_NONE = "none"
571 3424767f Guido Trotter
HT_SM_USER = "user"
572 3424767f Guido Trotter
HT_SM_POOL = "pool"
573 3424767f Guido Trotter
574 3424767f Guido Trotter
HT_KVM_VALID_SM_TYPES = frozenset([HT_SM_NONE, HT_SM_USER, HT_SM_POOL])
575 3424767f Guido Trotter
576 7ba594c0 Guido Trotter
# Kvm flag values
577 7ba594c0 Guido Trotter
HT_KVM_ENABLED = "enabled"
578 7ba594c0 Guido Trotter
HT_KVM_DISABLED = "disabled"
579 7ba594c0 Guido Trotter
580 7ba594c0 Guido Trotter
HT_KVM_FLAG_VALUES = frozenset([HT_KVM_ENABLED, HT_KVM_DISABLED])
581 7ba594c0 Guido Trotter
582 e54c4c5e Guido Trotter
# Cluster Verify steps
583 e54c4c5e Guido Trotter
VERIFY_NPLUSONE_MEM = 'nplusone_mem'
584 e54c4c5e Guido Trotter
VERIFY_OPTIONAL_CHECKS = frozenset([VERIFY_NPLUSONE_MEM])
585 e54c4c5e Guido Trotter
586 25361b9a Iustin Pop
# Node verify constants
587 25361b9a Iustin Pop
NV_FILELIST = "filelist"
588 25361b9a Iustin Pop
NV_HVINFO = "hvinfo"
589 25361b9a Iustin Pop
NV_HYPERVISOR = "hypervisor"
590 25361b9a Iustin Pop
NV_INSTANCELIST = "instancelist"
591 25361b9a Iustin Pop
NV_NODELIST = "nodelist"
592 25361b9a Iustin Pop
NV_NODENETTEST = "node-net-test"
593 25361b9a Iustin Pop
NV_VERSION = "version"
594 25361b9a Iustin Pop
NV_VGLIST = "vglist"
595 d091393e Iustin Pop
NV_LVLIST = "lvlist"
596 d091393e Iustin Pop
NV_PVLIST = "pvlist"
597 6d2e83d5 Iustin Pop
NV_DRBDLIST = "drbd-list"
598 7c0aa8e9 Iustin Pop
NV_NODESETUP = "nodesetup"
599 313b2dd4 Michael Hanselmann
NV_TIME = "time"
600 25361b9a Iustin Pop
601 b98bf262 Michael Hanselmann
# SSL certificate check constants (in days)
602 b98bf262 Michael Hanselmann
SSL_CERT_EXPIRATION_WARN = 30
603 b98bf262 Michael Hanselmann
SSL_CERT_EXPIRATION_ERROR = 7
604 b98bf262 Michael Hanselmann
605 d61df03e Iustin Pop
# Allocator framework constants
606 77031881 Iustin Pop
IALLOCATOR_VERSION = 2
607 298fe380 Iustin Pop
IALLOCATOR_DIR_IN = "in"
608 298fe380 Iustin Pop
IALLOCATOR_DIR_OUT = "out"
609 298fe380 Iustin Pop
IALLOCATOR_MODE_ALLOC = "allocate"
610 298fe380 Iustin Pop
IALLOCATOR_MODE_RELOC = "relocate"
611 7f60a422 Iustin Pop
IALLOCATOR_MODE_MEVAC = "multi-evacuate"
612 298fe380 Iustin Pop
IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH
613 5f33b613 Michael Hanselmann
614 f1da30e6 Michael Hanselmann
# Job queue
615 f1da30e6 Michael Hanselmann
JOB_QUEUE_VERSION = 1
616 f1da30e6 Michael Hanselmann
JOB_QUEUE_LOCK_FILE = QUEUE_DIR + "/lock"
617 f1da30e6 Michael Hanselmann
JOB_QUEUE_VERSION_FILE = QUEUE_DIR + "/version"
618 f1da30e6 Michael Hanselmann
JOB_QUEUE_SERIAL_FILE = QUEUE_DIR + "/serial"
619 0cb94105 Michael Hanselmann
JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive"
620 686d7433 Iustin Pop
JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain"
621 f87b405e Michael Hanselmann
JOB_QUEUE_SIZE_HARD_LIMIT = 5000
622 f87b405e Michael Hanselmann
JOB_QUEUE_SIZE_SOFT_LIMIT = JOB_QUEUE_SIZE_HARD_LIMIT * 0.8
623 f1da30e6 Michael Hanselmann
624 bac5ffc3 Oleksiy Mishchenko
JOB_ID_TEMPLATE = r"\d+"
625 bac5ffc3 Oleksiy Mishchenko
626 5c735209 Iustin Pop
# unchanged job return
627 5c735209 Iustin Pop
JOB_NOTCHANGED = "nochange"
628 5c735209 Iustin Pop
629 5f33b613 Michael Hanselmann
# Job status
630 5f33b613 Michael Hanselmann
JOB_STATUS_QUEUED = "queued"
631 e92376d7 Iustin Pop
JOB_STATUS_WAITLOCK = "waiting"
632 fbf0262f Michael Hanselmann
JOB_STATUS_CANCELING = "canceling"
633 5f33b613 Michael Hanselmann
JOB_STATUS_RUNNING = "running"
634 5f33b613 Michael Hanselmann
JOB_STATUS_CANCELED = "canceled"
635 5f33b613 Michael Hanselmann
JOB_STATUS_SUCCESS = "success"
636 5f33b613 Michael Hanselmann
JOB_STATUS_ERROR = "error"
637 5f33b613 Michael Hanselmann
638 34327f51 Iustin Pop
# OpCode status
639 34327f51 Iustin Pop
# not yet finalized
640 5f33b613 Michael Hanselmann
OP_STATUS_QUEUED = "queued"
641 e92376d7 Iustin Pop
OP_STATUS_WAITLOCK = "waiting"
642 fbf0262f Michael Hanselmann
OP_STATUS_CANCELING = "canceling"
643 5f33b613 Michael Hanselmann
OP_STATUS_RUNNING = "running"
644 34327f51 Iustin Pop
# finalized
645 4cb1d919 Michael Hanselmann
OP_STATUS_CANCELED = "canceled"
646 5f33b613 Michael Hanselmann
OP_STATUS_SUCCESS = "success"
647 5f33b613 Michael Hanselmann
OP_STATUS_ERROR = "error"
648 34327f51 Iustin Pop
OPS_FINALIZED = frozenset([OP_STATUS_CANCELED,
649 34327f51 Iustin Pop
                           OP_STATUS_SUCCESS,
650 34327f51 Iustin Pop
                           OP_STATUS_ERROR])
651 f1048938 Iustin Pop
652 f1048938 Iustin Pop
# Execution log types
653 f1048938 Iustin Pop
ELOG_MESSAGE = "message"
654 f1048938 Iustin Pop
ELOG_PROGRESS = "progress"
655 d4104181 Iustin Pop
656 c5e489f7 Iustin Pop
# max dynamic devices
657 24991749 Iustin Pop
MAX_NICS = 8
658 24991749 Iustin Pop
MAX_DISKS = 16
659 24991749 Iustin Pop
660 93384844 Iustin Pop
# SSCONF keys
661 93384844 Iustin Pop
SS_CLUSTER_NAME = "cluster_name"
662 5d60b3bd Iustin Pop
SS_CLUSTER_TAGS = "cluster_tags"
663 93384844 Iustin Pop
SS_FILE_STORAGE_DIR = "file_storage_dir"
664 f56618e0 Iustin Pop
SS_MASTER_CANDIDATES = "master_candidates"
665 8113a52e Luca Bigliardi
SS_MASTER_CANDIDATES_IPS = "master_candidates_ips"
666 93384844 Iustin Pop
SS_MASTER_IP = "master_ip"
667 93384844 Iustin Pop
SS_MASTER_NETDEV = "master_netdev"
668 93384844 Iustin Pop
SS_MASTER_NODE = "master_node"
669 93384844 Iustin Pop
SS_NODE_LIST = "node_list"
670 f9780ccd Luca Bigliardi
SS_NODE_PRIMARY_IPS = "node_primary_ips"
671 f9780ccd Luca Bigliardi
SS_NODE_SECONDARY_IPS = "node_secondary_ips"
672 a3316e4a Iustin Pop
SS_OFFLINE_NODES = "offline_nodes"
673 81a49123 Iustin Pop
SS_ONLINE_NODES = "online_nodes"
674 81a49123 Iustin Pop
SS_INSTANCE_LIST = "instance_list"
675 8a113c7a Iustin Pop
SS_RELEASE_VERSION = "release_version"
676 4f7a6a10 Iustin Pop
SS_HYPERVISOR_LIST = "hypervisor_list"
677 5c465a95 Iustin Pop
SS_MAINTAIN_NODE_HEALTH = "maintain_node_health"
678 0fbae49a Balazs Lecz
SS_UID_POOL = "uid_pool"
679 93384844 Iustin Pop
680 7888a614 Alexander Schreiber
# cluster wide default parameters
681 7888a614 Alexander Schreiber
DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM
682 7888a614 Alexander Schreiber
683 7888a614 Alexander Schreiber
HVC_DEFAULTS = {
684 bd0ff7c2 Iustin Pop
  HT_XEN_PVM: {
685 2f2dbb4b Jun Futagawa
    HV_USE_BOOTLOADER: False,
686 2f2dbb4b Jun Futagawa
    HV_BOOTLOADER_PATH: XEN_BOOTLOADER,
687 2f2dbb4b Jun Futagawa
    HV_BOOTLOADER_ARGS: '',
688 bd0ff7c2 Iustin Pop
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-xenU",
689 a5728081 Guido Trotter
    HV_INITRD_PATH: '',
690 1cd8141c Guido Trotter
    HV_ROOT_PATH: '/dev/sda1',
691 f9d6542d Iustin Pop
    HV_KERNEL_ARGS: 'ro',
692 78411c60 Iustin Pop
    HV_MIGRATION_PORT: 8002,
693 bd0ff7c2 Iustin Pop
    },
694 bd0ff7c2 Iustin Pop
  HT_XEN_HVM: {
695 bd0ff7c2 Iustin Pop
    HV_BOOT_ORDER: "cd",
696 a5728081 Guido Trotter
    HV_CDROM_IMAGE_PATH: '',
697 d08f6067 Guido Trotter
    HV_NIC_TYPE: HT_NIC_RTL8139,
698 43440815 Guido Trotter
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
699 bd0ff7c2 Iustin Pop
    HV_VNC_BIND_ADDRESS: '0.0.0.0',
700 6e6bb8d5 Guido Trotter
    HV_VNC_PASSWORD_FILE: VNC_PASSWORD_FILE,
701 bd0ff7c2 Iustin Pop
    HV_ACPI: True,
702 bd0ff7c2 Iustin Pop
    HV_PAE: True,
703 e2ee1cea Iustin Pop
    HV_KERNEL_PATH: "/usr/lib/xen/boot/hvmloader",
704 09ea8710 Iustin Pop
    HV_DEVICE_MODEL: "/usr/lib/xen/bin/qemu-dm",
705 78411c60 Iustin Pop
    HV_MIGRATION_PORT: 8002,
706 6b970cef Jun Futagawa
    HV_USE_LOCALTIME: False,
707 bd0ff7c2 Iustin Pop
    },
708 bd0ff7c2 Iustin Pop
  HT_KVM: {
709 bd0ff7c2 Iustin Pop
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-kvmU",
710 a5728081 Guido Trotter
    HV_INITRD_PATH: '',
711 f9d6542d Iustin Pop
    HV_KERNEL_ARGS: 'ro',
712 1cd8141c Guido Trotter
    HV_ROOT_PATH: '/dev/vda1',
713 bd0ff7c2 Iustin Pop
    HV_ACPI: True,
714 bd0ff7c2 Iustin Pop
    HV_SERIAL_CONSOLE: True,
715 a5728081 Guido Trotter
    HV_VNC_BIND_ADDRESS: '',
716 8b2d1013 Guido Trotter
    HV_VNC_TLS: False,
717 8b2d1013 Guido Trotter
    HV_VNC_X509: '',
718 8b2d1013 Guido Trotter
    HV_VNC_X509_VERIFY: False,
719 6e6bb8d5 Guido Trotter
    HV_VNC_PASSWORD_FILE: '',
720 a5728081 Guido Trotter
    HV_CDROM_IMAGE_PATH: '',
721 835528af Iustin Pop
    HV_BOOT_ORDER: HT_BO_DISK,
722 43440815 Guido Trotter
    HV_NIC_TYPE: HT_NIC_PARAVIRTUAL,
723 43440815 Guido Trotter
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
724 a5728081 Guido Trotter
    HV_USB_MOUSE: '',
725 3c075436 Iustin Pop
    HV_MIGRATION_PORT: 8102,
726 6b970cef Jun Futagawa
    HV_USE_LOCALTIME: False,
727 19572932 Iustin Pop
    HV_DISK_CACHE: HT_CACHE_DEFAULT,
728 d19d94db Guido Trotter
    HV_SECURITY_MODEL: HT_SM_NONE,
729 d19d94db Guido Trotter
    HV_SECURITY_DOMAIN: '',
730 7ba594c0 Guido Trotter
    HV_KVM_FLAG: "",
731 bd0ff7c2 Iustin Pop
    },
732 bd0ff7c2 Iustin Pop
  HT_FAKE: {
733 bd0ff7c2 Iustin Pop
    },
734 48297fa2 Iustin Pop
  HT_CHROOT: {
735 48297fa2 Iustin Pop
    HV_INIT_SCRIPT: "/ganeti-chroot",
736 48297fa2 Iustin Pop
    },
737 bd0ff7c2 Iustin Pop
  }
738 7888a614 Alexander Schreiber
739 7736a5f2 Iustin Pop
HVC_GLOBALS = frozenset([
740 7736a5f2 Iustin Pop
  HV_MIGRATION_PORT,
741 7736a5f2 Iustin Pop
  ])
742 7736a5f2 Iustin Pop
743 7888a614 Alexander Schreiber
BEC_DEFAULTS = {
744 bd0ff7c2 Iustin Pop
  BE_MEMORY: 128,
745 bd0ff7c2 Iustin Pop
  BE_VCPUS: 1,
746 bd0ff7c2 Iustin Pop
  BE_AUTO_BALANCE: True,
747 bd0ff7c2 Iustin Pop
  }
748 c3e618cc Guido Trotter
749 ac061be9 Guido Trotter
NICC_DEFAULTS = {
750 ac061be9 Guido Trotter
  NIC_MODE: NIC_MODE_BRIDGED,
751 ac061be9 Guido Trotter
  NIC_LINK: DEFAULT_BRIDGE,
752 ac061be9 Guido Trotter
  }
753 ac061be9 Guido Trotter
754 c3e618cc Guido Trotter
MASTER_POOL_SIZE_DEFAULT = 10
755 ea1518af Guido Trotter
756 ea1518af Guido Trotter
CONFD_PROTOCOL_VERSION = 1
757 ea1518af Guido Trotter
758 09444532 Guido Trotter
CONFD_REQ_PING = 0
759 ea1518af Guido Trotter
CONFD_REQ_NODE_ROLE_BYNAME = 1
760 ea1518af Guido Trotter
CONFD_REQ_NODE_PIP_BY_INSTANCE_IP = 2
761 48166551 Guido Trotter
CONFD_REQ_CLUSTER_MASTER = 3
762 efbb4fd2 Luca Bigliardi
CONFD_REQ_NODE_PIP_LIST = 4
763 efbb4fd2 Luca Bigliardi
CONFD_REQ_MC_PIP_LIST = 5
764 d01ae714 Luca Bigliardi
CONFD_REQ_INSTANCES_IPS_LIST = 6
765 ea1518af Guido Trotter
766 19351457 Guido Trotter
# Confd request query fields. These are used to narrow down queries.
767 19351457 Guido Trotter
# These must be strings rather than integers, because json-encoding
768 19351457 Guido Trotter
# converts them to strings anyway, as they're used as dict-keys.
769 19351457 Guido Trotter
CONFD_REQQ_LINK = "0"
770 19351457 Guido Trotter
CONFD_REQQ_IP = "1"
771 19351457 Guido Trotter
CONFD_REQQ_IPLIST = "2"
772 250554a9 Guido Trotter
CONFD_REQQ_FIELDS = "3"
773 250554a9 Guido Trotter
774 250554a9 Guido Trotter
CONFD_REQFIELD_NAME = "0"
775 250554a9 Guido Trotter
CONFD_REQFIELD_IP = "1"
776 43dc8496 Guido Trotter
CONFD_REQFIELD_MNODE_PIP = "2"
777 19351457 Guido Trotter
778 ea1518af Guido Trotter
CONFD_REQS = frozenset([
779 09444532 Guido Trotter
  CONFD_REQ_PING,
780 ea1518af Guido Trotter
  CONFD_REQ_NODE_ROLE_BYNAME,
781 ea1518af Guido Trotter
  CONFD_REQ_NODE_PIP_BY_INSTANCE_IP,
782 48166551 Guido Trotter
  CONFD_REQ_CLUSTER_MASTER,
783 efbb4fd2 Luca Bigliardi
  CONFD_REQ_NODE_PIP_LIST,
784 efbb4fd2 Luca Bigliardi
  CONFD_REQ_MC_PIP_LIST,
785 d01ae714 Luca Bigliardi
  CONFD_REQ_INSTANCES_IPS_LIST,
786 ea1518af Guido Trotter
  ])
787 ea1518af Guido Trotter
788 31c2a99e Guido Trotter
CONFD_REPL_STATUS_OK = 0
789 31c2a99e Guido Trotter
CONFD_REPL_STATUS_ERROR = 1
790 31c2a99e Guido Trotter
CONFD_REPL_STATUS_NOTIMPLEMENTED = 2
791 31c2a99e Guido Trotter
792 31c2a99e Guido Trotter
CONFD_REPL_STATUSES = frozenset([
793 31c2a99e Guido Trotter
  CONFD_REPL_STATUS_OK,
794 31c2a99e Guido Trotter
  CONFD_REPL_STATUS_ERROR,
795 31c2a99e Guido Trotter
  CONFD_REPL_STATUS_NOTIMPLEMENTED,
796 31c2a99e Guido Trotter
  ])
797 31c2a99e Guido Trotter
798 89c52785 Guido Trotter
(CONFD_NODE_ROLE_MASTER,
799 89c52785 Guido Trotter
 CONFD_NODE_ROLE_CANDIDATE,
800 89c52785 Guido Trotter
 CONFD_NODE_ROLE_OFFLINE,
801 197b0f5d Guido Trotter
 CONFD_NODE_ROLE_DRAINED,
802 197b0f5d Guido Trotter
 CONFD_NODE_ROLE_REGULAR,
803 197b0f5d Guido Trotter
 ) = range(5)
804 89c52785 Guido Trotter
805 ca2a5b13 Guido Trotter
# A few common errors for confd
806 ca2a5b13 Guido Trotter
CONFD_ERROR_UNKNOWN_ENTRY = 1
807 7189e790 Guido Trotter
CONFD_ERROR_INTERNAL = 2
808 19351457 Guido Trotter
CONFD_ERROR_ARGUMENT = 3
809 ca2a5b13 Guido Trotter
810 71f27d19 Guido Trotter
# Each request is "salted" by the current timestamp.
811 71f27d19 Guido Trotter
# This constants decides how many seconds of skew to accept.
812 71f27d19 Guido Trotter
# TODO: make this a default and allow the value to be more configurable
813 313b2dd4 Michael Hanselmann
CONFD_MAX_CLOCK_SKEW = 2 * NODE_MAX_CLOCK_SKEW
814 84c3ab28 Guido Trotter
815 84c3ab28 Guido Trotter
# When we haven't reloaded the config for more than this amount of seconds, we
816 84c3ab28 Guido Trotter
# force a test to see if inotify is betraying us.
817 84c3ab28 Guido Trotter
CONFD_CONFIG_RELOAD_TIMEOUT = 60
818 84c3ab28 Guido Trotter
819 84c3ab28 Guido Trotter
# If we receive more than one update in this amount of seconds, we move to
820 84c3ab28 Guido Trotter
# polling every RATELIMIT seconds, rather than relying on inotify, to be able
821 84c3ab28 Guido Trotter
# to serve more requests.
822 84c3ab28 Guido Trotter
CONFD_CONFIG_RELOAD_RATELIMIT = 2
823 c8eded0b Guido Trotter
824 a3758ab2 Guido Trotter
# Magic number prepended to all confd queries.
825 a3758ab2 Guido Trotter
# This allows us to distinguish different types of confd protocols and handle
826 a3758ab2 Guido Trotter
# them. For example by changing this we can move the whole payload to be
827 a3758ab2 Guido Trotter
# compressed, or move away from json.
828 a3758ab2 Guido Trotter
CONFD_MAGIC_FOURCC = 'plj0'
829 a3758ab2 Guido Trotter
830 e4ccf6cd Guido Trotter
# By default a confd request is sent to the minimum between this number and all
831 e4ccf6cd Guido Trotter
# MCs. 6 was chosen because even in the case of a disastrous 50% response rate,
832 e4ccf6cd Guido Trotter
# we should have enough answers to be able to compare more than one.
833 e4ccf6cd Guido Trotter
CONFD_DEFAULT_REQ_COVERAGE = 6
834 e4ccf6cd Guido Trotter
835 e4ccf6cd Guido Trotter
# Timeout in seconds to expire pending query request in the confd client
836 e4ccf6cd Guido Trotter
# library. We don't actually expect any answer more than 10 seconds after we
837 e4ccf6cd Guido Trotter
# sent a request.
838 e4ccf6cd Guido Trotter
CONFD_CLIENT_EXPIRE_TIMEOUT = 10
839 e4ccf6cd Guido Trotter
840 c8eded0b Guido Trotter
# Maximum UDP datagram size.
841 c8eded0b Guido Trotter
# On IPv4: 64K - 20 (ip header size) - 8 (udp header size) = 65507
842 c8eded0b Guido Trotter
# On IPv6: 64K - 40 (ip6 header size) - 8 (udp header size) = 65487
843 c8eded0b Guido Trotter
#   (assuming we can't use jumbo frames)
844 c8eded0b Guido Trotter
# We just set this to 60K, which should be enough
845 c8eded0b Guido Trotter
MAX_UDP_DATA_SIZE = 61440
846 6d127406 Balazs Lecz
847 6d127406 Balazs Lecz
# User-id pool minimum/maximum acceptable user-ids.
848 6d127406 Balazs Lecz
UIDPOOL_UID_MIN = 0
849 6d127406 Balazs Lecz
UIDPOOL_UID_MAX = 2**32-1 # Assuming 32 bit user-ids
850 649bcdd8 Balazs Lecz
851 649bcdd8 Balazs Lecz
# Name or path of the pgrep command
852 649bcdd8 Balazs Lecz
PGREP = "pgrep"