From 9cba296d6d5a4024527df6f7370154df7f5f8ce6 Mon Sep 17 00:00:00 2001 From: Anthony PERARD Date: Thu, 15 Sep 2016 15:56:33 +0000 Subject: [PATCH] image: fix read-vendor-json.py --- nodepool/scripts/read-vendor-json.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/nodepool/scripts/read-vendor-json.py b/nodepool/scripts/read-vendor-json.py index a9b325e..d513989 100644 --- a/nodepool/scripts/read-vendor-json.py +++ b/nodepool/scripts/read-vendor-json.py @@ -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)) -- 2.39.5