Statistics
| Branch: | Tag: | Revision:

root / lib / constants.py @ 04864530

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

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

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

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

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