From ed031af7bf3a6dd4f883f9dba37f85fae91a25bf Mon Sep 17 00:00:00 2001 From: Mike Dorman Date: Wed, 13 Aug 2014 09:19:26 -0600 Subject: [PATCH] Adds ability to override service name for service catalog Instead of forcing the name of the service in the service catalog to match auth_name, this allows the ability to explicitly set the service name, spearately from auth_name. If service_name is not specified, it's value defaults to the value of auth_name (which maintains the current behavior.) Closes-bug: #1359755 Change-Id: I66dadaebb526cfae2b6c250b2bef97e1e6d6aafe --- manifests/keystone/auth.pp | 14 +++++++++++-- spec/classes/ceilometer_keystone_auth_spec.rb | 21 ++++++++++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/manifests/keystone/auth.pp b/manifests/keystone/auth.pp index 811bcfb..18f4c4e 100644 --- a/manifests/keystone/auth.pp +++ b/manifests/keystone/auth.pp @@ -16,6 +16,9 @@ # [*configure_endpoint*] # Should Ceilometer endpoint be configured? Optional. Defaults to 'true'. # +# [*service_name*] +# Name of the service. Optional. Defaults to value of auth_name. +# # [*service_type*] # Type of service. Optional. Defaults to 'metering'. # @@ -71,6 +74,7 @@ class ceilometer::keystone::auth ( $password = false, $email = 'ceilometer@localhost', $auth_name = 'ceilometer', + $service_name = undef, $service_type = 'metering', $public_address = '127.0.0.1', $admin_address = '127.0.0.1', @@ -107,6 +111,12 @@ class ceilometer::keystone::auth ( $internal_url_real = "${internal_protocol}://${internal_address}:${port}" } + if $service_name { + $real_service_name = $service_name + } else { + $real_service_name = $auth_name + } + Keystone_user_role["${auth_name}@${tenant}"] ~> Service <| name == 'ceilometer-api' |> @@ -126,13 +136,13 @@ class ceilometer::keystone::auth ( roles => ['admin', 'ResellerAdmin'], require => Keystone_role['ResellerAdmin'], } - keystone_service { $auth_name: + keystone_service { $real_service_name: ensure => present, type => $service_type, description => 'Openstack Metering Service', } if $configure_endpoint { - keystone_endpoint { "${region}/${auth_name}": + keystone_endpoint { "${region}/${real_service_name}": ensure => present, public_url => $public_url_real, admin_url => $admin_url_real, diff --git a/spec/classes/ceilometer_keystone_auth_spec.rb b/spec/classes/ceilometer_keystone_auth_spec.rb index 15287fc..cf06a01 100644 --- a/spec/classes/ceilometer_keystone_auth_spec.rb +++ b/spec/classes/ceilometer_keystone_auth_spec.rb @@ -144,10 +144,28 @@ describe 'ceilometer::keystone::auth' do end end + context 'when overriding service name' do + before do + params.merge!({ + :service_name => 'ceilometer_service' + }) + end + it 'configures correct user name' do + should contain_keystone_user('ceilometer') + end + it 'configures correct user role' do + should contain_keystone_user_role('ceilometer@services') + end + it 'configures correct service name' do + should contain_keystone_service('ceilometer_service') + end + it 'configures correct endpoint name' do + should contain_keystone_endpoint('RegionOne/ceilometer_service') + end + end end - context 'on Debian platforms' do let :facts do { :osfamily => 'Debian' } @@ -163,4 +181,5 @@ describe 'ceilometer::keystone::auth' do it_configures 'ceilometer keystone auth' end + end -- 2.45.2