Revision 3329f4de
b/Makefile.am | ||
---|---|---|
228 | 228 |
lib/objectutils.py \ |
229 | 229 |
lib/opcodes.py \ |
230 | 230 |
lib/ovf.py \ |
231 |
lib/pathutils.py \ |
|
231 | 232 |
lib/qlang.py \ |
232 | 233 |
lib/query.py \ |
233 | 234 |
lib/rpc.py \ |
b/htools/Ganeti/Runtime.hs | ||
---|---|---|
92 | 92 |
|
93 | 93 |
-- | Returns the log file for a daemon. |
94 | 94 |
daemonLogFile :: GanetiDaemon -> FilePath |
95 |
daemonLogFile GanetiConfd = C.daemonsLogfilesGanetiConfd |
|
96 |
daemonLogFile _ = error "Unimplemented" |
|
95 |
daemonLogFile daemon = C.logDir </> daemonName daemon <.> "log" |
|
97 | 96 |
|
98 | 97 |
-- | Returns the pid file name for a daemon. |
99 | 98 |
daemonPidFile :: GanetiDaemon -> FilePath |
100 |
daemonPidFile daemon = C.runGanetiDir </> daemonName daemon <.> "pid"
|
|
99 |
daemonPidFile daemon = C.runDir </> daemonName daemon <.> "pid" |
|
101 | 100 |
|
102 | 101 |
-- | All groups list. A bit hacking, as we can't enforce it's complete |
103 | 102 |
-- at compile time. |
b/lib/backend.py | ||
---|---|---|
2168 | 2168 |
@type top_dirs: list |
2169 | 2169 |
@param top_dirs: the list of directories in which to |
2170 | 2170 |
search (if not given defaults to |
2171 |
L{constants.OS_SEARCH_PATH})
|
|
2171 |
L{pathutils.OS_SEARCH_PATH})
|
|
2172 | 2172 |
@rtype: list of L{objects.OS} |
2173 | 2173 |
@return: a list of tuples (name, path, status, diagnose, variants, |
2174 | 2174 |
parameters, api_version) for all (potential) OSes under all |
... | ... | |
3538 | 3538 |
|
3539 | 3539 |
@type hooks_base_dir: str or None |
3540 | 3540 |
@param hooks_base_dir: if not None, this overrides the |
3541 |
L{constants.HOOKS_BASE_DIR} (useful for unittests)
|
|
3541 |
L{pathutils.HOOKS_BASE_DIR} (useful for unittests)
|
|
3542 | 3542 |
|
3543 | 3543 |
""" |
3544 | 3544 |
if hooks_base_dir is None: |
b/lib/bootstrap.py | ||
---|---|---|
412 | 412 |
(master_netdev, |
413 | 413 |
result.output.strip()), errors.ECODE_INVAL) |
414 | 414 |
|
415 |
dirs = [(constants.RUN_GANETI_DIR, constants.RUN_DIRS_MODE)]
|
|
415 |
dirs = [(constants.RUN_DIR, constants.RUN_DIRS_MODE)] |
|
416 | 416 |
utils.EnsureDirs(dirs) |
417 | 417 |
|
418 | 418 |
objects.UpgradeBeParams(beparams) |
b/lib/constants.py | ||
---|---|---|
26 | 26 |
|
27 | 27 |
from ganeti import _autoconf |
28 | 28 |
from ganeti import _vcsversion |
29 |
from ganeti.pathutils import * # pylint: disable=W0401,W0614 |
|
30 |
|
|
29 | 31 |
|
30 | 32 |
# various versions |
31 | 33 |
RELEASE_VERSION = _autoconf.PACKAGE_VERSION |
... | ... | |
129 | 131 |
MAX_WIPE_CHUNK = 1024 # 1GB |
130 | 132 |
MIN_WIPE_CHUNK_PERCENT = 10 |
131 | 133 |
|
132 |
|
|
133 |
# file paths |
|
134 |
DATA_DIR = _autoconf.LOCALSTATEDIR + "/lib/ganeti" |
|
135 |
RUN_DIR = _autoconf.LOCALSTATEDIR + "/run" |
|
136 |
RUN_GANETI_DIR = RUN_DIR + "/ganeti" |
|
137 |
BDEV_CACHE_DIR = RUN_GANETI_DIR + "/bdev-cache" |
|
138 |
DISK_LINKS_DIR = RUN_GANETI_DIR + "/instance-disks" |
|
139 | 134 |
RUN_DIRS_MODE = 0775 |
140 |
SOCKET_DIR = RUN_GANETI_DIR + "/socket" |
|
141 | 135 |
SECURE_DIR_MODE = 0700 |
142 | 136 |
SECURE_FILE_MODE = 0600 |
143 |
CRYPTO_KEYS_DIR = RUN_GANETI_DIR + "/crypto" |
|
144 |
IMPORT_EXPORT_DIR = RUN_GANETI_DIR + "/import-export" |
|
145 | 137 |
ADOPTABLE_BLOCKDEV_ROOT = "/dev/disk/" |
146 |
LOCK_DIR = _autoconf.LOCALSTATEDIR + "/lock" |
|
147 |
SSCONF_LOCK_FILE = LOCK_DIR + "/ganeti-ssconf.lock" |
|
148 |
# User-id pool lock directory |
|
149 |
# The user-ids that are in use have a corresponding lock file in this directory |
|
150 |
UIDPOOL_LOCKDIR = RUN_GANETI_DIR + "/uid-pool" |
|
151 |
CLUSTER_CONF_FILE = DATA_DIR + "/config.data" |
|
152 |
NODED_CERT_FILE = DATA_DIR + "/server.pem" |
|
153 |
RAPI_CERT_FILE = DATA_DIR + "/rapi.pem" |
|
154 |
CONFD_HMAC_KEY = DATA_DIR + "/hmac.key" |
|
155 |
SPICE_CERT_FILE = DATA_DIR + "/spice.pem" |
|
156 |
SPICE_CACERT_FILE = DATA_DIR + "/spice-ca.pem" |
|
157 |
CLUSTER_DOMAIN_SECRET_FILE = DATA_DIR + "/cluster-domain-secret" |
|
158 |
INSTANCE_STATUS_FILE = RUN_GANETI_DIR + "/instance-status" |
|
159 |
SSH_KNOWN_HOSTS_FILE = DATA_DIR + "/known_hosts" |
|
160 |
RAPI_USERS_FILE = DATA_DIR + "/rapi/users" |
|
161 |
QUEUE_DIR = DATA_DIR + "/queue" |
|
162 |
DAEMON_UTIL = _autoconf.PKGLIBDIR + "/daemon-util" |
|
163 |
SETUP_SSH = _autoconf.TOOLSDIR + "/setup-ssh" |
|
164 |
KVM_IFUP = _autoconf.PKGLIBDIR + "/kvm-ifup" |
|
165 |
KVM_CONSOLE_WRAPPER = _autoconf.PKGLIBDIR + "/tools/kvm-console-wrapper" |
|
166 |
XM_CONSOLE_WRAPPER = _autoconf.PKGLIBDIR + "/tools/xm-console-wrapper" |
|
167 | 138 |
ETC_HOSTS = "/etc/hosts" |
168 |
DEFAULT_FILE_STORAGE_DIR = _autoconf.FILE_STORAGE_DIR |
|
169 |
DEFAULT_SHARED_FILE_STORAGE_DIR = _autoconf.SHARED_FILE_STORAGE_DIR |
|
170 | 139 |
ENABLE_FILE_STORAGE = _autoconf.ENABLE_FILE_STORAGE |
171 | 140 |
ENABLE_SHARED_FILE_STORAGE = _autoconf.ENABLE_SHARED_FILE_STORAGE |
172 |
SYSCONFDIR = _autoconf.SYSCONFDIR |
|
173 |
TOOLSDIR = _autoconf.TOOLSDIR |
|
174 |
CONF_DIR = SYSCONFDIR + "/ganeti" |
|
175 |
USER_SCRIPTS_DIR = CONF_DIR + "/scripts" |
|
176 | 141 |
ENABLE_CONFD = _autoconf.ENABLE_CONFD |
177 | 142 |
HS_CONFD = _autoconf.HS_CONFD |
178 | 143 |
ENABLE_SPLIT_QUERY = _autoconf.ENABLE_SPLIT_QUERY |
179 | 144 |
|
180 |
#: Lock file for watcher, locked in shared mode by watcher; lock in exclusive |
|
181 |
# mode to block watcher (see L{cli._RunWhileClusterStoppedHelper.Call} |
|
182 |
WATCHER_LOCK_FILE = LOCK_DIR + "/ganeti-watcher.lock" |
|
183 |
|
|
184 |
#: Status file for per-group watcher, locked in exclusive mode by watcher |
|
185 |
WATCHER_GROUP_STATE_FILE = DATA_DIR + "/watcher.%s.data" |
|
186 |
|
|
187 |
#: File for per-group instance status, merged into L{INSTANCE_STATUS_FILE} by |
|
188 |
#: per-group processes |
|
189 |
WATCHER_GROUP_INSTANCE_STATUS_FILE = DATA_DIR + "/watcher.%s.instance-status" |
|
190 |
|
|
191 |
#: File containing Unix timestamp until which watcher should be paused |
|
192 |
WATCHER_PAUSEFILE = DATA_DIR + "/watcher.pause" |
|
193 |
|
|
194 |
# Master IP address setup scripts paths (default and user-provided) |
|
195 |
DEFAULT_MASTER_SETUP_SCRIPT = TOOLSDIR + "/master-ip-setup" |
|
196 |
EXTERNAL_MASTER_SETUP_SCRIPT = USER_SCRIPTS_DIR + "/master-ip-setup" |
|
197 |
|
|
198 |
ALL_CERT_FILES = frozenset([ |
|
199 |
NODED_CERT_FILE, |
|
200 |
RAPI_CERT_FILE, |
|
201 |
SPICE_CERT_FILE, |
|
202 |
SPICE_CACERT_FILE, |
|
203 |
]) |
|
204 |
|
|
205 |
#: LUXI socket used for job execution |
|
206 |
MASTER_SOCKET = SOCKET_DIR + "/ganeti-master" |
|
207 |
#: LUXI socket used for queries only |
|
208 |
QUERY_SOCKET = SOCKET_DIR + "/ganeti-query" |
|
209 |
|
|
210 | 145 |
NODED = "ganeti-noded" |
211 | 146 |
CONFD = "ganeti-confd" |
212 | 147 |
RAPI = "ganeti-rapi" |
... | ... | |
232 | 167 |
FIRST_DRBD_PORT = 11000 |
233 | 168 |
LAST_DRBD_PORT = 14999 |
234 | 169 |
|
235 |
LOG_DIR = _autoconf.LOCALSTATEDIR + "/log/ganeti/" |
|
236 |
DAEMONS_LOGFILES = { |
|
237 |
# "daemon-name": "logfile" |
|
238 |
NODED: LOG_DIR + "node-daemon.log", |
|
239 |
CONFD: LOG_DIR + "conf-daemon.log", |
|
240 |
RAPI: LOG_DIR + "rapi-daemon.log", |
|
241 |
MASTERD: LOG_DIR + "master-daemon.log", |
|
242 |
# used in the ganeti-nbma project |
|
243 |
NLD: LOG_DIR + "nl-daemon.log", |
|
244 |
} |
|
245 |
|
|
246 |
LOG_OS_DIR = LOG_DIR + "os" |
|
247 |
LOG_WATCHER = LOG_DIR + "watcher.log" |
|
248 |
LOG_COMMANDS = LOG_DIR + "commands.log" |
|
249 |
LOG_BURNIN = LOG_DIR + "burnin.log" |
|
250 |
LOG_SETUP_SSH = LOG_DIR + "setup-ssh.log" |
|
251 |
|
|
252 | 170 |
DEV_CONSOLE = "/dev/console" |
253 | 171 |
|
254 | 172 |
PROC_MOUNTS = "/proc/mounts" |
... | ... | |
264 | 182 |
SYSLOG_ONLY = "only" |
265 | 183 |
SYSLOG_SOCKET = "/dev/log" |
266 | 184 |
|
267 |
OS_SEARCH_PATH = _autoconf.OS_SEARCH_PATH |
|
268 |
EXPORT_DIR = _autoconf.EXPORT_DIR |
|
269 |
|
|
270 | 185 |
EXPORT_CONF_FILE = "config.ini" |
271 | 186 |
|
272 | 187 |
XEN_BOOTLOADER = _autoconf.XEN_BOOTLOADER |
... | ... | |
323 | 238 |
|
324 | 239 |
X509_CERT_SIGNATURE_HEADER = "X-Ganeti-Signature" |
325 | 240 |
|
326 |
IMPORT_EXPORT_DAEMON = _autoconf.PKGLIBDIR + "/import-export" |
|
327 |
|
|
328 | 241 |
# Import/export daemon mode |
329 | 242 |
IEM_IMPORT = "import" |
330 | 243 |
IEM_EXPORT = "export" |
... | ... | |
360 | 273 |
EXT_PLUGIN_MASK = re.compile("^[a-zA-Z0-9_-]+$") |
361 | 274 |
|
362 | 275 |
# hooks-related constants |
363 |
HOOKS_BASE_DIR = CONF_DIR + "/hooks" |
|
364 | 276 |
HOOKS_PHASE_PRE = "pre" |
365 | 277 |
HOOKS_PHASE_POST = "post" |
366 | 278 |
HOOKS_NAME_CFGUPDATE = "config-update" |
... | ... | |
693 | 605 |
OS_VALIDATE_CALLS = frozenset([OS_VALIDATE_PARAMETERS]) |
694 | 606 |
|
695 | 607 |
# ssh constants |
696 |
SSH_CONFIG_DIR = _autoconf.SSH_CONFIG_DIR |
|
697 |
SSH_HOST_DSA_PRIV = SSH_CONFIG_DIR + "/ssh_host_dsa_key" |
|
698 |
SSH_HOST_DSA_PUB = SSH_HOST_DSA_PRIV + ".pub" |
|
699 |
SSH_HOST_RSA_PRIV = SSH_CONFIG_DIR + "/ssh_host_rsa_key" |
|
700 |
SSH_HOST_RSA_PUB = SSH_HOST_RSA_PRIV + ".pub" |
|
701 | 608 |
SSH = "ssh" |
702 | 609 |
SCP = "scp" |
703 | 610 |
|
... | ... | |
1193 | 1100 |
HTS_REQ_PORT = frozenset([HT_XEN_HVM, HT_KVM]) |
1194 | 1101 |
|
1195 | 1102 |
VNC_BASE_PORT = 5900 |
1196 |
VNC_PASSWORD_FILE = CONF_DIR + "/vnc-cluster-password" |
|
1197 | 1103 |
VNC_DEFAULT_BIND_ADDRESS = IP4_ADDRESS_ANY |
1198 | 1104 |
|
1199 | 1105 |
# NIC types |
... | ... | |
1565 | 1471 |
|
1566 | 1472 |
# Job queue |
1567 | 1473 |
JOB_QUEUE_VERSION = 1 |
1568 |
JOB_QUEUE_LOCK_FILE = QUEUE_DIR + "/lock" |
|
1569 |
JOB_QUEUE_VERSION_FILE = QUEUE_DIR + "/version" |
|
1570 |
JOB_QUEUE_SERIAL_FILE = QUEUE_DIR + "/serial" |
|
1571 |
JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive" |
|
1572 |
JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain" |
|
1573 | 1474 |
JOB_QUEUE_SIZE_HARD_LIMIT = 5000 |
1574 | 1475 |
|
1575 | 1476 |
JOB_ID_TEMPLATE = r"\d+" |
... | ... | |
2128 | 2029 |
|
2129 | 2030 |
# Do not re-export imported modules |
2130 | 2031 |
del re, _vcsversion, _autoconf, socket |
2032 |
|
|
2033 |
# Unintended imports from pathutils (temporary) |
|
2034 |
del GetLogFilename |
b/lib/daemon.py | ||
---|---|---|
41 | 41 |
from ganeti import ssconf |
42 | 42 |
from ganeti import runtime |
43 | 43 |
from ganeti import compat |
44 |
from ganeti import pathutils |
|
44 | 45 |
|
45 | 46 |
|
46 | 47 |
class SchedulerBreakout(Exception): |
... | ... | |
778 | 779 |
if check_fn is not None: |
779 | 780 |
check_fn(options, args) |
780 | 781 |
|
782 |
log_filename = pathutils.GetLogFilename(daemon_name) |
|
783 |
|
|
781 | 784 |
if options.fork: |
782 | 785 |
utils.CloseFDs() |
783 |
(wpipe, stdio_reopen_fn) = \ |
|
784 |
utils.Daemonize(logfile=constants.DAEMONS_LOGFILES[daemon_name]) |
|
786 |
(wpipe, stdio_reopen_fn) = utils.Daemonize(logfile=log_filename) |
|
785 | 787 |
else: |
786 | 788 |
(wpipe, stdio_reopen_fn) = (None, None) |
787 | 789 |
|
788 | 790 |
log_reopen_fn = \ |
789 |
utils.SetupLogging(constants.DAEMONS_LOGFILES[daemon_name], daemon_name,
|
|
791 |
utils.SetupLogging(log_filename, daemon_name,
|
|
790 | 792 |
debug=options.debug, |
791 | 793 |
stderr_logging=not options.fork, |
792 | 794 |
multithreaded=multithreaded, |
b/lib/hypervisor/hv_chroot.py | ||
---|---|---|
58 | 58 |
- instance alive check is based on whether any process is using the chroot |
59 | 59 |
|
60 | 60 |
""" |
61 |
_ROOT_DIR = constants.RUN_GANETI_DIR + "/chroot-hypervisor"
|
|
61 |
_ROOT_DIR = constants.RUN_DIR + "/chroot-hypervisor" |
|
62 | 62 |
|
63 | 63 |
PARAMETERS = { |
64 | 64 |
constants.HV_INIT_SCRIPT: (True, utils.IsNormAbsPath, |
b/lib/hypervisor/hv_fake.py | ||
---|---|---|
43 | 43 |
""" |
44 | 44 |
CAN_MIGRATE = True |
45 | 45 |
|
46 |
_ROOT_DIR = constants.RUN_GANETI_DIR + "/fake-hypervisor"
|
|
46 |
_ROOT_DIR = constants.RUN_DIR + "/fake-hypervisor" |
|
47 | 47 |
|
48 | 48 |
def __init__(self): |
49 | 49 |
hv_base.BaseHypervisor.__init__(self) |
b/lib/hypervisor/hv_kvm.py | ||
---|---|---|
404 | 404 |
""" |
405 | 405 |
CAN_MIGRATE = True |
406 | 406 |
|
407 |
_ROOT_DIR = constants.RUN_GANETI_DIR + "/kvm-hypervisor"
|
|
407 |
_ROOT_DIR = constants.RUN_DIR + "/kvm-hypervisor" |
|
408 | 408 |
_PIDS_DIR = _ROOT_DIR + "/pid" # contains live instances pids |
409 | 409 |
_UIDS_DIR = _ROOT_DIR + "/uid" # contains instances reserved uids |
410 | 410 |
_CTRL_DIR = _ROOT_DIR + "/ctrl" # contains instances control sockets |
b/lib/hypervisor/hv_lxc.py | ||
---|---|---|
65 | 65 |
notify_on_release and release_agent feature of cgroups |
66 | 66 |
|
67 | 67 |
""" |
68 |
_ROOT_DIR = constants.RUN_GANETI_DIR + "/lxc"
|
|
68 |
_ROOT_DIR = constants.RUN_DIR + "/lxc" |
|
69 | 69 |
_DEVS = [ |
70 | 70 |
"c 1:3", # /dev/null |
71 | 71 |
"c 1:5", # /dev/zero |
b/lib/pathutils.py | ||
---|---|---|
1 |
# |
|
2 |
# |
|
3 |
|
|
4 |
# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Google Inc. |
|
5 |
# |
|
6 |
# This program is free software; you can redistribute it and/or modify |
|
7 |
# it under the terms of the GNU General Public License as published by |
|
8 |
# the Free Software Foundation; either version 2 of the License, or |
|
9 |
# (at your option) any later version. |
|
10 |
# |
|
11 |
# This program is distributed in the hope that it will be useful, but |
|
12 |
# WITHOUT ANY WARRANTY; without even the implied warranty of |
|
13 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
14 |
# General Public License for more details. |
|
15 |
# |
|
16 |
# You should have received a copy of the GNU General Public License |
|
17 |
# along with this program; if not, write to the Free Software |
|
18 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
|
19 |
# 02110-1301, USA. |
|
20 |
|
|
21 |
|
|
22 |
"""Module containing constants and functions for filesystem paths. |
|
23 |
|
|
24 |
""" |
|
25 |
|
|
26 |
from ganeti import _autoconf |
|
27 |
|
|
28 |
# Build-time constants |
|
29 |
DEFAULT_FILE_STORAGE_DIR = _autoconf.FILE_STORAGE_DIR |
|
30 |
DEFAULT_SHARED_FILE_STORAGE_DIR = _autoconf.SHARED_FILE_STORAGE_DIR |
|
31 |
EXPORT_DIR = _autoconf.EXPORT_DIR |
|
32 |
OS_SEARCH_PATH = _autoconf.OS_SEARCH_PATH |
|
33 |
SSH_CONFIG_DIR = _autoconf.SSH_CONFIG_DIR |
|
34 |
SYSCONFDIR = _autoconf.SYSCONFDIR |
|
35 |
TOOLSDIR = _autoconf.TOOLSDIR |
|
36 |
|
|
37 |
# Paths which don't change for a virtual cluster |
|
38 |
DAEMON_UTIL = _autoconf.PKGLIBDIR + "/daemon-util" |
|
39 |
IMPORT_EXPORT_DAEMON = _autoconf.PKGLIBDIR + "/import-export" |
|
40 |
KVM_CONSOLE_WRAPPER = _autoconf.PKGLIBDIR + "/tools/kvm-console-wrapper" |
|
41 |
KVM_IFUP = _autoconf.PKGLIBDIR + "/kvm-ifup" |
|
42 |
SETUP_SSH = _autoconf.TOOLSDIR + "/setup-ssh" |
|
43 |
XM_CONSOLE_WRAPPER = _autoconf.PKGLIBDIR + "/tools/xm-console-wrapper" |
|
44 |
|
|
45 |
# Top-level paths |
|
46 |
DATA_DIR = _autoconf.LOCALSTATEDIR + "/lib/ganeti" |
|
47 |
LOCK_DIR = _autoconf.LOCALSTATEDIR + "/lock" |
|
48 |
LOG_DIR = _autoconf.LOCALSTATEDIR + "/log/ganeti" |
|
49 |
RUN_DIR = _autoconf.LOCALSTATEDIR + "/run/ganeti" |
|
50 |
|
|
51 |
#: Script to configure master IP address |
|
52 |
DEFAULT_MASTER_SETUP_SCRIPT = TOOLSDIR + "/master-ip-setup" |
|
53 |
|
|
54 |
SSH_HOST_DSA_PRIV = SSH_CONFIG_DIR + "/ssh_host_dsa_key" |
|
55 |
SSH_HOST_DSA_PUB = SSH_HOST_DSA_PRIV + ".pub" |
|
56 |
SSH_HOST_RSA_PRIV = SSH_CONFIG_DIR + "/ssh_host_rsa_key" |
|
57 |
SSH_HOST_RSA_PUB = SSH_HOST_RSA_PRIV + ".pub" |
|
58 |
|
|
59 |
BDEV_CACHE_DIR = RUN_DIR + "/bdev-cache" |
|
60 |
DISK_LINKS_DIR = RUN_DIR + "/instance-disks" |
|
61 |
SOCKET_DIR = RUN_DIR + "/socket" |
|
62 |
CRYPTO_KEYS_DIR = RUN_DIR + "/crypto" |
|
63 |
IMPORT_EXPORT_DIR = RUN_DIR + "/import-export" |
|
64 |
INSTANCE_STATUS_FILE = RUN_DIR + "/instance-status" |
|
65 |
#: User-id pool lock directory (used user IDs have a corresponding lock file in |
|
66 |
#: this directory) |
|
67 |
UIDPOOL_LOCKDIR = RUN_DIR + "/uid-pool" |
|
68 |
|
|
69 |
SSCONF_LOCK_FILE = LOCK_DIR + "/ganeti-ssconf.lock" |
|
70 |
|
|
71 |
CLUSTER_CONF_FILE = DATA_DIR + "/config.data" |
|
72 |
NODED_CERT_FILE = DATA_DIR + "/server.pem" |
|
73 |
RAPI_CERT_FILE = DATA_DIR + "/rapi.pem" |
|
74 |
CONFD_HMAC_KEY = DATA_DIR + "/hmac.key" |
|
75 |
SPICE_CERT_FILE = DATA_DIR + "/spice.pem" |
|
76 |
SPICE_CACERT_FILE = DATA_DIR + "/spice-ca.pem" |
|
77 |
CLUSTER_DOMAIN_SECRET_FILE = DATA_DIR + "/cluster-domain-secret" |
|
78 |
SSH_KNOWN_HOSTS_FILE = DATA_DIR + "/known_hosts" |
|
79 |
RAPI_USERS_FILE = DATA_DIR + "/rapi/users" |
|
80 |
QUEUE_DIR = DATA_DIR + "/queue" |
|
81 |
CONF_DIR = SYSCONFDIR + "/ganeti" |
|
82 |
USER_SCRIPTS_DIR = CONF_DIR + "/scripts" |
|
83 |
VNC_PASSWORD_FILE = CONF_DIR + "/vnc-cluster-password" |
|
84 |
HOOKS_BASE_DIR = CONF_DIR + "/hooks" |
|
85 |
|
|
86 |
#: Lock file for watcher, locked in shared mode by watcher; lock in exclusive |
|
87 |
# mode to block watcher (see L{cli._RunWhileClusterStoppedHelper.Call} |
|
88 |
WATCHER_LOCK_FILE = LOCK_DIR + "/ganeti-watcher.lock" |
|
89 |
|
|
90 |
#: Status file for per-group watcher, locked in exclusive mode by watcher |
|
91 |
WATCHER_GROUP_STATE_FILE = DATA_DIR + "/watcher.%s.data" |
|
92 |
|
|
93 |
#: File for per-group instance status, merged into L{INSTANCE_STATUS_FILE} by |
|
94 |
#: per-group processes |
|
95 |
WATCHER_GROUP_INSTANCE_STATUS_FILE = DATA_DIR + "/watcher.%s.instance-status" |
|
96 |
|
|
97 |
#: File containing Unix timestamp until which watcher should be paused |
|
98 |
WATCHER_PAUSEFILE = DATA_DIR + "/watcher.pause" |
|
99 |
|
|
100 |
#: User-provided master IP setup script |
|
101 |
EXTERNAL_MASTER_SETUP_SCRIPT = USER_SCRIPTS_DIR + "/master-ip-setup" |
|
102 |
|
|
103 |
#: LUXI socket used for job execution |
|
104 |
MASTER_SOCKET = SOCKET_DIR + "/ganeti-master" |
|
105 |
#: LUXI socket used for queries only |
|
106 |
QUERY_SOCKET = SOCKET_DIR + "/ganeti-query" |
|
107 |
|
|
108 |
LOG_OS_DIR = LOG_DIR + "/os" |
|
109 |
|
|
110 |
# Job queue paths |
|
111 |
JOB_QUEUE_LOCK_FILE = QUEUE_DIR + "/lock" |
|
112 |
JOB_QUEUE_VERSION_FILE = QUEUE_DIR + "/version" |
|
113 |
JOB_QUEUE_SERIAL_FILE = QUEUE_DIR + "/serial" |
|
114 |
JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive" |
|
115 |
JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain" |
|
116 |
|
|
117 |
ALL_CERT_FILES = frozenset([ |
|
118 |
NODED_CERT_FILE, |
|
119 |
RAPI_CERT_FILE, |
|
120 |
SPICE_CERT_FILE, |
|
121 |
SPICE_CACERT_FILE, |
|
122 |
]) |
|
123 |
|
|
124 |
|
|
125 |
def GetLogFilename(daemon_name): |
|
126 |
"""Returns the full path for a daemon's log file. |
|
127 |
|
|
128 |
""" |
|
129 |
return "%s/%s.log" % (LOG_DIR, daemon_name) |
|
130 |
|
|
131 |
|
|
132 |
LOG_WATCHER = GetLogFilename("watcher") |
|
133 |
LOG_COMMANDS = GetLogFilename("commands") |
|
134 |
LOG_BURNIN = GetLogFilename("burnin") |
|
135 |
LOG_SETUP_SSH = GetLogFilename("setup-ssh") |
b/lib/tools/ensure_dirs.py | ||
---|---|---|
34 | 34 |
from ganeti import ssconf |
35 | 35 |
from ganeti import utils |
36 | 36 |
from ganeti import cli |
37 |
from ganeti import pathutils |
|
37 | 38 |
|
38 | 39 |
|
39 | 40 |
(DIR, |
... | ... | |
117 | 118 |
|
118 | 119 |
""" |
119 | 120 |
getent = runtime.GetEnts() |
120 |
masterd_log = constants.DAEMONS_LOGFILES[constants.MASTERD]
|
|
121 |
noded_log = constants.DAEMONS_LOGFILES[constants.NODED]
|
|
122 |
confd_log = constants.DAEMONS_LOGFILES[constants.CONFD]
|
|
123 |
rapi_log = constants.DAEMONS_LOGFILES[constants.RAPI]
|
|
121 |
masterd_log = pathutils.GetLogFilename(constants.MASTERD)
|
|
122 |
noded_log = pathutils.GetLogFilename(constants.NODED)
|
|
123 |
confd_log = pathutils.GetLogFilename(constants.CONFD)
|
|
124 |
rapi_log = pathutils.GetLogFilename(constants.RAPI)
|
|
124 | 125 |
|
125 | 126 |
rapi_dir = os.path.join(constants.DATA_DIR, "rapi") |
126 | 127 |
|
... | ... | |
166 | 167 |
(rapi_dir, DIR, 0750, getent.rapi_uid, getent.masterd_gid), |
167 | 168 |
(constants.RAPI_USERS_FILE, FILE, 0640, getent.rapi_uid, |
168 | 169 |
getent.masterd_gid, False), |
169 |
(constants.RUN_GANETI_DIR, DIR, 0775, getent.masterd_uid,
|
|
170 |
(constants.RUN_DIR, DIR, 0775, getent.masterd_uid, |
|
170 | 171 |
getent.daemons_gid), |
171 | 172 |
(constants.SOCKET_DIR, DIR, 0750, getent.masterd_uid, |
172 | 173 |
getent.daemons_gid), |
b/lib/utils/io.py | ||
---|---|---|
903 | 903 |
daemon name |
904 | 904 |
|
905 | 905 |
""" |
906 |
return PathJoin(constants.RUN_GANETI_DIR, "%s.pid" % name)
|
|
906 |
return PathJoin(constants.RUN_DIR, "%s.pid" % name) |
|
907 | 907 |
|
908 | 908 |
|
909 | 909 |
def WritePidFile(pidfile): |
Also available in: Unified diff