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)
This commit is contained in:
Oliver Walsh 2019-10-17 21:43:43 +01:00 committed by Martin Schuppert
parent 6a0a609d57
commit 57ff2a154c
6 changed files with 9 additions and 5 deletions

View File

@ -229,6 +229,7 @@ class nova::api(
include ::nova::db
include ::nova::policy
include ::nova::keystone::authtoken
include ::nova::availability_zone
if !$nova_metadata_wsgi_enabled {
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::params
include ::nova::workarounds
include ::nova::availability_zone
nova::generic_service { 'conductor':
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_class('nova::availability_zone') }
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('DEFAULT/osapi_compute_listen').with('value' => '0.0.0.0')

View File

@ -50,11 +50,7 @@ describe 'nova::compute' do
it { is_expected.to contain_nova_config('DEFAULT/force_raw_images').with(:value => true) }
it 'configures availability zones' do
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 { is_expected.to contain_class('nova::availability_zone') }
it 'configures vendordata' do
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'
)}
it { is_expected.to contain_class('nova::availability_zone') }
context 'with manage_service as false' do
let :params do
{ :enabled => true,

View File

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