Blob Blame History Raw
From f1eee124575f2ccb33338759126f4d8315034715 Mon Sep 17 00:00:00 2001
From: Martin Magr <mmagr@redhat.com>
Date: Thu, 27 Mar 2014 14:01:44 +0100
Subject: [PATCH 1/3] Fix network_vlan_ranges parameter for OVS plugin

Class neutron::plugins::ovs expects string value in network_vlan_ranges parameter,
but validate_network_vlan_ranges will fail when value is comma separated list
of valid values. This patch is fixing this problem

Change-Id: If5b8ef59a600b3204415853ad796fb0537fefe4a
(cherry picked from commit 3d8d9fafec004b0debb2af8a70f4cd77d67ce04d)
---
 manifests/plugins/ovs.pp                 | 10 ++++++++--
 spec/classes/neutron_plugins_ovs_spec.rb | 14 ++++++++++++++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/manifests/plugins/ovs.pp b/manifests/plugins/ovs.pp
index 349e316..fea6d0f 100644
--- a/manifests/plugins/ovs.pp
+++ b/manifests/plugins/ovs.pp
@@ -83,9 +83,15 @@ class neutron::plugins::ovs (
   } else {
     # This might be set by the user for the gre or vxlan case where
     # provider networks are in use
-    validate_network_vlan_ranges($network_vlan_ranges)
+    if !is_array($network_vlan_ranges) {
+      $arr_network_vlan_ranges = strip(split($network_vlan_ranges, ','))
+    } else {
+      $arr_network_vlan_ranges = $network_vlan_ranges
+    }
+
+    validate_network_vlan_ranges($arr_network_vlan_ranges)
     neutron_plugin_ovs {
-      'OVS/network_vlan_ranges': value => $network_vlan_ranges
+      'OVS/network_vlan_ranges': value => join($arr_network_vlan_ranges, ',');
     }
   }
 
diff --git a/spec/classes/neutron_plugins_ovs_spec.rb b/spec/classes/neutron_plugins_ovs_spec.rb
index 36efd04..f9cfa3f 100644
--- a/spec/classes/neutron_plugins_ovs_spec.rb
+++ b/spec/classes/neutron_plugins_ovs_spec.rb
@@ -160,6 +160,20 @@ describe 'neutron::plugins::ovs' do
       end
       it { should contain_neutron_plugin_ovs('OVS/network_vlan_ranges').with_value(params[:network_vlan_ranges]) }
     end
+
+    context 'with comma separated vlan ranges' do
+      let :params do
+        { :network_vlan_ranges => 'physint1:1000:2000,physext1:100:200' }
+      end
+      it { should contain_neutron_plugin_ovs('OVS/network_vlan_ranges').with_value(params[:network_vlan_ranges]) }
+    end
+
+    context 'with vlan ranges in array' do
+      let :params do
+        { :network_vlan_ranges => ['physint1:1000:2000', 'physext1:100:200'] }
+      end
+      it { should contain_neutron_plugin_ovs('OVS/network_vlan_ranges').with_value(params[:network_vlan_ranges].join(',')) }
+    end
   end
 
   context 'on Debian platforms' do
-- 
1.8.5.3