From d3eea20b1a44317233c5a1209347cb1d0b87a158 Mon Sep 17 00:00:00 2001 From: Guo Larry Date: Fri, 2 Aug 2019 16:18:04 +0800 Subject: [PATCH] add IPv6 support for choose_my_ip function Several place need to use choose_my_ip function to know which IP offered to packstack belongs to current node. Unfortunately, IPv6 version failed. With this change, it will be OK no matter which IP version given. For both ovs_agent and ovn_agent, add split ":" matching besides dot to support IPv6. Closes-Bug: #1838732 Change-Id: I0269db6641bca335685140d2d6439bc795cd8c46 Signed-off-by: Guo Larry (cherry picked from commit 02bd30d9438ab2384c69c268ca564b6e7ce81182) --- .../packstack/lib/puppet/parser/functions/choose_my_ip.rb | 6 ++++-- .../puppet/modules/packstack/manifests/neutron/ovn_agent.pp | 2 +- .../puppet/modules/packstack/manifests/neutron/ovs_agent.pp | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packstack/puppet/modules/packstack/lib/puppet/parser/functions/choose_my_ip.rb b/packstack/puppet/modules/packstack/lib/puppet/parser/functions/choose_my_ip.rb index 20eb5b0ad..4a0c7c7b7 100644 --- a/packstack/puppet/modules/packstack/lib/puppet/parser/functions/choose_my_ip.rb +++ b/packstack/puppet/modules/packstack/lib/puppet/parser/functions/choose_my_ip.rb @@ -14,9 +14,11 @@ module Puppet::Parser::Functions if not host_list.kind_of?(Array) host_list = [host_list] end - my_ips = lookupvar('interfaces').split(',').map do |interface| + my_ips = Array.new + lookupvar('interfaces').split(',').each do |interface| interface.strip! - lookupvar("ipaddress_#{interface}") + my_ips.push(lookupvar("ipaddress_#{interface}")) + my_ips.push(lookupvar("ipaddress6_#{interface}")) end result = nil diff --git a/packstack/puppet/modules/packstack/manifests/neutron/ovn_agent.pp b/packstack/puppet/modules/packstack/manifests/neutron/ovn_agent.pp index 8b3eb7801..d6ac5cf2d 100644 --- a/packstack/puppet/modules/packstack/manifests/neutron/ovn_agent.pp +++ b/packstack/puppet/modules/packstack/manifests/neutron/ovn_agent.pp @@ -1,7 +1,7 @@ class packstack::neutron::ovn_agent () { $my_ip = choose_my_ip(hiera('HOST_LIST')) - $my_ip_without_dot = regsubst($my_ip, '\.', '_', 'G') + $my_ip_without_dot = regsubst($my_ip, '[\.\:]', '_', 'G') $neutron_tunnel_rule_name = "FIREWALL_NEUTRON_TUNNEL_RULES_${my_ip_without_dot}" create_resources(packstack::firewall, hiera($neutron_tunnel_rule_name, {})) diff --git a/packstack/puppet/modules/packstack/manifests/neutron/ovs_agent.pp b/packstack/puppet/modules/packstack/manifests/neutron/ovs_agent.pp index c089a80d1..aa86dee8c 100644 --- a/packstack/puppet/modules/packstack/manifests/neutron/ovs_agent.pp +++ b/packstack/puppet/modules/packstack/manifests/neutron/ovs_agent.pp @@ -1,7 +1,7 @@ class packstack::neutron::ovs_agent () { $my_ip = choose_my_ip(hiera('HOST_LIST')) - $my_ip_without_dot = regsubst($my_ip, '\.', '_', 'G') + $my_ip_without_dot = regsubst($my_ip, '[\.\:]', '_', 'G') $neutron_tunnel_rule_name = "FIREWALL_NEUTRON_TUNNEL_RULES_${my_ip_without_dot}" create_resources(packstack::firewall, hiera($neutron_tunnel_rule_name, {}))