Implement nova::ironic::common class
This change introduces new class nova::ironic::common which adds common Ironic related parameters to nova.conf required for nova-api and nova-compute. Change-Id: Ia878d19cffd833e9bf95d1b26ff0c2b6c02370d0 Closes-bug: #1581040
This commit is contained in:
parent
ec1f2fddcc
commit
2f0f24c5e7
manifests
spec/classes
@ -39,13 +39,13 @@
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
class nova::compute::ironic (
|
||||
$admin_username = 'admin',
|
||||
$admin_password = 'ironic',
|
||||
$admin_url = 'http://127.0.0.1:35357/v2.0',
|
||||
$admin_tenant_name = 'services',
|
||||
$api_endpoint = 'http://127.0.0.1:6385/v1',
|
||||
$max_concurrent_builds = $::os_service_default,
|
||||
# DEPRECATED PARAMETERS
|
||||
$admin_username = undef,
|
||||
$admin_password = undef,
|
||||
$admin_url = undef,
|
||||
$admin_tenant_name = undef,
|
||||
$api_endpoint = undef,
|
||||
$admin_user = undef,
|
||||
$admin_passwd = undef,
|
||||
$compute_driver = 'ironic.IronicDriver'
|
||||
@ -54,22 +54,36 @@ class nova::compute::ironic (
|
||||
include ::nova::deps
|
||||
|
||||
if $admin_user {
|
||||
warning('The admin_user parameter is deprecated, use admin_username instead.')
|
||||
warning('The admin_user parameter in class nova::compute::ironic is deprecated, use class nova::ironic::common instead.')
|
||||
}
|
||||
|
||||
if $admin_passwd {
|
||||
warning('The admin_passwd parameter is deprecated, use admin_password instead.')
|
||||
warning('The admin_passwd parameter in class nova::compute::ironic is deprecated, use class nova::ironic::common instead.')
|
||||
}
|
||||
|
||||
$admin_username_real = pick($admin_user, $admin_username)
|
||||
$admin_password_real = pick($admin_passwd, $admin_password)
|
||||
if $admin_username {
|
||||
warning('The admin_username parameter in class nova::compute::ironic is deprecated, use class nova::ironic::common instead.')
|
||||
}
|
||||
|
||||
if $admin_password {
|
||||
warning('The admin_password parameter in class nova::compute::ironic is deprecated, use class nova::ironic::common instead.')
|
||||
}
|
||||
|
||||
if $admin_url {
|
||||
warning('The admin_url parameter in class nova::compute::ironic is deprecated, use class nova::ironic::common instead.')
|
||||
}
|
||||
|
||||
if $admin_tenant_name {
|
||||
warning('The admin_tenant_name parameter in class nova::compute::ironic is deprecated, use class nova::ironic::common instead.')
|
||||
}
|
||||
|
||||
if $api_endpoint {
|
||||
warning('The api_endpoint parameter in class nova::compute::ironic is deprecated, use class nova::ironic::common instead.')
|
||||
}
|
||||
|
||||
include ::nova::ironic::common
|
||||
|
||||
nova_config {
|
||||
'ironic/admin_username': value => $admin_username_real;
|
||||
'ironic/admin_password': value => $admin_password_real;
|
||||
'ironic/admin_url': value => $admin_url;
|
||||
'ironic/admin_tenant_name': value => $admin_tenant_name;
|
||||
'ironic/api_endpoint': value => $api_endpoint;
|
||||
'DEFAULT/compute_driver': value => $compute_driver;
|
||||
'DEFAULT/max_concurrent_builds': value => $max_concurrent_builds;
|
||||
}
|
||||
|
58
manifests/ironic/common.pp
Normal file
58
manifests/ironic/common.pp
Normal file
@ -0,0 +1,58 @@
|
||||
# == Class: nova::ironic::common
|
||||
#
|
||||
# [*admin_username*]
|
||||
# The admin username for Ironic to connect to Nova.
|
||||
# Defaults to 'admin'
|
||||
#
|
||||
# [*admin_password*]
|
||||
# The admin password for Ironic to connect to Nova.
|
||||
# Defaults to 'ironic'
|
||||
#
|
||||
# [*admin_url*]
|
||||
# The address of the Keystone api endpoint.
|
||||
# Defaults to 'http://127.0.0.1:35357/v2.0'
|
||||
#
|
||||
# [*admin_tenant_name*]
|
||||
# The Ironic Keystone tenant name.
|
||||
# Defaults to 'services'
|
||||
#
|
||||
# [*api_endpoint*]
|
||||
# The url for Ironic api endpoint.
|
||||
# Defaults to 'http://127.0.0.1:6385/v1'
|
||||
#
|
||||
class nova::ironic::common (
|
||||
$admin_username = 'admin',
|
||||
$admin_password = 'ironic',
|
||||
$admin_tenant_name = 'services',
|
||||
$admin_url = 'http://127.0.0.1:35357/v2.0',
|
||||
$api_endpoint = 'http://127.0.0.1:6385/v1',
|
||||
) {
|
||||
|
||||
include ::nova::deps
|
||||
|
||||
$admin_username_real = pick(
|
||||
$::nova::compute::ironic::admin_user,
|
||||
$::nova::compute::ironic::admin_username,
|
||||
$admin_username)
|
||||
$admin_password_real = pick(
|
||||
$::nova::compute::ironic::admin_passwd,
|
||||
$::nova::compute::ironic::admin_password,
|
||||
$admin_password)
|
||||
$admin_tenant_name_real = pick(
|
||||
$::nova::compute::ironic::admin_tenant_name,
|
||||
$admin_tenant_name)
|
||||
$admin_url_real = pick(
|
||||
$::nova::compute::ironic::admin_url,
|
||||
$admin_url)
|
||||
$api_endpoint_real = pick(
|
||||
$::nova::compute::ironic::api_endpoint,
|
||||
$api_endpoint)
|
||||
|
||||
nova_config {
|
||||
'ironic/admin_username': value => $admin_username_real;
|
||||
'ironic/admin_password': value => $admin_password_real;
|
||||
'ironic/admin_url': value => $admin_url_real;
|
||||
'ironic/admin_tenant_name': value => $admin_tenant_name_real;
|
||||
'ironic/api_endpoint': value => $api_endpoint_real;
|
||||
}
|
||||
}
|
@ -6,11 +6,6 @@ describe 'nova::compute::ironic' do
|
||||
|
||||
context 'with default parameters' do
|
||||
it 'configures ironic in nova.conf' do
|
||||
is_expected.to contain_nova_config('ironic/admin_username').with_value('admin')
|
||||
is_expected.to contain_nova_config('ironic/admin_password').with_value('ironic')
|
||||
is_expected.to contain_nova_config('ironic/admin_url').with_value('http://127.0.0.1:35357/v2.0')
|
||||
is_expected.to contain_nova_config('ironic/admin_tenant_name').with_value('services')
|
||||
is_expected.to contain_nova_config('ironic/api_endpoint').with_value('http://127.0.0.1:6385/v1')
|
||||
is_expected.to contain_nova_config('DEFAULT/compute_driver').with_value('ironic.IronicDriver')
|
||||
is_expected.to contain_nova_config('DEFAULT/max_concurrent_builds').with_value('<SERVICE DEFAULT>')
|
||||
end
|
||||
@ -19,22 +14,12 @@ describe 'nova::compute::ironic' do
|
||||
context 'with overridden parameters' do
|
||||
let :params do
|
||||
{
|
||||
:admin_username => 'ironic',
|
||||
:admin_password => 's3cr3t',
|
||||
:admin_url => 'http://10.0.0.10:35357/v2.0',
|
||||
:admin_tenant_name => 'services2',
|
||||
:api_endpoint => 'http://10.0.0.10:6385/v1',
|
||||
:compute_driver => 'ironic.FoobarDriver',
|
||||
:max_concurrent_builds => 15,
|
||||
}
|
||||
end
|
||||
|
||||
it 'configures ironic in nova.conf' do
|
||||
is_expected.to contain_nova_config('ironic/admin_username').with_value('ironic')
|
||||
is_expected.to contain_nova_config('ironic/admin_password').with_value('s3cr3t')
|
||||
is_expected.to contain_nova_config('ironic/admin_url').with_value('http://10.0.0.10:35357/v2.0')
|
||||
is_expected.to contain_nova_config('ironic/admin_tenant_name').with_value('services2')
|
||||
is_expected.to contain_nova_config('ironic/api_endpoint').with_value('http://10.0.0.10:6385/v1')
|
||||
is_expected.to contain_nova_config('DEFAULT/compute_driver').with_value('ironic.FoobarDriver')
|
||||
is_expected.to contain_nova_config('DEFAULT/max_concurrent_builds').with_value(15)
|
||||
end
|
||||
@ -43,17 +28,31 @@ describe 'nova::compute::ironic' do
|
||||
context 'with deprecated parameters' do
|
||||
|
||||
let :params do
|
||||
{:admin_user => 'ironic-user',
|
||||
:admin_passwd => 'ironic-s3cr3t'}
|
||||
{
|
||||
:admin_user => 'ironic-user',
|
||||
:admin_passwd => 'ironic-s3cr3t',
|
||||
:admin_url => 'http://10.0.0.10:35357/v2.0',
|
||||
:admin_tenant_name => 'services2',
|
||||
:api_endpoint => 'http://10.0.0.10:6385/v1',
|
||||
}
|
||||
end
|
||||
|
||||
it 'configures ironic in nova.conf' do
|
||||
is_expected.to contain_nova_config('ironic/admin_username').with_value('ironic-user')
|
||||
is_expected.to contain_nova_config('ironic/admin_password').with_value('ironic-s3cr3t')
|
||||
is_expected.to contain_nova_config('ironic/admin_url').with_value('http://10.0.0.10:35357/v2.0')
|
||||
is_expected.to contain_nova_config('ironic/admin_tenant_name').with_value('services2')
|
||||
is_expected.to contain_nova_config('ironic/api_endpoint').with_value('http://10.0.0.10:6385/v1')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'always' do
|
||||
it 'contains the ironic common class' do
|
||||
is_expected.to contain_class('nova::ironic::common')
|
||||
end
|
||||
end
|
||||
|
||||
on_supported_os({
|
||||
:supported_os => OSDefaults.get_supported_os
|
||||
}).each do |os,facts|
|
||||
|
52
spec/classes/nova_ironic_common_spec.rb
Normal file
52
spec/classes/nova_ironic_common_spec.rb
Normal file
@ -0,0 +1,52 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'nova::ironic::common' do
|
||||
|
||||
shared_examples_for 'nova-ironic-common' do
|
||||
|
||||
context 'with default parameters' do
|
||||
it 'configures ironic in nova.conf' do
|
||||
is_expected.to contain_nova_config('ironic/admin_username').with_value('admin')
|
||||
is_expected.to contain_nova_config('ironic/admin_password').with_value('ironic')
|
||||
is_expected.to contain_nova_config('ironic/admin_url').with_value('http://127.0.0.1:35357/v2.0')
|
||||
is_expected.to contain_nova_config('ironic/admin_tenant_name').with_value('services')
|
||||
is_expected.to contain_nova_config('ironic/api_endpoint').with_value('http://127.0.0.1:6385/v1')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with overridden parameters' do
|
||||
let :params do
|
||||
{
|
||||
:admin_username => 'ironic',
|
||||
:admin_password => 's3cr3t',
|
||||
:admin_url => 'http://10.0.0.10:35357/v2.0',
|
||||
:admin_tenant_name => 'services2',
|
||||
:api_endpoint => 'http://10.0.0.10:6385/v1',
|
||||
}
|
||||
end
|
||||
|
||||
it 'configures ironic in nova.conf' do
|
||||
is_expected.to contain_nova_config('ironic/admin_username').with_value('ironic')
|
||||
is_expected.to contain_nova_config('ironic/admin_password').with_value('s3cr3t')
|
||||
is_expected.to contain_nova_config('ironic/admin_url').with_value('http://10.0.0.10:35357/v2.0')
|
||||
is_expected.to contain_nova_config('ironic/admin_tenant_name').with_value('services2')
|
||||
is_expected.to contain_nova_config('ironic/api_endpoint').with_value('http://10.0.0.10:6385/v1')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
on_supported_os({
|
||||
:supported_os => OSDefaults.get_supported_os
|
||||
}).each do |os,facts|
|
||||
context "on #{os}" do
|
||||
let (:facts) do
|
||||
facts.merge!(OSDefaults.get_facts({
|
||||
:fqdn => 'some.host.tld',
|
||||
:processorcount => 2,
|
||||
:concat_basedir => '/var/lib/puppet/concat'
|
||||
}))
|
||||
end
|
||||
it_configures 'nova-ironic-common'
|
||||
end
|
||||
end
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user