Statistics
| Branch: | Tag: | Revision:

root / lib / constants.py @ 541822e0

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

53 1b45f4e5 Michael Hanselmann
  Returns: int representing version number
54 1b45f4e5 Michael Hanselmann

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

67 1b45f4e5 Michael Hanselmann
  Returns: tuple; (major, minor, revision)
68 1b45f4e5 Michael Hanselmann

69 1b45f4e5 Michael Hanselmann
  """
70 1b45f4e5 Michael Hanselmann
  assert isinstance(version, int)
71 1b45f4e5 Michael Hanselmann
72 1b45f4e5 Michael Hanselmann
  (major, remainder) = divmod(version, 1000000)
73 1b45f4e5 Michael Hanselmann
  (minor, revision) = divmod(remainder, 10000)
74 1b45f4e5 Michael Hanselmann
75 1b45f4e5 Michael Hanselmann
  return (major, minor, revision)
76 1b45f4e5 Michael Hanselmann
77 1b45f4e5 Michael Hanselmann
78 243cdbcc Michael Hanselmann
CONFIG_MAJOR = int(_autoconf.VERSION_MAJOR)
79 243cdbcc Michael Hanselmann
CONFIG_MINOR = int(_autoconf.VERSION_MINOR)
80 243cdbcc Michael Hanselmann
CONFIG_REVISION = 0
81 1b45f4e5 Michael Hanselmann
CONFIG_VERSION = BuildVersion(CONFIG_MAJOR, CONFIG_MINOR, CONFIG_REVISION)
82 a8083063 Iustin Pop
83 a8083063 Iustin Pop
# file paths
84 2ec08468 Michael Hanselmann
DATA_DIR = _autoconf.LOCALSTATEDIR + "/lib/ganeti"
85 1ed70996 Iustin Pop
RUN_DIR = _autoconf.LOCALSTATEDIR + "/run"
86 75afaefc Iustin Pop
RUN_GANETI_DIR = RUN_DIR + "/ganeti"
87 42ff3343 Guido Trotter
BDEV_CACHE_DIR = RUN_GANETI_DIR + "/bdev-cache"
88 75afaefc Iustin Pop
DISK_LINKS_DIR = RUN_GANETI_DIR + "/instance-disks"
89 817a030d Guido Trotter
RUN_DIRS_MODE = 0755
90 b4442fd9 Guido Trotter
SOCKET_DIR = RUN_GANETI_DIR + "/socket"
91 5ecb7e48 Guido Trotter
SOCKET_DIR_MODE = 0700
92 75afaefc Iustin Pop
# keep RUN_GANETI_DIR first here, to make sure all get created when the node
93 75afaefc Iustin Pop
# daemon is started (this takes care of RUN_DIR being tmpfs)
94 75afaefc Iustin Pop
SUB_RUN_DIRS = [ RUN_GANETI_DIR, BDEV_CACHE_DIR, DISK_LINKS_DIR ]
95 3aecd2c7 Iustin Pop
LOCK_DIR = _autoconf.LOCALSTATEDIR + "/lock"
96 0c223ea9 Michael Hanselmann
SSCONF_LOCK_FILE = LOCK_DIR + "/ganeti-ssconf.lock"
97 a8083063 Iustin Pop
CLUSTER_CONF_FILE = DATA_DIR + "/config.data"
98 a8083063 Iustin Pop
SSL_CERT_FILE = DATA_DIR + "/server.pem"
99 61a08fa3 Michael Hanselmann
RAPI_CERT_FILE = DATA_DIR + "/rapi.pem"
100 5a3103e9 Michael Hanselmann
WATCHER_STATEFILE = DATA_DIR + "/watcher.data"
101 78f44650 Iustin Pop
INSTANCE_UPFILE = RUN_GANETI_DIR + "/instance-status"
102 82122173 Iustin Pop
SSH_KNOWN_HOSTS_FILE = DATA_DIR + "/known_hosts"
103 b5b67ef9 Michael Hanselmann
RAPI_USERS_FILE = DATA_DIR + "/rapi_users"
104 f1da30e6 Michael Hanselmann
QUEUE_DIR = DATA_DIR + "/queue"
105 c8a0948f Michael Hanselmann
ETC_HOSTS = "/etc/hosts"
106 1abbbbe2 Manuel Franceschini
DEFAULT_FILE_STORAGE_DIR = _autoconf.FILE_STORAGE_DIR
107 5420ffc9 Guido Trotter
SYSCONFDIR = _autoconf.SYSCONFDIR
108 9894ece7 Michael Hanselmann
109 227647ac Guido Trotter
MASTER_SOCKET = SOCKET_DIR + "/ganeti-master"
110 a8083063 Iustin Pop
111 99e88451 Iustin Pop
# PID files
112 bff2ddc5 Iustin Pop
MASTERD_PID = "ganeti-masterd"
113 99e88451 Iustin Pop
NODED_PID = "ganeti-noded"
114 99e88451 Iustin Pop
RAPI_PID = "ganeti-rapi"
115 99e88451 Iustin Pop
116 2ec08468 Michael Hanselmann
NODE_INITD_SCRIPT = _autoconf.SYSCONFDIR + "/init.d/ganeti"
117 a8083063 Iustin Pop
DEFAULT_NODED_PORT = 1811
118 a8083063 Iustin Pop
FIRST_DRBD_PORT = 11000
119 a8083063 Iustin Pop
LAST_DRBD_PORT = 14999
120 880478f8 Iustin Pop
MASTER_SCRIPT = "ganeti-master"
121 a8083063 Iustin Pop
122 9936bd63 Iustin Pop
LOG_DIR = _autoconf.LOCALSTATEDIR + "/log/ganeti/"
123 9936bd63 Iustin Pop
LOG_OS_DIR = LOG_DIR + "os"
124 9936bd63 Iustin Pop
LOG_NODESERVER = LOG_DIR + "node-daemon.log"
125 9936bd63 Iustin Pop
LOG_WATCHER = LOG_DIR + "watcher.log"
126 9936bd63 Iustin Pop
LOG_MASTERDAEMON = LOG_DIR + "master-daemon.log"
127 9936bd63 Iustin Pop
LOG_RAPISERVER = LOG_DIR + "rapi-daemon.log"
128 9936bd63 Iustin Pop
LOG_COMMANDS = LOG_DIR + "commands.log"
129 6abe9194 Iustin Pop
LOG_BURNIN = LOG_DIR + "burnin.log"
130 a8083063 Iustin Pop
131 7c3d51d4 Guido Trotter
OS_SEARCH_PATH = _autoconf.OS_SEARCH_PATH
132 68dccc07 Guido Trotter
EXPORT_DIR = _autoconf.EXPORT_DIR
133 a8083063 Iustin Pop
134 a8083063 Iustin Pop
EXPORT_CONF_FILE = "config.ini"
135 a8083063 Iustin Pop
136 f00b46bc Michael Hanselmann
XEN_KERNEL = _autoconf.XEN_KERNEL
137 f00b46bc Michael Hanselmann
XEN_INITRD = _autoconf.XEN_INITRD
138 f00b46bc Michael Hanselmann
139 7e2c5b9e Guido Trotter
KVM_PATH = _autoconf.KVM_PATH
140 14aa53cb Guido Trotter
SOCAT_PATH = _autoconf.SOCAT_PATH
141 30e42c4e Guido Trotter
KVM_MIGRATION_PORT = _autoconf.KVM_MIGRATION_PORT
142 7e2c5b9e Guido Trotter
143 973d7867 Iustin Pop
VALUE_DEFAULT = "default"
144 4c566ede Guido Trotter
VALUE_AUTO = "auto"
145 4c566ede Guido Trotter
VALUE_GENERATE = "generate"
146 973d7867 Iustin Pop
VALUE_NONE = "none"
147 1817f49b Guido Trotter
VALUE_TRUE = "true"
148 1817f49b Guido Trotter
VALUE_FALSE = "false"
149 973d7867 Iustin Pop
150 a8083063 Iustin Pop
# hooks-related constants
151 2ec08468 Michael Hanselmann
HOOKS_BASE_DIR = _autoconf.SYSCONFDIR + "/ganeti/hooks"
152 a8083063 Iustin Pop
HOOKS_PHASE_PRE = "pre"
153 a8083063 Iustin Pop
HOOKS_PHASE_POST = "post"
154 6a4aa7c1 Iustin Pop
HOOKS_NAME_CFGUPDATE = "config-update"
155 f3e2e4c6 Iustin Pop
HOOKS_VERSION = 2
156 a8083063 Iustin Pop
157 a8083063 Iustin Pop
# hooks subject type (what object type does the LU deal with)
158 a8083063 Iustin Pop
HTYPE_CLUSTER = "CLUSTER"
159 a8083063 Iustin Pop
HTYPE_NODE = "NODE"
160 a8083063 Iustin Pop
HTYPE_INSTANCE = "INSTANCE"
161 a8083063 Iustin Pop
162 a8083063 Iustin Pop
HKR_SKIP = 0
163 a8083063 Iustin Pop
HKR_FAIL = 1
164 a8083063 Iustin Pop
HKR_SUCCESS = 2
165 a8083063 Iustin Pop
166 a8083063 Iustin Pop
# disk template types
167 a8083063 Iustin Pop
DT_DISKLESS = "diskless"
168 a8083063 Iustin Pop
DT_PLAIN = "plain"
169 a1f445d3 Iustin Pop
DT_DRBD8 = "drbd"
170 04fa07f2 Manuel Franceschini
DT_FILE = "file"
171 a1f445d3 Iustin Pop
172 a1f445d3 Iustin Pop
# the set of network-mirrored disk templates
173 abdf0113 Iustin Pop
DTS_NET_MIRROR = frozenset([DT_DRBD8])
174 a8083063 Iustin Pop
175 d63e148a Manuel Franceschini
# the set of non-lvm-based disk templates
176 d63e148a Manuel Franceschini
DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE])
177 d63e148a Manuel Franceschini
178 fe96220b Iustin Pop
# logical disk types
179 fe96220b Iustin Pop
LD_LV = "lvm"
180 a1f445d3 Iustin Pop
LD_DRBD8 = "drbd8"
181 04fa07f2 Manuel Franceschini
LD_FILE = "file"
182 464736ae Guido Trotter
LDS_BLOCK = frozenset([LD_LV, LD_DRBD8])
183 04fa07f2 Manuel Franceschini
184 2899d9de Iustin Pop
# drbd constants
185 2899d9de Iustin Pop
DRBD_HMAC_ALG = "md5"
186 3c03759a Iustin Pop
DRBD_NET_PROTOCOL = "C"
187 2899d9de Iustin Pop
188 04fa07f2 Manuel Franceschini
# file backend driver
189 04fa07f2 Manuel Franceschini
FD_LOOP = "loop"
190 04fa07f2 Manuel Franceschini
FD_BLKTAP = "blktap"
191 a1f445d3 Iustin Pop
192 a1f445d3 Iustin Pop
# the set of drbd-like disk types
193 abdf0113 Iustin Pop
LDS_DRBD = frozenset([LD_DRBD8])
194 fe96220b Iustin Pop
195 08db7c5c Iustin Pop
# disk access mode
196 24991749 Iustin Pop
DISK_RDONLY = "ro"
197 24991749 Iustin Pop
DISK_RDWR = "rw"
198 08db7c5c Iustin Pop
DISK_ACCESS_SET = frozenset([DISK_RDONLY, DISK_RDWR])
199 08db7c5c Iustin Pop
200 a9e0c397 Iustin Pop
# disk replacement mode
201 cfacfd6e Iustin Pop
REPLACE_DISK_PRI = "replace_on_primary"    # replace disks on primary
202 cfacfd6e Iustin Pop
REPLACE_DISK_SEC = "replace_on_secondary"  # replace disks on secondary
203 cfacfd6e Iustin Pop
REPLACE_DISK_CHG = "replace_new_secondary" # change secondary node
204 a9e0c397 Iustin Pop
205 f6d9a522 Guido Trotter
# lock recalculate mode
206 f6d9a522 Guido Trotter
LOCKS_REPLACE = 'replace'
207 9513b6ab Guido Trotter
LOCKS_APPEND = 'append'
208 f6d9a522 Guido Trotter
209 2f6eebee Guido Trotter
# instance creation modes
210 a8083063 Iustin Pop
INSTANCE_CREATE = "create"
211 a8083063 Iustin Pop
INSTANCE_IMPORT = "import"
212 a8083063 Iustin Pop
213 a8083063 Iustin Pop
DISK_TEMPLATES = frozenset([DT_DISKLESS, DT_PLAIN,
214 04fa07f2 Manuel Franceschini
                            DT_DRBD8, DT_FILE])
215 04fa07f2 Manuel Franceschini
216 04fa07f2 Manuel Franceschini
FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP])
217 a8083063 Iustin Pop
218 a8083063 Iustin Pop
# import/export config options
219 a8083063 Iustin Pop
INISECT_EXP = "export"
220 a8083063 Iustin Pop
INISECT_INS = "instance"
221 38242904 Iustin Pop
222 24991749 Iustin Pop
# dynamic device modification
223 24991749 Iustin Pop
224 24991749 Iustin Pop
DDM_ADD = 'add'
225 24991749 Iustin Pop
DDM_REMOVE = 'remove'
226 24991749 Iustin Pop
227 38242904 Iustin Pop
# common exit codes
228 a5bc662a Iustin Pop
EXIT_SUCCESS = 0
229 438b45d4 Michael Hanselmann
EXIT_FAILURE = 1
230 38242904 Iustin Pop
EXIT_NOTMASTER = 11
231 619fdc8e Iustin Pop
EXIT_NODESETUP_ERROR = 12
232 a5bc662a Iustin Pop
EXIT_CONFIRMATION = 13 # need user confirmation
233 cf62a272 Michael Hanselmann
234 5c947f38 Iustin Pop
# tags
235 5c947f38 Iustin Pop
TAG_CLUSTER = "cluster"
236 5c947f38 Iustin Pop
TAG_NODE = "node"
237 5c947f38 Iustin Pop
TAG_INSTANCE = "instance"
238 5c947f38 Iustin Pop
MAX_TAG_LEN = 128
239 5c947f38 Iustin Pop
MAX_TAGS_PER_OBJ = 4096
240 5c947f38 Iustin Pop
241 cf62a272 Michael Hanselmann
# others
242 cf62a272 Michael Hanselmann
DEFAULT_BRIDGE = "xen-br0"
243 24b0d752 Iustin Pop
SYNC_SPEED = 60 * 1024
244 aa4260ca Iustin Pop
LOCALHOST_IP_ADDRESS = "127.0.0.1"
245 16abfbc2 Alexander Schreiber
TCP_PING_TIMEOUT = 10
246 7900ed01 Iustin Pop
GANETI_RUNAS = "root"
247 d63e148a Manuel Franceschini
DEFAULT_VG = "xenvg"
248 31a853d2 Iustin Pop
BIND_ADDRESS_GLOBAL = "0.0.0.0"
249 8d1a2a64 Michael Hanselmann
MIN_VG_SIZE = 20480
250 c5e489f7 Iustin Pop
DEFAULT_MAC_PREFIX = "aa:00:00"
251 3736cb6b Iustin Pop
LVM_STRIPECOUNT = _autoconf.LVM_STRIPECOUNT
252 7900ed01 Iustin Pop
253 12bce260 Michael Hanselmann
# RPC constants
254 12bce260 Michael Hanselmann
(RPC_ENCODING_NONE,
255 12bce260 Michael Hanselmann
 RPC_ENCODING_ZLIB_BASE64) = range(2)
256 12bce260 Michael Hanselmann
257 ded1c679 Guido Trotter
# os related constants
258 ded1c679 Guido Trotter
OS_SCRIPT_CREATE = 'create'
259 ded1c679 Guido Trotter
OS_SCRIPT_IMPORT = 'import'
260 ded1c679 Guido Trotter
OS_SCRIPT_EXPORT = 'export'
261 ded1c679 Guido Trotter
OS_SCRIPT_RENAME = 'rename'
262 16653425 Iustin Pop
OS_SCRIPTS = frozenset([OS_SCRIPT_CREATE, OS_SCRIPT_IMPORT,
263 ded1c679 Guido Trotter
                        OS_SCRIPT_EXPORT, OS_SCRIPT_RENAME])
264 37482e7b Guido Trotter
265 70d9e3d8 Iustin Pop
# ssh constants
266 7900ed01 Iustin Pop
SSH_INITD_SCRIPT = _autoconf.SSH_INITD_SCRIPT
267 70d9e3d8 Iustin Pop
SSH_CONFIG_DIR = "/etc/ssh/"
268 70d9e3d8 Iustin Pop
SSH_HOST_DSA_PRIV = SSH_CONFIG_DIR + "ssh_host_dsa_key"
269 70d9e3d8 Iustin Pop
SSH_HOST_DSA_PUB = SSH_HOST_DSA_PRIV + ".pub"
270 70d9e3d8 Iustin Pop
SSH_HOST_RSA_PRIV = SSH_CONFIG_DIR + "ssh_host_rsa_key"
271 70d9e3d8 Iustin Pop
SSH_HOST_RSA_PUB = SSH_HOST_RSA_PRIV + ".pub"
272 fff33d70 Michael Hanselmann
SSH = "ssh"
273 fff33d70 Michael Hanselmann
SCP = "scp"
274 007a2f3e Alexander Schreiber
275 007a2f3e Alexander Schreiber
# reboot types
276 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_SOFT = "soft"
277 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_HARD = "hard"
278 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_FULL = "full"
279 2584d4a4 Alexander Schreiber
280 00f91f29 Iustin Pop
REBOOT_TYPES = frozenset([INSTANCE_REBOOT_SOFT,
281 00f91f29 Iustin Pop
                          INSTANCE_REBOOT_HARD,
282 00f91f29 Iustin Pop
                          INSTANCE_REBOOT_FULL])
283 00f91f29 Iustin Pop
284 a5728081 Guido Trotter
VTYPE_STRING = 'string'
285 a5728081 Guido Trotter
VTYPE_BOOL = 'bool'
286 a5728081 Guido Trotter
VTYPE_SIZE = 'size' # size, in MiBs
287 a5728081 Guido Trotter
VTYPE_INT = 'int'
288 a5728081 Guido Trotter
ENFORCEABLE_TYPES = frozenset([
289 a5728081 Guido Trotter
                      VTYPE_STRING,
290 a5728081 Guido Trotter
                      VTYPE_BOOL,
291 a5728081 Guido Trotter
                      VTYPE_SIZE,
292 a5728081 Guido Trotter
                      VTYPE_INT,
293 a5728081 Guido Trotter
                      ])
294 a5728081 Guido Trotter
295 e64b8beb Iustin Pop
# HV parameter names (global namespace)
296 e64b8beb Iustin Pop
HV_BOOT_ORDER = "boot_order"
297 e64b8beb Iustin Pop
HV_CDROM_IMAGE_PATH = "cdrom_image_path"
298 e64b8beb Iustin Pop
HV_NIC_TYPE = "nic_type"
299 e64b8beb Iustin Pop
HV_DISK_TYPE = "disk_type"
300 e64b8beb Iustin Pop
HV_VNC_BIND_ADDRESS = "vnc_bind_address"
301 8b2d1013 Guido Trotter
HV_VNC_TLS = "vnc_tls"
302 8b2d1013 Guido Trotter
HV_VNC_X509 = "vnc_x509_path"
303 8b2d1013 Guido Trotter
HV_VNC_X509_VERIFY = "vnc_x509_verify"
304 e64b8beb Iustin Pop
HV_ACPI = "acpi"
305 e64b8beb Iustin Pop
HV_PAE = "pae"
306 f9d6542d Iustin Pop
HV_KERNEL_ARGS = "kernel_args"
307 e64b8beb Iustin Pop
HV_KERNEL_PATH = "kernel_path"
308 e64b8beb Iustin Pop
HV_INITRD_PATH = "initrd_path"
309 074ca009 Guido Trotter
HV_ROOT_PATH = "root_path"
310 a2faf9ee Guido Trotter
HV_SERIAL_CONSOLE = "serial_console"
311 11344a50 Guido Trotter
HV_USB_MOUSE = "usb_mouse"
312 09ea8710 Iustin Pop
HV_DEVICE_MODEL = "device_model"
313 e64b8beb Iustin Pop
314 a5728081 Guido Trotter
HVS_PARAMETER_TYPES = {
315 a5728081 Guido Trotter
  HV_BOOT_ORDER: VTYPE_STRING,
316 a5728081 Guido Trotter
  HV_CDROM_IMAGE_PATH: VTYPE_STRING,
317 a5728081 Guido Trotter
  HV_NIC_TYPE: VTYPE_STRING,
318 a5728081 Guido Trotter
  HV_DISK_TYPE: VTYPE_STRING,
319 a5728081 Guido Trotter
  HV_VNC_BIND_ADDRESS: VTYPE_STRING,
320 a5728081 Guido Trotter
  HV_VNC_TLS: VTYPE_BOOL,
321 a5728081 Guido Trotter
  HV_VNC_X509: VTYPE_STRING,
322 a5728081 Guido Trotter
  HV_VNC_X509_VERIFY: VTYPE_BOOL,
323 a5728081 Guido Trotter
  HV_ACPI: VTYPE_BOOL,
324 a5728081 Guido Trotter
  HV_PAE: VTYPE_BOOL,
325 a5728081 Guido Trotter
  HV_KERNEL_PATH: VTYPE_STRING,
326 f9d6542d Iustin Pop
  HV_KERNEL_ARGS: VTYPE_STRING,
327 a5728081 Guido Trotter
  HV_INITRD_PATH: VTYPE_STRING,
328 a5728081 Guido Trotter
  HV_ROOT_PATH: VTYPE_STRING,
329 a5728081 Guido Trotter
  HV_SERIAL_CONSOLE: VTYPE_BOOL,
330 a5728081 Guido Trotter
  HV_USB_MOUSE: VTYPE_STRING,
331 09ea8710 Iustin Pop
  HV_DEVICE_MODEL: VTYPE_STRING,
332 a5728081 Guido Trotter
  }
333 a5728081 Guido Trotter
334 a5728081 Guido Trotter
HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys())
335 5018a335 Iustin Pop
336 e64b8beb Iustin Pop
# BE parameter names
337 cd3ab26e Iustin Pop
BE_MEMORY = "memory"
338 e64b8beb Iustin Pop
BE_VCPUS = "vcpus"
339 c0f2b229 Iustin Pop
BE_AUTO_BALANCE = "auto_balance"
340 e64b8beb Iustin Pop
341 a5728081 Guido Trotter
BES_PARAMETER_TYPES = {
342 a5728081 Guido Trotter
    BE_MEMORY: VTYPE_SIZE,
343 a5728081 Guido Trotter
    BE_VCPUS: VTYPE_INT,
344 a5728081 Guido Trotter
    BE_AUTO_BALANCE: VTYPE_BOOL,
345 a5728081 Guido Trotter
    }
346 a5728081 Guido Trotter
347 a5728081 Guido Trotter
BES_PARAMETERS = frozenset(BES_PARAMETER_TYPES.keys())
348 cd3ab26e Iustin Pop
349 4ef7f423 Guido Trotter
# Instance Parameters Profile
350 4ef7f423 Guido Trotter
PP_DEFAULT = "default"
351 e64b8beb Iustin Pop
352 ac061be9 Guido Trotter
NIC_MODE = "mode"
353 ac061be9 Guido Trotter
NIC_LINK = "link"
354 ac061be9 Guido Trotter
355 ac061be9 Guido Trotter
NIC_MODE_BRIDGED = "bridged"
356 ac061be9 Guido Trotter
NIC_MODE_ROUTED = "routed"
357 ac061be9 Guido Trotter
358 ac061be9 Guido Trotter
NIC_VALID_MODES = frozenset([NIC_MODE_BRIDGED, NIC_MODE_ROUTED])
359 ac061be9 Guido Trotter
360 ac061be9 Guido Trotter
NICS_PARAMETER_TYPES = {
361 ac061be9 Guido Trotter
    NIC_MODE: VTYPE_STRING,
362 ac061be9 Guido Trotter
    NIC_LINK: VTYPE_STRING,
363 ac061be9 Guido Trotter
    }
364 ac061be9 Guido Trotter
365 ac061be9 Guido Trotter
NICS_PARAMETERS = frozenset(NICS_PARAMETER_TYPES.keys())
366 ac061be9 Guido Trotter
367 2584d4a4 Alexander Schreiber
# Hypervisor constants
368 00cd937c Iustin Pop
HT_XEN_PVM = "xen-pvm"
369 2584d4a4 Alexander Schreiber
HT_FAKE = "fake"
370 00cd937c Iustin Pop
HT_XEN_HVM = "xen-hvm"
371 550e49b9 Guido Trotter
HT_KVM = "kvm"
372 00cd937c Iustin Pop
HYPER_TYPES = frozenset([HT_XEN_PVM, HT_FAKE, HT_XEN_HVM, HT_KVM])
373 fd4daa3a Guido Trotter
HTS_REQ_PORT = frozenset([HT_XEN_HVM, HT_KVM])
374 2584d4a4 Alexander Schreiber
375 377d74c9 Guido Trotter
VNC_BASE_PORT = 5900
376 2a6469d5 Alexander Schreiber
VNC_PASSWORD_FILE = _autoconf.SYSCONFDIR + "/ganeti/vnc-cluster-password"
377 31a853d2 Iustin Pop
VNC_DEFAULT_BIND_ADDRESS = '0.0.0.0'
378 e54c4c5e Guido Trotter
379 835528af Iustin Pop
# NIC types
380 d08f6067 Guido Trotter
HT_NIC_RTL8139 = "rtl8139"
381 d08f6067 Guido Trotter
HT_NIC_NE2K_PCI = "ne2k_pci"
382 d08f6067 Guido Trotter
HT_NIC_NE2K_ISA = "ne2k_isa"
383 43440815 Guido Trotter
HT_NIC_I82551 = "i82551"
384 43440815 Guido Trotter
HT_NIC_I85557B = "i82557b"
385 43440815 Guido Trotter
HT_NIC_I8259ER = "i82559er"
386 43440815 Guido Trotter
HT_NIC_PCNET = "pcnet"
387 43440815 Guido Trotter
HT_NIC_E1000 = "e1000"
388 d08f6067 Guido Trotter
HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual"
389 43440815 Guido Trotter
390 d08f6067 Guido Trotter
HT_HVM_VALID_NIC_TYPES = frozenset([HT_NIC_RTL8139, HT_NIC_NE2K_PCI,
391 d08f6067 Guido Trotter
                                    HT_NIC_NE2K_ISA, HT_NIC_PARAVIRTUAL])
392 43440815 Guido Trotter
HT_KVM_VALID_NIC_TYPES = frozenset([HT_NIC_RTL8139, HT_NIC_NE2K_PCI,
393 43440815 Guido Trotter
                                    HT_NIC_NE2K_ISA, HT_NIC_I82551,
394 43440815 Guido Trotter
                                    HT_NIC_I85557B, HT_NIC_I8259ER,
395 43440815 Guido Trotter
                                    HT_NIC_PCNET, HT_NIC_E1000,
396 43440815 Guido Trotter
                                    HT_NIC_PARAVIRTUAL])
397 835528af Iustin Pop
# Disk types
398 835528af Iustin Pop
HT_DISK_IOEMU = "ioemu"
399 835528af Iustin Pop
HT_DISK_IDE = "ide"
400 835528af Iustin Pop
HT_DISK_SCSI = "scsi"
401 835528af Iustin Pop
HT_DISK_SD = "sd"
402 835528af Iustin Pop
HT_DISK_MTD = "mtd"
403 835528af Iustin Pop
HT_DISK_PFLASH = "pflash"
404 835528af Iustin Pop
405 835528af Iustin Pop
HT_HVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IOEMU])
406 43440815 Guido Trotter
HT_KVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IDE,
407 43440815 Guido Trotter
                                     HT_DISK_SCSI, HT_DISK_SD, HT_DISK_MTD,
408 43440815 Guido Trotter
                                     HT_DISK_PFLASH])
409 b894f5a8 Alexander Schreiber
410 835528af Iustin Pop
# Mouse types:
411 835528af Iustin Pop
HT_MOUSE_MOUSE = "mouse"
412 835528af Iustin Pop
HT_MOUSE_TABLET = "tablet"
413 835528af Iustin Pop
414 835528af Iustin Pop
HT_KVM_VALID_MOUSE_TYPES = frozenset([HT_MOUSE_MOUSE, HT_MOUSE_TABLET])
415 835528af Iustin Pop
416 835528af Iustin Pop
# Boot order
417 835528af Iustin Pop
HT_BO_CDROM = "cdrom"
418 835528af Iustin Pop
HT_BO_DISK = "disk"
419 835528af Iustin Pop
HT_BO_NETWORK = "network"
420 835528af Iustin Pop
421 835528af Iustin Pop
HT_KVM_VALID_BO_TYPES = frozenset([HT_BO_CDROM, HT_BO_DISK, HT_BO_NETWORK])
422 835528af Iustin Pop
423 e54c4c5e Guido Trotter
# Cluster Verify steps
424 e54c4c5e Guido Trotter
VERIFY_NPLUSONE_MEM = 'nplusone_mem'
425 e54c4c5e Guido Trotter
VERIFY_OPTIONAL_CHECKS = frozenset([VERIFY_NPLUSONE_MEM])
426 e54c4c5e Guido Trotter
427 25361b9a Iustin Pop
# Node verify constants
428 25361b9a Iustin Pop
NV_FILELIST = "filelist"
429 25361b9a Iustin Pop
NV_HVINFO = "hvinfo"
430 25361b9a Iustin Pop
NV_HYPERVISOR = "hypervisor"
431 25361b9a Iustin Pop
NV_INSTANCELIST = "instancelist"
432 25361b9a Iustin Pop
NV_LVLIST = "lvlist"
433 25361b9a Iustin Pop
NV_NODELIST = "nodelist"
434 25361b9a Iustin Pop
NV_NODENETTEST = "node-net-test"
435 25361b9a Iustin Pop
NV_VERSION = "version"
436 25361b9a Iustin Pop
NV_VGLIST = "vglist"
437 6d2e83d5 Iustin Pop
NV_DRBDLIST = "drbd-list"
438 25361b9a Iustin Pop
439 d61df03e Iustin Pop
# Allocator framework constants
440 77031881 Iustin Pop
IALLOCATOR_VERSION = 2
441 298fe380 Iustin Pop
IALLOCATOR_DIR_IN = "in"
442 298fe380 Iustin Pop
IALLOCATOR_DIR_OUT = "out"
443 298fe380 Iustin Pop
IALLOCATOR_MODE_ALLOC = "allocate"
444 298fe380 Iustin Pop
IALLOCATOR_MODE_RELOC = "relocate"
445 298fe380 Iustin Pop
IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH
446 5f33b613 Michael Hanselmann
447 f1da30e6 Michael Hanselmann
# Job queue
448 f1da30e6 Michael Hanselmann
JOB_QUEUE_VERSION = 1
449 f1da30e6 Michael Hanselmann
JOB_QUEUE_LOCK_FILE = QUEUE_DIR + "/lock"
450 f1da30e6 Michael Hanselmann
JOB_QUEUE_VERSION_FILE = QUEUE_DIR + "/version"
451 f1da30e6 Michael Hanselmann
JOB_QUEUE_SERIAL_FILE = QUEUE_DIR + "/serial"
452 0cb94105 Michael Hanselmann
JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive"
453 686d7433 Iustin Pop
JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain"
454 f87b405e Michael Hanselmann
JOB_QUEUE_SIZE_HARD_LIMIT = 5000
455 f87b405e Michael Hanselmann
JOB_QUEUE_SIZE_SOFT_LIMIT = JOB_QUEUE_SIZE_HARD_LIMIT * 0.8
456 f1da30e6 Michael Hanselmann
457 bac5ffc3 Oleksiy Mishchenko
JOB_ID_TEMPLATE = r"\d+"
458 bac5ffc3 Oleksiy Mishchenko
459 5c735209 Iustin Pop
# unchanged job return
460 5c735209 Iustin Pop
JOB_NOTCHANGED = "nochange"
461 5c735209 Iustin Pop
462 5f33b613 Michael Hanselmann
# Job status
463 5f33b613 Michael Hanselmann
JOB_STATUS_QUEUED = "queued"
464 e92376d7 Iustin Pop
JOB_STATUS_WAITLOCK = "waiting"
465 fbf0262f Michael Hanselmann
JOB_STATUS_CANCELING = "canceling"
466 5f33b613 Michael Hanselmann
JOB_STATUS_RUNNING = "running"
467 5f33b613 Michael Hanselmann
JOB_STATUS_CANCELED = "canceled"
468 5f33b613 Michael Hanselmann
JOB_STATUS_SUCCESS = "success"
469 5f33b613 Michael Hanselmann
JOB_STATUS_ERROR = "error"
470 5f33b613 Michael Hanselmann
471 5f33b613 Michael Hanselmann
OP_STATUS_QUEUED = "queued"
472 e92376d7 Iustin Pop
OP_STATUS_WAITLOCK = "waiting"
473 fbf0262f Michael Hanselmann
OP_STATUS_CANCELING = "canceling"
474 5f33b613 Michael Hanselmann
OP_STATUS_RUNNING = "running"
475 4cb1d919 Michael Hanselmann
OP_STATUS_CANCELED = "canceled"
476 5f33b613 Michael Hanselmann
OP_STATUS_SUCCESS = "success"
477 5f33b613 Michael Hanselmann
OP_STATUS_ERROR = "error"
478 f1048938 Iustin Pop
479 f1048938 Iustin Pop
# Execution log types
480 f1048938 Iustin Pop
ELOG_MESSAGE = "message"
481 f1048938 Iustin Pop
ELOG_PROGRESS = "progress"
482 d4104181 Iustin Pop
483 d4104181 Iustin Pop
# Temporary RAPI constants until we have cluster parameters
484 d4104181 Iustin Pop
RAPI_ENABLE = True
485 d4104181 Iustin Pop
RAPI_PORT = 5080
486 7888a614 Alexander Schreiber
487 c5e489f7 Iustin Pop
# max dynamic devices
488 24991749 Iustin Pop
MAX_NICS = 8
489 24991749 Iustin Pop
MAX_DISKS = 16
490 24991749 Iustin Pop
491 93384844 Iustin Pop
# SSCONF keys
492 93384844 Iustin Pop
SS_CLUSTER_NAME = "cluster_name"
493 5d60b3bd Iustin Pop
SS_CLUSTER_TAGS = "cluster_tags"
494 93384844 Iustin Pop
SS_FILE_STORAGE_DIR = "file_storage_dir"
495 f56618e0 Iustin Pop
SS_MASTER_CANDIDATES = "master_candidates"
496 93384844 Iustin Pop
SS_MASTER_IP = "master_ip"
497 93384844 Iustin Pop
SS_MASTER_NETDEV = "master_netdev"
498 93384844 Iustin Pop
SS_MASTER_NODE = "master_node"
499 93384844 Iustin Pop
SS_NODE_LIST = "node_list"
500 a3316e4a Iustin Pop
SS_OFFLINE_NODES = "offline_nodes"
501 81a49123 Iustin Pop
SS_ONLINE_NODES = "online_nodes"
502 81a49123 Iustin Pop
SS_INSTANCE_LIST = "instance_list"
503 8a113c7a Iustin Pop
SS_RELEASE_VERSION = "release_version"
504 93384844 Iustin Pop
505 7888a614 Alexander Schreiber
# cluster wide default parameters
506 7888a614 Alexander Schreiber
DEFAULT_ENABLED_HYPERVISOR = HT_XEN_PVM
507 7888a614 Alexander Schreiber
508 7888a614 Alexander Schreiber
HVC_DEFAULTS = {
509 bd0ff7c2 Iustin Pop
  HT_XEN_PVM: {
510 bd0ff7c2 Iustin Pop
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-xenU",
511 a5728081 Guido Trotter
    HV_INITRD_PATH: '',
512 1cd8141c Guido Trotter
    HV_ROOT_PATH: '/dev/sda1',
513 f9d6542d Iustin Pop
    HV_KERNEL_ARGS: 'ro',
514 bd0ff7c2 Iustin Pop
    },
515 bd0ff7c2 Iustin Pop
  HT_XEN_HVM: {
516 bd0ff7c2 Iustin Pop
    HV_BOOT_ORDER: "cd",
517 a5728081 Guido Trotter
    HV_CDROM_IMAGE_PATH: '',
518 d08f6067 Guido Trotter
    HV_NIC_TYPE: HT_NIC_RTL8139,
519 43440815 Guido Trotter
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
520 bd0ff7c2 Iustin Pop
    HV_VNC_BIND_ADDRESS: '0.0.0.0',
521 bd0ff7c2 Iustin Pop
    HV_ACPI: True,
522 bd0ff7c2 Iustin Pop
    HV_PAE: True,
523 e2ee1cea Iustin Pop
    HV_KERNEL_PATH: "/usr/lib/xen/boot/hvmloader",
524 09ea8710 Iustin Pop
    HV_DEVICE_MODEL: "/usr/lib/xen/bin/qemu-dm",
525 bd0ff7c2 Iustin Pop
    },
526 bd0ff7c2 Iustin Pop
  HT_KVM: {
527 bd0ff7c2 Iustin Pop
    HV_KERNEL_PATH: "/boot/vmlinuz-2.6-kvmU",
528 a5728081 Guido Trotter
    HV_INITRD_PATH: '',
529 f9d6542d Iustin Pop
    HV_KERNEL_ARGS: 'ro',
530 1cd8141c Guido Trotter
    HV_ROOT_PATH: '/dev/vda1',
531 bd0ff7c2 Iustin Pop
    HV_ACPI: True,
532 bd0ff7c2 Iustin Pop
    HV_SERIAL_CONSOLE: True,
533 a5728081 Guido Trotter
    HV_VNC_BIND_ADDRESS: '',
534 8b2d1013 Guido Trotter
    HV_VNC_TLS: False,
535 8b2d1013 Guido Trotter
    HV_VNC_X509: '',
536 8b2d1013 Guido Trotter
    HV_VNC_X509_VERIFY: False,
537 a5728081 Guido Trotter
    HV_CDROM_IMAGE_PATH: '',
538 835528af Iustin Pop
    HV_BOOT_ORDER: HT_BO_DISK,
539 43440815 Guido Trotter
    HV_NIC_TYPE: HT_NIC_PARAVIRTUAL,
540 43440815 Guido Trotter
    HV_DISK_TYPE: HT_DISK_PARAVIRTUAL,
541 a5728081 Guido Trotter
    HV_USB_MOUSE: '',
542 bd0ff7c2 Iustin Pop
    },
543 bd0ff7c2 Iustin Pop
  HT_FAKE: {
544 bd0ff7c2 Iustin Pop
    },
545 bd0ff7c2 Iustin Pop
  }
546 7888a614 Alexander Schreiber
547 7888a614 Alexander Schreiber
BEC_DEFAULTS = {
548 bd0ff7c2 Iustin Pop
  BE_MEMORY: 128,
549 bd0ff7c2 Iustin Pop
  BE_VCPUS: 1,
550 bd0ff7c2 Iustin Pop
  BE_AUTO_BALANCE: True,
551 bd0ff7c2 Iustin Pop
  }
552 c3e618cc Guido Trotter
553 ac061be9 Guido Trotter
NICC_DEFAULTS = {
554 ac061be9 Guido Trotter
  NIC_MODE: NIC_MODE_BRIDGED,
555 ac061be9 Guido Trotter
  NIC_LINK: DEFAULT_BRIDGE,
556 ac061be9 Guido Trotter
  }
557 ac061be9 Guido Trotter
558 c3e618cc Guido Trotter
MASTER_POOL_SIZE_DEFAULT = 10