Statistics
| Branch: | Tag: | Revision:

root / lib / pathutils.py @ 178ad717

History | View | Annotate | Download (6.2 kB)

1 3329f4de Michael Hanselmann
#
2 3329f4de Michael Hanselmann
#
3 3329f4de Michael Hanselmann
4 1fbb19fa Iustin Pop
# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Google Inc.
5 3329f4de Michael Hanselmann
#
6 3329f4de Michael Hanselmann
# This program is free software; you can redistribute it and/or modify
7 3329f4de Michael Hanselmann
# it under the terms of the GNU General Public License as published by
8 3329f4de Michael Hanselmann
# the Free Software Foundation; either version 2 of the License, or
9 3329f4de Michael Hanselmann
# (at your option) any later version.
10 3329f4de Michael Hanselmann
#
11 3329f4de Michael Hanselmann
# This program is distributed in the hope that it will be useful, but
12 3329f4de Michael Hanselmann
# WITHOUT ANY WARRANTY; without even the implied warranty of
13 3329f4de Michael Hanselmann
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 3329f4de Michael Hanselmann
# General Public License for more details.
15 3329f4de Michael Hanselmann
#
16 3329f4de Michael Hanselmann
# You should have received a copy of the GNU General Public License
17 3329f4de Michael Hanselmann
# along with this program; if not, write to the Free Software
18 3329f4de Michael Hanselmann
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 3329f4de Michael Hanselmann
# 02110-1301, USA.
20 3329f4de Michael Hanselmann
21 3329f4de Michael Hanselmann
22 3329f4de Michael Hanselmann
"""Module containing constants and functions for filesystem paths.
23 3329f4de Michael Hanselmann

24 3329f4de Michael Hanselmann
"""
25 3329f4de Michael Hanselmann
26 3311e336 Jose A. Lopes
from ganeti import _constants
27 b8028dcf Michael Hanselmann
from ganeti import compat
28 cffbbae7 Michael Hanselmann
from ganeti import vcluster
29 cffbbae7 Michael Hanselmann
30 3329f4de Michael Hanselmann
31 3329f4de Michael Hanselmann
# Build-time constants
32 2dcb5a26 Helga Velroyen
DEFAULT_FILE_STORAGE_DIR = "/srv/ganeti/file-storage"
33 49a924bc Helga Velroyen
DEFAULT_FILE_STORAGE_DIR = vcluster.AddNodePrefix(DEFAULT_FILE_STORAGE_DIR)
34 753d0fed Helga Velroyen
DEFAULT_SHARED_FILE_STORAGE_DIR = "/srv/ganeti/shared-file-storage"
35 2fe1e043 Helga Velroyen
DEFAULT_SHARED_FILE_STORAGE_DIR = \
36 2fe1e043 Helga Velroyen
    vcluster.AddNodePrefix(DEFAULT_SHARED_FILE_STORAGE_DIR)
37 d3e6fd0e Santi Raffa
DEFAULT_GLUSTER_STORAGE_DIR = "/var/run/ganeti/gluster"
38 d3e6fd0e Santi Raffa
DEFAULT_GLUSTER_STORAGE_DIR = \
39 d3e6fd0e Santi Raffa
    vcluster.AddNodePrefix(DEFAULT_GLUSTER_STORAGE_DIR)
