Include nova::availability_zone in nova::api and nova::conductor

For some reason this was included in nova::compute and nova::scheduler
but never included in nova::api eventhough bug #1529065 specifically
calls out the fact that it is missing.

Looking at the code - nova-api definitely requires it.
E.g the server create request handler sets the target AZ to
CONF.default_schedule_zone if none
https://github.com/openstack/nova/blob/stable/queens/nova/api/openstack/compute/servers.py#L486

and the az request handler skips the internal_service_availabily_zone
when listing AZs
https://github.com/openstack/nova/blob/stable/queens/nova/api/openstack/compute/availability_zone.py#L38

nova-conductor also requires it as it calls
availability_zones.get_host_availability_zone which defaults to
CONF.default_availability_zone

Change-Id: If4d6a4a8f4cc1e7066cacb00da67d5433acd6ac5
Closes-bug: #1529065
(cherry picked from commit d7eb253e4d)
(cherry picked from commit 57ff2a154c)
(cherry picked from commit 75d67bd6c8)
This commit is contained in:
Oliver Walsh 2019-10-17 21:43:43 +01:00 committed by Martin Schuppert
parent 9079de85fc
commit effda25202
6 changed files with 9 additions and 5 deletions

View File

@ -305,6 +305,7 @@ class nova::api(
include ::nova::db include ::nova::db
include ::nova::policy include ::nova::policy
include ::nova::keystone::authtoken include ::nova::keystone::authtoken
include ::nova::availability_zone
if !$nova_metadata_wsgi_enabled { if !$nova_metadata_wsgi_enabled {
warning('Running nova metadata api via evenlet is deprecated and will be removed in Stein release.') warning('Running nova metadata api via evenlet is deprecated and will be removed in Stein release.')

View File

@ -39,6 +39,7 @@ class nova::conductor(
include ::nova::db include ::nova::db
include ::nova::params include ::nova::params
include ::nova::workarounds include ::nova::workarounds
include ::nova::availability_zone
nova::generic_service { 'conductor': nova::generic_service { 'conductor':
enabled => $enabled, enabled => $enabled,

View File

@ -44,6 +44,8 @@ describe 'nova::api' do
it { is_expected.to contain_nova_config('DEFAULT/instance_name_template').with_ensure('absent')} it { is_expected.to contain_nova_config('DEFAULT/instance_name_template').with_ensure('absent')}
it { is_expected.to contain_class('nova::availability_zone') }
it 'configures various stuff' do it 'configures various stuff' do
is_expected.to contain_nova_config('wsgi/api_paste_config').with('value' => 'api-paste.ini') is_expected.to contain_nova_config('wsgi/api_paste_config').with('value' => 'api-paste.ini')
is_expected.to contain_nova_config('DEFAULT/osapi_compute_listen').with('value' => '0.0.0.0') is_expected.to contain_nova_config('DEFAULT/osapi_compute_listen').with('value' => '0.0.0.0')

View File

@ -49,11 +49,7 @@ describe 'nova::compute' do
it { is_expected.to contain_nova_config('DEFAULT/force_raw_images').with(:value => true) } it { is_expected.to contain_nova_config('DEFAULT/force_raw_images').with(:value => true) }
it 'configures availability zones' do it { is_expected.to contain_class('nova::availability_zone') }
is_expected.to contain_nova_config('DEFAULT/default_availability_zone').with_value('<SERVICE DEFAULT>')
is_expected.to contain_nova_config('DEFAULT/default_schedule_zone').with_value('<SERVICE DEFAULT>')
is_expected.to contain_nova_config('DEFAULT/internal_service_availability_zone').with_value('<SERVICE DEFAULT>')
end
it 'configures vendordata' do it 'configures vendordata' do
is_expected.to contain_nova_config('api/vendordata_jsonfile_path').with('value' => '<SERVICE DEFAULT>') is_expected.to contain_nova_config('api/vendordata_jsonfile_path').with('value' => '<SERVICE DEFAULT>')

View File

@ -20,6 +20,8 @@ describe 'nova::conductor' do
:ensure => 'running' :ensure => 'running'
)} )}
it { is_expected.to contain_class('nova::availability_zone') }
context 'with manage_service as false' do context 'with manage_service as false' do
let :params do let :params do
{ :enabled => true, { :enabled => true,

View File

@ -23,6 +23,8 @@ describe 'nova::scheduler' do
it { is_expected.to contain_nova_config('scheduler/driver').with_value('filter_scheduler') } it { is_expected.to contain_nova_config('scheduler/driver').with_value('filter_scheduler') }
it { is_expected.to contain_nova_config('scheduler/discover_hosts_in_cells_interval').with_value('<SERVICE DEFAULT>') } it { is_expected.to contain_nova_config('scheduler/discover_hosts_in_cells_interval').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_class('nova::availability_zone') }
context 'with manage_service as false' do context 'with manage_service as false' do
let :params do let :params do
{ :enabled => true, { :enabled => true,