From 76113ea9451bd02b4bbac6a21e67c3134abb8352 Mon Sep 17 00:00:00 2001 From: Alejandro Andreu Date: Fri, 3 Feb 2017 12:06:19 +0100 Subject: [PATCH] Update MidoNet plugin manifest The MidoNet API no longer exists with that name. We are deprecating its parameters and replacing them by its counterpart "cluster". Also the dependency python-networking-midonet-ext package is removed as this is only needed for the N release. Will be added when backported. Change-Id: Ia85bc41c05d766f995835941ed5fc46ce5465334 --- manifests/plugins/midonet.pp | 122 +++++++++++------- ...te-midonet-api-param-d2c8ef45af7cffea.yaml | 6 + spec/classes/neutron_plugins_midonet_spec.rb | 36 +++++- 3 files changed, 112 insertions(+), 52 deletions(-) create mode 100644 releasenotes/notes/deprecate-midonet-api-param-d2c8ef45af7cffea.yaml diff --git a/manifests/plugins/midonet.pp b/manifests/plugins/midonet.pp index fb3d40ef9..c44499f98 100644 --- a/manifests/plugins/midonet.pp +++ b/manifests/plugins/midonet.pp @@ -7,51 +7,69 @@ # # === Parameters # -# [*midonet_api_ip*] -# IP address of the MidoNet api service -# [*midonet_api_port*] -# IP address of the MidoNet port service. MidoNet runs in a Tomcat, so 8080 -# is used by default. +# [*midonet_cluster_ip*] +# IP address of the MidoNet Cluster service. +# Defaults to '127.0.0.1' +# +# [*midonet_cluster_port*] +# Port on which the MidoNet Cluster listens. +# Defaults to '8181' +# # [*keystone_username*] -# Username from which midonet api will authenticate against Keystone (neutron -# service is desirable and defaulted) +# Username with which MidoNet Cluster will authenticate against Keystone. +# Defaults to 'neutron' +# # [*keystone_password*] -# Password from which midonet api will authenticate against Keystone +# Password for the user that will be used to authenticate against Keystone. # Defaults to $::os_service_default +# # [*keystone_tenant*] -# Tenant from which midonet api will authenticate against Keystone (services -# tenant is desirable and defaulted) +# Tenant for the user that will be used to authenticate against Keystone. +# Defaults to 'services' +# # [*sync_db*] -# Whether 'midonet-db-manage' should run to create and/or syncrhonize the database -# with MidoNet specific tables. Defaults to false +# Whether 'midonet-db-manage' should run to create and/or sync the database +# with MidoNet specific tables. +# Defaults to false # # [*purge_config*] # (optional) Whether to set only the specified config options # in the midonet config. -# Defaults to false. +# Defaults to false # # [*package_ensure*] -# Whether to install the latest package, or a version for midonet plugin -# Defaults to 'present'. +# Whether to install the latest package, or a specific version +# of the MidoNet plugin. +# Defaults to 'present' +# +# DEPRECATED PARAMETERS +# +# [*midonet_api_ip*] +# (DEPRECATED) IP address of the MidoNet API service. +# Defaults to undef +# +# [*midonet_api_port*] +# (DEPRECATED) Port on which the MidoNet API service listens. +# Defaults to undef # # === Examples # # An example call would be: # # class {'neutron:plugins::midonet': -# midonet_api_ip => '23.123.5.32', -# midonet_api_port => '8080', -# keystone_username => 'neutron', -# keystone_password => '32kjaxT0k3na', -# keystone_tenant => 'services', -# sync_db => true +# midonet_cluster_ip => '23.123.5.32', +# midonet_cluster_port => '8181', +# keystone_username => 'neutron', +# keystone_password => '32kjaxT0k3na', +# keystone_tenant => 'services', +# sync_db => true # } # # You can alternatively use the Hiera's yaml style: -# neutron::plugin::midonet::midonet_api_ip: '23.213.5.32' -# neutron::plugin::midonet::port: '8080' +# neutron::plugin::midonet::midonet_cluster_ip: '23.213.5.32' +# neutron::plugin::midonet::port: '8181' # neutron::plugin::midonet::keystone_username: 'neutron' -# neutron::plugin::midonet::keystone_password: '32.kjaxT0k3na' +# neutron::plugin::midonet::keystone_password: '32kjaxT0k3na' # neutron::plugin::midonet::keystone_tenant: 'services' # neutron::plugin::midonet::sync_db: true # @@ -76,24 +94,45 @@ # limitations under the License. # class neutron::plugins::midonet ( - $midonet_api_ip = '127.0.0.1', - $midonet_api_port = '8080', - $keystone_username = 'neutron', - $keystone_password = $::os_service_default, - $keystone_tenant = 'services', - $sync_db = false, - $purge_config = false, - $package_ensure = 'present' + $midonet_cluster_ip = '127.0.0.1', + $midonet_cluster_port = '8181', + $keystone_username = 'neutron', + $keystone_password = $::os_service_default, + $keystone_tenant = 'service', + $sync_db = false, + $purge_config = false, + $package_ensure = 'present', + # DEPRECATED PARAMETERS + $midonet_api_ip = undef, + $midonet_api_port = undef, ) { include ::neutron::deps include ::neutron::params - ensure_resource('file', '/etc/neutron/plugins/midonet', { - ensure => directory, - owner => 'root', - group => 'neutron', - mode => '0640'} + if $midonet_api_ip { + # If we got midonet_api_ip here, display deprecation warning and use this value. + warning('The midonet_api_ip parameter is going to be removed in future releases. Use the midonet_cluster_ip parameter instead.') + $cluster_ip = $midonet_api_ip + } else { + $cluster_ip = $midonet_cluster_ip + } + + if $midonet_api_port { + # If we got midonet_api_port here, display deprecation warning and use this value. + warning('The midonet_api_port parameter is going to be removed in future releases. Use the midonet_cluster_port parameter instead.') + $cluster_port = $midonet_api_port + } else { + $cluster_port = $midonet_cluster_port + } + + ensure_resource('file', '/etc/neutron/plugins/midonet', + { + ensure => directory, + owner => 'root', + group => 'neutron', + mode => '0640' + } ) resources { 'neutron_plugin_midonet': @@ -106,14 +145,8 @@ class neutron::plugins::midonet ( tag => ['neutron-package', 'openstack'], } - package { 'python-networking-midonet-ext': - ensure => $package_ensure, - name => $::neutron::params::midonet_server_package_ext, - tag => ['neutron-package', 'openstack'], - } - neutron_plugin_midonet { - 'MIDONET/midonet_uri': value => "http://${midonet_api_ip}:${midonet_api_port}/midonet-api"; + 'MIDONET/midonet_uri': value => "http://${cluster_ip}:${cluster_port}/midonet-api"; 'MIDONET/username': value => $keystone_username; 'MIDONET/password': value => $keystone_password, secret =>true; 'MIDONET/project_id': value => $keystone_tenant; @@ -143,7 +176,6 @@ class neutron::plugins::midonet ( if $sync_db { Package<| title == 'python-networking-midonet' |> ~> Exec['midonet-db-sync'] - Package<| title == 'python-networking-midonet-ext' |> ~> Exec['midonet-db-sync'] exec { 'midonet-db-sync': command => 'neutron-db-manage --subproject networking-midonet upgrade head', path => '/usr/bin', diff --git a/releasenotes/notes/deprecate-midonet-api-param-d2c8ef45af7cffea.yaml b/releasenotes/notes/deprecate-midonet-api-param-d2c8ef45af7cffea.yaml new file mode 100644 index 000000000..458c16891 --- /dev/null +++ b/releasenotes/notes/deprecate-midonet-api-param-d2c8ef45af7cffea.yaml @@ -0,0 +1,6 @@ +--- +deprecations: + - | + The MidoNet API does not exist anymore. Starting in the MidoNet 5.0 release + the API is now called Cluster. Hence we are deprecating the "midonet_api_*" + parameter in favor of "midonet_cluster_*". diff --git a/spec/classes/neutron_plugins_midonet_spec.rb b/spec/classes/neutron_plugins_midonet_spec.rb index 42977d8c7..aade11bbc 100644 --- a/spec/classes/neutron_plugins_midonet_spec.rb +++ b/spec/classes/neutron_plugins_midonet_spec.rb @@ -12,12 +12,12 @@ describe 'neutron::plugins::midonet' do let :default_params do { - :midonet_api_ip => '127.0.0.1', - :midonet_api_port => '8080', - :keystone_username => 'neutron', - :keystone_password => 'test_midonet', - :keystone_tenant => 'services', - :purge_config => false, + :midonet_cluster_ip => '127.0.0.1', + :midonet_cluster_port => '8181', + :keystone_username => 'neutron', + :keystone_password => 'test_midonet', + :keystone_tenant => 'services', + :purge_config => false, } end @@ -57,7 +57,7 @@ describe 'neutron::plugins::midonet' do end it 'should perform default configuration of' do - midonet_uri = "http://" + params[:midonet_api_ip] + ":" + params[:midonet_api_port] + "/midonet-api"; + midonet_uri = "http://" + params[:midonet_cluster_ip] + ":" + params[:midonet_cluster_port] + "/midonet-api"; is_expected.to contain_neutron_plugin_midonet('MIDONET/midonet_uri').with_value(midonet_uri) is_expected.to contain_neutron_plugin_midonet('MIDONET/username').with_value(params[:keystone_username]) is_expected.to contain_neutron_plugin_midonet('MIDONET/password').with_value(params[:keystone_password]) @@ -66,6 +66,26 @@ describe 'neutron::plugins::midonet' do end + shared_examples_for 'neutron midonet plugin using deprecated params' do + let :params do + { + :midonet_api_ip => '192.168.0.1', + :midonet_api_port => '8181', + } + end + before do + params.merge!(default_params) + end + it 'should take into account deprecated parameters first' do + midonet_uri = "http://" + params[:midonet_api_ip] + ":" + params[:midonet_api_port] + "/midonet-api"; + is_expected.to contain_neutron_plugin_midonet('MIDONET/midonet_uri').with_value(midonet_uri) + end + it 'should take into account deprecated parameters first' do + bad_midonet_uri = "http://" + params[:midonet_cluster_ip] + ":" + params[:midonet_cluster_port] + "/midonet-api"; + is_expected.to_not contain_neutron_plugin_midonet('MIDONET/midonet_uri').with_value(bad_midonet_uri) + end + end + context 'on Debian platforms' do let :facts do @default_facts.merge(test_facts.merge({ @@ -82,6 +102,7 @@ describe 'neutron::plugins::midonet' do is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]') end it_configures 'neutron midonet plugin' + it_configures 'neutron midonet plugin using deprecated params' end context 'on RedHat platforms' do @@ -92,6 +113,7 @@ describe 'neutron::plugins::midonet' do })) end it_configures 'neutron midonet plugin' + it_configures 'neutron midonet plugin using deprecated params' end end