40 b8669a69 Jose A. Lopes
EXPORT_DIR = vcluster.AddNodePrefix(_constants.EXPORT_DIR)
41 3311e336 Jose A. Lopes
OS_SEARCH_PATH = _constants.OS_SEARCH_PATH
42 3311e336 Jose A. Lopes
ES_SEARCH_PATH = _constants.ES_SEARCH_PATH
43 b8669a69 Jose A. Lopes
SSH_CONFIG_DIR = _constants.SSH_CONFIG_DIR
44 b8669a69 Jose A. Lopes
XEN_CONFIG_DIR = vcluster.AddNodePrefix(_constants.XEN_CONFIG_DIR)
45 b8669a69 Jose A. Lopes
SYSCONFDIR = vcluster.AddNodePrefix(_constants.SYSCONFDIR)
46 b8669a69 Jose A. Lopes
TOOLSDIR = _constants.TOOLSDIR
47 750b7090 Klaus Aehlig
PKGLIBDIR = _constants.PKGLIBDIR
48 9bfcf2e9 Klaus Aehlig
SHAREDIR = _constants.SHAREDIR
49 b8669a69 Jose A. Lopes
LOCALSTATEDIR = vcluster.AddNodePrefix(_constants.LOCALSTATEDIR)
50 3329f4de Michael Hanselmann
51 3329f4de Michael Hanselmann
# Paths which don't change for a virtual cluster
52 b8669a69 Jose A. Lopes
DAEMON_UTIL = _constants.PKGLIBDIR + "/daemon-util"
53 b8669a69 Jose A. Lopes
IMPORT_EXPORT_DAEMON = _constants.PKGLIBDIR + "/import-export"
54 b8669a69 Jose A. Lopes
KVM_CONSOLE_WRAPPER = _constants.PKGLIBDIR + "/tools/kvm-console-wrapper"
55 b8669a69 Jose A. Lopes
KVM_IFUP = _constants.PKGLIBDIR + "/kvm-ifup"
56 b8669a69 Jose A. Lopes
PREPARE_NODE_JOIN = _constants.PKGLIBDIR + "/prepare-node-join"
57 b8669a69 Jose A. Lopes
NODE_DAEMON_SETUP = _constants.PKGLIBDIR + "/node-daemon-setup"
58 b8669a69 Jose A. Lopes
XEN_CONSOLE_WRAPPER = _constants.PKGLIBDIR + "/tools/xen-console-wrapper"
59 b9db7d45 Klaus Aehlig
CFGUPGRADE = _constants.PKGLIBDIR + "/tools/cfgupgrade"
60 1ef0324f Klaus Aehlig
POST_UPGRADE = _constants.PKGLIBDIR + "/tools/post-upgrade"
61 7a9dbd61 Klaus Aehlig
ENSURE_DIRS = _constants.PKGLIBDIR + "/ensure-dirs"
62 fe4f6dca Michael Hanselmann
ETC_HOSTS = vcluster.ETC_HOSTS
63 3329f4de Michael Hanselmann
64 3329f4de Michael Hanselmann
# Top-level paths
65 cffbbae7 Michael Hanselmann
DATA_DIR = LOCALSTATEDIR + "/lib/ganeti"
66 cffbbae7 Michael Hanselmann
LOCK_DIR = LOCALSTATEDIR + "/lock"
67 cffbbae7 Michael Hanselmann
LOG_DIR = LOCALSTATEDIR + "/log/ganeti"
68 cffbbae7 Michael Hanselmann
RUN_DIR = LOCALSTATEDIR + "/run/ganeti"
69 3329f4de Michael Hanselmann
70 3329f4de Michael Hanselmann
#: Script to configure master IP address
71 3329f4de Michael Hanselmann
DEFAULT_MASTER_SETUP_SCRIPT = TOOLSDIR + "/master-ip-setup"
72 3329f4de Michael Hanselmann
73 84ad6b78 Jose A. Lopes
SSH_HOST_DSA_PRIV = _constants.SSH_HOST_DSA_PRIV
74 84ad6b78 Jose A. Lopes
SSH_HOST_DSA_PUB = _constants.SSH_HOST_DSA_PUB
75 84ad6b78 Jose A. Lopes
SSH_HOST_RSA_PRIV = _constants.SSH_HOST_RSA_PRIV
76 84ad6b78 Jose A. Lopes
SSH_HOST_RSA_PUB = _constants.SSH_HOST_RSA_PUB
77 3329f4de Michael Hanselmann
78 3329f4de Michael Hanselmann
BDEV_CACHE_DIR = RUN_DIR + "/bdev-cache"
79 3329f4de Michael Hanselmann
DISK_LINKS_DIR = RUN_DIR + "/instance-disks"
80 3329f4de Michael Hanselmann
SOCKET_DIR = RUN_DIR + "/socket"
81 3329f4de Michael Hanselmann
CRYPTO_KEYS_DIR = RUN_DIR + "/crypto"
82 3329f4de Michael Hanselmann
IMPORT_EXPORT_DIR = RUN_DIR + "/import-export"
83 3329f4de Michael Hanselmann
INSTANCE_STATUS_FILE = RUN_DIR + "/instance-status"
84 a59d5fa1 Michele Tartara
INSTANCE_REASON_DIR = RUN_DIR + "/instance-reason"
85 3329f4de Michael Hanselmann
#: User-id pool lock directory (used user IDs have a corresponding lock file in
86 3329f4de Michael Hanselmann
#: this directory)
87 3329f4de Michael Hanselmann
UIDPOOL_LOCKDIR = RUN_DIR + "/uid-pool"
88 3329f4de Michael Hanselmann
89 3329f4de Michael Hanselmann
SSCONF_LOCK_FILE = LOCK_DIR + "/ganeti-ssconf.lock"
90 3329f4de Michael Hanselmann
91 3329f4de Michael Hanselmann
CLUSTER_CONF_FILE = DATA_DIR + "/config.data"
92 3329f4de Michael Hanselmann
RAPI_CERT_FILE = DATA_DIR + "/rapi.pem"
93 3329f4de Michael Hanselmann
CONFD_HMAC_KEY = DATA_DIR + "/hmac.key"
94 3329f4de Michael Hanselmann
SPICE_CERT_FILE = DATA_DIR + "/spice.pem"
95 3329f4de Michael Hanselmann
SPICE_CACERT_FILE = DATA_DIR + "/spice-ca.pem"
96 3329f4de Michael Hanselmann
CLUSTER_DOMAIN_SECRET_FILE = DATA_DIR + "/cluster-domain-secret"
97 3329f4de Michael Hanselmann
SSH_KNOWN_HOSTS_FILE = DATA_DIR + "/known_hosts"
98 3329f4de Michael Hanselmann
RAPI_USERS_FILE = DATA_DIR + "/rapi/users"
99 3329f4de Michael Hanselmann
QUEUE_DIR = DATA_DIR + "/queue"
100 e8c1cb41 Klaus Aehlig
INTENT_TO_UPGRADE = DATA_DIR + "/intent-to-upgrade"
101 3329f4de Michael Hanselmann
CONF_DIR = SYSCONFDIR + "/ganeti"
102 3329f4de Michael Hanselmann
USER_SCRIPTS_DIR = CONF_DIR + "/scripts"
103 3329f4de Michael Hanselmann
VNC_PASSWORD_FILE = CONF_DIR + "/vnc-cluster-password"
104 3329f4de Michael Hanselmann
HOOKS_BASE_DIR = CONF_DIR + "/hooks"
105 fbdac0d9 Michael Hanselmann
FILE_STORAGE_PATHS_FILE = CONF_DIR + "/file-storage-paths"
106 878c42ae Michael Hanselmann
RESTRICTED_COMMANDS_DIR = CONF_DIR + "/restricted-commands"
107 df99f3a9 Michael Hanselmann
108 c9f79949 Michael Hanselmann
#: Node daemon certificate path
109 c9f79949 Michael Hanselmann
NODED_CERT_FILE = DATA_DIR + "/server.pem"
110 60cc531d Helga Velroyen
NODED_CLIENT_CERT_FILE = DATA_DIR + "/client.pem"
111 d722af8b Helga Velroyen
NODED_CLIENT_CERT_FILE_TMP = DATA_DIR + "/client.pem.tmp"
112 c9f79949 Michael Hanselmann
113 c9f79949 Michael Hanselmann
#: Node daemon certificate file permissions
114 c9f79949 Michael Hanselmann
NODED_CERT_MODE = 0440
115 c9f79949 Michael Hanselmann
116 df99f3a9 Michael Hanselmann
#: Locked in exclusive mode while noded verifies a remote command
117 878c42ae Michael Hanselmann
RESTRICTED_COMMANDS_LOCK_FILE = LOCK_DIR + "/ganeti-restricted-commands.lock"
118 3329f4de Michael Hanselmann
119 3329f4de Michael Hanselmann
#: Lock file for watcher, locked in shared mode by watcher; lock in exclusive
120 3329f4de Michael Hanselmann
# mode to block watcher (see L{cli._RunWhileClusterStoppedHelper.Call}
121 3329f4de Michael Hanselmann
WATCHER_LOCK_FILE = LOCK_DIR + "/ganeti-watcher.lock"
122 3329f4de Michael Hanselmann
123 3329f4de Michael Hanselmann
#: Status file for per-group watcher, locked in exclusive mode by watcher
124 3329f4de Michael Hanselmann
WATCHER_GROUP_STATE_FILE = DATA_DIR + "/watcher.%s.data"
125 3329f4de Michael Hanselmann
126 3329f4de Michael Hanselmann
#: File for per-group instance status, merged into L{INSTANCE_STATUS_FILE} by
127 3329f4de Michael Hanselmann
#: per-group processes
128 3329f4de Michael Hanselmann
WATCHER_GROUP_INSTANCE_STATUS_FILE = DATA_DIR + "/watcher.%s.instance-status"
129 3329f4de Michael Hanselmann
130 3329f4de Michael Hanselmann
#: File containing Unix timestamp until which watcher should be paused
131 3329f4de Michael Hanselmann
WATCHER_PAUSEFILE = DATA_DIR + "/watcher.pause"
132 3329f4de Michael Hanselmann
133 3329f4de Michael Hanselmann
#: User-provided master IP setup script
134 3329f4de Michael Hanselmann
EXTERNAL_MASTER_SETUP_SCRIPT = USER_SCRIPTS_DIR + "/master-ip-setup"
135 3329f4de Michael Hanselmann
136 3329f4de Michael Hanselmann
#: LUXI socket used for job execution
137 3329f4de Michael Hanselmann
MASTER_SOCKET = SOCKET_DIR + "/ganeti-master"
138 3329f4de Michael Hanselmann
#: LUXI socket used for queries only
139 3329f4de Michael Hanselmann
QUERY_SOCKET = SOCKET_DIR + "/ganeti-query"
140 3329f4de Michael Hanselmann
141 3329f4de Michael Hanselmann
LOG_OS_DIR = LOG_DIR + "/os"
142 376631d1 Constantinos Venetsanopoulos
LOG_ES_DIR = LOG_DIR + "/extstorage"
143 48bba9de Balazs Lecz
#: Directory for storing Xen config files after failed instance starts
144 48bba9de Balazs Lecz
LOG_XEN_DIR = LOG_DIR + "/xen"
145 3329f4de Michael Hanselmann
146 3329f4de Michael Hanselmann
# Job queue paths
147 3329f4de Michael Hanselmann
JOB_QUEUE_LOCK_FILE = QUEUE_DIR + "/lock"
148 3329f4de Michael Hanselmann
JOB_QUEUE_VERSION_FILE = QUEUE_DIR + "/version"
149 3329f4de Michael Hanselmann
JOB_QUEUE_SERIAL_FILE = QUEUE_DIR + "/serial"
150 3329f4de Michael Hanselmann
JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive"
151 3329f4de Michael Hanselmann
JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain"
152 3329f4de Michael Hanselmann
153 b8028dcf Michael Hanselmann
ALL_CERT_FILES = compat.UniqueFrozenset([
154 3329f4de Michael Hanselmann
  NODED_CERT_FILE,
155 3329f4de Michael Hanselmann
  RAPI_CERT_FILE,
156 3329f4de Michael Hanselmann
  SPICE_CERT_FILE,
157 3329f4de Michael Hanselmann
  SPICE_CACERT_FILE,
158 3329f4de Michael Hanselmann
  ])
159 3329f4de Michael Hanselmann
160 3329f4de Michael Hanselmann
161 3329f4de Michael Hanselmann
def GetLogFilename(daemon_name):
162 3329f4de Michael Hanselmann
  """Returns the full path for a daemon's log file.
163 3329f4de Michael Hanselmann

164 3329f4de Michael Hanselmann
  """
165 3329f4de Michael Hanselmann
  return "%s/%s.log" % (LOG_DIR, daemon_name)
166 3329f4de Michael Hanselmann
167 3329f4de Michael Hanselmann
168 3329f4de Michael Hanselmann
LOG_WATCHER = GetLogFilename("watcher")
169 3329f4de Michael Hanselmann
LOG_COMMANDS = GetLogFilename("commands")
170 3329f4de Michael Hanselmann
LOG_BURNIN = GetLogFilename("burnin")