api: Prepare to remove nova_metadata_wsgi_enabled
The nova::api::nova_metadata_wsgi_enabled parameter has been deprecated but in fact users have had to set the options to deploy nova API by httpd and mod_wsgi. This removes the logic to deploy api run by httpd and mod_wsgi along with metadata api run by eventlet, so that we can remove the option in the next cycle. Change-Id: Ic28c6783d7e7ccebc0a18878155d02521f504091
This commit is contained in:
parent
1c2f147c2a
commit
3c81436a3a
|
@ -193,7 +193,7 @@ class nova::api(
|
||||||
$instance_list_cells_batch_fixed_size = $facts['os_service_default'],
|
$instance_list_cells_batch_fixed_size = $facts['os_service_default'],
|
||||||
$list_records_by_skipping_down_cells = $facts['os_service_default'],
|
$list_records_by_skipping_down_cells = $facts['os_service_default'],
|
||||||
# DEPRECATED PARAMETER
|
# DEPRECATED PARAMETER
|
||||||
Boolean $nova_metadata_wsgi_enabled = false,
|
$nova_metadata_wsgi_enabled = undef,
|
||||||
$use_forwarded_for = undef,
|
$use_forwarded_for = undef,
|
||||||
) inherits nova::params {
|
) inherits nova::params {
|
||||||
|
|
||||||
|
@ -204,40 +204,26 @@ class nova::api(
|
||||||
include nova::availability_zone
|
include nova::availability_zone
|
||||||
include nova::pci
|
include nova::pci
|
||||||
|
|
||||||
if !$nova_metadata_wsgi_enabled {
|
if $nova_metadata_wsgi_enabled != undef {
|
||||||
warning('Running nova metadata api via evenlet is deprecated and will be removed in Stein release.')
|
warning('The nova_metadata_wsgi_enabled parameter has been deprecated and has no effect')
|
||||||
}
|
}
|
||||||
|
|
||||||
if $use_forwarded_for != undef {
|
if $use_forwarded_for != undef {
|
||||||
warning('The use_forwarded_for parameter has been deprecated.')
|
warning('The use_forwarded_for parameter has been deprecated.')
|
||||||
}
|
}
|
||||||
|
|
||||||
# enable metadata in eventlet if we do not run metadata via wsgi (nova::metadata)
|
|
||||||
if ('metadata' in $enabled_apis and $service_name == 'httpd' and !$nova_metadata_wsgi_enabled) {
|
|
||||||
$enable_metadata = true
|
|
||||||
} else {
|
|
||||||
$enable_metadata = false
|
|
||||||
}
|
|
||||||
|
|
||||||
# sanitize service_name and prepare DEFAULT/enabled_apis parameter
|
# sanitize service_name and prepare DEFAULT/enabled_apis parameter
|
||||||
if $service_name == $::nova::params::api_service_name {
|
if $service_name == $::nova::params::api_service_name {
|
||||||
# if running evenlet, we use the original puppet parameter
|
nova_config {
|
||||||
# so people can enable custom service names and we keep backward compatibility.
|
'DEFAULT/enabled_apis': value => join(any2array($enabled_apis), ',');
|
||||||
$enabled_apis_real = $enabled_apis
|
|
||||||
$service_enabled = $enabled
|
|
||||||
} elsif $service_name == 'httpd' {
|
|
||||||
# when running wsgi, we want to enable metadata in eventlet if part of enabled_apis
|
|
||||||
# but only if we do not run metadata via wsgi (nova::metadata)
|
|
||||||
if $enable_metadata {
|
|
||||||
$enabled_apis_real = ['metadata']
|
|
||||||
$service_enabled = $enabled
|
|
||||||
} else {
|
|
||||||
# otherwise, set it to empty list
|
|
||||||
$enabled_apis_real = []
|
|
||||||
# if running wsgi for compute, and metadata disabled
|
|
||||||
# we don't need to enable nova-api service.
|
|
||||||
$service_enabled = false
|
|
||||||
}
|
}
|
||||||
|
$service_enabled = $enabled
|
||||||
|
} elsif $service_name == 'httpd' {
|
||||||
|
nova_config {
|
||||||
|
'DEFAULT/enabled_apis': ensure => absent;
|
||||||
|
}
|
||||||
|
$service_enabled = false
|
||||||
|
|
||||||
policy_rcd { 'nova-api':
|
policy_rcd { 'nova-api':
|
||||||
ensure => present,
|
ensure => present,
|
||||||
set_code => '101',
|
set_code => '101',
|
||||||
|
@ -272,7 +258,7 @@ as a standalone service, or httpd for being run by a httpd server")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !$nova_metadata_wsgi_enabled {
|
if $service_name != 'httpd' {
|
||||||
nova_config {
|
nova_config {
|
||||||
'DEFAULT/metadata_workers': value => $metadata_workers;
|
'DEFAULT/metadata_workers': value => $metadata_workers;
|
||||||
'DEFAULT/metadata_listen': value => $metadata_listen;
|
'DEFAULT/metadata_listen': value => $metadata_listen;
|
||||||
|
@ -292,7 +278,6 @@ as a standalone service, or httpd for being run by a httpd server")
|
||||||
}
|
}
|
||||||
|
|
||||||
nova_config {
|
nova_config {
|
||||||
'DEFAULT/enabled_apis': value => join($enabled_apis_real, ',');
|
|
||||||
'wsgi/api_paste_config': value => $api_paste_config;
|
'wsgi/api_paste_config': value => $api_paste_config;
|
||||||
'DEFAULT/osapi_compute_listen': value => $api_bind_address;
|
'DEFAULT/osapi_compute_listen': value => $api_bind_address;
|
||||||
'DEFAULT/osapi_compute_listen_port': value => $osapi_compute_listen_port;
|
'DEFAULT/osapi_compute_listen_port': value => $osapi_compute_listen_port;
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
upgrade:
|
||||||
|
- |
|
||||||
|
The ``nova::api::nova_metadata_wsgi_enabled`` parameter has no effect now.
|
||||||
|
When nova API service is deployed using httpd and mod_wsgi, nova-api
|
||||||
|
service is no longer started. Use httpd + mod_wsgi to run metadata api.
|
|
@ -156,62 +156,10 @@ describe 'nova::api' do
|
||||||
it { is_expected.to_not contain_service('nova-api') }
|
it { is_expected.to_not contain_service('nova-api') }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when running nova API in wsgi compute, and enabling metadata' do
|
context 'when running nova API in wsgi for compute' do
|
||||||
before do
|
|
||||||
params.merge!({ :service_name => 'httpd' })
|
|
||||||
end
|
|
||||||
|
|
||||||
let :pre_condition do
|
|
||||||
"include apache
|
|
||||||
include nova
|
|
||||||
class { 'nova::keystone::authtoken':
|
|
||||||
password => 'a_big_secret',
|
|
||||||
}"
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'enable nova API service' do
|
|
||||||
is_expected.to contain_service('nova-api').with(
|
|
||||||
:ensure => 'running',
|
|
||||||
:name => platform_params[:nova_api_service],
|
|
||||||
:enable => true,
|
|
||||||
:tag => 'nova-service',
|
|
||||||
)
|
|
||||||
end
|
|
||||||
it 'enable metadata in evenlet configuration' do
|
|
||||||
is_expected.to contain_nova_config('DEFAULT/enabled_apis').with_value('metadata')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when running nova API in wsgi for compute, and disabling metadata' do
|
|
||||||
before do
|
before do
|
||||||
params.merge!({
|
params.merge!({
|
||||||
:service_name => 'httpd',
|
:service_name => 'httpd',
|
||||||
:enabled_apis => ['osapi_compute'] })
|
|
||||||
end
|
|
||||||
|
|
||||||
let :pre_condition do
|
|
||||||
"include apache
|
|
||||||
include nova
|
|
||||||
class { 'nova::keystone::authtoken':
|
|
||||||
password => 'a_big_secret',
|
|
||||||
}"
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'disable nova API service' do
|
|
||||||
is_expected.to contain_service('nova-api').with(
|
|
||||||
:ensure => 'stopped',
|
|
||||||
:name => platform_params[:nova_api_service],
|
|
||||||
:enable => false,
|
|
||||||
:tag => 'nova-service',
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when running nova API in wsgi for compute, and metadata in wsgi' do
|
|
||||||
before do
|
|
||||||
params.merge!({
|
|
||||||
:service_name => 'httpd',
|
|
||||||
:nova_metadata_wsgi_enabled => true
|
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -230,6 +178,7 @@ describe 'nova::api' do
|
||||||
:enable => false,
|
:enable => false,
|
||||||
:tag => 'nova-service',
|
:tag => 'nova-service',
|
||||||
)
|
)
|
||||||
|
is_expected.to contain_nova_config('DEFAULT/enabled_apis').with_ensure('absent')
|
||||||
is_expected.to contain_nova_config('DEFAULT/metadata_workers').with_ensure('absent')
|
is_expected.to contain_nova_config('DEFAULT/metadata_workers').with_ensure('absent')
|
||||||
is_expected.to contain_nova_config('DEFAULT/metadata_listen').with_ensure('absent')
|
is_expected.to contain_nova_config('DEFAULT/metadata_listen').with_ensure('absent')
|
||||||
is_expected.to contain_nova_config('DEFAULT/metadata_listen_port').with_ensure('absent')
|
is_expected.to contain_nova_config('DEFAULT/metadata_listen_port').with_ensure('absent')
|
||||||
|
|
Loading…
Reference in New Issue