Statistics
| Branch: | Tag: | Revision:

root / lib / pathutils.py @ 38e28375

History | View | Annotate | Download (6.3 kB)

1
#
2
#
3

    
4
# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 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 _constants
27
from ganeti import compat
28
from ganeti import vcluster
29

    
30

    
31
# Build-time constants
32
DEFAULT_FILE_STORAGE_DIR = "/srv/ganeti/file-storage"
33
DEFAULT_FILE_STORAGE_DIR = vcluster.AddNodePrefix(DEFAULT_FILE_STORAGE_DIR)
34
DEFAULT_SHARED_FILE_STORAGE_DIR = "/srv/ganeti/shared-file-storage"
35
DEFAULT_SHARED_FILE_STORAGE_DIR = \
36
    vcluster.AddNodePrefix(DEFAULT_SHARED_FILE_STORAGE_DIR)
37
DEFAULT_GLUSTER_STORAGE_DIR = "/var/run/ganeti/gluster"
38
DEFAULT_GLUSTER_STORAGE_DIR = \
39
    vcluster.AddNodePrefix(DEFAULT_GLUSTER_STORAGE_DIR)
40
EXPORT_DIR = vcluster.AddNodePrefix(_constants.EXPORT_DIR)
41
OS_SEARCH_PATH = _constants.OS_SEARCH_PATH
42
ES_SEARCH_PATH = _constants.ES_SEARCH_PATH
43
SSH_CONFIG_DIR = _constants.SSH_CONFIG_DIR
44
XEN_CONFIG_DIR = vcluster.AddNodePrefix(_constants.XEN_CONFIG_DIR)
45
SYSCONFDIR = vcluster.AddNodePrefix(_constants.SYSCONFDIR)
46
TOOLSDIR = _constants.TOOLSDIR
47
PKGLIBDIR = _constants.PKGLIBDIR
48
SHAREDIR = _constants.SHAREDIR
49
LOCALSTATEDIR = vcluster.AddNodePrefix(_constants.LOCALSTATEDIR)
50

    
51
# Paths which don't change for a virtual cluster
52
DAEMON_UTIL = _constants.PKGLIBDIR + "/daemon-util"
53
IMPORT_EXPORT_DAEMON = _constants.PKGLIBDIR + "/import-export"
54
KVM_CONSOLE_WRAPPER = _constants.PKGLIBDIR + "/tools/kvm-console-wrapper"
55
KVM_IFUP = _constants.PKGLIBDIR + "/kvm-ifup"
56
PREPARE_NODE_JOIN = _constants.PKGLIBDIR + "/prepare-node-join"
57
NODE_DAEMON_SETUP = _constants.PKGLIBDIR + "/node-daemon-setup"
58
XEN_CONSOLE_WRAPPER = _constants.PKGLIBDIR + "/tools/xen-console-wrapper"
59
CFGUPGRADE = _constants.PKGLIBDIR + "/tools/cfgupgrade"
60
POST_UPGRADE = _constants.PKGLIBDIR + "/tools/post-upgrade"
61
ENSURE_DIRS = _constants.PKGLIBDIR + "/ensure-dirs"
62
ETC_HOSTS = vcluster.ETC_HOSTS
63

    
64
# Top-level paths
65
DATA_DIR = LOCALSTATEDIR + "/lib/ganeti"
66
LOCK_DIR = LOCALSTATEDIR + "/lock"
67
LOG_DIR = LOCALSTATEDIR + "/log/ganeti"
68
RUN_DIR = LOCALSTATEDIR + "/run/ganeti"
69

    
70
#: Script to configure master IP address
71
DEFAULT_MASTER_SETUP_SCRIPT = TOOLSDIR + "/master-ip-setup"
72

    
73
SSH_HOST_DSA_PRIV = _constants.SSH_HOST_DSA_PRIV
74
SSH_HOST_DSA_PUB = _constants.SSH_HOST_DSA_PUB
75
SSH_HOST_RSA_PRIV = _constants.SSH_HOST_RSA_PRIV
76
SSH_HOST_RSA_PUB = _constants.SSH_HOST_RSA_PUB
77

    
78
BDEV_CACHE_DIR = RUN_DIR + "/bdev-cache"
79
DISK_LINKS_DIR = RUN_DIR + "/instance-disks"
80
SOCKET_DIR = RUN_DIR + "/socket"
81
CRYPTO_KEYS_DIR = RUN_DIR + "/crypto"
82
IMPORT_EXPORT_DIR = RUN_DIR + "/import-export"
83
INSTANCE_STATUS_FILE = RUN_DIR + "/instance-status"
84
INSTANCE_REASON_DIR = RUN_DIR + "/instance-reason"
85
#: User-id pool lock directory (used user IDs have a corresponding lock file in
86
#: this directory)
87
UIDPOOL_LOCKDIR = RUN_DIR + "/uid-pool"
88
LIVELOCK_DIR = RUN_DIR + "/livelocks"
89

    
90
SSCONF_LOCK_FILE = LOCK_DIR + "/ganeti-ssconf.lock"
91

    
92
CLUSTER_CONF_FILE = DATA_DIR + "/config.data"
93
RAPI_CERT_FILE = DATA_DIR + "/rapi.pem"
94
CONFD_HMAC_KEY = DATA_DIR + "/hmac.key"
95
SPICE_CERT_FILE = DATA_DIR + "/spice.pem"
96
SPICE_CACERT_FILE = DATA_DIR + "/spice-ca.pem"
97
CLUSTER_DOMAIN_SECRET_FILE = DATA_DIR + "/cluster-domain-secret"
98
SSH_KNOWN_HOSTS_FILE = DATA_DIR + "/known_hosts"
99
RAPI_USERS_FILE = DATA_DIR + "/rapi/users"
100
QUEUE_DIR = DATA_DIR + "/queue"
101
INTENT_TO_UPGRADE = DATA_DIR + "/intent-to-upgrade"
102
CONF_DIR = SYSCONFDIR + "/ganeti"
103
USER_SCRIPTS_DIR = CONF_DIR + "/scripts"
104
VNC_PASSWORD_FILE = CONF_DIR + "/vnc-cluster-password"
105
HOOKS_BASE_DIR = CONF_DIR + "/hooks"
106
FILE_STORAGE_PATHS_FILE = CONF_DIR + "/file-storage-paths"
107
RESTRICTED_COMMANDS_DIR = CONF_DIR + "/restricted-commands"
108

    
109
#: Node daemon certificate path
110
NODED_CERT_FILE = DATA_DIR + "/server.pem"
111
NODED_CLIENT_CERT_FILE = DATA_DIR + "/client.pem"
112
NODED_CLIENT_CERT_FILE_TMP = DATA_DIR + "/client.pem.tmp"
113

    
114
#: Node daemon certificate file permissions
115
NODED_CERT_MODE = 0440
116

    
117
#: Locked in exclusive mode while noded verifies a remote command
118
RESTRICTED_COMMANDS_LOCK_FILE = LOCK_DIR + "/ganeti-restricted-commands.lock"
119

    
120
#: Lock file for watcher, locked in shared mode by watcher; lock in exclusive
121
# mode to block watcher (see L{cli._RunWhileClusterStoppedHelper.Call}
122
WATCHER_LOCK_FILE = LOCK_DIR + "/ganeti-watcher.lock"
123

    
124
#: Status file for per-group watcher, locked in exclusive mode by watcher
125
WATCHER_GROUP_STATE_FILE = DATA_DIR + "/watcher.%s.data"
126

    
127
#: File for per-group instance status, merged into L{INSTANCE_STATUS_FILE} by
128
#: per-group processes
129
WATCHER_GROUP_INSTANCE_STATUS_FILE = DATA_DIR + "/watcher.%s.instance-status"
130

    
131
#: File containing Unix timestamp until which watcher should be paused
132
WATCHER_PAUSEFILE = DATA_DIR + "/watcher.pause"
133

    
134
#: User-provided master IP setup script
135
EXTERNAL_MASTER_SETUP_SCRIPT = USER_SCRIPTS_DIR + "/master-ip-setup"
136

    
137
#: LUXI socket used for job execution
138
MASTER_SOCKET = SOCKET_DIR + "/ganeti-master"
139
#: LUXI socket used for queries only
140
QUERY_SOCKET = SOCKET_DIR + "/ganeti-query"
141
#: WConfD socket
142
WCONFD_SOCKET = SOCKET_DIR + "/ganeti-wconfd"
143

    
144
LOG_OS_DIR = LOG_DIR + "/os"
145
LOG_ES_DIR = LOG_DIR + "/extstorage"
146
#: Directory for storing Xen config files after failed instance starts
147
LOG_XEN_DIR = LOG_DIR + "/xen"
148

    
149
# Job queue paths
150
JOB_QUEUE_LOCK_FILE = QUEUE_DIR + "/lock"
151
JOB_QUEUE_VERSION_FILE = QUEUE_DIR + "/version"
152
JOB_QUEUE_SERIAL_FILE = QUEUE_DIR + "/serial"
153
JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive"
154
JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain"
155

    
156
ALL_CERT_FILES = compat.UniqueFrozenset([
157
  NODED_CERT_FILE,
158
  RAPI_CERT_FILE,
159
  SPICE_CERT_FILE,
160
  SPICE_CACERT_FILE,
161
  ])
162

    
163

    
164
def GetLogFilename(daemon_name):
165
  """Returns the full path for a daemon's log file.
166

167
  """
168
  return "%s/%s.log" % (LOG_DIR, daemon_name)
169

    
170

    
171
LOG_WATCHER = GetLogFilename("watcher")
172
LOG_COMMANDS = GetLogFilename("commands")
173
LOG_BURNIN = GetLogFilename("burnin")