enable sharev2 API capacity

* With the same interface as puppet-nova and puppet-cinder, create *_v2
  parameters.
* Keep v1 enabled by default for backward compatibility.
* Enable v2 by default because that's the new API since Juno release.

Change-Id: I81a5c6696708732a0de34225200f1242e988d0aa
Closes-Bug: #1512577
This commit is contained in:
Emilien Macchi 2015-11-20 14:22:49 +01:00
parent 3878c3d56e
commit cf8041398f
3 changed files with 121 additions and 25 deletions

View File

@ -41,6 +41,36 @@
# (optional) The endpoint's internal url. (Defaults to 'http://127.0.0.1:8786/v1/%(tenant_id)s')
# This url should *not* contain any trailing '/'.
#
# [*password_v2*]
# Password for Manila v2 user. Optional. Defaults to undef.
#
# [*email_v2*]
# Email for Manila v2 user. Optional. Defaults to 'manilav2@localhost'.
#
# [*auth_name_v2*]
# Username for Manila v2 service. Optional. Defaults to 'manilav2'.
#
# [*configure_endpoint_v2*]
# Should Manila v2 endpoint be configured? Optional. Defaults to 'true'.
#
# [*service_type_v2*]
# Type of service v2. Optional. Defaults to 'sharev2'.
#
# [*service_description_v2*]
# Description for keystone service v2. Optional. Defaults to 'Manila Service v2'.
#
# [*public_url_v2*]
# (optional) The v2 endpoint's public url. (Defaults to 'http://127.0.0.1:8786/v2/%(tenant_id)s')
# This url should *not* contain any trailing '/'.
#
# [*admin_url_v2*]
# (optional) The endpoint's admin url. (Defaults to 'http://127.0.0.1:8786/v2/%(tenant_id)s')
# This url should *not* contain any trailing '/'.
#
# [*internal_url_v2*]
# (optional) The endpoint's internal url. (Defaults to 'http://127.0.0.1:8786/v2/%(tenant_id)s')
# This url should *not* contain any trailing '/'.
#
# [*share_version*]
# (optional) DEPRECATED: Use public_url, internal_url and admin_url instead.
# API version endpoint. (Defaults to 'v1')
@ -96,27 +126,44 @@
#
class manila::keystone::auth (
$password,
$auth_name = 'manila',
$email = 'manila@localhost',
$tenant = 'services',
$configure_endpoint = true,
$service_type = 'share',
$service_description = 'Manila Service',
$region = 'RegionOne',
$public_url = 'http://127.0.0.1:8786/v1/%(tenant_id)s',
$admin_url = 'http://127.0.0.1:8786/v1/%(tenant_id)s',
$internal_url = 'http://127.0.0.1:8786/v1/%(tenant_id)s',
$password_v2 = undef,
$auth_name_v2 = 'manilav2',
$auth_name = 'manila',
$email = 'manila@localhost',
$email_v2 = 'manilav2@localhost',
$tenant = 'services',
$configure_endpoint = true,
$configure_endpoint_v2 = true,
$service_type = 'share',
$service_type_v2 = 'sharev2',
$service_description = 'Manila Service',
$service_description_v2 = 'Manila Service v2',
$region = 'RegionOne',
$public_url = 'http://127.0.0.1:8786/v1/%(tenant_id)s',
$public_url_v2 = 'http://127.0.0.1:8786/v2/%(tenant_id)s',
$admin_url = 'http://127.0.0.1:8786/v1/%(tenant_id)s',
$admin_url_v2 = 'http://127.0.0.1:8786/v2/%(tenant_id)s',
$internal_url = 'http://127.0.0.1:8786/v1/%(tenant_id)s',
$internal_url_v2 = 'http://127.0.0.1:8786/v2/%(tenant_id)s',
# DEPRECATED PARAMETERS
$share_version = undef,
$port = undef,
$public_protocol = undef,
$public_address = undef,
$internal_protocol = undef,
$internal_address = undef,
$admin_protocol = undef,
$admin_address = undef,
$share_version = undef,
$port = undef,
$public_protocol = undef,
$public_address = undef,
$internal_protocol = undef,
$internal_address = undef,
$admin_protocol = undef,
$admin_address = undef,
) {
# for interface backward compatibility, we can't enforce to set a new parameter
# so we take 'password' parameter by default but allow to override it.
if ! $password_v2 {
$password_v2_real = $password
} else {
$password_v2_real = $password_v2
}
if $share_version {
warning('The share_version parameter is deprecated, use public_url, internal_url and admin_url instead.')
}
@ -180,6 +227,7 @@ class manila::keystone::auth (
}
Keystone_user_role["${auth_name}@${tenant}"] ~> Service <| name == 'manila-api' |>
Keystone_user_role["${auth_name_v2}@${tenant}"] ~> Service <| name == 'manila-api' |>
keystone::resource::service_identity { $auth_name:
configure_user => true,
@ -196,4 +244,18 @@ class manila::keystone::auth (
internal_url => $internal_url_real,
}
keystone::resource::service_identity { $auth_name_v2:
configure_user => true,
configure_user_role => true,
configure_endpoint => $configure_endpoint_v2,
service_type => $service_type_v2,
service_description => $service_description_v2,
region => $region,
password => $password_v2_real,
email => $email_v2,
tenant => $tenant,
public_url => $public_url_v2,
admin_url => $admin_url_v2,
internal_url => $internal_url_v2,
}
}

View File

@ -40,7 +40,8 @@ describe 'basic manila' do
password => 'a_big_secret',
}
class { '::manila::keystone::auth':
password => 'a_big_secret',
password => 'a_big_secret',
password_v2 => 'a_big_secret',
}
class { '::manila::client': }
class { '::manila::compute::nova': }

