Statistics
| Branch: | Tag: | Revision:

root / lib / constants.py @ f0d874fe

History | View | Annotate | Download (7.3 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 2a10865c Iustin Pop
PROTOCOL_VERSION = 13
28 2ec08468 Michael Hanselmann
RELEASE_VERSION = _autoconf.PACKAGE_VERSION
29 386b57af Iustin Pop
OS_API_VERSION = 5
30 a8083063 Iustin Pop
EXPORT_VERSION = 0
31 d3f0bf8f Iustin Pop
RAPI_VERSION = 1
32 a8083063 Iustin Pop
33 1b45f4e5 Michael Hanselmann
34 243cdbcc Michael Hanselmann
# Format for CONFIG_VERSION:
35 243cdbcc Michael Hanselmann
#   01 03 0123 = 01030123
36 243cdbcc Michael Hanselmann
#   ^^ ^^ ^^^^
37 243cdbcc Michael Hanselmann
#   |  |  + Configuration version/revision
38 243cdbcc Michael Hanselmann
#   |  + Minor version
39 243cdbcc Michael Hanselmann
#   + Major version
40 243cdbcc Michael Hanselmann
#
41 243cdbcc Michael Hanselmann
# It stored as an integer. Make sure not to write an octal number.
42 1b45f4e5 Michael Hanselmann
43 1b45f4e5 Michael Hanselmann
# BuildVersion and SplitVersion must be in here because we can't import other
44 1b45f4e5 Michael Hanselmann
# modules. The cfgupgrade tool must be able to read and write version numbers
45 1b45f4e5 Michael Hanselmann
# and thus requires these functions. To avoid code duplication, they're kept in
46 1b45f4e5 Michael Hanselmann
# here.
47 1b45f4e5 Michael Hanselmann
48 1b45f4e5 Michael Hanselmann
def BuildVersion(major, minor, revision):
49 1b45f4e5 Michael Hanselmann
  """Calculates int version number from major, minor and revision numbers.
50 1b45f4e5 Michael Hanselmann

51 1b45f4e5 Michael Hanselmann
  Returns: int representing version number
52 1b45f4e5 Michael Hanselmann

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

65 1b45f4e5 Michael Hanselmann
  Returns: tuple; (major, minor, revision)
66 1b45f4e5 Michael Hanselmann

67 1b45f4e5 Michael Hanselmann
  """
68 1b45f4e5 Michael Hanselmann
  assert isinstance(version, int)
69 1b45f4e5 Michael Hanselmann
70 1b45f4e5 Michael Hanselmann
  (major, remainder) = divmod(version, 1000000)
71 1b45f4e5 Michael Hanselmann
  (minor, revision) = divmod(remainder, 10000)
72 1b45f4e5 Michael Hanselmann
73 1b45f4e5 Michael Hanselmann
  return (major, minor, revision)
74 1b45f4e5 Michael Hanselmann
75 1b45f4e5 Michael Hanselmann
76 243cdbcc Michael Hanselmann
CONFIG_MAJOR = int(_autoconf.VERSION_MAJOR)
77 243cdbcc Michael Hanselmann
CONFIG_MINOR = int(_autoconf.VERSION_MINOR)
78 243cdbcc Michael Hanselmann
CONFIG_REVISION = 0
79 1b45f4e5 Michael Hanselmann
CONFIG_VERSION = BuildVersion(CONFIG_MAJOR, CONFIG_MINOR, CONFIG_REVISION)
80 a8083063 Iustin Pop
81 a8083063 Iustin Pop
# file paths
82 2ec08468 Michael Hanselmann
DATA_DIR = _autoconf.LOCALSTATEDIR + "/lib/ganeti"
83 1ed70996 Iustin Pop
RUN_DIR = _autoconf.LOCALSTATEDIR + "/run"
84 75afaefc Iustin Pop
RUN_GANETI_DIR = RUN_DIR + "/ganeti"
85 75afaefc Iustin Pop
BDEV_CACHE_DIR = RUN_GANETI_DIR # TODO(2.0): move deeper
86 75afaefc Iustin Pop
DISK_LINKS_DIR = RUN_GANETI_DIR + "/instance-disks"
87 75afaefc Iustin Pop
# keep RUN_GANETI_DIR first here, to make sure all get created when the node
88 75afaefc Iustin Pop
# daemon is started (this takes care of RUN_DIR being tmpfs)
89 75afaefc Iustin Pop
SUB_RUN_DIRS = [ RUN_GANETI_DIR, BDEV_CACHE_DIR, DISK_LINKS_DIR ]
90 3aecd2c7 Iustin Pop
LOCK_DIR = _autoconf.LOCALSTATEDIR + "/lock"
91 a8083063 Iustin Pop
CLUSTER_CONF_FILE = DATA_DIR + "/config.data"
92 a8083063 Iustin Pop
SSL_CERT_FILE = DATA_DIR + "/server.pem"
93 5a3103e9 Michael Hanselmann
WATCHER_STATEFILE = DATA_DIR + "/watcher.data"
94 82122173 Iustin Pop
SSH_KNOWN_HOSTS_FILE = DATA_DIR + "/known_hosts"
95 f1da30e6 Michael Hanselmann
QUEUE_DIR = DATA_DIR + "/queue"
96 c8a0948f Michael Hanselmann
ETC_HOSTS = "/etc/hosts"
97 1abbbbe2 Manuel Franceschini
DEFAULT_FILE_STORAGE_DIR = _autoconf.FILE_STORAGE_DIR
98 68676a00 Iustin Pop
MASTER_SOCKET = RUN_GANETI_DIR + "/master.sock"
99 a8083063 Iustin Pop
100 2ec08468 Michael Hanselmann
NODE_INITD_SCRIPT = _autoconf.SYSCONFDIR + "/init.d/ganeti"
101 a8083063 Iustin Pop
DEFAULT_NODED_PORT = 1811
102 a8083063 Iustin Pop
FIRST_DRBD_PORT = 11000
103 a8083063 Iustin Pop
LAST_DRBD_PORT = 14999
104 880478f8 Iustin Pop
MASTER_SCRIPT = "ganeti-master"
105 a8083063 Iustin Pop
106 2ec08468 Michael Hanselmann
LOG_DIR = _autoconf.LOCALSTATEDIR + "/log/ganeti"
107 a8083063 Iustin Pop
LOG_OS_DIR = LOG_DIR + "/os"
108 a8083063 Iustin Pop
LOG_NODESERVER = LOG_DIR + "/node-daemon.log"
109 5a3103e9 Michael Hanselmann
LOG_WATCHER = LOG_DIR + "/watcher.log"
110 c1f2901b Iustin Pop
LOG_MASTERDAEMON = LOG_DIR + "/master-daemon.log"
111 d4104181 Iustin Pop
LOG_RAPISERVER = LOG_DIR + "/rapi-daemon.log"
112 d4104181 Iustin Pop
LOG_RAPIACCESS = LOG_DIR + "/rapi-access.log"
113 a8083063 Iustin Pop
114 7c3d51d4 Guido Trotter
OS_SEARCH_PATH = _autoconf.OS_SEARCH_PATH
115 68dccc07 Guido Trotter
EXPORT_DIR = _autoconf.EXPORT_DIR
116 a8083063 Iustin Pop
117 a8083063 Iustin Pop
EXPORT_CONF_FILE = "config.ini"
118 a8083063 Iustin Pop
119 f00b46bc Michael Hanselmann
XEN_KERNEL = _autoconf.XEN_KERNEL
120 f00b46bc Michael Hanselmann
XEN_INITRD = _autoconf.XEN_INITRD
121 f00b46bc Michael Hanselmann
122 973d7867 Iustin Pop
VALUE_DEFAULT = "default"
123 973d7867 Iustin Pop
VALUE_NONE = "none"
124 973d7867 Iustin Pop
125 a8083063 Iustin Pop
# hooks-related constants
126 2ec08468 Michael Hanselmann
HOOKS_BASE_DIR = _autoconf.SYSCONFDIR + "/ganeti/hooks"
127 a8083063 Iustin Pop
HOOKS_PHASE_PRE = "pre"
128 a8083063 Iustin Pop
HOOKS_PHASE_POST = "post"
129 6a4aa7c1 Iustin Pop
HOOKS_NAME_CFGUPDATE = "config-update"
130 a8083063 Iustin Pop
HOOKS_VERSION = 1
131 a8083063 Iustin Pop
132 a8083063 Iustin Pop
# hooks subject type (what object type does the LU deal with)
133 a8083063 Iustin Pop
HTYPE_CLUSTER = "CLUSTER"
134 a8083063 Iustin Pop
HTYPE_NODE = "NODE"
135 a8083063 Iustin Pop
HTYPE_INSTANCE = "INSTANCE"
136 a8083063 Iustin Pop
137 a8083063 Iustin Pop
HKR_SKIP = 0
138 a8083063 Iustin Pop
HKR_FAIL = 1
139 a8083063 Iustin Pop
HKR_SUCCESS = 2
140 a8083063 Iustin Pop
141 a8083063 Iustin Pop
# disk template types
142 a8083063 Iustin Pop
DT_DISKLESS = "diskless"
143 a8083063 Iustin Pop
DT_PLAIN = "plain"
144 a1f445d3 Iustin Pop
DT_DRBD8 = "drbd"
145 04fa07f2 Manuel Franceschini
DT_FILE = "file"
146 a1f445d3 Iustin Pop
147 a1f445d3 Iustin Pop
# the set of network-mirrored disk templates
148 abdf0113 Iustin Pop
DTS_NET_MIRROR = frozenset([DT_DRBD8])
149 a8083063 Iustin Pop
150 d63e148a Manuel Franceschini
# the set of non-lvm-based disk templates
151 d63e148a Manuel Franceschini
DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE])
152 d63e148a Manuel Franceschini
153 fe96220b Iustin Pop
# logical disk types
154 fe96220b Iustin Pop
LD_LV = "lvm"
155 a1f445d3 Iustin Pop
LD_DRBD8 = "drbd8"
156 04fa07f2 Manuel Franceschini
LD_FILE = "file"
157 04fa07f2 Manuel Franceschini
158 04fa07f2 Manuel Franceschini
# file backend driver
159 04fa07f2 Manuel Franceschini
FD_LOOP = "loop"
160 04fa07f2 Manuel Franceschini
FD_BLKTAP = "blktap"
161 a1f445d3 Iustin Pop
162 a1f445d3 Iustin Pop
# the set of drbd-like disk types
163 abdf0113 Iustin Pop
LDS_DRBD = frozenset([LD_DRBD8])
164 fe96220b Iustin Pop
165 a9e0c397 Iustin Pop
# disk replacement mode
166 a9e0c397 Iustin Pop
REPLACE_DISK_PRI = "replace_primary"
167 a9e0c397 Iustin Pop
REPLACE_DISK_SEC = "replace_secondary"
168 a9e0c397 Iustin Pop
REPLACE_DISK_ALL = "replace_all"
169 a9e0c397 Iustin Pop
170 2f6eebee Guido Trotter
# instance creation modes
171 a8083063 Iustin Pop
INSTANCE_CREATE = "create"
172 a8083063 Iustin Pop
INSTANCE_IMPORT = "import"
173 a8083063 Iustin Pop
174 a8083063 Iustin Pop
DISK_TEMPLATES = frozenset([DT_DISKLESS, DT_PLAIN,
175 04fa07f2 Manuel Franceschini
                            DT_DRBD8, DT_FILE])
