constants.py 6.99 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
31
EXPORT_VERSION = 0

32

33
34
35
36
37
38
39
40
# 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.
41
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

# 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)


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

# file paths
81
DATA_DIR = _autoconf.LOCALSTATEDIR + "/lib/ganeti"
82
RUN_DIR = _autoconf.LOCALSTATEDIR + "/run"
83
84
85
86
87
88
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
89
LOCK_DIR = _autoconf.LOCALSTATEDIR + "/lock"
Iustin Pop's avatar
Iustin Pop committed
90
91
CLUSTER_CONF_FILE = DATA_DIR + "/config.data"
SSL_CERT_FILE = DATA_DIR + "/server.pem"
92
WATCHER_STATEFILE = DATA_DIR + "/watcher.data"
Iustin Pop's avatar
Iustin Pop committed
93
SSH_KNOWN_HOSTS_FILE = DATA_DIR + "/known_hosts"
94
QUEUE_DIR = DATA_DIR + "/queue"
95
ETC_HOSTS = "/etc/hosts"
96
DEFAULT_FILE_STORAGE_DIR = _autoconf.FILE_STORAGE_DIR
97
MASTER_SOCKET = RUN_GANETI_DIR + "/master.sock"
Iustin Pop's avatar
Iustin Pop committed
98

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

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

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

EXPORT_CONF_FILE = "config.ini"

116
117
118
XEN_KERNEL = _autoconf.XEN_KERNEL
XEN_INITRD = _autoconf.XEN_INITRD

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

Iustin Pop's avatar
Iustin Pop committed
122
# hooks-related constants
123
HOOKS_BASE_DIR = _autoconf.SYSCONFDIR + "/ganeti/hooks"
Iustin Pop's avatar
Iustin Pop committed
124
125
HOOKS_PHASE_PRE = "pre"
HOOKS_PHASE_POST = "post"
126
HOOKS_NAME_CFGUPDATE = "config-update"
Iustin Pop's avatar
Iustin Pop committed
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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"
141
DT_DRBD8 = "drbd"
142
DT_FILE = "file"
143
144

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

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

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

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

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

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

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

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

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

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

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

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

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

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

207
# ssh constants
208
SSH_INITD_SCRIPT = _autoconf.SSH_INITD_SCRIPT
209
210
211
212
213
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"
214
215
SSH = "ssh"
SCP = "scp"
216
217
218
219
220

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

# Hypervisor constants
223
HT_XEN_PVM30 = "xen-3.0"
224
HT_FAKE = "fake"
225
226
227
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])
228

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

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

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

248
249
250
251
252
253
# 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"

254
255
256
257
258
259
260
261
262
263
264
# 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"