View File

@ -3,7 +3,8 @@ require 'spec_helper'
describe 'manila::keystone::auth' do
let :params do
{:password => 'pw'}
{:password => 'pw',
:password_v2 => 'pw2'}
end
describe 'with only required params' do
@ -25,6 +26,21 @@ describe 'manila::keystone::auth' do
:description => 'Manila Service'
)
is_expected.to contain_keystone_user('manilav2').with(
:ensure => 'present',
:password => 'pw2',
:email => 'manilav2@localhost',
)
is_expected.to contain_keystone_user_role('manilav2@services').with(
:ensure => 'present',
:roles => ['admin']
)
is_expected.to contain_keystone_service('manilav2').with(
:ensure => 'present',
:type => 'sharev2',
:description => 'Manila Service v2'
)
end
it { is_expected.to contain_keystone_endpoint('RegionOne/manila').with(
:ensure => 'present',
@ -32,16 +48,25 @@ describe 'manila::keystone::auth' do
:admin_url => 'http://127.0.0.1:8786/v1/%(tenant_id)s',
:internal_url => 'http://127.0.0.1:8786/v1/%(tenant_id)s'
) }
it { is_expected.to contain_keystone_endpoint('RegionOne/manilav2').with(
:ensure => 'present',
:public_url => 'http://127.0.0.1:8786/v2/%(tenant_id)s',
:admin_url => 'http://127.0.0.1:8786/v2/%(tenant_id)s',
:internal_url => 'http://127.0.0.1:8786/v2/%(tenant_id)s'
) }
end
context 'when overriding endpoint parameters' do
before do
params.merge!(
:region => 'RegionThree',
:public_url => 'https://10.0.42.1:4242/v42/%(tenant_id)s',
:admin_url => 'https://10.0.42.2:4242/v42/%(tenant_id)s',
:internal_url => 'https://10.0.42.3:4242/v42/%(tenant_id)s'
:region => 'RegionThree',
:public_url => 'https://10.0.42.1:4242/v42/%(tenant_id)s',
:admin_url => 'https://10.0.42.2:4242/v42/%(tenant_id)s',
:internal_url => 'https://10.0.42.3:4242/v42/%(tenant_id)s',
:public_url_v2 => 'https://10.0.42.1:4242/v43/%(tenant_id)s',
:admin_url_v2 => 'https://10.0.42.2:4242/v43/%(tenant_id)s',
:internal_url_v2 => 'https://10.0.42.3:4242/v43/%(tenant_id)s'
)
end
@ -51,6 +76,12 @@ describe 'manila::keystone::auth' do
:admin_url => 'https://10.0.42.2:4242/v42/%(tenant_id)s',
:internal_url => 'https://10.0.42.3:4242/v42/%(tenant_id)s'
)}
it { is_expected.to contain_keystone_endpoint('RegionThree/manilav2').with(
:ensure => 'present',
:public_url => 'https://10.0.42.1:4242/v43/%(tenant_id)s',
:admin_url => 'https://10.0.42.2:4242/v43/%(tenant_id)s',
:internal_url => 'https://10.0.42.3:4242/v43/%(tenant_id)s'
)}
end
context 'when deprecated endpoint parameters' do
@ -79,9 +110,11 @@ describe 'manila::keystone::auth' do
describe 'when endpoint should not be configured' do
before do
params.merge!(
:configure_endpoint => false
:configure_endpoint => false,
:configure_endpoint_v2 => false
)
end
it { is_expected.to_not contain_keystone_endpoint('RegionOne/manila') }
it { is_expected.to_not contain_keystone_endpoint('RegionOne/manilav2') }
end
end