From f51323de8e178c4a459389f74f344c457b28b082 Mon Sep 17 00:00:00 2001 From: Wojciech Dec Date: Thu, 5 Oct 2017 17:15:43 +0200 Subject: [PATCH] Adding Cisco VTS ML2 mechanism driver configuration manifest Implements: blueprint ml2-cisco-vts Change-Id: Ia26c8c5a568b503be32754bdf124fb9aab070fde Signed-off-by: Wojciech Dec --- manifests/plugins/ml2/cisco/vts.pp | 72 ++++++++++++++++ ..._vts_ml2-mech-driver-723c7946e56be802.yaml | 4 + .../neutron_plugins_ml2_cisco_vts_spec.rb | 82 +++++++++++++++++++ 3 files changed, 158 insertions(+) create mode 100644 manifests/plugins/ml2/cisco/vts.pp create mode 100644 releasenotes/notes/add-cisco_vts_ml2-mech-driver-723c7946e56be802.yaml create mode 100644 spec/classes/neutron_plugins_ml2_cisco_vts_spec.rb diff --git a/manifests/plugins/ml2/cisco/vts.pp b/manifests/plugins/ml2/cisco/vts.pp new file mode 100644 index 000000000..94ee81de4 --- /dev/null +++ b/manifests/plugins/ml2/cisco/vts.pp @@ -0,0 +1,72 @@ +# == Define: neutron::plugins::ml2::cisco::vts +# +# Install the Cisco VTS driver and generate the ML2 config file +# from parameters in the other classes. +# +# === Parameters +# +# [*vts_username*] +# (required) The VTS controller username +# Example: 'admin' +# +# [*vts_password*] +# (required) The VTS controller password +# Example: 'admin' +# +# [*vts_url*] +# (required) The VTS controller neutron URL +# Example: 'http://127.0.0.1:8888/api/running/openstack' +# +# [*vts_timeout*] +# (optional) Timeout for connection to vts host REST interface. +# Defaults to $::os_service_default +# +# [*vts_sync_timeout*] +# (optional) Timeout for synchronization to VTS. +# Defaults to $::os_service_default +# +# [*vts_retry_count*] +# (optional) Numer of retries for synchronization with VTS. +# Defaults to $::os_service_default +# +# [*vts_vmmid*] +# (optional) Virtual Machine Manager ID as assigned by VTS +# Defaults to $::os_service_default +# +# [*package_ensure*] +# (optional) The intended state of the cisco-vts-ml2-driver +# package, i.e. any of the possible values of the 'ensure' +# property for a package resource type. +# Defaults to 'present' +# +class neutron::plugins::ml2::cisco::vts ( + $vts_username, + $vts_password, + $vts_url, + $vts_vmmid, + $vts_timeout = $::os_service_default, + $vts_sync_timeout = $::os_service_default, + $vts_retry_count = $::os_service_default, + $package_ensure = 'present' +) { + + include ::neutron::deps + require ::neutron::plugins::ml2 + + ensure_resource('package', 'python-cisco-controller', + { + ensure => $package_ensure, + tag => 'openstack', + } + ) + + neutron_plugin_ml2 { + 'ml2_cc/username': value => $vts_username; + 'ml2_cc/password': value => $vts_password, secret => true; + 'ml2_cc/url': value => $vts_url; + 'ml2_cc/timeout': value => $vts_timeout; + 'ml2_cc/sync_timeout': value => $vts_sync_timeout; + 'ml2_cc/retry_count': value => $vts_retry_count; + 'ml2_cc/vmm_id': value => $vts_vmmid; + } +} diff --git a/releasenotes/notes/add-cisco_vts_ml2-mech-driver-723c7946e56be802.yaml b/releasenotes/notes/add-cisco_vts_ml2-mech-driver-723c7946e56be802.yaml new file mode 100644 index 000000000..6dcc091fa --- /dev/null +++ b/releasenotes/notes/add-cisco_vts_ml2-mech-driver-723c7946e56be802.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Adds capability for configuring the Cisco VTS neutron ml2 plugin mechanism driver. \ No newline at end of file diff --git a/spec/classes/neutron_plugins_ml2_cisco_vts_spec.rb b/spec/classes/neutron_plugins_ml2_cisco_vts_spec.rb new file mode 100644 index 000000000..4883b1906 --- /dev/null +++ b/spec/classes/neutron_plugins_ml2_cisco_vts_spec.rb @@ -0,0 +1,82 @@ +require 'spec_helper' + +describe 'neutron::plugins::ml2::cisco::vts' do + + let :pre_condition do + "class { '::neutron::keystone::authtoken': + password => 'passw0rd', + } + class { 'neutron::server': } + class { 'neutron': + rabbit_password => 'passw0rd', + core_plugin => 'ml2' }" + end + + let :default_params do + { + :vts_timeout => '', + :vts_sync_timeout => '', + :vts_retry_count => '', + :package_ensure => 'present', + } + end + + let :params do + { + :vts_username => 'user', + :vts_password => 'password', + :vts_url => 'http://abc123', + :vts_vmmid => '12345', + } + end + + let :test_facts do + { + :operatingsystem => 'default', + :operatingsystemrelease => 'default', + } + end + + shared_examples_for 'neutron plugin ml2 cisco vts' do + before do + params.merge!(default_params) + end + + it 'should have' do + is_expected.to contain_package('python-cisco-controller').with( + :ensure => params[:package_ensure], + :tag => 'openstack' + ) + end + + it 'configures ml2_cc cisco_vts settings' do + is_expected.to contain_neutron_plugin_ml2('ml2_cc/password').with_value(params[:vts_password]).with_secret(true) + is_expected.to contain_neutron_plugin_ml2('ml2_cc/username').with_value(params[:vts_username]) + is_expected.to contain_neutron_plugin_ml2('ml2_cc/url').with_value(params[:vts_url]) + is_expected.to contain_neutron_plugin_ml2('ml2_cc/timeout').with_value(params[:vts_timeout]) + is_expected.to contain_neutron_plugin_ml2('ml2_cc/sync_timeout').with_value(params[:vts_sync_timeout]) + is_expected.to contain_neutron_plugin_ml2('ml2_cc/retry_count').with_value(params[:vts_retry_count]) + is_expected.to contain_neutron_plugin_ml2('ml2_cc/vmm_id').with_value(params[:vts_vmmid]) + + end + end + + context 'on RedHat platforms' do + let :facts do + @default_facts.merge(test_facts.merge({ + :osfamily => 'RedHat', + :operatingsystemrelease => '7' + })) + end + it_configures 'neutron plugin ml2 cisco vts' + end + + context 'on Debian platforms' do + let :facts do + @default_facts.merge(test_facts.merge({ + :osfamily => 'Debian', + })) + end + it_configures 'neutron plugin ml2 cisco vts' + end +end