176 04fa07f2 Manuel Franceschini
177 04fa07f2 Manuel Franceschini
FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP])
178 a8083063 Iustin Pop
179 a8083063 Iustin Pop
# import/export config options
180 a8083063 Iustin Pop
INISECT_EXP = "export"
181 a8083063 Iustin Pop
INISECT_INS = "instance"
182 38242904 Iustin Pop
183 38242904 Iustin Pop
# common exit codes
184 a5bc662a Iustin Pop
EXIT_SUCCESS = 0
185 438b45d4 Michael Hanselmann
EXIT_FAILURE = 1
186 38242904 Iustin Pop
EXIT_NOTMASTER = 11
187 619fdc8e Iustin Pop
EXIT_NODESETUP_ERROR = 12
188 a5bc662a Iustin Pop
EXIT_CONFIRMATION = 13 # need user confirmation
189 cf62a272 Michael Hanselmann
190 5c947f38 Iustin Pop
# tags
191 5c947f38 Iustin Pop
TAG_CLUSTER = "cluster"
192 5c947f38 Iustin Pop
TAG_NODE = "node"
193 5c947f38 Iustin Pop
TAG_INSTANCE = "instance"
194 5c947f38 Iustin Pop
MAX_TAG_LEN = 128
195 5c947f38 Iustin Pop
MAX_TAGS_PER_OBJ = 4096
196 5c947f38 Iustin Pop
197 cf62a272 Michael Hanselmann
# others
198 cf62a272 Michael Hanselmann
DEFAULT_BRIDGE = "xen-br0"
199 e31c43f7 Michael Hanselmann
SYNC_SPEED = 30 * 1024
200 aa4260ca Iustin Pop
LOCALHOST_IP_ADDRESS = "127.0.0.1"
201 16abfbc2 Alexander Schreiber
TCP_PING_TIMEOUT = 10
202 7900ed01 Iustin Pop
GANETI_RUNAS = "root"
203 d63e148a Manuel Franceschini
DEFAULT_VG = "xenvg"
204 31a853d2 Iustin Pop
BIND_ADDRESS_GLOBAL = "0.0.0.0"
205 8d1a2a64 Michael Hanselmann
MIN_VG_SIZE = 20480
206 7900ed01 Iustin Pop
207 37482e7b Guido Trotter
# valid os status
208 37482e7b Guido Trotter
OS_VALID_STATUS = "VALID"
209 37482e7b Guido Trotter
210 70d9e3d8 Iustin Pop
# ssh constants
211 7900ed01 Iustin Pop
SSH_INITD_SCRIPT = _autoconf.SSH_INITD_SCRIPT
212 70d9e3d8 Iustin Pop
SSH_CONFIG_DIR = "/etc/ssh/"
213 70d9e3d8 Iustin Pop
SSH_HOST_DSA_PRIV = SSH_CONFIG_DIR + "ssh_host_dsa_key"
214 70d9e3d8 Iustin Pop
SSH_HOST_DSA_PUB = SSH_HOST_DSA_PRIV + ".pub"
215 70d9e3d8 Iustin Pop
SSH_HOST_RSA_PRIV = SSH_CONFIG_DIR + "ssh_host_rsa_key"
216 70d9e3d8 Iustin Pop
SSH_HOST_RSA_PUB = SSH_HOST_RSA_PRIV + ".pub"
217 fff33d70 Michael Hanselmann
SSH = "ssh"
218 fff33d70 Michael Hanselmann
SCP = "scp"
219 007a2f3e Alexander Schreiber
220 007a2f3e Alexander Schreiber
# reboot types
221 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_SOFT = "soft"
222 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_HARD = "hard"
223 007a2f3e Alexander Schreiber
INSTANCE_REBOOT_FULL = "full"
224 2584d4a4 Alexander Schreiber
225 2584d4a4 Alexander Schreiber
# Hypervisor constants
226 631eb662 Alexander Schreiber
HT_XEN_PVM30 = "xen-3.0"
227 2584d4a4 Alexander Schreiber
HT_FAKE = "fake"
228 2a6469d5 Alexander Schreiber
HT_XEN_HVM31 = "xen-hvm-3.1"
229 2a6469d5 Alexander Schreiber
HYPER_TYPES = frozenset([HT_XEN_PVM30, HT_FAKE, HT_XEN_HVM31])
230 2a6469d5 Alexander Schreiber
HTS_REQ_PORT = frozenset([HT_XEN_HVM31])
231 2584d4a4 Alexander Schreiber
232 2a6469d5 Alexander Schreiber
HT_HVM_VNC_BASE_PORT = 5900
233 25c5878d Alexander Schreiber
HT_HVM_DEFAULT_BOOT_ORDER = 'dc'
234 2a6469d5 Alexander Schreiber
VNC_PASSWORD_FILE = _autoconf.SYSCONFDIR + "/ganeti/vnc-cluster-password"
235 31a853d2 Iustin Pop
VNC_DEFAULT_BIND_ADDRESS = '0.0.0.0'
236 e54c4c5e Guido Trotter
237 e54c4c5e Guido Trotter
# Cluster Verify steps
238 e54c4c5e Guido Trotter
VERIFY_NPLUSONE_MEM = 'nplusone_mem'
239 e54c4c5e Guido Trotter
VERIFY_OPTIONAL_CHECKS = frozenset([VERIFY_NPLUSONE_MEM])
240 e54c4c5e Guido Trotter
241 d61df03e Iustin Pop
# Allocator framework constants
242 298fe380 Iustin Pop
IALLOCATOR_DIR_IN = "in"
243 298fe380 Iustin Pop
IALLOCATOR_DIR_OUT = "out"
244 298fe380 Iustin Pop
IALLOCATOR_MODE_ALLOC = "allocate"
245 298fe380 Iustin Pop
IALLOCATOR_MODE_RELOC = "relocate"
246 298fe380 Iustin Pop
IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH
247 8d528b7c Iustin Pop
IARUN_NOTFOUND = 1
248 8d528b7c Iustin Pop
IARUN_FAILURE = 2
249 8d528b7c Iustin Pop
IARUN_SUCCESS = 3
250 5f33b613 Michael Hanselmann
251 f1da30e6 Michael Hanselmann
# Job queue
252 f1da30e6 Michael Hanselmann
JOB_QUEUE_VERSION = 1
253 f1da30e6 Michael Hanselmann
JOB_QUEUE_LOCK_FILE = QUEUE_DIR + "/lock"
254 f1da30e6 Michael Hanselmann
JOB_QUEUE_VERSION_FILE = QUEUE_DIR + "/version"
255 f1da30e6 Michael Hanselmann
JOB_QUEUE_SERIAL_FILE = QUEUE_DIR + "/serial"
256 f1da30e6 Michael Hanselmann
257 5f33b613 Michael Hanselmann
# Job status
258 5f33b613 Michael Hanselmann
JOB_STATUS_QUEUED = "queued"
259 5f33b613 Michael Hanselmann
JOB_STATUS_RUNNING = "running"
260 5f33b613 Michael Hanselmann
JOB_STATUS_CANCELED = "canceled"
261 5f33b613 Michael Hanselmann
JOB_STATUS_SUCCESS = "success"
262 5f33b613 Michael Hanselmann
JOB_STATUS_ERROR = "error"
263 5f33b613 Michael Hanselmann
264 5f33b613 Michael Hanselmann
OP_STATUS_QUEUED = "queued"
265 5f33b613 Michael Hanselmann
OP_STATUS_RUNNING = "running"
266 5f33b613 Michael Hanselmann
OP_STATUS_SUCCESS = "success"
267 5f33b613 Michael Hanselmann
OP_STATUS_ERROR = "error"
268 f1048938 Iustin Pop
269 f1048938 Iustin Pop
# Execution log types
270 f1048938 Iustin Pop
ELOG_MESSAGE = "message"
271 f1048938 Iustin Pop
ELOG_PROGRESS = "progress"
272 d4104181 Iustin Pop
273 d4104181 Iustin Pop
# Temporary RAPI constants until we have cluster parameters
274 d4104181 Iustin Pop
RAPI_ENABLE = True
275 d4104181 Iustin Pop
RAPI_PORT = 5080