constants.py 7.08 KB
Newer Older
Iustin Pop's avatar
Iustin Pop committed
1
#
Iustin Pop's avatar
Iustin Pop committed
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#

# Copyright (C) 2006, 2007 Google Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.


"""Module holding different constants."""

24
from ganeti import _autoconf
25

Iustin Pop's avatar
Iustin Pop committed
26
# various versions
27
PROTOCOL_VERSION = 13
28
RELEASE_VERSION = _autoconf.PACKAGE_VERSION
29
OS_API_VERSION = 5
Iustin Pop's avatar
Iustin Pop committed
30
EXPORT_VERSION = 0
Iustin Pop's avatar
Iustin Pop committed
31
RAPI_VERSION = 1
Iustin Pop's avatar
Iustin Pop committed
32

33

34
35
36
37
38
39
40
41
# Format for CONFIG_VERSION:
#   01 03 0123 = 01030123
#   ^^ ^^ ^^^^
#   |  |  + Configuration version/revision
#   |  + Minor version
#   + Major version
#
# It stored as an integer. Make sure not to write an octal number.
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

# BuildVersion and SplitVersion must be in here because we can't import other
# modules. The cfgupgrade tool must be able to read and write version numbers
# and thus requires these functions. To avoid code duplication, they're kept in
# here.

def BuildVersion(major, minor, revision):
  """Calculates int version number from major, minor and revision numbers.

  Returns: int representing version number

  """
  assert isinstance(major, int)
  assert isinstance(minor, int)
  assert isinstance(revision, int)
  return (1000000 * major +
            10000 * minor +
                1 * revision)


def SplitVersion(version):
  """Splits version number stored in an int.

  Returns: tuple; (major, minor, revision)

  """
  assert isinstance(version, int)

  (major, remainder) = divmod(version, 1000000)
  (minor, revision) = divmod(remainder, 10000)

  return (major, minor, revision)


76
77
78
CONFIG_MAJOR = int(_autoconf.VERSION_MAJOR)
CONFIG_MINOR = int(_autoconf.VERSION_MINOR)
CONFIG_REVISION = 0
79
CONFIG_VERSION = BuildVersion(CONFIG_MAJOR, CONFIG_MINOR, CONFIG_REVISION)
Iustin Pop's avatar
Iustin Pop committed
80
81

# file paths
82
DATA_DIR = _autoconf.LOCALSTATEDIR + "/lib/ganeti"
83
RUN_DIR = _autoconf.LOCALSTATEDIR + "/run"
84
85
86
87
88
89
RUN_GANETI_DIR = RUN_DIR + "/ganeti"
BDEV_CACHE_DIR = RUN_GANETI_DIR # TODO(2.0): move deeper
DISK_LINKS_DIR = RUN_GANETI_DIR + "/instance-disks"
# keep RUN_GANETI_DIR first here, to make sure all get created when the node
# daemon is started (this takes care of RUN_DIR being tmpfs)
SUB_RUN_DIRS = [ RUN_GANETI_DIR, BDEV_CACHE_DIR, DISK_LINKS_DIR ]
Iustin Pop's avatar
Iustin Pop committed
90
LOCK_DIR = _autoconf.LOCALSTATEDIR + "/lock"
Iustin Pop's avatar
Iustin Pop committed
91
92
CLUSTER_CONF_FILE = DATA_DIR + "/config.data"
SSL_CERT_FILE = DATA_DIR + "/server.pem"
93
WATCHER_STATEFILE = DATA_DIR + "/watcher.data"
Iustin Pop's avatar
Iustin Pop committed
94
SSH_KNOWN_HOSTS_FILE = DATA_DIR + "/known_hosts"
95
QUEUE_DIR = DATA_DIR + "/queue"
96
ETC_HOSTS = "/etc/hosts"
97
DEFAULT_FILE_STORAGE_DIR = _autoconf.FILE_STORAGE_DIR
98
MASTER_SOCKET = RUN_GANETI_DIR + "/master.sock"
Iustin Pop's avatar
Iustin Pop committed
99

