constants.py 6.79 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
ETC_HOSTS = "/etc/hosts"
95
DEFAULT_FILE_STORAGE_DIR = _autoconf.FILE_STORAGE_DIR
96
MASTER_SOCKET = RUN_GANETI_DIR + "/master.sock"
Iustin Pop's avatar
Iustin Pop committed
97

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

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

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

EXPORT_CONF_FILE = "config.ini"

115
116
117
XEN_KERNEL = _autoconf.XEN_KERNEL
XEN_INITRD = _autoconf.XEN_INITRD

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

237
# Allocator framework constants
238
239
240
241
242
IALLOCATOR_DIR_IN = "in"
IALLOCATOR_DIR_OUT = "out"
IALLOCATOR_MODE_ALLOC = "allocate"
IALLOCATOR_MODE_RELOC = "relocate"
IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH
243
244
245
IARUN_NOTFOUND = 1
IARUN_FAILURE = 2
IARUN_SUCCESS = 3
246
247
248
249
250
251
252
253
254
255
256
257

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