From 0148099009a0af5224aaed1c9f97e5ab87ba1838 Mon Sep 17 00:00:00 2001
From: Patrice RINGOT <patrice.ringot@loria.fr>
Date: Mon, 4 Jan 2021 17:46:33 +0100
Subject: [PATCH] [kavlang5k.rb] allow kavlan pattern to be given at the port
 level

---
 lib/refrepo/gen/puppet/kavlang5k.rb | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/refrepo/gen/puppet/kavlang5k.rb b/lib/refrepo/gen/puppet/kavlang5k.rb
index 8b55f7f030..b6468a71d5 100644
--- a/lib/refrepo/gen/puppet/kavlang5k.rb
+++ b/lib/refrepo/gen/puppet/kavlang5k.rb
@@ -4,9 +4,11 @@ def kavlan_switch_port_lookup(switch, node_uid, interface='')
   switch["linecards"].each_with_index do |lc, lc_uid|
     next if not lc["ports"]
     lc["ports"].each_with_index do |port, port_uid|
+      pattern_source = lc
       if port.is_a?(Hash)
         switch_remote_port = port["port"] || lc["port"] || ""
         switch_remote_uid = port["uid"]
+        pattern_source = port if port.has_key?('snmp_pattern') or port.has_key?('kavlan_pattern')
       else
         switch_remote_port = lc["port"] || ""
         switch_remote_uid = port
@@ -15,7 +17,7 @@ def kavlan_switch_port_lookup(switch, node_uid, interface='')
       if switch_remote_uid == node_uid and switch_remote_port == interface
         # Build port name from snmp_naming_pattern
         # Example: '3 2 GigabitEthernet%LINECARD%/%PORT%' -> 'GigabitEthernet3/2'
-        pattern = lc.has_key?("kavlan_pattern") ? lc["kavlan_pattern"] : lc["snmp_pattern"]
+        pattern = pattern_source.has_key?("kavlan_pattern") ? pattern_source["kavlan_pattern"] : pattern_source["snmp_pattern"]
         port_name = pattern.sub("%LINECARD%",lc_uid.to_s).sub("%PORT%",port_uid.to_s)
         return port_name
       end
-- 
GitLab