From b8a270519cd8be2e3f20b405f80441f999ece1b8 Mon Sep 17 00:00:00 2001 From: Gunther Hagleitner Date: Fri, 3 Feb 2012 00:11:41 -0800 Subject: [PATCH] symlinks for keystone and nova --- devstack/component.py | 12 +++++++++++- devstack/components/keystone.py | 4 ++++ devstack/components/nova.py | 3 +++ devstack/shell.py | 11 +++++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/devstack/component.py b/devstack/component.py index 8c88e3eb..5ab4b334 100644 --- a/devstack/component.py +++ b/devstack/component.py @@ -148,6 +148,9 @@ class PkgInstallComponent(ComponentBase): def _get_source_config(self, config_fn): return utils.load_template(self.component_name, config_fn) + def _get_symlinks(self): + return {} + def _configure_files(self): configs = self._get_config_files() if configs: @@ -174,7 +177,14 @@ class PkgInstallComponent(ComponentBase): def configure(self): self.tracewriter.make_dir(self.cfgdir) - return self._configure_files() + l = self._configure_files() + links = self._get_symlinks() + for (source, link) in links.items(): + try: + sh.symlink(source, link) + except OSError: + LOG.info("symlink %s => %s already exists." % (source, link)) + return l class PythonInstallComponent(PkgInstallComponent): diff --git a/devstack/components/keystone.py b/devstack/components/keystone.py index 29a341c8..9f9ee5a7 100644 --- a/devstack/components/keystone.py +++ b/devstack/components/keystone.py @@ -90,6 +90,10 @@ class KeystoneInstaller(comp.PythonInstallComponent): def _get_pkgs(self): return list(REQ_PKGS) + def _get_symlinks(self): + return {sh.joinpths(self.cfgdir, ROOT_CONF): '/etc/keystone/keystone.conf'} + + def post_install(self): parent_result = comp.PythonInstallComponent.post_install(self) self._setup_db() diff --git a/devstack/components/nova.py b/devstack/components/nova.py index 091d55f2..43b72275 100644 --- a/devstack/components/nova.py +++ b/devstack/components/nova.py @@ -198,6 +198,9 @@ class NovaInstaller(comp.PythonInstallComponent): pkgs.extend(fns) return pkgs + def _get_symlinks(self): + return {sh.joinpths(self.cfgdir, API_CONF): '/etc/nova/nova.conf'} + def _get_pips(self): return list(REQ_PIPS) diff --git a/devstack/shell.py b/devstack/shell.py index bbe5439f..6546b74f 100644 --- a/devstack/shell.py +++ b/devstack/shell.py @@ -301,10 +301,21 @@ def rmdir(path, quiet=True): pass +def symlink(source, link): + path = dirname(link) + file_ = basename(link) + mkdirslist(path) + os.symlink(source, link) + + def exists(path): return os.path.exists(path) +def basename(path): + return os.path.basename(path) + + def dirname(path): return os.path.dirname(path)