diff --git a/manifests/openstackclient.pp b/manifests/openstackclient.pp index 25e23adc..47ba1148 100644 --- a/manifests/openstackclient.pp +++ b/manifests/openstackclient.pp @@ -5,11 +5,20 @@ # == Parameters # # [*package_ensure*] -# Ensure state of the openstackclient package. -# Optional. Defaults to 'present'. +# (Optional) Ensure state of the openstackclient package. +# Defaults to 'present' # class openstacklib::openstackclient( $package_ensure = 'present', ){ - ensure_packages('python-openstackclient', {'ensure' => $package_ensure, tag => 'openstack'}) + + $openstackclient_package_name = $::os_package_type ? { + 'debian' => 'python3-openstackclient', + default => 'python-openstackclient', + } + + ensure_packages($openstackclient_package_name, { + 'ensure' => $package_ensure, + 'tag' => 'openstack' + }) } diff --git a/spec/classes/openstacklib_openstackclient_spec.rb b/spec/classes/openstacklib_openstackclient_spec.rb new file mode 100644 index 00000000..cfcfdde0 --- /dev/null +++ b/spec/classes/openstacklib_openstackclient_spec.rb @@ -0,0 +1,39 @@ +require 'spec_helper' + +describe 'openstacklib::openstackclient' do + + shared_examples_for 'openstacklib::openstackclient' do + context 'with default params' do + it 'installs openstackclient' do + is_expected.to contain_package(platform_params[:openstackclient_package_name]).with( + :ensure => 'present', + :tag => 'openstack' + ) + end + end + end + + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end + + let(:platform_params) do + if facts[:os_package_type] == 'debian' then + openstackclient_package_name = 'python3-openstackclient' + else + openstackclient_package_name = 'python-openstackclient' + end + { + :openstackclient_package_name => openstackclient_package_name + } + end + + it_behaves_like 'openstacklib::openstackclient' + end + end + +end