100
NODE_INITD_SCRIPT = _autoconf.SYSCONFDIR + "/init.d/ganeti"
Iustin Pop's avatar
Iustin Pop committed
101
102
103
DEFAULT_NODED_PORT = 1811
FIRST_DRBD_PORT = 11000
LAST_DRBD_PORT = 14999
104
MASTER_SCRIPT = "ganeti-master"
Iustin Pop's avatar
Iustin Pop committed
105

106
LOG_DIR = _autoconf.LOCALSTATEDIR + "/log/ganeti"
Iustin Pop's avatar
Iustin Pop committed
107
108
LOG_OS_DIR = LOG_DIR + "/os"
LOG_NODESERVER = LOG_DIR + "/node-daemon.log"
109
LOG_WATCHER = LOG_DIR + "/watcher.log"
110
LOG_MASTERDAEMON = LOG_DIR + "/master-daemon.log"
Iustin Pop's avatar
Iustin Pop committed
111

112
OS_SEARCH_PATH = _autoconf.OS_SEARCH_PATH
113
EXPORT_DIR = _autoconf.EXPORT_DIR
Iustin Pop's avatar
Iustin Pop committed
114
115
116

EXPORT_CONF_FILE = "config.ini"

117
118
119
XEN_KERNEL = _autoconf.XEN_KERNEL
XEN_INITRD = _autoconf.XEN_INITRD

120
121
122
VALUE_DEFAULT = "default"
VALUE_NONE = "none"

Iustin Pop's avatar
Iustin Pop committed
123
# hooks-related constants
124
HOOKS_BASE_DIR = _autoconf.SYSCONFDIR + "/ganeti/hooks"
Iustin Pop's avatar
Iustin Pop committed
125
126
HOOKS_PHASE_PRE = "pre"
HOOKS_PHASE_POST = "post"
127
HOOKS_NAME_CFGUPDATE = "config-update"
Iustin Pop's avatar
Iustin Pop committed
128
129
130
131
132
133
134
135
136
137
138
139
140
141
HOOKS_VERSION = 1

# hooks subject type (what object type does the LU deal with)
HTYPE_CLUSTER = "CLUSTER"
HTYPE_NODE = "NODE"
HTYPE_INSTANCE = "INSTANCE"

HKR_SKIP = 0
HKR_FAIL = 1
HKR_SUCCESS = 2

# disk template types
DT_DISKLESS = "diskless"
DT_PLAIN = "plain"
142
DT_DRBD8 = "drbd"
143
DT_FILE = "file"
144
145

# the set of network-mirrored disk templates
146
DTS_NET_MIRROR = frozenset([DT_DRBD8])
Iustin Pop's avatar
Iustin Pop committed
147

148
149
150
# the set of non-lvm-based disk templates
DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE])

151
152
# logical disk types
LD_LV = "lvm"
153
LD_DRBD8 = "drbd8"
154
155
156
157
158
LD_FILE = "file"

# file backend driver
FD_LOOP = "loop"
FD_BLKTAP = "blktap"
159
160

# the set of drbd-like disk types
161
LDS_DRBD = frozenset([LD_DRBD8])
162

163
164
165
166
167
# disk replacement mode
REPLACE_DISK_PRI = "replace_primary"
REPLACE_DISK_SEC = "replace_secondary"
REPLACE_DISK_ALL = "replace_all"

168
# instance creation modes
Iustin Pop's avatar
Iustin Pop committed
169
170
171
172
INSTANCE_CREATE = "create"
INSTANCE_IMPORT = "import"

DISK_TEMPLATES = frozenset([DT_DISKLESS, DT_PLAIN,
173
174
175
                            DT_DRBD8, DT_FILE])

FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP])
Iustin Pop's avatar
Iustin Pop committed
176
177
178
179

# import/export config options
INISECT_EXP = "export"
INISECT_INS = "instance"
180
181

# common exit codes
Iustin Pop's avatar
Iustin Pop committed
182
EXIT_SUCCESS = 0
183
EXIT_FAILURE = 1
184
EXIT_NOTMASTER = 11
185
EXIT_NODESETUP_ERROR = 12
Iustin Pop's avatar
Iustin Pop committed
186
EXIT_CONFIRMATION = 13 # need user confirmation
187

