From 5251ff5e4b70181f79f14b5cbf0def48a9ca5537 Mon Sep 17 00:00:00 2001 From: Wojciech Dec Date: Mon, 9 Oct 2017 20:03:55 +0200 Subject: [PATCH] Adding manifest for Cisco VTS ML2 mechanism driver configuration Change-Id: I4329d54d66c8a02f651887c90f43b0658ebab384 Implements: blueprint ml2-cisco-vts Signed-off-by: Wojciech Dec --- manifests/profile/base/neutron/plugins/ml2.pp | 4 + .../profile/base/neutron/plugins/ml2/vts.pp | 49 ++++++++++ .../add_cisco_vts_ml2-786d7d8cc6eb7d14.yaml | 4 + ...ipleo_profile_base_neutron_ml2_vts_spec.rb | 92 +++++++++++++++++++ 4 files changed, 149 insertions(+) create mode 100644 manifests/profile/base/neutron/plugins/ml2/vts.pp create mode 100644 releasenotes/notes/add_cisco_vts_ml2-786d7d8cc6eb7d14.yaml create mode 100644 spec/classes/tripleo_profile_base_neutron_ml2_vts_spec.rb diff --git a/manifests/profile/base/neutron/plugins/ml2.pp b/manifests/profile/base/neutron/plugins/ml2.pp index 1f440fa4d..6c08a6a96 100644 --- a/manifests/profile/base/neutron/plugins/ml2.pp +++ b/manifests/profile/base/neutron/plugins/ml2.pp @@ -89,5 +89,9 @@ class tripleo::profile::base::neutron::plugins::ml2 ( if 'nuage' in $mechanism_drivers { include ::tripleo::profile::base::neutron::plugins::ml2::nuage } + + if 'cisco_vts' in $mechanism_drivers { + include ::tripleo::profile::base::neutron::plugins::ml2::vts + } } } diff --git a/manifests/profile/base/neutron/plugins/ml2/vts.pp b/manifests/profile/base/neutron/plugins/ml2/vts.pp new file mode 100644 index 000000000..f7f2e52cb --- /dev/null +++ b/manifests/profile/base/neutron/plugins/ml2/vts.pp @@ -0,0 +1,49 @@ +# Copyright 2017 Cisco, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# == Class: tripleo::profile::base::neutron::plugins::ml2::vts +# +# Cisco VTS Controller Neutron ML2 plugin profile for TripleO +# +# === Parameters +# +# +# [*vts_url_ip*] +# IP address for VTS Api Service +# Defaults to hiera('vts_ip') +# +# [*vts_port*] +# (Optional) VTS server Neutron service port +# Defaults to '8888' +# +# [*step*] +# (Optional) The current step in deployment. See tripleo-heat-templates +# for more details. +# Defaults to hiera('step') +# +class tripleo::profile::base::neutron::plugins::ml2::vts ( + $vts_url_ip = hiera('vts::vts_ip'), + $vts_port = hiera('vts::vts_port', 8888), + $step = hiera('step'), +) { + + if $step >= 4 { + + $vts_url_ip_out = normalize_ip_for_uri($vts_url_ip) + + class { '::neutron::plugins::ml2::cisco::vts': + vts_url => "https://${vts_url_ip_out}:${vts_port}/api/running/openstack" + } + } +} diff --git a/releasenotes/notes/add_cisco_vts_ml2-786d7d8cc6eb7d14.yaml b/releasenotes/notes/add_cisco_vts_ml2-786d7d8cc6eb7d14.yaml new file mode 100644 index 000000000..9f5039a28 --- /dev/null +++ b/releasenotes/notes/add_cisco_vts_ml2-786d7d8cc6eb7d14.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Add tripleo puppet manifest to support the configuration of the cisco VTS controller ml2 plugin. \ No newline at end of file diff --git a/spec/classes/tripleo_profile_base_neutron_ml2_vts_spec.rb b/spec/classes/tripleo_profile_base_neutron_ml2_vts_spec.rb new file mode 100644 index 000000000..a51dda355 --- /dev/null +++ b/spec/classes/tripleo_profile_base_neutron_ml2_vts_spec.rb @@ -0,0 +1,92 @@ +# +# Copyright (C) 2017 Cisco, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# + +require 'spec_helper' + +describe 'tripleo::profile::base::neutron::plugins::ml2::vts' do + let :params do + { :step => 4 + } + end + shared_examples_for 'tripleo::profile::base::neutron::plugins::ml2::vts' do + before :each do + facts.merge!({ :step => params[:step] }) + end + + context 'with IPv4 address' do + before do + params.merge!({ + :vts_url_ip => '192.0.2.5' + }) + end + it 'should configure vts ml2 plugin ' do + is_expected.to contain_class('neutron::plugins::ml2::cisco::vts') + end + end + + context 'with IPv6 address' do + before do + params.merge!({ + :vts_url_ip => '2001:dead:beef::1' + }) + end + it 'should configure vts ml2 plugin' do + is_expected.to contain_class('neutron::plugins::ml2::cisco::vts') + end + end + + context 'with VTS IPv4 and port 9999' do + before do + params.merge!({ + :vts_url_ip => '192.0.2.5', + :vts_port => 9999 + }) + end + it 'should contain VTS URL with port 9999' do + is_expected.to contain_class('neutron::plugins::ml2::cisco::vts').with( + :vts_url => "https://192.0.2.5:9999/api/running/openstack" + + ) + end + end + + context 'with VTS IPv6 and port 9999' do + before do + params.merge!({ + :vts_url_ip => '2001:15:dead::1', + :vts_port => 9999 + }) + end + it 'should contain VTS URL with port 9999' do + is_expected.to contain_class('neutron::plugins::ml2::cisco::vts').with( + :vts_url => "https://[2001:15:dead::1]:9999/api/running/openstack" + + ) + end + end + + end + + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) do + facts.merge({ :hostname => 'node.example.com' }) + end + + it_behaves_like 'tripleo::profile::base::neutron::plugins::ml2::vts' + end + end +end