From 1ccb3642d614e738005cde7bdadfbbfb26e66a5e Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Wed, 20 Jan 2021 15:02:53 +0100 Subject: [PATCH] M #-: Support for in-network vxlan configuration --- share/etc/oned.conf | 3 +++ .../hybrid+/provisions/aws.d/networks.yml | 3 +++ .../hybrid+/provisions/packet.d/networks.yml | 3 +++ src/vnm_mad/remotes/vxlan/vxlan.rb | 14 ++++++++++---- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/share/etc/oned.conf b/share/etc/oned.conf index ad693779d6a..b0249559b20 100644 --- a/share/etc/oned.conf +++ b/share/etc/oned.conf @@ -1071,6 +1071,9 @@ INHERIT_VNET_ATTR = "IP_LINK_CONF" INHERIT_VNET_ATTR = "EXTERNAL" INHERIT_VNET_ATTR = "AWS_ALLOCATION_ID" INHERIT_VNET_ATTR = "GATEWAY" +INHERIT_VNET_ATTR = "VXLAN_MODE" +INHERIT_VNET_ATTR = "VXLAN_TEP" +INHERIT_VNET_ATTR = "VXLAN_MC" INHERIT_VNET_ATTR = "VCENTER_NET_REF" INHERIT_VNET_ATTR = "VCENTER_SWITCH_NAME" diff --git a/share/oneprovision/provisions/hybrid+/provisions/aws.d/networks.yml b/share/oneprovision/provisions/hybrid+/provisions/aws.d/networks.yml index 201855a4445..159031b6b00 100644 --- a/share/oneprovision/provisions/hybrid+/provisions/aws.d/networks.yml +++ b/share/oneprovision/provisions/hybrid+/provisions/aws.d/networks.yml @@ -34,4 +34,7 @@ vntemplates: phydev: 'eth0' automatic_vlan_id: 'yes' netrole: 'private' + vxlan_mode: 'evpn' + vxlan_tep: 'dev' + ip_link_conf: 'nolearning=' cluster_ids: "${cluster.0.id}" diff --git a/share/oneprovision/provisions/hybrid+/provisions/packet.d/networks.yml b/share/oneprovision/provisions/hybrid+/provisions/packet.d/networks.yml index d5b1a852f25..575f7d697b2 100644 --- a/share/oneprovision/provisions/hybrid+/provisions/packet.d/networks.yml +++ b/share/oneprovision/provisions/hybrid+/provisions/packet.d/networks.yml @@ -34,4 +34,7 @@ vntemplates: phydev: 'bond0' automatic_vlan_id: 'yes' netrole: 'private' + vxlan_mode: 'evpn' + vxlan_tep: 'dev' + ip_link_conf: 'nolearning=' cluster_ids: "${cluster.0.id}" diff --git a/src/vnm_mad/remotes/vxlan/vxlan.rb b/src/vnm_mad/remotes/vxlan/vxlan.rb index ff03bac5a0b..c8affbbf26a 100644 --- a/src/vnm_mad/remotes/vxlan/vxlan.rb +++ b/src/vnm_mad/remotes/vxlan/vxlan.rb @@ -24,11 +24,11 @@ module VXLAN # This function creates and activate a VLAN device ############################################################################ def create_vlan_dev - vxlan_mode = @nic[:conf][:vxlan_mode] || 'multicast' + vxlan_mode = conf_attribute(@nic, :vxlan_mode, 'multicast') group = "" if vxlan_mode.downcase == 'evpn' - vxlan_tep = @nic[:conf][:vxlan_tep] || 'dev' + vxlan_tep = conf_attribute(@nic, :vxlan_tep, 'dev') if vxlan_tep.downcase == 'dev' tep = "dev #{@nic[:phydev]}" @@ -37,9 +37,9 @@ def create_vlan_dev end else begin - ipaddr = IPAddr.new @nic[:conf][:vxlan_mc] + ipaddr = IPAddr.new conf_attribute(@nic, :vxlan_mc, '239.0.0.0') rescue - ipaddr = IPAddr.new "239.0.0.0" + ipaddr = IPAddr.new '239.0.0.0' end mc = ipaddr.to_i + @nic[@attr_vlan_id].to_i @@ -105,4 +105,10 @@ def get_interface_first_ip(name) end return nil end + + def conf_attribute(nic, name, default) + return nic[name] unless nic[name].nil? + + nic[:conf][name] || default + end end