from ganeti import compat
+ETC_HOSTS = "/etc/hosts"
+
_VIRT_PATH_PREFIX = "/###-VIRTUAL-PATH-###,"
_ROOTDIR_ENVNAME = "GANETI_ROOTDIR"
_HOSTNAME_ENVNAME = "GANETI_HOSTNAME"
+#: List of paths which shouldn't be virtualized
+_VPATH_WHITELIST = compat.UniqueFrozenset([
+ ETC_HOSTS,
+ ])
+
def _GetRootDirectory(envname):
"""Retrieves root directory from an environment variable.
return _VIRT_HOSTNAME
-def _MakeNodeRoot(base, node_name):
+def MakeNodeRoot(base, node_name):
"""Appends a node name to the base directory.
"""
"""
if _basedir:
pure = _RemoveNodePrefix(filename, _noderoot=_noderoot)
- result = "%s/%s" % (_MakeNodeRoot(_basedir, node_name), pure)
+ result = "%s/%s" % (MakeNodeRoot(_basedir, node_name), pure)
else:
result = filename
"""
if _basedir:
return {
- _ROOTDIR_ENVNAME: _MakeNodeRoot(_basedir, hostname),
+ _ROOTDIR_ENVNAME: MakeNodeRoot(_basedir, hostname),
_HOSTNAME_ENVNAME: hostname,
}
else:
"""
assert os.path.isabs(path)
- if _noderoot:
+ if _noderoot and path not in _VPATH_WHITELIST:
return _VIRT_PATH_PREFIX + _RemoveNodePrefix(path, _noderoot=_noderoot)
else:
return path
"""
assert os.path.isabs(path)
- if _noderoot:
+ if _noderoot and path not in _VPATH_WHITELIST:
if path.startswith(_VIRT_PATH_PREFIX):
return AddNodePrefix(path[len(_VIRT_PATH_PREFIX):], _noderoot=_noderoot)
else: