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
This commit is contained in:
Martin Magr
2014-05-07 15:19:43 +02:00
parent e2e686a2a8
commit be402e97e8

View File

@@ -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()