diff options
-rw-r--r-- | cloudinit/net/__init__.py | 17 | ||||
-rw-r--r-- | tests/unittests/test_net.py | 4 |
2 files changed, 13 insertions, 8 deletions
diff --git a/cloudinit/net/__init__.py b/cloudinit/net/__init__.py index 7a6ec3a4..647c595b 100644 --- a/cloudinit/net/__init__.py +++ b/cloudinit/net/__init__.py @@ -350,7 +350,7 @@ def _klibc_to_config_entry(content, mac_addrs=None): # if no IPV4ADDR or IPV6ADDR, then go on. if pre + "ADDR" not in data: continue - subnet = {'type': proto} + subnet = {'type': proto, 'control': 'manual'} # these fields go right on the subnet for key in ('NETMASK', 'BROADCAST', 'GATEWAY'): @@ -444,12 +444,13 @@ def iface_add_subnet(iface, subnet): def iface_add_attrs(iface): content = "" ignore_map = [ - 'type', - 'name', + 'control', + 'index', 'inet', 'mode', - 'index', + 'name', 'subnets', + 'type', ] if iface['type'] not in ['bond', 'bridge', 'vlan']: ignore_map.append('mac_address') @@ -540,6 +541,7 @@ def render_interfaces(network_state): content += "\n" iface['index'] = index iface['mode'] = subnet['type'] + iface['control'] = subnet.get('control', 'auto') if iface['mode'].endswith('6'): iface['inet'] += '6' elif iface['mode'] == 'static' and ":" in subnet['address']: @@ -548,11 +550,11 @@ def render_interfaces(network_state): iface['mode'] = 'dhcp' if index == 0: - if subnet['type'] != 'manual': - content += "auto {name}\n".format(**iface) + if iface['control'] != 'manual': + content += "allow-{control} {name}\n".format(**iface) content += "iface {name} {inet} {mode}\n".format(**iface) else: - if subnet['type'] != 'manual': + if iface['control'] != 'manual': content += "auto {name}:{index}\n".format(**iface) content += \ "iface {name}:{index} {inet} {mode}\n".format(**iface) @@ -560,6 +562,7 @@ def render_interfaces(network_state): content += iface_add_subnet(iface, subnet) content += iface_add_attrs(iface) else: + # ifenslave docs say to auto the slave devices if 'bond-master' in iface: content += "auto {name}\n".format(**iface) content += "iface {name} {inet} {mode}\n".format(**iface) diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py index dfb31710..09235c4d 100644 --- a/tests/unittests/test_net.py +++ b/tests/unittests/test_net.py @@ -33,6 +33,7 @@ DHCP_EXPECTED_1 = { 'name': 'eth0', 'type': 'physical', 'subnets': [{'broadcast': '192.168.122.255', + 'control': 'manual', 'gateway': '192.168.122.1', 'dns_search': ['foo.com'], 'type': 'dhcp', @@ -59,7 +60,8 @@ DOMAINSEARCH='foo.com' STATIC_EXPECTED_1 = { 'name': 'eth1', 'type': 'physical', - 'subnets': [{'broadcast': '10.0.0.255', 'gateway': '10.0.0.1', + 'subnets': [{'broadcast': '10.0.0.255', 'control': 'manual', + 'gateway': '10.0.0.1', 'dns_search': ['foo.com'], 'type': 'static', 'netmask': '255.255.255.0', 'dns_nameservers': ['10.0.1.1']}], |