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'],
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}
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))