From a8e8c0c6afd0a8c124571d47b07b1998d2aefc78 Mon Sep 17 00:00:00 2001
From: Michael Hanselmann <hansmi@google.com>
Date: Fri, 18 Jan 2013 13:57:50 +0100
Subject: [PATCH] Make Xen config path a build-time option
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Stop hardcoding the path in β€œhv_xen.py”.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>
---
 Makefile.am              |  2 ++
 configure.ac             |  9 +++++++++
 lib/hypervisor/hv_xen.py | 14 ++++++++------
 lib/pathutils.py         |  1 +
 man/gnt-cluster.rst      |  2 +-
 5 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index b992c8607..792c52658 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1381,6 +1381,7 @@ lib/_autoconf.py: Makefile | stamp-directories
 	  echo "OS_SEARCH_PATH = [$(OS_SEARCH_PATH)]"; \
 	  echo "ES_SEARCH_PATH = [$(ES_SEARCH_PATH)]"; \
 	  echo "XEN_BOOTLOADER = '$(XEN_BOOTLOADER)'"; \
+	  echo "XEN_CONFIG_DIR = '$(XEN_CONFIG_DIR)'"; \
 	  echo "XEN_KERNEL = '$(XEN_KERNEL)'"; \
 	  echo "XEN_INITRD = '$(XEN_INITRD)'"; \
 	  echo "KVM_KERNEL = '$(KVM_KERNEL)'"; \
@@ -1497,6 +1498,7 @@ $(REPLACE_VARS_SED): $(SHELL_ENV_INIT) Makefile stamp-directories
 	  echo 's#@''GNTDAEMONSGROUP@#$(DAEMONS_GROUP)#g'; \
 	  echo 's#@''CUSTOM_ENABLE_CONFD@#$(ENABLE_CONFD)#g'; \
 	  echo 's#@''MODULES@#$(strip $(lint_python_code))#g'; \
+	  echo 's#@''XEN_CONFIG_DIR@#$(XEN_CONFIG_DIR)#g'; \
 	  echo; \
 	  echo '/^@SHELL_ENV_INIT@$$/ {'; \
 	  echo '  r $(SHELL_ENV_INIT)'; \
diff --git a/configure.ac b/configure.ac
index 14ebe8176..2c93bfc63 100644
--- a/configure.ac
+++ b/configure.ac
@@ -49,6 +49,15 @@ AC_ARG_WITH([ssh-config-dir],
   [ssh_config_dir="/etc/ssh"])
 AC_SUBST(SSH_CONFIG_DIR, $ssh_config_dir)
 
+# --with-xen-config-dir=...
+AC_ARG_WITH([xen-config-dir],
+  [AS_HELP_STRING([--with-xen-config-dir=DIR],
+                  m4_normalize([Xen configuration directory
+                                (default: /etc/xen)]))],
+  [xen_config_dir="$withval"],
+  [xen_config_dir=/etc/xen])
+AC_SUBST(XEN_CONFIG_DIR, $xen_config_dir)
+
 # --with-os-search-path=...
 # do a bit of black sed magic to for quoting of the strings in the list
 AC_ARG_WITH([os-search-path],
diff --git a/lib/hypervisor/hv_xen.py b/lib/hypervisor/hv_xen.py
index d60f6f842..1afc1d9f1 100644
--- a/lib/hypervisor/hv_xen.py
+++ b/lib/hypervisor/hv_xen.py
@@ -33,13 +33,13 @@ from ganeti.hypervisor import hv_base
 from ganeti import netutils
 from ganeti import objects
 from ganeti import pathutils
-from ganeti import vcluster
 from ganeti import ssconf
 
 
-XEND_CONFIG_FILE = vcluster.AddNodePrefix("/etc/xen/xend-config.sxp")
-XL_CONFIG_FILE = vcluster.AddNodePrefix("/etc/xen/xl.conf")
-VIF_BRIDGE_SCRIPT = vcluster.AddNodePrefix("/etc/xen/scripts/vif-bridge")
+XEND_CONFIG_FILE = utils.PathJoin(pathutils.XEN_CONFIG_DIR, "xend-config.sxp")
+XL_CONFIG_FILE = utils.PathJoin(pathutils.XEN_CONFIG_DIR, "xen/xl.conf")
+VIF_BRIDGE_SCRIPT = utils.PathJoin(pathutils.XEN_CONFIG_DIR,
+                                   "scripts/vif-bridge")
 _DOM0_NAME = "Domain-0"
 
 
@@ -73,7 +73,7 @@ class XenHypervisor(hv_base.BaseHypervisor):
     @rtype: str
 
     """
-    return "/etc/xen/%s" % instance_name
+    return utils.PathJoin(pathutils.XEN_CONFIG_DIR, instance_name)
 
   @classmethod
   def _WriteConfigFile(cls, instance, startup_memory, block_devices):
@@ -90,7 +90,9 @@ class XenHypervisor(hv_base.BaseHypervisor):
 
     """
     # just in case it exists
-    utils.RemoveFile("/etc/xen/auto/%s" % instance_name)
+    utils.RemoveFile(utils.PathJoin(pathutils.XEN_CONFIG_DIR, "auto",
+                                    instance_name))
+
     cfg_file = XenHypervisor._ConfigFileName(instance_name)
     try:
       utils.WriteFile(cfg_file, data=data)
diff --git a/lib/pathutils.py b/lib/pathutils.py
index 8af21ba44..fe531808e 100644
--- a/lib/pathutils.py
+++ b/lib/pathutils.py
@@ -36,6 +36,7 @@ EXPORT_DIR = vcluster.AddNodePrefix(_autoconf.EXPORT_DIR)
 OS_SEARCH_PATH = _autoconf.OS_SEARCH_PATH
 ES_SEARCH_PATH = _autoconf.ES_SEARCH_PATH
 SSH_CONFIG_DIR = _autoconf.SSH_CONFIG_DIR
+XEN_CONFIG_DIR = vcluster.AddNodePrefix(_autoconf.XEN_CONFIG_DIR)
 SYSCONFDIR = vcluster.AddNodePrefix(_autoconf.SYSCONFDIR)
 TOOLSDIR = _autoconf.TOOLSDIR
 LOCALSTATEDIR = vcluster.AddNodePrefix(_autoconf.LOCALSTATEDIR)
diff --git a/man/gnt-cluster.rst b/man/gnt-cluster.rst
index 0511bbf1c..bcba7ef49 100644
--- a/man/gnt-cluster.rst
+++ b/man/gnt-cluster.rst
@@ -302,7 +302,7 @@ migration\_port
 
     This options specifies the TCP port to use for live-migration. For
     Xen, the same port should be configured on all nodes in the
-    ``/etc/xen/xend-config.sxp`` file, under the key
+    ``@XEN_CONFIG_DIR@/xend-config.sxp`` file, under the key
     "xend-relocation-port".
 
 migration\_bandwidth
-- 
GitLab