From bb63f514d22ea82d17947a5972b4da16e66b5a36 Mon Sep 17 00:00:00 2001 From: Emilien Macchi Date: Thu, 9 Feb 2017 14:34:13 -0500 Subject: [PATCH] Run nova-cell_v2-discover_hosts at step 5 We need to run nova-cell_v2-discover_hosts at the very end of the deployment because nova database needs to be aware of all registred compute hosts. 1. Move keystone resources management at step 3. 2. Move nova-compute service at step 4. 3. Move nova-placement-api at step 3. 5. Run nova-cell_v2-discover_hosts at step 5 on one nova-api node. 6. Run neutron-ovs-agent at step 5 to avoid racy deployments where it starts before neutron-server when doing HA deployments. With that change, we expect Nova aware of all compute services deployed in TripleO during an initial deployment. Depends-On: If943157b2b4afeb640919e77ef0214518e13ee15 Change-Id: I6f2df2a83a248fb5dc21c2bd56029eb45b66ceae Related-Bug: #1663273 Related-Bug: #1663458 --- manifests/profile/base/keystone.pp | 4 ++-- manifests/profile/base/neutron/ovs.pp | 2 +- manifests/profile/base/nova/api.pp | 7 +++++++ manifests/profile/base/nova/compute.pp | 2 +- manifests/profile/base/nova/placement.pp | 2 +- spec/classes/tripleo_profile_base_nova_compute_spec.rb | 4 ++-- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/manifests/profile/base/keystone.pp b/manifests/profile/base/keystone.pp index 7e70f4958..3ff8e6311 100644 --- a/manifests/profile/base/keystone.pp +++ b/manifests/profile/base/keystone.pp @@ -172,7 +172,7 @@ class tripleo::profile::base::keystone ( include ::keystone::cron::token_flush } - if $step >= 4 and $manage_domain { + if $step >= 3 and $manage_domain { if hiera('heat_engine_enabled', false) { # create these seperate and don't use ::heat::keystone::domain since # that class writes out the configs @@ -193,7 +193,7 @@ class tripleo::profile::base::keystone ( } } - if $step >= 4 and $manage_endpoint{ + if $step >= 3 and $manage_endpoint{ if hiera('aodh_api_enabled', false) { include ::aodh::keystone::auth } diff --git a/manifests/profile/base/neutron/ovs.pp b/manifests/profile/base/neutron/ovs.pp index a4e0cd321..bec7e960d 100644 --- a/manifests/profile/base/neutron/ovs.pp +++ b/manifests/profile/base/neutron/ovs.pp @@ -28,7 +28,7 @@ class tripleo::profile::base::neutron::ovs( ) { include ::tripleo::profile::base::neutron - if $step >= 4 { + if $step >= 5 { include ::neutron::agents::ml2::ovs # Optional since manage_service may be false and neutron server may not be colocated. diff --git a/manifests/profile/base/nova/api.pp b/manifests/profile/base/nova/api.pp index 99911d2d2..5f3fd5cdb 100644 --- a/manifests/profile/base/nova/api.pp +++ b/manifests/profile/base/nova/api.pp @@ -117,6 +117,13 @@ class tripleo::profile::base::nova::api ( if hiera('nova_enable_db_purge', true) { include ::nova::cron::archive_deleted_rows } + # At step 5, we consider all nova-compute services started and registred to nova-conductor + # So we want to update Nova Cells database to be aware of these hosts by executing the + # nova-cell_v2-discover_hosts command again. + # Doing it on a single nova-api node to avoid race condition. + if $sync_db { + Exec<| title == 'nova-cell_v2-discover_hosts' |> { refreshonly => false } + } } } diff --git a/manifests/profile/base/nova/compute.pp b/manifests/profile/base/nova/compute.pp index ec5481af0..0eb2ed79f 100644 --- a/manifests/profile/base/nova/compute.pp +++ b/manifests/profile/base/nova/compute.pp @@ -32,7 +32,7 @@ class tripleo::profile::base::nova::compute ( $cinder_nfs_backend = hiera('cinder_enable_nfs_backend', false), ) { - if $step >= 5 { + if $step >= 4 { # deploy basic bits for nova include ::tripleo::profile::base::nova diff --git a/manifests/profile/base/nova/placement.pp b/manifests/profile/base/nova/placement.pp index aa8c3c7fa..c429373df 100644 --- a/manifests/profile/base/nova/placement.pp +++ b/manifests/profile/base/nova/placement.pp @@ -85,7 +85,7 @@ class tripleo::profile::base::nova::placement ( $tls_keyfile = undef } - if $step >= 4 { + if $step >= 3 { class { '::nova::wsgi::apache_placement': ssl_cert => $tls_certfile, ssl_key => $tls_keyfile, diff --git a/spec/classes/tripleo_profile_base_nova_compute_spec.rb b/spec/classes/tripleo_profile_base_nova_compute_spec.rb index d9433be6e..a6fdbd6df 100644 --- a/spec/classes/tripleo_profile_base_nova_compute_spec.rb +++ b/spec/classes/tripleo_profile_base_nova_compute_spec.rb @@ -43,7 +43,7 @@ eos end context 'default params' do - let(:params) { { :step => 5, } } + let(:params) { { :step => 4, } } it { is_expected.to contain_class('tripleo::profile::base::nova::compute') @@ -58,7 +58,7 @@ eos end context 'cinder nfs backend' do - let(:params) { { :step => 5, :cinder_nfs_backend => true } } + let(:params) { { :step => 4, :cinder_nfs_backend => true } } it { is_expected.to contain_class('tripleo::profile::base::nova::compute')