KVM_IFUP = _autoconf.PKGLIBDIR + "/kvm-ifup"
SETUP_SSH = _autoconf.TOOLSDIR + "/setup-ssh"
XM_CONSOLE_WRAPPER = _autoconf.PKGLIBDIR + "/tools/xm-console-wrapper"
-ETC_HOSTS = "/etc/hosts"
+ETC_HOSTS = vcluster.ETC_HOSTS
# Top-level paths
DATA_DIR = LOCALSTATEDIR + "/lib/ganeti"
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 = frozenset([
+ ETC_HOSTS,
+ ])
+
def _GetRootDirectory(envname):
"""Retrieves root directory from an environment variable.
"""
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:
from ganeti import utils
from ganeti import compat
from ganeti import vcluster
+from ganeti import pathutils
import testutils
self.assertEqual(vcluster.MakeVirtualPath("/tmp/file", _noderoot=None),
"/tmp/file")
+ def testWhitelisted(self):
+ mvp = vcluster.MakeVirtualPath
+ for path in vcluster._VPATH_WHITELIST:
+ self.assertEqual(mvp(path), path)
+ self.assertEqual(mvp(path, _noderoot=None), path)
+ self.assertEqual(mvp(path, _noderoot="/tmp"), path)
+
class TestLocalizeVirtualPath(unittest.TestCase):
def testWrongPrefix(self):
self.assertEqual(vcluster.LocalizeVirtualPath("/tmp/file", _noderoot=None),
"/tmp/file")
+ def testWhitelisted(self):
+ lvp = vcluster.LocalizeVirtualPath
+ for path in vcluster._VPATH_WHITELIST:
+ self.assertEqual(lvp(path), path)
+ self.assertEqual(lvp(path, _noderoot=None), path)
+ self.assertEqual(lvp(path, _noderoot="/tmp"), path)
+
class TestVirtualPathPrefix(unittest.TestCase):
def test(self):