Package ganeti :: Module pathutils
[hide private]
[frames] | no frames]

Source Code for Module ganeti.pathutils

  1  # 
  2  # 
  3   
  4  # Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Google Inc. 
  5  # All rights reserved. 
  6  # 
  7  # Redistribution and use in source and binary forms, with or without 
  8  # modification, are permitted provided that the following conditions are 
  9  # met: 
 10  # 
 11  # 1. Redistributions of source code must retain the above copyright notice, 
 12  # this list of conditions and the following disclaimer. 
 13  # 
 14  # 2. Redistributions in binary form must reproduce the above copyright 
 15  # notice, this list of conditions and the following disclaimer in the 
 16  # documentation and/or other materials provided with the distribution. 
 17  # 
 18  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 
 19  # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 
 20  # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
 21  # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
 22  # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
 23  # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
 24  # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
 25  # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
 26  # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
 27  # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
 28  # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
 29   
 30   
 31  """Module containing constants and functions for filesystem paths. 
 32   
 33  """ 
 34   
 35  from ganeti import _constants 
 36  from ganeti import compat 
 37  from ganeti import vcluster 
 38   
 39   
 40  # Build-time constants 
 41  DEFAULT_FILE_STORAGE_DIR = "/srv/ganeti/file-storage" 
 42  DEFAULT_FILE_STORAGE_DIR = vcluster.AddNodePrefix(DEFAULT_FILE_STORAGE_DIR) 
 43  DEFAULT_SHARED_FILE_STORAGE_DIR = "/srv/ganeti/shared-file-storage" 
 44  DEFAULT_SHARED_FILE_STORAGE_DIR = \ 
 45      vcluster.AddNodePrefix(DEFAULT_SHARED_FILE_STORAGE_DIR) 
 46  DEFAULT_GLUSTER_STORAGE_DIR = "/var/run/ganeti/gluster" 
 47  DEFAULT_GLUSTER_STORAGE_DIR = \ 
 48      vcluster.AddNodePrefix(DEFAULT_GLUSTER_STORAGE_DIR) 
 49  EXPORT_DIR = vcluster.AddNodePrefix(_constants.EXPORT_DIR) 
 50  BACKUP_DIR = vcluster.AddNodePrefix(_constants.BACKUP_DIR) 
 51  OS_SEARCH_PATH = _constants.OS_SEARCH_PATH 
 52  ES_SEARCH_PATH = _constants.ES_SEARCH_PATH 
 53  SSH_CONFIG_DIR = _constants.SSH_CONFIG_DIR 
 54  XEN_CONFIG_DIR = vcluster.AddNodePrefix(_constants.XEN_CONFIG_DIR) 
 55  SYSCONFDIR = vcluster.AddNodePrefix(_constants.SYSCONFDIR) 
 56  TOOLSDIR = _constants.TOOLSDIR 
 57  PKGLIBDIR = _constants.PKGLIBDIR 
 58  SHAREDIR = _constants.SHAREDIR 
 59  LOCALSTATEDIR = vcluster.AddNodePrefix(_constants.LOCALSTATEDIR) 
 60   
 61  # Paths which don't change for a virtual cluster 
 62  DAEMON_UTIL = _constants.PKGLIBDIR + "/daemon-util" 
 63  IMPORT_EXPORT_DAEMON = _constants.PKGLIBDIR + "/import-export" 
 64  KVM_CONSOLE_WRAPPER = _constants.PKGLIBDIR + "/tools/kvm-console-wrapper" 
 65  KVM_IFUP = _constants.PKGLIBDIR + "/kvm-ifup" 
 66  PREPARE_NODE_JOIN = _constants.PKGLIBDIR + "/prepare-node-join" 
 67  SSH_UPDATE = _constants.PKGLIBDIR + "/ssh-update" 
 68  NODE_DAEMON_SETUP = _constants.PKGLIBDIR + "/node-daemon-setup" 
 69  SSL_UPDATE = _constants.PKGLIBDIR + "/ssl-update" 
 70  XEN_CONSOLE_WRAPPER = _constants.PKGLIBDIR + "/tools/xen-console-wrapper" 
 71  CFGUPGRADE = _constants.PKGLIBDIR + "/tools/cfgupgrade" 
 72  POST_UPGRADE = _constants.PKGLIBDIR + "/tools/post-upgrade" 
 73  ENSURE_DIRS = _constants.PKGLIBDIR + "/ensure-dirs" 
 74  # Script to configure the metadata virtual network interface with Xen 
 75  XEN_VIF_METAD_SETUP = _constants.PKGLIBDIR + "/vif-ganeti-metad" 
 76  ETC_HOSTS = vcluster.ETC_HOSTS 
 77   
 78  # Top-level paths 
 79  DATA_DIR = LOCALSTATEDIR + "/lib/ganeti" 
 80  LOCK_DIR = LOCALSTATEDIR + "/lock" 
 81  LOG_DIR = LOCALSTATEDIR + "/log/ganeti" 
 82  RUN_DIR = LOCALSTATEDIR + "/run/ganeti" 
 83   
 84  #: Script to configure master IP address 
 85  DEFAULT_MASTER_SETUP_SCRIPT = TOOLSDIR + "/master-ip-setup" 
 86   
 87  SSH_HOST_DSA_PRIV = _constants.SSH_HOST_DSA_PRIV 
 88  SSH_HOST_DSA_PUB = _constants.SSH_HOST_DSA_PUB 
 89  SSH_HOST_RSA_PRIV = _constants.SSH_HOST_RSA_PRIV 
 90  SSH_HOST_RSA_PUB = _constants.SSH_HOST_RSA_PUB 
 91  SSH_PUB_KEYS = DATA_DIR + "/ganeti_pub_keys" 
 92   
 93  BDEV_CACHE_DIR = RUN_DIR + "/bdev-cache" 
 94  DISK_LINKS_DIR = RUN_DIR + "/instance-disks" 
 95  SOCKET_DIR = RUN_DIR + "/socket" 
 96  CRYPTO_KEYS_DIR = RUN_DIR + "/crypto" 
 97  IMPORT_EXPORT_DIR = RUN_DIR + "/import-export" 
 98  INSTANCE_STATUS_FILE = RUN_DIR + "/instance-status" 
 99  INSTANCE_REASON_DIR = RUN_DIR + "/instance-reason" 
