Commit 5039a080 authored by Scott Moser's avatar Scott Moser

support and render control=manual on initramfs network devices

when reading the initramfs configurewd devices and turning them
into network config, we change to not have 'auto' control (or allow=auto).
The reason for this is that if the device was still up:
 a.) it would try to bring it up again (due to bug 1570142)
 b.) it would be brought down.

'b' is problematic if there is an iscsi or network root filesystem.

Note, that ifupdown does now support 'no-auto-down' which means
that the nic should not be brought down on 'ifdown -a'.

LP: #1568637
parent 14053fc7
......@@ -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)
......
......@@ -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']}],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment