Add swift to keystone class

This commit adds keystone auth objects to the
openstack::keystone class. This allows users to
easily add a swift services auth user to their
existing keystone servers. It is not enabled by
default.
This commit is contained in:
Dan Bode
2013-01-11 16:43:07 -08:00
parent b44e24061c
commit 1fe95ffb06
3 changed files with 96 additions and 0 deletions

View File

@@ -16,5 +16,6 @@ fixtures:
'inifile': 'git://github.com/cprice-puppet/puppetlabs-inifile' 'inifile': 'git://github.com/cprice-puppet/puppetlabs-inifile'
"create_resources": 'git://github.com/puppetlabs/puppetlabs-create_resources' "create_resources": 'git://github.com/puppetlabs/puppetlabs-create_resources'
'vswitch': 'git://github.com/ekarlso/puppet-vswitch' 'vswitch': 'git://github.com/ekarlso/puppet-vswitch'
'swift' : 'git://github.com/puppetlabs/puppetlabs-swift'
symlinks: symlinks:
"openstack": "#{source_dir}" "openstack": "#{source_dir}"

View File

@@ -23,6 +23,7 @@
# [admin_address] Keystone admin address. Optional. Defaults to $internal_address # [admin_address] Keystone admin address. Optional. Defaults to $internal_address
# [glance] Set up glance endpoints and auth. Optional. Defaults to true # [glance] Set up glance endpoints and auth. Optional. Defaults to true
# [nova] Set up nova endpoints and auth. Optional. Defaults to true # [nova] Set up nova endpoints and auth. Optional. Defaults to true
# [swift] Set up swift endpoints and auth. Optional. Defaults to false
# [enabled] If the service is active (true) or passive (false). # [enabled] If the service is active (true) or passive (false).
# Optional. Defaults to true # Optional. Defaults to true
# #
@@ -47,6 +48,7 @@ class openstack::keystone (
$nova_user_password, $nova_user_password,
$cinder_user_password, $cinder_user_password,
$quantum_user_password, $quantum_user_password,
$swift_user_password = false,
$public_address, $public_address,
$db_type = 'mysql', $db_type = 'mysql',
$db_user = 'keystone', $db_user = 'keystone',
@@ -69,10 +71,14 @@ class openstack::keystone (
$quantum_public_address = false, $quantum_public_address = false,
$quantum_internal_address = false, $quantum_internal_address = false,
$quantum_admin_address = false, $quantum_admin_address = false,
$swift_public_address = false,
$swift_internal_address = false,
$swift_admin_address = false,
$glance = true, $glance = true,
$nova = true, $nova = true,
$cinder = true, $cinder = true,
$quantum = true, $quantum = true,
$swift = false,
$enabled = true $enabled = true
) { ) {
@@ -155,6 +161,21 @@ class openstack::keystone (
} else { } else {
$quantum_admin_real = $quantum_internal_real $quantum_admin_real = $quantum_internal_real
} }
if($swift_public_address) {
$swift_public_real = $swift_public_address
} else {
$swift_public_real = $public_address
}
if($swift_internal_address) {
$swift_internal_real = $swift_internal_address
} else {
$swift_internal_real = $swift_public_real
}
if($swift_admin_address) {
$swift_admin_real = $swift_admin_address
} else {
$swift_admin_real = $swift_internal_real
}
class { '::keystone': class { '::keystone':
verbose => $verbose, verbose => $verbose,
@@ -222,6 +243,19 @@ class openstack::keystone (
region => $region, region => $region,
} }
} }
if $swift {
if ! $swift_user_password {
fail('Must set a swift_user_password when swift auth is being configured')
}
class { 'swift::keystone::auth':
password => $swift_user_password,
address => $swift_public_real,
region => $region,
}
}
} }
} }

View File

@@ -0,0 +1,61 @@
require 'spec_helper'
describe 'openstack::keystone' do
# minimum set of default parameters
let :default_params do
{
:db_host => '127.0.0.1',
:db_password => 'pass',
:admin_token => 'token',
:admin_email => 'email@address.com',
:admin_password => 'pass',
:glance_user_password => 'pass',
:nova_user_password => 'pass',
:cinder_user_password => 'pass',
:quantum_user_password => 'pass',
:swift_user_password => false,
:public_address => '127.0.0.1',
}
end
let :facts do
{
:operatingsystem => 'Ubuntu',
:osfamily => 'Debian',
}
end
let :params do
default_params
end
describe 'without swift' do
it { should_not contain_class('swift::keystone::auth') }
end
describe 'swift' do
describe 'without password' do
let :params do
default_params.merge(:swift => true)
end
it 'should fail when the password is not set' do
expect do
subject
end.to raise_error(Puppet::Error)
end
end
describe 'with password' do
let :params do
default_params.merge(:swift => true, :swift_user_password => 'dude')
end
it do
should contain_class('swift::keystone::auth').with(
:password => 'dude',
:address => '127.0.0.1',
:region => 'RegionOne'
)
end
end
end
end