188
189
190
191
192
193
194
# tags
TAG_CLUSTER = "cluster"
TAG_NODE = "node"
TAG_INSTANCE = "instance"
MAX_TAG_LEN = 128
MAX_TAGS_PER_OBJ = 4096

195
196
# others
DEFAULT_BRIDGE = "xen-br0"
197
SYNC_SPEED = 30 * 1024
Iustin Pop's avatar
Iustin Pop committed
198
LOCALHOST_IP_ADDRESS = "127.0.0.1"
199
TCP_PING_TIMEOUT = 10
200
GANETI_RUNAS = "root"
201
DEFAULT_VG = "xenvg"
202
BIND_ADDRESS_GLOBAL = "0.0.0.0"
203
MIN_VG_SIZE = 20480
204

205
206
207
# valid os status
OS_VALID_STATUS = "VALID"

208
# ssh constants
209
SSH_INITD_SCRIPT = _autoconf.SSH_INITD_SCRIPT
210
211
212
213
214
SSH_CONFIG_DIR = "/etc/ssh/"
SSH_HOST_DSA_PRIV = SSH_CONFIG_DIR + "ssh_host_dsa_key"
SSH_HOST_DSA_PUB = SSH_HOST_DSA_PRIV + ".pub"
SSH_HOST_RSA_PRIV = SSH_CONFIG_DIR + "ssh_host_rsa_key"
SSH_HOST_RSA_PUB = SSH_HOST_RSA_PRIV + ".pub"
215
216
SSH = "ssh"
SCP = "scp"
217
218
219
220
221

# reboot types
INSTANCE_REBOOT_SOFT = "soft"
INSTANCE_REBOOT_HARD = "hard"
INSTANCE_REBOOT_FULL = "full"
222
223

# Hypervisor constants
224
HT_XEN_PVM30 = "xen-3.0"
225
HT_FAKE = "fake"
226
227
228
HT_XEN_HVM31 = "xen-hvm-3.1"
HYPER_TYPES = frozenset([HT_XEN_PVM30, HT_FAKE, HT_XEN_HVM31])
HTS_REQ_PORT = frozenset([HT_XEN_HVM31])
229

230
HT_HVM_VNC_BASE_PORT = 5900
231
HT_HVM_DEFAULT_BOOT_ORDER = 'dc'
232
VNC_PASSWORD_FILE = _autoconf.SYSCONFDIR + "/ganeti/vnc-cluster-password"
233
VNC_DEFAULT_BIND_ADDRESS = '0.0.0.0'
234
235
236
237
238

# Cluster Verify steps
VERIFY_NPLUSONE_MEM = 'nplusone_mem'
VERIFY_OPTIONAL_CHECKS = frozenset([VERIFY_NPLUSONE_MEM])

239
# Allocator framework constants
240
241
242
243
244
IALLOCATOR_DIR_IN = "in"
IALLOCATOR_DIR_OUT = "out"
IALLOCATOR_MODE_ALLOC = "allocate"
IALLOCATOR_MODE_RELOC = "relocate"
IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH
245
246
247
IARUN_NOTFOUND = 1
IARUN_FAILURE = 2
IARUN_SUCCESS = 3
248

249
250
251
252
253
254
# Job queue
JOB_QUEUE_VERSION = 1
JOB_QUEUE_LOCK_FILE = QUEUE_DIR + "/lock"
JOB_QUEUE_VERSION_FILE = QUEUE_DIR + "/version"
JOB_QUEUE_SERIAL_FILE = QUEUE_DIR + "/serial"

255
256
257
258
259
260
261
262
263
264
265
# Job status
JOB_STATUS_QUEUED = "queued"
JOB_STATUS_RUNNING = "running"
JOB_STATUS_CANCELED = "canceled"
JOB_STATUS_SUCCESS = "success"
JOB_STATUS_ERROR = "error"

OP_STATUS_QUEUED = "queued"
OP_STATUS_RUNNING = "running"
OP_STATUS_SUCCESS = "success"
OP_STATUS_ERROR = "error"
266
267
268
269

# Execution log types
ELOG_MESSAGE = "message"
ELOG_PROGRESS = "progress"