Manage Keystone_endpoint and Keystone_service without warnings by default

A recent change (1] made Keystone_endpoint matching service by name/type.
This change added a warning if endpoints were not created with a default
service.
The way this new feature was added is problematic because we had
warnings by default, since all Puppet modules use this define, so it
introduced a poor user experience.

This patch makes sure a service type is configured with the new way in
the keystone::resource::service_identity function, when creating
endpoint.
For backward compatibility, when no service type is specified, we have now a
conditional that sends a warning if no service type is set but still
create the endpoints.
For the service management, it adds the service type with the new way,
so we don't have any warning by default.

So from this patch, we don't have this kind of warning by default:
/Keystone_endpoint[RegionOne/keystone]/type: Support for a endpoint
without the type set is deprecated in Liberty. It will be dropped in
Mitaka

[1] http://git.openstack.org/cgit/openstack/puppet-keystone/commit/?id=0a4e06abb0f5b3f324464ff5219d2885816311ce

Closes-Bug: #1528308
Change-Id: I6e411d8f81c7ae5c768d85a236c0942d265c74dd
(cherry picked from commit 6e811badf0)
This commit is contained in:
Emilien Macchi 2015-12-21 13:52:06 +01:00
parent 3c65cfd072
commit def536208d
3 changed files with 44 additions and 18 deletions

View File

@ -168,9 +168,8 @@ define keystone::resource::service_identity(
if $configure_service {
if $service_type {
ensure_resource('keystone_service', $service_name_real, {
ensure_resource('keystone_service', "${service_name_real}::${service_type}", {
'ensure' => 'present',
'type' => $service_type,
'description' => $service_description,
})
} else {
@ -179,6 +178,18 @@ define keystone::resource::service_identity(
}
if $configure_endpoint {
if $service_type {
if $public_url and $admin_url and $internal_url {
ensure_resource('keystone_endpoint', "${region}/${service_name_real}::${service_type}", {
'ensure' => 'present',
'public_url' => $public_url,
'admin_url' => $admin_url,
'internal_url' => $internal_url,
})
} else {
fail ('When configuring an endpoint, you need to set the _url parameters.')
}
} else {
if $public_url and $admin_url and $internal_url {
ensure_resource('keystone_endpoint', "${region}/${service_name_real}", {
'ensure' => 'present',
@ -189,5 +200,7 @@ define keystone::resource::service_identity(
} else {
fail ('When configuring an endpoint, you need to set the _url parameters.')
}
warning('Defining a endpoint without the type is supported in Liberty and will be dropped in Mitaka. See https://bugs.launchpad.net/puppet-keystone/+bug/1506996')
}
}
}

View File

@ -2,14 +2,13 @@ require 'spec_helper'
describe 'keystone::endpoint' do
it { is_expected.to contain_keystone_service('keystone').with(
it { is_expected.to contain_keystone_service('keystone::identity').with(
:ensure => 'present',
:type => 'identity',
:description => 'OpenStack Identity Service'
)}
describe 'with default parameters' do
it { is_expected.to contain_keystone_endpoint('RegionOne/keystone').with(
it { is_expected.to contain_keystone_endpoint('RegionOne/keystone::identity').with(
:ensure => 'present',
:public_url => 'http://127.0.0.1:5000/v2.0',
:admin_url => 'http://127.0.0.1:35357/v2.0',
@ -26,7 +25,7 @@ describe 'keystone::endpoint' do
:internal_url => 'https://identity-int.some.tld/some/internal/endpoint' }
end
it { is_expected.to contain_keystone_endpoint('RegionOne/keystone').with(
it { is_expected.to contain_keystone_endpoint('RegionOne/keystone::identity').with(
:ensure => 'present',
:public_url => 'https://identity.some.tld/the/main/endpoint/v42.6',
:admin_url => 'https://identity-int.some.tld/some/admin/endpoint/v42.6',
@ -41,7 +40,7 @@ describe 'keystone::endpoint' do
{ :version => '' }
end
it { is_expected.to contain_keystone_endpoint('RegionOne/keystone').with(
it { is_expected.to contain_keystone_endpoint('RegionOne/keystone::identity').with(
:ensure => 'present',
:public_url => 'http://127.0.0.1:5000',
:admin_url => 'http://127.0.0.1:35357',
@ -56,7 +55,7 @@ describe 'keystone::endpoint' do
end
it 'internal_url should default to public_url' do
is_expected.to contain_keystone_endpoint('RegionOne/keystone').with(
is_expected.to contain_keystone_endpoint('RegionOne/keystone::identity').with(
:ensure => 'present',
:public_url => 'https://identity.some.tld/the/main/endpoint/v2.0',
:internal_url => 'https://identity.some.tld/the/main/endpoint/v2.0'

View File

@ -47,12 +47,26 @@ describe 'keystone::resource::service_identity' do
:roles => ['admin'],
)}
it { is_expected.to contain_keystone_service(title).with(
it { is_expected.to contain_keystone_service("#{title}::network").with(
:ensure => 'present',
:type => 'network',
:description => 'neutron service',
)}
it { is_expected.to contain_keystone_endpoint("RegionOne/#{title}::network").with(
:ensure => 'present',
:public_url => 'http://7.7.7.7:9696',
:internal_url => 'http://10.0.0.1:9696',
:admin_url => 'http://192.168.0.1:9696',
)}
end
context 'when trying to create an endpoint without service_type (will be dropped in Mitaka)' do
let :params do
required_params.merge(
:configure_service => false,
:service_type => false,
)
end
it { is_expected.to contain_keystone_endpoint("RegionOne/#{title}").with(
:ensure => 'present',
:public_url => 'http://7.7.7.7:9696',