Introduce public_url, internal_url and admin_url

This change deprecates the following parameters:
- public_protocol (replaced by public_url)
- public_address (replaced by public_url)
- public_port (replaced by public_url)
- internal_address (replaced by internal_url)
- internal_port (replaced by internal_url)
- admin_address (replaced by admin_url)
- admin_port (replaced by admin_url)

Add deprecation warnings if any of those values are provided
while maintaining full backward compatibility.

Closes-bug: #1274979
Change-Id: If5b0ae003726c5a99b3a2e22b2aafe1a178bb170
This commit is contained in:
Mathieu Gagné
2014-01-22 18:50:53 -05:00
parent 6568b2b94c
commit a76d3a2edd
2 changed files with 200 additions and 114 deletions

View File

@@ -1,72 +1,158 @@
# == Class: keystone::endpoint
#
# Creates the auth endpoints for keystone
#
# == Parameters
# === Parameters
#
# * public_address - public address for keystone endpoint. Optional. Defaults to 127.0.0.1.
# * admin_address - admin address for keystone endpoint. Optional. Defaults to 127.0.0.1.
# * internal_address - internal address for keystone endpoint. Optional. Defaults to 127.0.0.1.
# * public_port - Port for non-admin access to keystone endpoint. Optional. Defaults to 5000.
# * admin_port - Port for admin access to keystone endpoint. Optional. Defaults to 35357.
# * internal_port - Port for internal access to keystone endpoint. Optional. Defaults to 35357.
# * region - Region for endpoint. Optional. Defaults to RegionOne.
# * version - API version for endpoint. Optional. Defaults to v2.0.
# * public_url - public url for keystone endpoint. Optional. Defaults to undef. Overrides & will deprecate other public_ parameters.
# * internal_url - internal url for keystone endpoint. Optional. Defaults to $public_url if undef. Overrides & will deprecate other internal_ parameters.
# * admin_url - admin url for keystone endpoint. Optional. Defaults to undef. Overrides & will deprecate other admin_ parameters.
# [*public_url*]
# (optional) Public url for keystone endpoint. (Defaults to 'http://127.0.0.1:5000')
#
# == Sample Usage
# [*internal_url*]
# (optional) Internal url for keystone endpoint. (Defaults to $public_url)
#
# class { 'keystone::endpoint':
# :public_address => '154.10.10.23',
# :admin_address => '10.0.0.7',
# :internal_address => '11.0.1.7',
# }
# [*admin_url*]
# (optional) Admin url for keystone endpoint. (Defaults to 'http://127.0.0.1:35357')
#
# [*region*]
# (optional) Region for endpoint. (Defaults to 'RegionOne')
#
class keystone::endpoint(
$public_address = '127.0.0.1',
$admin_address = '127.0.0.1',
$internal_address = '127.0.0.1',
$public_port = '5000',
$admin_port = '35357',
$internal_port = undef,
$region = 'RegionOne',
$version = 'v2.0',
$public_protocol = 'http',
$public_url = undef,
# [*version*]
# (optional) API version for endpoint. Appended to all endpoint urls. (Defaults to 'v2.0')
#
# [*public_url*]
# (optional) The endpoint's public url. (Defaults to 'http://127.0.0.1:5000')
# This url should *not* contain any version or trailing '/'.
#
# [*admin_url*]
# (optional) The endpoint's admin url. (Defaults to 'http://127.0.0.1:5000')
# This url should *not* contain any version or trailing '/'.
#
# [*internal_url*]
# (optional) The endpoint's internal url. (Defaults to 'http://127.0.0.1:35357')
# This url should *not* contain any version or trailing '/'.
#
# [*public_protocol*]
# (optional) DEPRECATED: Use public_url instead.
# Protocol for public access to keystone endpoint. (Defaults to 'http')
# Setting this parameter overrides public_url parameter.
#
# [*public_address*]
# (optional) DEPRECATED: Use public_url instead.
# Public address for keystone endpoint. (Defaults to '127.0.0.1')
# Setting this parameter overrides public_url parameter.
#
# [*public_port*]
# (optional) DEPRECATED: Use public_url instead.
# Port for non-admin access to keystone endpoint. (Defaults to 5000)
# Setting this parameter overrides public_url parameter.
#
# [*internal_address*]
# (optional) DEPRECATED: Use internal_url instead.
# Internal address for keystone endpoint. (Defaults to '127.0.0.1')
# Setting this parameter overrides internal_url parameter.
#
# [*internal_port*]
# (optional) DEPRECATED: Use internal_url instead.
# Port for internal access to keystone endpoint. (Defaults to $public_port)
# Setting this parameter overrides internal_url parameter.
#
# [*admin_address*]
# (optional) DEPRECATED: Use admin_url instead.
# Admin address for keystone endpoint. (Defaults to '127.0.0.1')
# Setting this parameter overrides admin_url parameter.
#
# [*admin_port*]
# (optional) DEPRECATED: Use admin_url instead.
# Port for admin access to keystone endpoint. (Defaults to 35357)
# Setting this parameter overrides admin_url parameter.
#
# === Deprecation notes
#
# If any value is provided for public_protocol, public_address or public_port parameters,
# public_url will be completely ignored. The same applies for internal and admin parameters.
#
# === Examples
#
# class { 'keystone::endpoint':
# public_url => 'https://154.10.10.23:5000',
# internal_url => 'https://11.0.1.7:5000',
# admin_url => 'https://10.0.1.7:35357',
# }
#
class keystone::endpoint (
$public_url = 'http://127.0.0.1:5000',
$internal_url = undef,
$admin_url = undef,
$admin_url = 'http://127.0.0.1:35357',
$version = 'v2.0',
$region = 'RegionOne',
# DEPRECATED PARAMETERS
$public_protocol = undef,
$public_address = undef,
$public_port = undef,
$internal_address = undef,
$internal_port = undef,
$admin_address = undef,
$admin_port = undef,
) {
if $internal_port == undef {
$internal_port_real = $public_port
} else {
$internal_port_real = $internal_port
if $public_port {
warning('The public_port parameter is deprecated, use public_url instead.')
}
if $public_url {
$public_url_real = "${public_url}/${version}"
} else {
$public_url_real = "${public_protocol}://${public_address}:${public_port}/${version}"
if $public_protocol {
warning('The public_protocol parameter is deprecated, use public_url instead.')
}
if $internal_url {
$internal_url_real = "${internal_url}/${version}"
} else {
if $public_url {
$internal_url_real = $public_url_real
} else {
$internal_url_real = "http://${internal_address}:${internal_port_real}/${version}"
}
if $public_address {
warning('The public_address parameter is deprecated, use public_url instead.')
}
if $admin_url {
$admin_url_real = "${admin_url}/${version}"
} else {
$admin_url_real = "http://${admin_address}:${admin_port}/${version}"
if $internal_address {
warning('The internal_address parameter is deprecated, use internal_url instead.')
}
if $internal_port {
warning('The internal_port parameter is deprecated, use internal_url instead.')
}
if $admin_address {
warning('The admin_address parameter is deprecated, use admin_url instead.')
}
if $admin_port {
warning('The admin_port parameter is deprecated, use admin_url instead.')
}
$public_url_real = inline_template('<%=
if (!@public_protocol.nil?) || (!@public_address.nil?) || (!@public_port.nil?)
@public_protocol ||= "http"
@public_address ||= "127.0.0.1"
@public_port ||= "5000"
"#{@public_protocol}://#{@public_address}:#{@public_port}/#{@version}"
else
"#{@public_url}/#{@version}"
end %>')
$internal_url_real = inline_template('<%=
if (!@internal_address.nil?) || (!@internal_port.nil?) || (!@public_port.nil?)
@internal_address ||= @public_address ||= "127.0.0.1"
@internal_port ||= @public_port ||= "5000"
"http://#{@internal_address}:#{@internal_port}/#{@version}"
elsif (!@internal_url.nil?)
"#{@internal_url}/#{@version}"
else
"#{@public_url}/#{@version}"
end %>')
$admin_url_real = inline_template('<%=
if (!@admin_address.nil?) || (!@admin_port.nil?)
@admin_address ||= "127.0.0.1"
@admin_port ||= "35357"
"http://#{@admin_address}:#{@admin_port}/#{@version}"
else
"#{@admin_url}/#{@version}"
end %>')
keystone_service { 'keystone':
ensure => present,
type => 'identity',

View File

@@ -10,7 +10,7 @@ describe 'keystone::endpoint' do
describe 'with default parameters' do
it { should contain_keystone_endpoint('RegionOne/keystone').with(
:ensure => 'present',
:ensure => 'present',
:public_url => 'http://127.0.0.1:5000/v2.0',
:admin_url => 'http://127.0.0.1:35357/v2.0',
:internal_url => 'http://127.0.0.1:5000/v2.0'
@@ -20,70 +20,10 @@ describe 'keystone::endpoint' do
describe 'with overridden parameters' do
let :params do
{
:public_address => '10.0.0.1',
:admin_address => '10.0.0.2',
:internal_address => '10.0.0.3',
:public_port => '23456',
:admin_port => '12345',
:region => 'RegionTwo',
:version => 'v3.0',
}
end
it { should contain_keystone_endpoint('RegionTwo/keystone').with(
:ensure => 'present',
:public_url => 'http://10.0.0.1:23456/v3.0',
:admin_url => 'http://10.0.0.2:12345/v3.0',
:internal_url => 'http://10.0.0.3:23456/v3.0'
)}
end
describe 'with overridden internal port' do
let :params do
{
:internal_port => '12345'
}
end
it { should contain_keystone_endpoint('RegionOne/keystone').with(
:ensure => 'present',
:public_url => 'http://127.0.0.1:5000/v2.0',
:admin_url => 'http://127.0.0.1:35357/v2.0',
:internal_url => 'http://127.0.0.1:12345/v2.0'
)}
end
describe 'with overriden public and private paths' do
let :params do
{
:public_url => 'https://identity.some.tld/the/main/endpoint',
:admin_url => 'https://identity-int.some.tld/some/admin/endpoint',
}
end
it { should contain_keystone_endpoint('RegionOne/keystone').with(
:ensure => 'present',
:public_url => 'https://identity.some.tld/the/main/endpoint/v2.0',
:admin_url => 'https://identity-int.some.tld/some/admin/endpoint/v2.0',
:internal_url => 'https://identity.some.tld/the/main/endpoint/v2.0'
)}
end
describe 'with overriden public, private and internal paths and version' do
let :params do
{
:version => 'v42.6',
{ :version => 'v42.6',
:public_url => 'https://identity.some.tld/the/main/endpoint',
:admin_url => 'https://identity-int.some.tld/some/admin/endpoint',
:internal_url => 'https://identity-int.some.tld/some/internal/endpoint'
}
:internal_url => 'https://identity-int.some.tld/some/internal/endpoint' }
end
it { should contain_keystone_endpoint('RegionOne/keystone').with(
@@ -92,8 +32,68 @@ describe 'keystone::endpoint' do
:admin_url => 'https://identity-int.some.tld/some/admin/endpoint/v42.6',
:internal_url => 'https://identity-int.some.tld/some/internal/endpoint/v42.6'
)}
end
describe 'without internal_url parameter' do
let :params do
{ :public_url => 'https://identity.some.tld/the/main/endpoint' }
end
it 'internal_url should default to public_url' do
should contain_keystone_endpoint('RegionOne/keystone').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'
)
end
end
describe 'with deprecated parameters' do
let :params do
{ :public_address => '10.0.0.1',
:admin_address => '10.0.0.2',
:internal_address => '10.0.0.3',
:public_port => '23456',
:admin_port => '12345',
:region => 'RegionTwo',
:version => 'v3.0' }
end
it { should contain_keystone_endpoint('RegionTwo/keystone').with(
:ensure => 'present',
:public_url => 'http://10.0.0.1:23456/v3.0',
:admin_url => 'http://10.0.0.2:12345/v3.0',
:internal_url => 'http://10.0.0.3:23456/v3.0'
)}
describe 'public_address overrides public_url' do
let :params do
{ :public_address => '10.0.0.1',
:public_port => '12345',
:public_url => 'http://10.10.10.10:23456/v3.0' }
end
it { should contain_keystone_endpoint('RegionOne/keystone').with(
:ensure => 'present',
:public_url => 'http://10.0.0.1:12345/v2.0'
)}
end
end
describe 'with overridden deprecated internal_port' do
let :params do
{ :internal_port => '12345' }
end
it { should contain_keystone_endpoint('RegionOne/keystone').with(
:ensure => 'present',
:public_url => 'http://127.0.0.1:5000/v2.0',
:admin_url => 'http://127.0.0.1:35357/v2.0',
:internal_url => 'http://127.0.0.1:12345/v2.0'
)}
end
end