diff --git a/manifests/api.pp b/manifests/api.pp index 068416d2..4132014e 100644 --- a/manifests/api.pp +++ b/manifests/api.pp @@ -185,8 +185,13 @@ class glance::api( validate_re($sql_connection, '(sqlite|mysql|postgresql):\/\/(\S+:\S+@\S+\/\S+)?') - Package['glance'] -> Glance_api_config<||> - Package['glance'] -> Glance_cache_config<||> + if ( $glance::params::api_package_name != $glance::params::registry_package_name ) { + ensure_packages([$glance::params::api_package_name]) + } + + Package[$glance::params::api_package_name] -> Glance_api_config<||> + Package[$glance::params::api_package_name] -> Glance_cache_config<||> + # adding all of this stuff b/c it devstack says glance-api uses the # db now Glance_api_config<||> ~> Exec<| title == 'glance-manage db_sync' |> diff --git a/manifests/init.pp b/manifests/init.pp index 1bbdba2f..6414f771 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -15,10 +15,12 @@ class glance( owner => 'glance', group => 'root', mode => '0770', - require => Package['glance'] } - package { 'glance': - ensure => $package_ensure, - name => $::glance::params::package_name, + + if ( $glance::params::api_package_name == $glance::params::registry_package_name ) { + package { $glance::params::api_package_name : + ensure => $package_ensure, + name => $::glance::params::package_name, + } } } diff --git a/manifests/params.pp b/manifests/params.pp index 5ba0e927..746cdbc4 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -10,13 +10,15 @@ class glance::params { case $::osfamily { 'RedHat': { - $package_name = 'openstack-glance' + $api_package_name = 'openstack-glance' + $registry_package_name = 'openstack-glance' $api_service_name = 'openstack-glance-api' $registry_service_name = 'openstack-glance-registry' $db_sync_command = 'glance-manage db_sync' } 'Debian': { - $package_name = 'glance' + $api_package_name = 'glance-api' + $registry_package_name = 'glance-registry' $api_service_name = 'glance-api' $registry_service_name = 'glance-registry' $db_sync_command = 'glance-manage db_sync' diff --git a/manifests/registry.pp b/manifests/registry.pp index bb86a8ee..2798d7dc 100644 --- a/manifests/registry.pp +++ b/manifests/registry.pp @@ -133,7 +133,12 @@ class glance::registry( validate_re($sql_connection, '(sqlite|mysql|postgresql):\/\/(\S+:\S+@\S+\/\S+)?') - Package['glance'] -> Glance_registry_config<||> + if ( $glance::params::api_package_name != $glance::params::registry_package_name ) { + ensure_packages([$glance::params::registry_package_name]) + } + + Package[$glance::params::registry_package_name] -> Glance_registry_config<||> + Glance_registry_config<||> ~> Exec<| title == 'glance-manage db_sync' |> Glance_registry_config<||> ~> Service['glance-registry'] @@ -297,7 +302,7 @@ class glance::registry( user => 'glance', refreshonly => true, logoutput => on_failure, - subscribe => [Package['glance'], File['/etc/glance/glance-registry.conf']], + subscribe => [Package[$glance::params::registry_package_name], File['/etc/glance/glance-registry.conf']], } $service_ensure = 'running' } else { diff --git a/spec/classes/glance_api_spec.rb b/spec/classes/glance_api_spec.rb index dbbea3c6..9deedd4d 100644 --- a/spec/classes/glance_api_spec.rb +++ b/spec/classes/glance_api_spec.rb @@ -304,4 +304,34 @@ describe 'glance::api' do it { should contain_glance_api_config('DEFAULT/known_stores').with_value("glance.store.filesystem.Store,glance.store.http.Store") } end + + describe 'on Debian platforms' do + let :facts do + { :osfamily => 'Debian' } + end + let(:params) { default_params } + + it {should contain_package('glance-api')} + end + + describe 'on RedHat platforms' do + let :facts do + { :osfamily => 'RedHat' } + end + let(:params) { default_params } + + it { should contain_package('openstack-glance')} + end + + describe 'on unknown platforms' do + let :facts do + { :osfamily => 'unknown' } + end + let(:params) { default_params } + + it 'should fails to configure glance-api' do + expect { subject }.to raise_error(Puppet::Error, /module glance only support osfamily RedHat and Debian/) + end + end + end diff --git a/spec/classes/glance_registry_spec.rb b/spec/classes/glance_registry_spec.rb index 4bc1bc07..ec0efec2 100644 --- a/spec/classes/glance_registry_spec.rb +++ b/spec/classes/glance_registry_spec.rb @@ -79,7 +79,7 @@ describe 'glance::registry' do 'path' => '/usr/bin', 'refreshonly' => true, 'logoutput' => 'on_failure', - 'subscribe' => ['Package[glance]', 'File[/etc/glance/glance-registry.conf]'], + 'subscribe' => ['Package[glance-registry]', 'File[/etc/glance/glance-registry.conf]'], 'notify' => 'Service[glance-registry]' ) end @@ -268,4 +268,33 @@ describe 'glance::registry' do end end + describe 'on Debian platforms' do + let :facts do + { :osfamily => 'Debian' } + end + let(:params) { default_params } + + it {should contain_package('glance-registry')} + end + + describe 'on RedHat platforms' do + let :facts do + { :osfamily => 'RedHat' } + end + let(:params) { default_params } + + it { should contain_package('openstack-glance')} + end + + describe 'on unknown platforms' do + let :facts do + { :osfamily => 'unknown' } + end + let(:params) { default_params } + + it 'should fails to configure glance-registry' do + expect { subject }.to raise_error(Puppet::Error, /module glance only support osfamily RedHat and Debian/) + end + end + end diff --git a/spec/classes/glance_spec.rb b/spec/classes/glance_spec.rb index fba8e519..9af348a2 100644 --- a/spec/classes/glance_spec.rb +++ b/spec/classes/glance_spec.rb @@ -9,12 +9,12 @@ describe 'glance' do end let :default_params do - {:package_ensure => 'present'} + {} end [ {}, - {:package_ensure => 'latest'} + {} ].each do |param_set| describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do @@ -25,13 +25,31 @@ describe 'glance' do let :params do param_set end - it { should contain_package('glance').with_ensure(param_hash[:package_ensure]) } it { should contain_file('/etc/glance/').with( 'ensure' => 'directory', 'owner' => 'glance', - 'mode' => '0770', - 'require' => 'Package[glance]' + 'mode' => '0770' )} + end end + + describe 'on Debian platforms' do + let :facts do + { :osfamily => 'Debian' } + end + let(:params) { default_params } + + it {should_not contain_package('glance')} + end + + describe 'on RedHat platforms' do + let :facts do + { :osfamily => 'RedHat' } + end + let(:params) { default_params } + + it { should contain_package('openstack-glance')} + end + end