From 5ce42bedb325439ae1e907cc0076a2e6d1266787 Mon Sep 17 00:00:00 2001 From: Feng Pan Date: Thu, 16 Aug 2018 11:36:58 -0400 Subject: Fix ipv6 deployment failures - fix ipv6 enable command on bridge interfaces - fix external subnet creation command - enable NAT when admin is ipv4 - fix network settings file for ipv6 for br-ex interface type Change-Id: Ibd2dbe1d0c8e8df72ad1b0b3713a19f8bbc56eef Signed-off-by: Feng Pan --- apex/network/jumphost.py | 8 ++------ apex/overcloud/deploy.py | 3 +-- apex/undercloud/undercloud.py | 7 +++++-- 3 files changed, 8 insertions(+), 10 deletions(-) (limited to 'apex') diff --git a/apex/network/jumphost.py b/apex/network/jumphost.py index c28c105e..86556659 100644 --- a/apex/network/jumphost.py +++ b/apex/network/jumphost.py @@ -53,12 +53,8 @@ def configure_bridges(ns): if cidr.version == 6: ipv6_br_path = "/proc/sys/net/ipv6/conf/{}/disable_" \ "ipv6".format(NET_MAP[network]) - try: - subprocess.check_call('echo', 0, '>', ipv6_br_path) - except subprocess.CalledProcessError: - logging.error("Unable to enable ipv6 on " - "bridge {}".format(NET_MAP[network])) - raise + with open(ipv6_br_path, 'w') as f: + print(0, file=f) try: ip_prefix = "{}/{}".format(ovs_ip, cidr.prefixlen) subprocess.check_call(['ip', 'addr', 'add', ip_prefix, 'dev', diff --git a/apex/overcloud/deploy.py b/apex/overcloud/deploy.py index e310fa21..3dd2af34 100644 --- a/apex/overcloud/deploy.py +++ b/apex/overcloud/deploy.py @@ -871,8 +871,7 @@ def external_network_cmds(ns, ds): "--allocation-pool start={},end={} --subnet-range " \ "{}".format(gateway, pool_start, pool_end, str(cidr)) if external and cidr.version == 6: - subnet_cmd += ' --ip-version 6 --ipv6-ra-mode slaac ' \ - '--ipv6-address-mode slaac' + subnet_cmd += ' --ip-version 6' cmds.append(subnet_cmd) logging.debug("Neutron external network commands determined " "as: {}".format(cmds)) diff --git a/apex/undercloud/undercloud.py b/apex/undercloud/undercloud.py index d2de2de1..56087695 100644 --- a/apex/undercloud/undercloud.py +++ b/apex/undercloud/undercloud.py @@ -263,8 +263,11 @@ class Undercloud: "prefix": str(ns_external['cidr']).split('/')[1], "enabled": ns_external['enabled'] } - # TODO(trozet): clean this logic up and merge with above - if 'external' in ns.enabled_network_list: + # We will NAT external network if it is enabled. If external network + # is IPv6, we will NAT admin network in case we need IPv4 connectivity + # for things like DNS server. + if 'external' in ns.enabled_network_list and \ + ns_external['cidr'].version == 4: nat_cidr = ns_external['cidr'] else: nat_cidr = ns['networks']['admin']['cidr'] -- cgit 1.2.3-korg