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