From be402e97e883d0adee76a2875fc19a54421de415 Mon Sep 17 00:00:00 2001 From: Martin Magr Date: Wed, 7 May 2014 15:19:43 +0200 Subject: [PATCH] Install o-p-m dependencies on all nodes In some corner-cases rubygem-json is not installed together with Puppet and installation fails. This patch makes Packstack install o-p-m dependencies on every host. Next o-p-m build will have all required dependencies. Change-Id: I465ae1bf558b06a4f1bb1d1e808afdcc32dcdc74 --- packstack/plugins/puppet_950.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packstack/plugins/puppet_950.py b/packstack/plugins/puppet_950.py index 3986c650a..114a4883f 100644 --- a/packstack/plugins/puppet_950.py +++ b/packstack/plugins/puppet_950.py @@ -73,9 +73,24 @@ def runCleanup(config): def installdeps(config): + deps = ["puppet", "openssh-clients", "tar", "nc"] + modules_pkg = 'openstack-puppet-modules' + + local = utils.ScriptRunner() + local.append('rpm -q --requires %s | egrep -v "^(rpmlib|\/|perl)"' + % modules_pkg) + rc, modules_deps = local.execute() + + # Modules package might not be installed if we are running from source. + # In this case we assume user knows what (s)he's doing and we don't + # install modules dependencies + if ('%s is not installed' % modules_pkg) not in modules_deps: + modules_deps = [i.strip() for i in modules_deps.split() if i.strip()] + deps.extend(modules_deps) + for hostname in filtered_hosts(config): server = utils.ScriptRunner(hostname) - for package in ("puppet", "openssh-clients", "tar", "nc"): + for package in deps: server.append("rpm -q --whatprovides %s || yum install -y %s" % (package, package)) server.execute()