From 2457c0aca033e0cbc0792de6a7a0d1328d678a2e Mon Sep 17 00:00:00 2001 From: Lee Yarwood Date: Thu, 31 Jan 2019 11:55:55 +0000 Subject: [PATCH] nova: Extract placement deployment into a separate class This change extracts the existing logic to deploy the Nova Placement service into a separate class. This should allow POI to continue to test that puppet-nova is able to deploy the service after puppet-placement is introduced. Change-Id: I8e54d851bc433527d010b763e4aad54172a17676 --- fixtures/scenario-aio.pp | 5 ++++- fixtures/scenario-py3.pp | 5 ++++- fixtures/scenario001.pp | 6 ++++-- fixtures/scenario002.pp | 4 +++- fixtures/scenario003.pp | 5 ++++- fixtures/scenario004.pp | 4 +++- manifests/nova.pp | 38 +++++++++---------------------------- manifests/nova_placement.pp | 38 +++++++++++++++++++++++++++++++++++++ 8 files changed, 69 insertions(+), 36 deletions(-) create mode 100644 manifests/nova_placement.pp diff --git a/fixtures/scenario-aio.pp b/fixtures/scenario-aio.pp index c2243e146..846ec9389 100644 --- a/fixtures/scenario-aio.pp +++ b/fixtures/scenario-aio.pp @@ -29,7 +29,10 @@ include ::openstack_integration::mysql include ::openstack_integration::keystone include ::openstack_integration::glance include ::openstack_integration::neutron -include ::openstack_integration::nova +include ::openstack_integration::nova_placement +class { '::openstack_integration::nova': + placement_database_connection => 'mysql+pymysql://nova_placement:nova@127.0.0.1/nova_placement?charset=utf8', +} include ::openstack_integration::cinder include ::openstack_integration::horizon include ::openstack_integration::provision diff --git a/fixtures/scenario-py3.pp b/fixtures/scenario-py3.pp index e05a33504..80a8971fb 100644 --- a/fixtures/scenario-py3.pp +++ b/fixtures/scenario-py3.pp @@ -46,7 +46,10 @@ class { '::openstack_integration::glance': } include ::openstack_integration::neutron include ::openstack_integration::swift -include ::openstack_integration::nova +include ::openstack_integration::nova_placement +class { '::openstack_integration::nova': + placement_database_connection => 'mysql+pymysql://nova_placement:nova@127.0.0.1/nova_placement?charset=utf8', +} include ::openstack_integration::cinder include ::openstack_integration::horizon include ::openstack_integration::heat diff --git a/fixtures/scenario001.pp b/fixtures/scenario001.pp index ab7c46674..188e7be99 100644 --- a/fixtures/scenario001.pp +++ b/fixtures/scenario001.pp @@ -92,9 +92,11 @@ class { '::openstack_integration::glance': class { '::openstack_integration::neutron': notification_topics => $notification_topics, } +include ::openstack_integration::nova_placement class { '::openstack_integration::nova': - libvirt_rbd => true, - notification_topics => $notification_topics, + libvirt_rbd => true, + notification_topics => $notification_topics, + placement_database_connection => 'mysql+pymysql://nova_placement:nova@127.0.0.1/nova_placement?charset=utf8', } class { '::openstack_integration::cinder': backend => 'rbd', diff --git a/fixtures/scenario002.pp b/fixtures/scenario002.pp index 331f9671f..6360f00d4 100644 --- a/fixtures/scenario002.pp +++ b/fixtures/scenario002.pp @@ -80,8 +80,10 @@ include ::openstack_integration::ironic include ::openstack_integration::zaqar include ::openstack_integration::provision +include ::openstack_integration::nova_placement class { '::openstack_integration::nova': - volume_encryption => true, + volume_encryption => true, + placement_database_connection => 'mysql+pymysql://nova_placement:nova@127.0.0.1/nova_placement?charset=utf8', } class { '::openstack_integration::cinder': diff --git a/fixtures/scenario003.pp b/fixtures/scenario003.pp index 38767e613..7bbdd97b3 100644 --- a/fixtures/scenario003.pp +++ b/fixtures/scenario003.pp @@ -91,7 +91,10 @@ include ::openstack_integration::glance class { '::openstack_integration::neutron': driver => 'linuxbridge', } -include ::openstack_integration::nova +include ::openstack_integration::nova_placement +class { '::openstack_integration::nova': + placement_database_connection => 'mysql+pymysql://nova_placement:nova@127.0.0.1/nova_placement?charset=utf8', +} if $trove_enabled { include ::openstack_integration::trove } diff --git a/fixtures/scenario004.pp b/fixtures/scenario004.pp index 8e0ac0eca..68dcc9161 100644 --- a/fixtures/scenario004.pp +++ b/fixtures/scenario004.pp @@ -83,8 +83,10 @@ class { '::openstack_integration::neutron': l2gw_enabled => $l2gw_enabled, bgp_dragent_enabled => $bgp_dragent_enabled, } +include ::openstack_integration::nova_placement class { '::openstack_integration::nova': - libvirt_rbd => true, + libvirt_rbd => true, + placement_database_connection => 'mysql+pymysql://nova_placement:nova@127.0.0.1/nova_placement?charset=utf8', } class { '::openstack_integration::ceph': diff --git a/manifests/nova.pp b/manifests/nova.pp index e19d19b83..e3064a6f2 100644 --- a/manifests/nova.pp +++ b/manifests/nova.pp @@ -22,12 +22,20 @@ # (optional) AMQP topic used for OpenStack notifications # Defaults to $::os_service_default. # +# DEPRECATED PARAMETERS +# +# [*placement_database_connection*] +# (optional) Connection url for the placement database. +# Defaults to undef. +# class openstack_integration::nova ( $libvirt_rbd = false, $libvirt_virt_type = 'qemu', $libvirt_cpu_mode = 'none', $volume_encryption = false, $notification_topics = $::os_service_default, + # DEPRECATED PARAMETERS + $placement_database_connection = $::os_service_default, ) { include ::openstack_integration::config @@ -80,30 +88,12 @@ class openstack_integration::nova ( subscribe => Anchor['nova::service::end'], } - class { '::nova::db::mysql_placement': - password => 'nova', - } class { '::nova::keystone::auth': public_url => "${::openstack_integration::config::base_url}:8774/v2.1", internal_url => "${::openstack_integration::config::base_url}:8774/v2.1", admin_url => "${::openstack_integration::config::base_url}:8774/v2.1", password => 'a_big_secret', } - if ($::os_package_type == 'debian') { - class { '::nova::keystone::auth_placement': - public_url => "${::openstack_integration::config::base_url}:8778", - internal_url => "${::openstack_integration::config::base_url}:8778", - admin_url => "${::openstack_integration::config::base_url}:8778", - password => 'a_big_secret', - } - } else { - class { '::nova::keystone::auth_placement': - public_url => "${::openstack_integration::config::base_url}:8778/placement", - internal_url => "${::openstack_integration::config::base_url}:8778/placement", - admin_url => "${::openstack_integration::config::base_url}:8778/placement", - password => 'a_big_secret', - } - } class { '::nova::keystone::authtoken': password => 'a_big_secret', user_domain_name => 'Default', @@ -120,7 +110,7 @@ class openstack_integration::nova ( notification_transport_url => $notification_transport_url, database_connection => 'mysql+pymysql://nova:nova@127.0.0.1/nova?charset=utf8', api_database_connection => 'mysql+pymysql://nova_api:nova@127.0.0.1/nova_api?charset=utf8', - placement_database_connection => 'mysql+pymysql://nova_placement:nova@127.0.0.1/nova_placement?charset=utf8', + placement_database_connection => $placement_database_connection, rabbit_use_ssl => $::openstack_integration::config::ssl, amqp_sasl_mechanisms => 'PLAIN', use_ipv6 => $::openstack_integration::config::ipv6, @@ -162,16 +152,6 @@ class openstack_integration::nova ( ssl => $::openstack_integration::config::ssl, workers => '2', } - if ($::os_package_type != 'debian') { - class { '::nova::wsgi::apache_placement': - bind_host => $::openstack_integration::config::ip_for_url, - api_port => '8778', - ssl_key => "/etc/nova/ssl/private/${::fqdn}.pem", - ssl_cert => $::openstack_integration::params::cert_path, - ssl => $::openstack_integration::config::ssl, - workers => '2', - } - } class { '::nova::placement': auth_url => $::openstack_integration::config::keystone_admin_uri, password => 'a_big_secret', diff --git a/manifests/nova_placement.pp b/manifests/nova_placement.pp new file mode 100644 index 000000000..e760375fa --- /dev/null +++ b/manifests/nova_placement.pp @@ -0,0 +1,38 @@ +# Configure the Nova Placement service +# +class openstack_integration::nova_placement { + + include ::openstack_integration::config + include ::openstack_integration::params + + class { '::nova::db::mysql_placement': + password => 'nova', + } + + if ($::os_package_type == 'debian') { + class { '::nova::keystone::auth_placement': + public_url => "${::openstack_integration::config::base_url}:8778", + internal_url => "${::openstack_integration::config::base_url}:8778", + admin_url => "${::openstack_integration::config::base_url}:8778", + password => 'a_big_secret', + } + } else { + class { '::nova::keystone::auth_placement': + public_url => "${::openstack_integration::config::base_url}:8778/placement", + internal_url => "${::openstack_integration::config::base_url}:8778/placement", + admin_url => "${::openstack_integration::config::base_url}:8778/placement", + password => 'a_big_secret', + } + } + + if ($::os_package_type != 'debian') { + class { '::nova::wsgi::apache_placement': + bind_host => $::openstack_integration::config::ip_for_url, + api_port => '8778', + ssl_key => "/etc/nova/ssl/private/${::fqdn}.pem", + ssl_cert => $::openstack_integration::params::cert_path, + ssl => $::openstack_integration::config::ssl, + workers => '2', + } + } +}