Fix ipv6 deployment failures 09/61009/3
authorFeng Pan <fpan@redhat.com>
Thu, 16 Aug 2018 15:36:58 +0000 (11:36 -0400)
committerFeng Pan <fpan@redhat.com>
Fri, 17 Aug 2018 15:25:16 +0000 (11:25 -0400)
- 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 <fpan@redhat.com>
apex/network/jumphost.py
apex/overcloud/deploy.py
apex/undercloud/undercloud.py
config/network/network_settings_v6.yaml

index c28c105..8655665 100644 (file)
@@ -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',
index e310fa2..3dd2af3 100644 (file)
@@ -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))
index d2de2de..5608769 100644 (file)
@@ -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']
index 1dd1097..71b0b27 100644 (file)
@@ -180,7 +180,7 @@ networks:
         # Mapping for compute profile (nodes assigned as Compute nodes)
         compute:
           # Physical interface type (interface or bond)
-          phys_type: interface
+          phys_type: ovs_bridge
           # VLAN tag to use with this NIC
           vlan: native
           # Physical NIC members of this mapping
@@ -189,7 +189,7 @@ networks:
             - nic3
         # Mapping for controller profile (nodes assigned as Controller nodes)
         controller:
-          phys_type: interface
+          phys_type: ovs_bridge
           vlan: native
           members:
             - nic3