100  #: User-id pool lock directory (used user IDs have a corresponding lock file in 
101  #: this directory) 
102  UIDPOOL_LOCKDIR = RUN_DIR + "/uid-pool" 
103  LIVELOCK_DIR = RUN_DIR + "/livelocks" 
104  LUXID_MESSAGE_DIR = RUN_DIR + "/luxidmessages" 
105   
106  SSCONF_LOCK_FILE = LOCK_DIR + "/ganeti-ssconf.lock" 
107   
108  CLUSTER_CONF_FILE = DATA_DIR + "/config.data" 
109  RAPI_CERT_FILE = DATA_DIR + "/rapi.pem" 
110  CONFD_HMAC_KEY = DATA_DIR + "/hmac.key" 
111  SPICE_CERT_FILE = DATA_DIR + "/spice.pem" 
112  SPICE_CACERT_FILE = DATA_DIR + "/spice-ca.pem" 
113  CLUSTER_DOMAIN_SECRET_FILE = DATA_DIR + "/cluster-domain-secret" 
114  SSH_KNOWN_HOSTS_FILE = DATA_DIR + "/known_hosts" 
115  RAPI_DATA_DIR = DATA_DIR + "/rapi" 
116  RAPI_USERS_FILE = RAPI_DATA_DIR + "/users" 
117  QUEUE_DIR = DATA_DIR + "/queue" 
118  INTENT_TO_UPGRADE = DATA_DIR + "/intent-to-upgrade" 
119  CONF_DIR = SYSCONFDIR + "/ganeti" 
120  XEN_IFUP_OS = CONF_DIR + "/xen-ifup-os" 
121  USER_SCRIPTS_DIR = CONF_DIR + "/scripts" 
122  VNC_PASSWORD_FILE = CONF_DIR + "/vnc-cluster-password" 
123  HOOKS_BASE_DIR = CONF_DIR + "/hooks" 
124  FILE_STORAGE_PATHS_FILE = CONF_DIR + "/file-storage-paths" 
125  RESTRICTED_COMMANDS_DIR = CONF_DIR + "/restricted-commands" 
126  REPAIR_COMMANDS_DIR = CONF_DIR + "/node-repair-commands" 
127   
128  #: Node daemon certificate path 
129  NODED_CERT_FILE = DATA_DIR + "/server.pem" 
130  NODED_CLIENT_CERT_FILE = DATA_DIR + "/client.pem" 
131   
132  #: Node daemon certificate file permissions 
133  NODED_CERT_MODE = 0440 
134   
135  #: Locked in exclusive mode while noded verifies a remote command 
136  RESTRICTED_COMMANDS_LOCK_FILE = LOCK_DIR + "/ganeti-restricted-commands.lock" 
137   
138  #: Locked in exclusive mode while noded verifies a remote command 
139  REPAIR_COMMANDS_LOCK_FILE = LOCK_DIR + "/ganeti-repair-commands.lock" 
140   
141  #: Lock file for watcher, locked in shared mode by watcher; lock in exclusive 
142  # mode to block watcher (see L{cli._RunWhileDaemonsStoppedHelper.Call} 
143  WATCHER_LOCK_FILE = LOCK_DIR + "/ganeti-watcher.lock" 
144   
145  #: Status file for per-group watcher, locked in exclusive mode by watcher 
146  WATCHER_GROUP_STATE_FILE = DATA_DIR + "/watcher.%s.data" 
147   
148  #: File for per-group instance status, merged into L{INSTANCE_STATUS_FILE} by 
149  #: per-group processes 
150  WATCHER_GROUP_INSTANCE_STATUS_FILE = DATA_DIR + "/watcher.%s.instance-status" 
151   
152  #: File containing Unix timestamp until which watcher should be paused 
153  WATCHER_PAUSEFILE = DATA_DIR + "/watcher.pause" 
154   
155  #: User-provided master IP setup script 
156  EXTERNAL_MASTER_SETUP_SCRIPT = USER_SCRIPTS_DIR + "/master-ip-setup" 
157   
158  #: LUXI socket used for job execution 
159  MASTER_SOCKET = SOCKET_DIR + "/ganeti-master" 
160  #: LUXI socket used for queries only 
161  QUERY_SOCKET = SOCKET_DIR + "/ganeti-query" 
162  #: WConfD socket 
163  WCONFD_SOCKET = SOCKET_DIR + "/ganeti-wconfd" 
164  #: Metad socket 
165  METAD_SOCKET = SOCKET_DIR + "/ganeti-metad" 
166   
167  LOG_OS_DIR = LOG_DIR + "/os" 
168  LOG_ES_DIR = LOG_DIR + "/extstorage" 
169  #: Directory for storing Xen config files after failed instance starts 
170  LOG_XEN_DIR = LOG_DIR + "/xen" 
171   
172  # Job queue paths 
173  JOB_QUEUE_LOCK_FILE = QUEUE_DIR + "/lock" 
174  JOB_QUEUE_VERSION_FILE = QUEUE_DIR + "/version" 
175  JOB_QUEUE_SERIAL_FILE = QUEUE_DIR + "/serial" 
176  JOB_QUEUE_ARCHIVE_DIR = QUEUE_DIR + "/archive" 
177  JOB_QUEUE_DRAIN_FILE = QUEUE_DIR + "/drain" 
178   
179  ALL_CERT_FILES = compat.UniqueFrozenset([ 
180    NODED_CERT_FILE, 
181    RAPI_CERT_FILE, 
182    SPICE_CERT_FILE, 
183    SPICE_CACERT_FILE, 
184    ]) 
185   
186   
187 -def GetLogFilename(daemon_name):
188 """Returns the full path for a daemon's log file. 189 190 """ 191 return "%s/%s.log" % (LOG_DIR, daemon_name)
192 193 194 LOG_WATCHER = GetLogFilename("watcher") 195 LOG_COMMANDS = GetLogFilename("commands") 196 LOG_BURNIN = GetLogFilename("burnin") 197 LOG_TOOLS = GetLogFilename("tools") 198