constants.py 6.26 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
83
RUN_DIR = _autoconf.LOCALSTATEDIR + "/run"
BDEV_CACHE_DIR = RUN_DIR + "/ganeti"
84
DISK_LINKS_DIR = RUN_DIR + "/ganeti/instance-disks"
Iustin Pop's avatar
Iustin Pop committed
85
LOCK_DIR = _autoconf.LOCALSTATEDIR + "/lock"
Iustin Pop's avatar
Iustin Pop committed
86
87
CLUSTER_CONF_FILE = DATA_DIR + "/config.data"
SSL_CERT_FILE = DATA_DIR + "/server.pem"
88
WATCHER_STATEFILE = DATA_DIR + "/watcher.data"
Iustin Pop's avatar
Iustin Pop committed
89
SSH_KNOWN_HOSTS_FILE = DATA_DIR + "/known_hosts"
90
ETC_HOSTS = "/etc/hosts"
91
DEFAULT_FILE_STORAGE_DIR = _autoconf.FILE_STORAGE_DIR
92
MASTER_SOCKET = RUN_DIR + "/ganeti-master.sock"
Iustin Pop's avatar
Iustin Pop committed
93

94
NODE_INITD_SCRIPT = _autoconf.SYSCONFDIR + "/init.d/ganeti"
Iustin Pop's avatar
Iustin Pop committed
95
96
97
DEFAULT_NODED_PORT = 1811
FIRST_DRBD_PORT = 11000
LAST_DRBD_PORT = 14999
98
MASTER_SCRIPT = "ganeti-master"
Iustin Pop's avatar
Iustin Pop committed
99

100
LOG_DIR = _autoconf.LOCALSTATEDIR + "/log/ganeti"
Iustin Pop's avatar
Iustin Pop committed
101
102
LOG_OS_DIR = LOG_DIR + "/os"
LOG_NODESERVER = LOG_DIR + "/node-daemon.log"
103
LOG_WATCHER = LOG_DIR + "/watcher.log"
104
LOG_MASTERDAEMON = LOG_DIR + "/master-daemon.log"
Iustin Pop's avatar
Iustin Pop committed
105

106
OS_SEARCH_PATH = _autoconf.OS_SEARCH_PATH
107
EXPORT_DIR = _autoconf.EXPORT_DIR
Iustin Pop's avatar
Iustin Pop committed
108
109
110

EXPORT_CONF_FILE = "config.ini"

111
112
113
XEN_KERNEL = _autoconf.XEN_KERNEL
XEN_INITRD = _autoconf.XEN_INITRD

114
115
116
VALUE_DEFAULT = "default"
VALUE_NONE = "none"

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

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

142
143
144
# the set of non-lvm-based disk templates
DTS_NOT_LVM = frozenset([DT_DISKLESS, DT_FILE])

145
146
# logical disk types
LD_LV = "lvm"
147
LD_DRBD8 = "drbd8"
148
149
150
151
152
LD_FILE = "file"

# file backend driver
FD_LOOP = "loop"
FD_BLKTAP = "blktap"
153
154

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

157
158
159
160
161
# disk replacement mode
REPLACE_DISK_PRI = "replace_primary"
REPLACE_DISK_SEC = "replace_secondary"
REPLACE_DISK_ALL = "replace_all"

162
# instance creation modes
Iustin Pop's avatar
Iustin Pop committed
163
164
165
166
INSTANCE_CREATE = "create"
INSTANCE_IMPORT = "import"

DISK_TEMPLATES = frozenset([DT_DISKLESS, DT_PLAIN,
167
168
169
                            DT_DRBD8, DT_FILE])

FILE_DRIVER = frozenset([FD_LOOP, FD_BLKTAP])
Iustin Pop's avatar
Iustin Pop committed
170
171
172
173

# import/export config options
INISECT_EXP = "export"
INISECT_INS = "instance"
174
175

# common exit codes
Iustin Pop's avatar
Iustin Pop committed
176
EXIT_SUCCESS = 0
177
EXIT_FAILURE = 1
178
EXIT_NOTMASTER = 11
179
EXIT_NODESETUP_ERROR = 12
Iustin Pop's avatar
Iustin Pop committed
180
EXIT_CONFIRMATION = 13 # need user confirmation
181

182
183
184
185
186
187
188
# tags
TAG_CLUSTER = "cluster"
TAG_NODE = "node"
TAG_INSTANCE = "instance"
MAX_TAG_LEN = 128
MAX_TAGS_PER_OBJ = 4096

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

199
200
201
# valid os status
OS_VALID_STATUS = "VALID"

202
# ssh constants
203
SSH_INITD_SCRIPT = _autoconf.SSH_INITD_SCRIPT
204
205
206
207
208
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"
209
210
SSH = "ssh"
SCP = "scp"
211
212
213
214
215

# reboot types
INSTANCE_REBOOT_SOFT = "soft"
INSTANCE_REBOOT_HARD = "hard"
INSTANCE_REBOOT_FULL = "full"
216
217

# Hypervisor constants
218
HT_XEN_PVM30 = "xen-3.0"
219
HT_FAKE = "fake"
220
221
222
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])
223

224
HT_HVM_VNC_BASE_PORT = 5900
225
HT_HVM_DEFAULT_BOOT_ORDER = 'dc'
226
VNC_PASSWORD_FILE = _autoconf.SYSCONFDIR + "/ganeti/vnc-cluster-password"
227
VNC_DEFAULT_BIND_ADDRESS = '0.0.0.0'
228
229
230
231
232

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

233
# Allocator framework constants
234
235
236
237
238
IALLOCATOR_DIR_IN = "in"
IALLOCATOR_DIR_OUT = "out"
IALLOCATOR_MODE_ALLOC = "allocate"
IALLOCATOR_MODE_RELOC = "relocate"
IALLOCATOR_SEARCH_PATH = _autoconf.IALLOCATOR_SEARCH_PATH
239
240
241
IARUN_NOTFOUND = 1
IARUN_FAILURE = 2
IARUN_SUCCESS = 3