Separate out api/taskmanager config settings

This commit removes config settings for the API that were set
from within the taskmanager class, and moves them into the API.

This fixes the issue where some neutron settings didn't get
set in the api config file when the api and taskmanager were run on
separate hosts. Specifically, API requests will now return the IP
address of the DB instance when Neutron is used.

Change-Id: I370f137ce12fedb527f1ae7adc013e1dac4dbffe
This commit is contained in:
Andy Botting 2017-04-10 14:17:43 +10:00
parent 3705c795af
commit 64b2ca9a5e
6 changed files with 98 additions and 28 deletions

View File

@ -116,6 +116,10 @@
# (optional) The strategy to use for authentication.
# Defaults to 'keystone'
#
# [*taskmanager_queue*]
# (optional) Message queue name the Taskmanager will listen to.
# Defaults to 'taskmanager'.
#
# DEPRECATED PARAMETERS
#
# [*ensure_package*]
@ -146,6 +150,7 @@ class trove::api(
$manage_service = true,
$package_ensure = 'present',
$auth_strategy = 'keystone',
$taskmanager_queue = 'taskmanager',
# DEPRECATED PARAMETERS
$ensure_package = undef,
) inherits trove {
@ -263,6 +268,24 @@ the future release. Please use trove::api::package_ensure instead.")
'DEFAULT/heat_service_type': value => $::trove::heat_service_type;
}
if $::trove::use_neutron {
trove_config {
'DEFAULT/network_label_regex': value => '.*';
'DEFAULT/network_driver': value => 'trove.network.neutron.NeutronDriver';
'DEFAULT/default_neutron_networks': value => $::trove::default_neutron_networks;
}
} else {
trove_config {
'DEFAULT/network_label_regex': value => '^private$';
'DEFAULT/network_driver': value => 'trove.network.nova.NovaNetwork';
'DEFAULT/default_neutron_networks': ensure => absent;
}
}
trove_config {
'DEFAULT/taskmanager_queue': value => $taskmanager_queue;
}
oslo::messaging::notifications { 'trove_config':
transport_url => $::trove::notification_transport_url,
driver => $::trove::notification_driver,

View File

@ -252,6 +252,10 @@
# (optional) Use Neutron
# Defaults to true
#
# [*default_neutron_networks*]
# (optional) The network that trove will attach by default.
# Defaults to undef.
#
# [*package_ensure*]
# (optional) The state of the package.
# Defaults to 'present'
@ -343,6 +347,7 @@ class trove(
$heat_service_type = 'orchestration',
$neutron_service_type = 'network',
$use_neutron = true,
$default_neutron_networks = $::os_service_default,
$package_ensure = 'present',
# DEPRECATED PARAMETERS
$rabbit_host = $::os_service_default,

View File

@ -107,10 +107,10 @@ class trove::taskmanager(
$heat_url = false,
$package_ensure = 'present',
$guestagent_config_file = '/etc/trove/trove-guestagent.conf',
$default_neutron_networks = undef,
$taskmanager_queue = 'taskmanager',
$taskmanager_manager = 'trove.taskmanager.manager.Manager',
#DEPRECATED OPTIONS
$default_neutron_networks = undef,
$taskmanager_queue = undef,
$use_guestagent_template = true,
$ensure_package = undef,
) inherits trove {
@ -126,6 +126,16 @@ the future release. Please use trove::taskmanager::package_ensure instead.")
$package_ensure_real = $package_ensure
}
if $default_neutron_networks {
warning("trove::taskmanager::default_neutron_networks is deprecated and will be removed in \
the future release. Please use trove::default_neutron_networks instead.")
}
$default_neutron_networks_real = pick($default_neutron_networks, $::trove::default_neutron_networks)
if $taskmanager_queue {
fail('Please use trove::api::taskmanager_queue instead to configure taskmanager_queue')
}
if $::trove::database_connection {
if($::trove::database_connection =~ /mysql:\/\/\S+:\S+@\S+\/\S+/) {
require '::mysql::bindings'
@ -152,10 +162,6 @@ the future release. Please use trove::taskmanager::package_ensure instead.")
'DEFAULT/taskmanager_manager': value => $taskmanager_manager;
}
trove_config {
'DEFAULT/taskmanager_queue': value => $taskmanager_queue;
}
# region name
if $::trove::os_region_name {
trove_taskmanager_config { 'DEFAULT/os_region_name': value => $::trove::os_region_name }
@ -243,24 +249,12 @@ the future release. Please use trove::taskmanager::package_ensure instead.")
}
if $::trove::use_neutron {
trove_config {
'DEFAULT/network_label_regex': value => '.*';
'DEFAULT/network_driver': value => 'trove.network.neutron.NeutronDriver';
'DEFAULT/default_neutron_networks': value => $default_neutron_networks;
}
trove_taskmanager_config {
'DEFAULT/network_label_regex': value => '.*';
'DEFAULT/network_driver': value => 'trove.network.neutron.NeutronDriver';
'DEFAULT/default_neutron_networks': value => $default_neutron_networks;
'DEFAULT/default_neutron_networks': value => $default_neutron_networks_real;
}
} else {
trove_config {
'DEFAULT/network_label_regex': value => '^private$';
'DEFAULT/network_driver': value => 'trove.network.nova.NovaNetwork';
'DEFAULT/default_neutron_networks': ensure => absent;
}
trove_taskmanager_config {
'DEFAULT/network_label_regex': value => '^private$';
'DEFAULT/network_driver': value => 'trove.network.nova.NovaNetwork';

View File

@ -0,0 +1,10 @@
---
deprecations:
- trove::taskmanager::default_neutron_networks is now deprecated and will be
removed in the future release. Please use trove::default_neutron_networks
instead.
- trove::taskmanager::taskmanager_queue is now been removed.
Please use trove::api::taskmanager_queue instead.
fixes:
- Neutron settings were not applied to the API when the API and taskmanager
were run on separate hosts. This has now been corrected.

View File

@ -66,6 +66,7 @@ describe 'trove::api' do
is_expected.to contain_trove_config('DEFAULT/nova_proxy_admin_user').with_value('admin')
is_expected.to contain_trove_config('DEFAULT/nova_proxy_admin_pass').with_value('verysecrete')
is_expected.to contain_trove_config('DEFAULT/nova_proxy_admin_tenant_name').with_value('admin')
is_expected.to contain_trove_config('DEFAULT/default_neutron_networks').with_value('<SERVICE DEFAULT>')
is_expected.to contain_trove_config('DEFAULT/control_exchange').with_value('trove')
is_expected.to contain_trove_config('DEFAULT/os_region_name').with_value('RegionOne')
is_expected.to contain_trove_config('DEFAULT/nova_compute_service_type').with_value('compute')
@ -79,6 +80,7 @@ describe 'trove::api' do
is_expected.to contain_trove_config('DEFAULT/http_delete_rate').with_value('200')
is_expected.to contain_trove_config('DEFAULT/http_mgmt_post_rate').with_value('200')
is_expected.to contain_trove_config('DEFAULT/transport_url').with_value('<SERVICE DEFAULT>')
is_expected.to contain_trove_config('DEFAULT/taskmanager_queue').with_value('taskmanager')
is_expected.to contain_trove_config('DEFAULT/rpc_response_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_trove_config('DEFAULT/control_exchange').with_value('trove')
is_expected.to contain_trove_config('DEFAULT/remote_nova_client').with_ensure('absent')
@ -201,6 +203,49 @@ describe 'trove::api' do
end
end
context 'when using Neutron' do
let :pre_condition do
"class { 'trove':
nova_proxy_admin_pass => 'verysecrete',
use_neutron => true,
default_neutron_networks => 'trove_service',
}
class { '::trove::keystone::authtoken':
password => 'a_big_secret',
}"
end
it 'configures trove to use the Neutron network driver' do
is_expected.to contain_trove_config('DEFAULT/default_neutron_networks').with_value('trove_service')
is_expected.to contain_trove_config('DEFAULT/network_driver').with_value('trove.network.neutron.NeutronDriver')
end
it 'configures trove to use any network label' do
is_expected.to contain_trove_config('DEFAULT/network_label_regex').with_value('.*')
end
end
context 'when using Nova Network' do
let :pre_condition do
"class { 'trove':
nova_proxy_admin_pass => 'verysecrete',
use_neutron => false
}
class { '::trove::keystone::authtoken':
password => 'a_big_secret',
}"
end
it 'configures trove to use the Nova Network network driver' do
is_expected.to contain_trove_config('DEFAULT/default_neutron_networks').with_ensure('absent')
is_expected.to contain_trove_config('DEFAULT/network_driver').with_value('trove.network.nova.NovaNetwork')
end
it 'configures trove to use the "private" network label' do
is_expected.to contain_trove_config('DEFAULT/network_label_regex').with_value('^private$')
end
end
end
context 'with SSL enabled with kombu' do

View File

@ -54,15 +54,13 @@ describe 'trove::taskmanager' do
is_expected.to contain_trove_taskmanager_config('DEFAULT/nova_proxy_admin_user').with_value('admin')
is_expected.to contain_trove_taskmanager_config('DEFAULT/nova_proxy_admin_pass').with_value('verysecrete')
is_expected.to contain_trove_taskmanager_config('DEFAULT/nova_proxy_admin_tenant_name').with_value('admin')
is_expected.to contain_trove_taskmanager_config('DEFAULT/default_neutron_networks').with_value(nil)
is_expected.to contain_trove_config('DEFAULT/default_neutron_networks').with_value(nil)
is_expected.to contain_trove_taskmanager_config('DEFAULT/default_neutron_networks').with_value('<SERVICE DEFAULT>')
is_expected.to contain_trove_taskmanager_config('DEFAULT/os_region_name').with_value('RegionOne')
is_expected.to contain_trove_taskmanager_config('DEFAULT/nova_compute_service_type').with_value('compute')
is_expected.to contain_trove_taskmanager_config('DEFAULT/cinder_service_type').with_value('volume')
is_expected.to contain_trove_taskmanager_config('DEFAULT/swift_service_type').with_value('object-store')
is_expected.to contain_trove_taskmanager_config('DEFAULT/heat_service_type').with_value('orchestration')
is_expected.to contain_trove_taskmanager_config('DEFAULT/neutron_service_type').with_value('network')
is_expected.to contain_trove_config('DEFAULT/taskmanager_queue').with_value('taskmanager')
is_expected.to contain_trove_taskmanager_config('DEFAULT/taskmanager_manager').with_value('trove.taskmanager.manager.Manager')
is_expected.to contain_file('/etc/trove/trove-guestagent.conf')
is_expected.to contain_trove_taskmanager_config('DEFAULT/transport_url').with_value('<SERVICE DEFAULT>')
@ -203,15 +201,12 @@ describe 'trove::taskmanager' do
end
it 'configures trove to use the Neutron network driver' do
is_expected.to contain_trove_config('DEFAULT/default_neutron_networks').with_value('trove_service')
is_expected.to contain_trove_taskmanager_config('DEFAULT/default_neutron_networks').with_value('trove_service')
is_expected.to contain_trove_config('DEFAULT/network_driver').with_value('trove.network.neutron.NeutronDriver')
is_expected.to contain_trove_taskmanager_config('DEFAULT/network_driver').with_value('trove.network.neutron.NeutronDriver')
end
it 'configures trove to use any network label' do
is_expected.to contain_trove_config('DEFAULT/network_label_regex').with_value('.*')
is_expected.to contain_trove_taskmanager_config('DEFAULT/network_label_regex').with_value('.*')
end
end
@ -225,13 +220,11 @@ describe 'trove::taskmanager' do
end
it 'configures trove to use the Nova Network network driver' do
is_expected.to contain_trove_config('DEFAULT/network_driver').with_value('trove.network.nova.NovaNetwork')
is_expected.to contain_trove_taskmanager_config('DEFAULT/default_neutron_networks').with_ensure('absent')
is_expected.to contain_trove_taskmanager_config('DEFAULT/network_driver').with_value('trove.network.nova.NovaNetwork')
end
it 'configures trove to use the "private" network label' do
is_expected.to contain_trove_config('DEFAULT/network_label_regex').with_value('^private$')
is_expected.to contain_trove_taskmanager_config('DEFAULT/network_label_regex').with_value('^private$')
end
end