From 90837cd2ec4d4e8e422792d7e546abf5ae1bc901 Mon Sep 17 00:00:00 2001 From: Dan Prince Date: Wed, 18 Nov 2015 21:51:31 -0500 Subject: [PATCH] Allow distro packages to install dependencies, etc This patch updates init.pp so that it only attempts to install the mistral package (which should create the user, group, and install all the required dependencies itself). Includes tests for each supported OS Family. Change-Id: I3f996cddb5ff31431545e2f8e4a376fccc2eda61 --- manifests/init.pp | 160 ++---------------------------- manifests/params.pp | 18 +++- spec/classes/mistral_init_spec.rb | 35 ++++++- 3 files changed, 60 insertions(+), 153 deletions(-) diff --git a/manifests/init.pp b/manifests/init.pp index 8061ae9..1304c95 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -3,6 +3,10 @@ # Full description of class mistral here. # # === Parameters +# [*package_ensure*] +# (Optional) Ensure state for package. +# Defaults to 'present' +# # [*qpid_hostname*] # The name/ip of qpid. Default 'localhost' # @@ -70,6 +74,7 @@ # Keystone protocol # class mistral( + $package_ensure = 'present', $qpid_hostname = 'localhost', $qpid_port = 5671, $qpid_username = 'guest', @@ -94,156 +99,10 @@ class mistral( ){ include ::mistral::params - group { 'mistral': - ensure => 'present', - name => 'mistral', - } - - file { '/home/mistral' : - ensure => directory, - owner => 'mistral', - group => 'mistral', - mode => '0750', - } - - user { 'mistral': - name => 'mistral', - gid => 'mistral', - groups => ['mistral'], - home => '/home/mistral', - system => true - } - - - package { 'MySQL-python': - ensure => installed, - name => 'MySQL-python', - } - - package { 'python-devel': - ensure => installed, - name => 'python-devel', - } - - package { 'python-pip': - ensure => installed, - name => 'python-pip', - } - - package { 'python-keystonemiddleware': - ensure => latest, - name => 'python-keystonemiddleware', - } - - package { 'python-oslo-utils': - ensure => latest, - name => 'python-oslo-utils', - } - - package { 'python-oslo-db': - ensure => latest, - name => 'python-oslo-db', - } - - package { 'python-oslo-log': - ensure => latest, - name => 'python-oslo-log', - } - - package { 'python-oslo-service': - ensure => latest, - name => 'python-oslo-service', - } - - package { 'python-oslo-i18n': - ensure => latest, - name => 'python-oslo-i18n', - } - - package { 'python-oslo-config': - ensure => latest, - name => 'python-oslo-config', - } - - package { 'python-oslo-messaging': - ensure => latest, - name => 'python-oslo-messaging', - } - - package { 'python-oslo-context': - ensure => latest, - name => 'python-oslo-context', - } - - package { 'python-oslo-serialization': - ensure => latest, - name => 'python-oslo-serialization', - } - - package { 'python-novaclient': - ensure => latest, - name => 'python-novaclient', - } - - package { 'python-eventlet': - ensure => latest, - name => 'python-eventlet', - } - - - package { 'yaql': - ensure => installed, - name => 'yaql', - } - - package { 'python-pecan': - ensure => latest, - name => 'python-pecan', - } - - package { 'python-ply': - ensure => installed, - name => 'python-ply', - } - - package { 'python-jsonschema': - ensure => installed, - name => 'python-jsonschema', - } - - package { 'python-croniter': - ensure => installed, - name => 'python-croniter', - } - - package { 'python-networkx': - ensure => installed, - name => 'python-networkx', - } - - package { 'python-warlock': - ensure => installed, - name => 'python-warlock', - } - - package { 'python-cliff': - ensure => installed, - name => 'python-cliff', - } - - package { 'python-wsme': - ensure => installed, - name => 'python-wsme', - } - - package { 'python-paramiko': - ensure => installed, - name => 'python-paramiko', - } - - package { 'mistral': - ensure => latest, - name => 'mistral', + package { 'mistral-common': + ensure => $package_ensure, + name => $::mistral::params::common_package_name, + tag => ['openstack', 'mistral-package'], } $database_connection = "mysql://mistral:${mistral_db_pass}@${mysql_vip}/mistral" @@ -278,4 +137,3 @@ class mistral( } } } - diff --git a/manifests/params.pp b/manifests/params.pp index 10597c2..86b490e 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -1,10 +1,26 @@ +# == Class: mistral::params +# +# Parameters for puppet-mistral # class mistral::params { $mistral_conf_dir = '/etc/mistral' $mistral_conf = "${mistral_conf_dir}/mistral.conf" - $package_name = 'mistral' $client_package = 'python-mistralclient' $log_dir ='/var/log/mistral' $dbsync_command = "/usr/bin/python /usr/bin/mistral-db-manage --config-file=${mistral_conf} populate" $update_service_command = '/usr/bin/systemctl daemon-reload' + + case $::osfamily { + 'RedHat': { + $common_package_name = 'openstack-mistral-common' + } + 'Debian': { + $common_package_name = 'mistral' + } + default: { + fail("Unsupported osfamily: ${::osfamily} operatingsystem: \ + ${::operatingsystem}, module ${module_name} only support osfamily \ + RedHat and Debian") + } + } } diff --git a/spec/classes/mistral_init_spec.rb b/spec/classes/mistral_init_spec.rb index b8c607a..a45c592 100644 --- a/spec/classes/mistral_init_spec.rb +++ b/spec/classes/mistral_init_spec.rb @@ -9,7 +9,7 @@ describe 'mistral' do } end - shared_examples_for 'a mistral base installation' do + shared_examples_for 'mistral' do it { is_expected.to contain_class('mistral::params') } @@ -21,5 +21,38 @@ describe 'mistral' do is_expected.to contain_mistral_config('keystone_authtoken/identity_uri').with_value( params[:identity_uri] ) end + it 'installs mistral package' do + is_expected.to contain_package('mistral-common').with( + :ensure => 'present', + :name => platform_params[:common_package_name], + :tag => ['openstack', 'mistral-package'], + ) + end + end + + context 'on Debian platforms' do + let :facts do + { :osfamily => 'Debian' } + end + + let :platform_params do + { :common_package_name => 'mistral' } + end + + it_configures 'mistral' + end + + context 'on RedHat platforms' do + let :facts do + { :osfamily => 'RedHat' } + end + + let :platform_params do + { :common_package_name => 'openstack-mistral-common' } + end + + it_configures 'mistral' + end + end