Fix python package names (ldappool and pysaml2)

This patch fixes package name of python-ldapppool and python-pysaml2,
so that correct package names, python3-*, are used in OSs which use
Python3 as the default Python.

Change-Id: I0dc5dd487996307811edd177d13d6d5ac8f841ee
This commit is contained in:
Takashi Kajinami 2020-08-27 21:58:22 +09:00
parent 95b1acaa36
commit f342aad946
7 changed files with 274 additions and 190 deletions

View File

@ -104,11 +104,16 @@ class keystone::federation::identity_provider(
fail ('Keystone need to be running under Apache for Federation work.')
}
ensure_packages(['xmlsec1','python-pysaml2'], {
package{ 'xmlsec1':
ensure => $package_ensure,
allow_virtual => true,
tag => 'keystone-support-package',
})
}
package{ 'python-pysaml2':
ensure => $package_ensure,
name => $keystone::params::python_pysaml2_package_name,
tag => 'keystone-support-package',
}
keystone_config {
'saml/certfile': value => $certfile;

View File

@ -443,13 +443,16 @@ class keystone::ldap(
$auth_pool_connection_lifetime = 60,
$package_ensure = present,
$manage_packages = true,
) {
) inherits keystone::params {
include keystone::deps
if $manage_packages {
ensure_resource('package', 'python-ldappool', { ensure => $package_ensure,
tag => 'keystone-package' })
ensure_resource('package', 'python-ldappool', {
ensure => $package_ensure,
name => $keystone::params::python_ldappool_package_name,
tag => 'keystone-package'
})
}
if ($tls_cacertdir != undef) {

View File

@ -487,6 +487,7 @@ define keystone::ldap_backend(
) {
include keystone::deps
include keystone::params
$domain_enabled = getparam(Keystone_config['identity/domain_specific_drivers_enabled'], 'value')
$domain_dir_enabled = getparam(Keystone_config['identity/domain_config_dir'], 'value')
@ -654,6 +655,7 @@ and \"${domain_dir_enabled}\" for identity/domain_config_dir"
if $manage_packages {
ensure_resource('package', 'python-ldappool', {
ensure => $package_ensure,
name => $keystone::params::python_ldappool_package_name,
tag => ['openstack', 'keystone-package'],
})
}

View File

@ -16,6 +16,8 @@ class keystone::params {
$service_name = 'keystone'
$keystone_wsgi_script_path = '/usr/lib/cgi-bin/keystone'
$python_memcache_package_name = "python${pyvers}-memcache"
$python_ldappool_package_name = "python${pyvers}-ldappool"
$python_pysaml2_package_name = "python${pyvers}-pysaml2"
$mellon_package_name = 'libapache2-mod-auth-mellon'
$openidc_package_name = 'libapache2-mod-auth-openidc'
}
@ -24,6 +26,8 @@ class keystone::params {
$service_name = 'openstack-keystone'
$keystone_wsgi_script_path = '/var/www/cgi-bin/keystone'
$python_memcache_package_name = "python${pyvers}-memcached"
$python_ldappool_package_name = "python${pyvers}-ldappool"
$python_pysaml2_package_name = "python${pyvers}-pysaml2"
$mellon_package_name = 'mod_auth_mellon'
$openidc_package_name = 'mod_auth_openidc'
}

View File

@ -43,6 +43,7 @@ describe 'keystone::federation::identity_provider' do
it { is_expected.to contain_package('python-pysaml2').with(
:ensure => 'present',
:name => platform_params[:python_pysaml2_package_name],
)}
it {
@ -121,10 +122,23 @@ describe 'keystone::federation::identity_provider' do
let (:platform_params) do
if facts[:osfamily] == 'RedHat'
keystone_service = 'openstack-keystone'
if facts[:operatingsystem] == 'Fedora'
python_pysaml2_package_name = 'python3-pysaml2'
else
if facts[:operatingsystemmajrelease] > '7'
python_pysaml2_package_name = 'python3-pysaml2'
else
python_pysaml2_package_name = 'python-pysaml2'
end
end
else
keystone_service = 'keystone'
python_pysaml2_package_name = 'python3-pysaml2'
end
{ :keystone_service => keystone_service }
{
:keystone_service => keystone_service,
:python_pysaml2_package_name => python_pysaml2_package_name
}
end
it_behaves_like 'keystone::federation::identity_provider'

View File

@ -83,7 +83,11 @@ describe 'keystone::ldap' do
end
context 'with parameters' do
it { is_expected.to contain_package('python-ldappool') }
it {
is_expected.to contain_package('python-ldappool').with(
:name => platform_params[:python_ldappool_package_name],
)
}
it {
is_expected.to contain_keystone_config('ldap/url').with_value('ldap://foo')
@ -202,6 +206,22 @@ describe 'keystone::ldap' do
facts.merge!(OSDefaults.get_facts())
end
let (:platform_params) do
case facts[:osfamily]
when 'Debian'
{ :python_ldappool_package_name => 'python3-ldappool' }
when 'RedHat'
if facts[:operatingsystem] == 'Fedora'
{ :python_ldappool_package_name => 'python3-ldappool' }
else
if facts[:operatingsystemmajrelease] > '7'
{ :python_ldappool_package_name => 'python3-ldappool' }
else
{ :python_ldappool_package_name => 'python-ldappool' }
end
end
end
end
it_behaves_like 'keystone::ldap'
end
end

View File

@ -1,7 +1,9 @@
require 'spec_helper'
describe 'keystone::ldap_backend' do
describe 'Using Default domain' do
shared_examples 'keystone::ldap_backend' do
context 'Using Default domain' do
let(:title) { 'Default' }
let(:pre_condition) do
<<-EOM
@ -15,7 +17,8 @@ describe 'keystone::ldap_backend' do
file {'/etc/keystone/keystone.conf': ensure => present }
EOM
end
describe 'with basic params' do
context 'with basic params' do
let :params do
{
:url => 'ldap://foo',
@ -69,7 +72,12 @@ describe 'keystone::ldap_backend' do
:auth_pool_connection_lifetime => 200,
}
end
it { is_expected.to contain_package('python-ldappool') }
it {
is_expected.to contain_package('python-ldappool').with(
:name => platform_params[:python_ldappool_package_name],
)
}
it 'should have basic params' do
# basic params
is_expected.to contain_keystone_domain_config('Default::ldap/url').with_value('ldap://foo')
@ -152,7 +160,7 @@ describe 'keystone::ldap_backend' do
end
end
describe 'Using non Default domain' do
context 'Using non Default domain' do
let(:title) { 'foobar' }
let :params do
{
@ -173,7 +181,7 @@ describe 'keystone::ldap_backend' do
end
end
describe 'checks' do
context 'checks' do
let(:title) { 'domain' }
context 'Missing identity/domain_specific_drivers_enabled' do
let(:pre_condition) do
@ -196,6 +204,34 @@ describe 'keystone::ldap_backend' do
it { should raise_error(Puppet::Error) }
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
case facts[:osfamily]
when 'Debian'
{ :python_ldappool_package_name => 'python3-ldappool' }
when 'RedHat'
if facts[:operatingsystem] == 'Fedora'
{ :python_ldappool_package_name => 'python3-ldappool' }
else
if facts[:operatingsystemmajrelease] > '7'
{ :python_ldappool_package_name => 'python3-ldappool' }
else
{ :python_ldappool_package_name => 'python-ldappool' }
end
end
end
end
it_behaves_like 'keystone::ldap_backend'
end
end
end