From 0f6076c4324239e8d2408b3ec176e9ed94849af2 Mon Sep 17 00:00:00 2001 From: Yolanda Robla Date: Thu, 9 Jun 2016 16:20:59 +0200 Subject: [PATCH] Require packages before installing jeepyb Currently the jeepyb install has a race. install_jeepyb is called without requiring the needed packages. This causes that puppet needs to be run at least twice to converge. Adding the proper require on place to fix that problem, also switching to virtual resources and require, to avoid cross duplicates with other projects such as puppet-openstackci Change-Id: I34864ed7f0ba991d48de80fe6d64eebcd3df300a --- manifests/init.pp | 107 ++++++++++++++++++++-------------------------- 1 file changed, 47 insertions(+), 60 deletions(-) diff --git a/manifests/init.pp b/manifests/init.pp index adb8b55..51ac05a 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -4,74 +4,60 @@ class jeepyb ( $git_source_repo = 'https://git.openstack.org/openstack-infra/jeepyb', $git_revision = 'master', ) { - if ! defined(Package['python-paramiko']) { - package { 'python-paramiko': - ensure => present, - } - } - - if ! defined(Package['gcc']) { - package { 'gcc': - ensure => present, - } - } - # A lot of things need yaml, be conservative requiring this package to avoid # conflicts with other modules. case $::osfamily { 'Debian': { - if ! defined(Package['python-yaml']) { - package { 'python-yaml': - ensure => present, - } - } - if ! defined(Package['libxml2-dev']) { - package { 'libxml2-dev': - ensure => present, - } - } - if ! defined(Package['libxslt1-dev']) { - package { 'libxslt1-dev': - ensure => present, - } - } - if ! defined(Package['libffi-dev']) { - package { 'libffi-dev': - ensure => present, - } - } - if ! defined(Package['libssl-dev']) { - package { 'libssl-dev': - ensure => present, - } + $jeepyb_packages = [ + 'python-paramiko', + 'gcc', + 'python-yaml', + 'libxml2-dev', + 'libxslt1-dev', + 'libffi-dev', + 'libssl-dev' + ] + + @package { $jeepyb_packages: + ensure => present, } + + realize ( + Package['python-paramiko'], + Package['gcc'], + Package['python-yaml'], + Package['libxml2-dev'], + Package['libxslt1-dev'], + Package['libffi-dev'], + Package['libssl-dev'], + ) + } 'RedHat': { - if ! defined(Package['PyYAML']) { - package { 'PyYAML': - ensure => present, - } - } - if ! defined(Package['libxml2-devel']) { - package { 'libxml2-devel': - ensure => present, - } - } - if ! defined(Package['libxslt-devel']) { - package { 'libxslt-devel': - ensure => present, - } - } - if ! defined(Package['libffi-devel']) { - package { 'libffi-devel': - ensure => present, - } - } - if ! defined(Package['openssl-devel']) { - package { 'openssl-devel': - ensure => present, - } + $jeepyb_packages = [ + 'python-paramiko', + 'gcc', + 'PyYAML', + 'libxml2-devel', + 'libxslt-devel', + 'libffi-devel', + 'openssl-devel' + ] + + @package { $jeepyb_packages: + ensure => present, } + + realize ( + Package['python-paramiko'], + Package['gcc'], + Package['PyYAML'], + Package['libxml2-devel'], + Package['libxslt-devel'], + Package['libffi-devel'], + Package['openssl-devel'], + ) + } default: { fail("Unsupported osfamily: ${::osfamily} The 'jeepyb' module only supports osfamily Debian or RedHat.") @@ -91,5 +77,6 @@ class jeepyb ( refreshonly => true, subscribe => Vcsrepo['/opt/jeepyb'], logoutput => true, + require => Package[$jeepyb_packages] } }