]> xenbits.xensource.com Git - openstack/ci-loop-config.git/commitdiff
image: fix read-vendor-json.py
authorAnthony PERARD <anthony.perard@citrix.com>
Thu, 15 Sep 2016 15:56:33 +0000 (15:56 +0000)
committerAnthony PERARD <anthony.perard@citrix.com>
Wed, 2 Nov 2016 17:54:21 +0000 (17:54 +0000)
nodepool/scripts/read-vendor-json.py

index a9b325e2df2909c98eaeccccb1f698b730580e15..d513989de1e07fab2d8c575ea4d5600feb628042 100644 (file)
@@ -73,21 +73,30 @@ def write_redhat_interfaces(interfaces):
     return files_to_write
 
 
-def write_debian_interfaces(interfaces):
+def write_debian_interfaces(interfaces, dns_servers=None):
     results = ""
     for iname, interface in interfaces.items():
         link_type = "inet"
         if interface['type'] == 'ipv6':
             link_type = "inet6"
         interface_name = interface['id'].replace('network', 'eth')
+        if interface['network_id'] == '00000000-0000-0000-0000-000000000000':
+            interface_name = 'eth0'
+        elif interface['network_id'] == '11111111-1111-1111-1111-111111111111':
+            interface_name = 'eth1'
         results += "auto {0}\n".format(interface_name)
         results += "iface {name} {link_type} static\n".format(
             name=interface_name, link_type=link_type)
         results += "    address {0}\n".format(interface['ip_address'])
-        results += "    netmask {0}\n".format(interface['netmask'])
+        if interface['netmask'] == 'ffff:ffff:ffff:ffff::':
+            results += "    netmask 64\n"
+        else:
+            results += "    netmask {0}\n".format(interface['netmask'])
         for route in interface['routes']:
             if route['network'] == '0.0.0.0' and route['netmask'] == '0.0.0.0':
                 results += "    gateway {0}\n".format(route['gateway'])
+            elif route['network'] == '::' and route['netmask'] == '::':
+                results += "    gateway {0}\n".format(route['gateway'])
             else:
                 results += post_up.format(
                     net=route['network'], mask=route['netmask'],
@@ -95,6 +104,8 @@ def write_debian_interfaces(interfaces):
                 results += pre_down.format(
                     net=route['network'], mask=route['netmask'],
                     gw=route['gateway'])
+        if interface['type'] == 'ipv6' and dns_servers:
+            results += "    dns-nameservers {0}\n".format(' '.join(dns_servers))
     return {'/etc/network/interfaces': results}
 
 
@@ -120,17 +131,21 @@ def main():
     dns_servers = [f['address'] for f in net['services'] if f['type'] == 'dns']
 
     interfaces = {}
+    macs = {}
 
-    for network in net['networks']:
-        interfaces[network['link']] = network
     for link in net['links']:
-        interfaces[link['id']]['mac_address'] = link['ethernet_mac_address']
+        #interfaces[link['id']]['mac_address'] = link['ethernet_mac_address']
+        macs[link['id']] = link['ethernet_mac_address']
+    for network in net['networks']:
+        #interfaces[network['link']] = network
+        interfaces[network['id']] = network
+        interfaces[network['id']]['mac_address'] = macs[network['link']]
 
     distro = args.distro
     if not distro:
         distro = platform.dist()[0].lower()
     if distro in ('debian', 'ubuntu'):
-        files_to_write = write_debian_interfaces(interfaces)
+        files_to_write = write_debian_interfaces(interfaces, dns_servers)
     elif distro in ('redhat', 'centos', 'fedora', 'suse', 'opensuse'):
         files_to_write = write_redhat_interfaces(interfaces)
     files_to_write.update(write_dns_info(dns_servers))