From e7d90aa880bf6f473eec40df198a8a8e81c4f016 Mon Sep 17 00:00:00 2001 From: Eduardo Otubo Date: Fri, 14 Feb 2020 15:25:00 +0100 Subject: [PATCH] Update to 19.4 --- ...d-init-17.1-deprecated_platform_dist.patch | 21 - cloud-init-17.1-disable-lxd-tests.patch | 17 - cloud-init-17.1-exclude_EPOCHREALTIME.patch | 31 - cloud-init-17.1-fix-local-ipv4-only.patch | 298 ---------- cloud-init-17.1-nm-controlled.patch | 291 ---------- ...nit-17.1-no-override-default-network.patch | 200 ------- cloud-init-19.4-disable-lxd-tests.patch | 32 ++ cloud-init-19.4-nm-controlled.patch | 540 ++++++++++++++++++ ...nit-19.4-no-override-default-network.patch | 36 ++ cloud-init.spec | 24 +- sources | 2 +- 11 files changed, 618 insertions(+), 874 deletions(-) delete mode 100644 cloud-init-17.1-deprecated_platform_dist.patch delete mode 100644 cloud-init-17.1-disable-lxd-tests.patch delete mode 100644 cloud-init-17.1-exclude_EPOCHREALTIME.patch delete mode 100644 cloud-init-17.1-fix-local-ipv4-only.patch delete mode 100644 cloud-init-17.1-nm-controlled.patch delete mode 100644 cloud-init-17.1-no-override-default-network.patch create mode 100644 cloud-init-19.4-disable-lxd-tests.patch create mode 100644 cloud-init-19.4-nm-controlled.patch create mode 100644 cloud-init-19.4-no-override-default-network.patch diff --git a/cloud-init-17.1-deprecated_platform_dist.patch b/cloud-init-17.1-deprecated_platform_dist.patch deleted file mode 100644 index 494e107..0000000 --- a/cloud-init-17.1-deprecated_platform_dist.patch +++ /dev/null @@ -1,21 +0,0 @@ -Index: cloud-init-17.1/cloudinit/util.py -=================================================================== ---- cloud-init-17.1.orig/cloudinit/util.py -+++ cloud-init-17.1/cloudinit/util.py -@@ -11,6 +11,7 @@ - import contextlib - import copy as obj_copy - import ctypes -+import distro - import email - import glob - import grp -@@ -586,7 +587,7 @@ def system_info(): - 'release': platform.release(), - 'python': platform.python_version(), - 'uname': platform.uname(), -- 'dist': platform.dist(), # pylint: disable=W1505 -+ 'dist': distro.linux_distribution(full_distribution_name=False), - } - system = info['system'].lower() - var = 'unknown' diff --git a/cloud-init-17.1-disable-lxd-tests.patch b/cloud-init-17.1-disable-lxd-tests.patch deleted file mode 100644 index 956265a..0000000 --- a/cloud-init-17.1-disable-lxd-tests.patch +++ /dev/null @@ -1,17 +0,0 @@ -Index: cloud-init-17.1/tests/cloud_tests/platforms/__init__.py -=================================================================== ---- cloud-init-17.1.orig/tests/cloud_tests/platforms/__init__.py -+++ cloud-init-17.1/tests/cloud_tests/platforms/__init__.py -@@ -2,12 +2,10 @@ - - """Main init.""" - --from tests.cloud_tests.platforms import lxd - from tests.cloud_tests.platforms import nocloudkvm - - PLATFORMS = { - 'nocloud-kvm': nocloudkvm.NoCloudKVMPlatform, -- 'lxd': lxd.LXDPlatform, - } - - diff --git a/cloud-init-17.1-exclude_EPOCHREALTIME.patch b/cloud-init-17.1-exclude_EPOCHREALTIME.patch deleted file mode 100644 index 5e77de4..0000000 --- a/cloud-init-17.1-exclude_EPOCHREALTIME.patch +++ /dev/null @@ -1,31 +0,0 @@ -From d1a2fe7307e9cf2251d1f9a666c12d71d3f522d6 Mon Sep 17 00:00:00 2001 -From: Chad Smith -Date: Sat, 26 Jan 2019 15:06:42 +0000 -Subject: opennebula: exclude EPOCHREALTIME as known bash env variable with a - delta - -This branch is needed to allow cloud-init to sbuild on Ubuntu Disco. - -OpenNebula:parse_shell_config tries to do a comparison of bash -environment values, excluding expected environment variables which -are known to change. - -Bash on Ubuntu Disco surfaces a new EPOCHREALTIME environment variable -which wasn't in previous bash environments, this var needs to be -ignored by parse_shell_config too. - -LP: #1813383 - -Index: cloud-init-17.1/cloudinit/sources/DataSourceOpenNebula.py -=================================================================== ---- cloud-init-17.1.orig/cloudinit/sources/DataSourceOpenNebula.py -+++ cloud-init-17.1/cloudinit/sources/DataSourceOpenNebula.py -@@ -279,7 +279,7 @@ def parse_shell_config(content, keylist= - (output, _error) = util.subp(cmd, data=bcmd) - - # exclude vars in bash that change on their own or that we used -- excluded = ("RANDOM", "LINENO", "SECONDS", "_", "__v") -+ excluded = ("EPOCHREALTIME", "RANDOM", "LINENO", "SECONDS", "_", "__v") - preset = {} - ret = {} - target = None diff --git a/cloud-init-17.1-fix-local-ipv4-only.patch b/cloud-init-17.1-fix-local-ipv4-only.patch deleted file mode 100644 index c60be12..0000000 --- a/cloud-init-17.1-fix-local-ipv4-only.patch +++ /dev/null @@ -1,298 +0,0 @@ -From a16fb4e1e1379db61a1ee40513f2ad10c9b38ef9 Mon Sep 17 00:00:00 2001 -From: Chad Smith -Date: Tue, 31 Oct 2017 12:42:15 -0600 -Subject: [PATCH 4/4] EC2: Limit network config to fallback nic, fix local-ipv4 - only instances. - -VPC instances have the option to specific local only IPv4 addresses. Allow -Ec2Datasource to enable dhcp4 on instances even if local-ipv4s is -configured on an instance. - -Also limit network_configuration to only the primary (fallback) nic. - -LP: #1728152 -(cherry picked from commit eb292c18c3d83b9f7e5d1fd81b0e8aefaab0cc2d) ---- - cloudinit/sources/DataSourceEc2.py | 24 ++++- - tests/unittests/test_datasource/test_ec2.py | 136 ++++++++++++++++++++++++++-- - 2 files changed, 149 insertions(+), 11 deletions(-) - -diff --git a/cloudinit/sources/DataSourceEc2.py b/cloudinit/sources/DataSourceEc2.py -index 41367a8b..0ef22174 100644 ---- a/cloudinit/sources/DataSourceEc2.py -+++ b/cloudinit/sources/DataSourceEc2.py -@@ -64,6 +64,9 @@ class DataSourceEc2(sources.DataSource): - # Whether we want to get network configuration from the metadata service. - get_network_metadata = False - -+ # Track the discovered fallback nic for use in configuration generation. -+ fallback_nic = None -+ - def __init__(self, sys_cfg, distro, paths): - sources.DataSource.__init__(self, sys_cfg, distro, paths) - self.metadata_address = None -@@ -89,16 +92,18 @@ class DataSourceEc2(sources.DataSource): - elif self.cloud_platform == Platforms.NO_EC2_METADATA: - return False - -+ self.fallback_nic = net.find_fallback_nic() - if self.get_network_metadata: # Setup networking in init-local stage. - if util.is_FreeBSD(): - LOG.debug("FreeBSD doesn't support running dhclient with -sf") - return False -- dhcp_leases = dhcp.maybe_perform_dhcp_discovery() -+ dhcp_leases = dhcp.maybe_perform_dhcp_discovery(self.fallback_nic) - if not dhcp_leases: - # DataSourceEc2Local failed in init-local stage. DataSourceEc2 - # will still run in init-network stage. - return False - dhcp_opts = dhcp_leases[-1] -+ self.fallback_nic = dhcp_opts.get('interface') - net_params = {'interface': dhcp_opts.get('interface'), - 'ip': dhcp_opts.get('fixed-address'), - 'prefix_or_mask': dhcp_opts.get('subnet-mask'), -@@ -297,8 +302,13 @@ class DataSourceEc2(sources.DataSource): - - result = None - net_md = self.metadata.get('network') -+ # Limit network configuration to only the primary/fallback nic -+ macs_to_nics = { -+ net.get_interface_mac(self.fallback_nic): self.fallback_nic} - if isinstance(net_md, dict): -- result = convert_ec2_metadata_network_config(net_md) -+ result = convert_ec2_metadata_network_config( -+ net_md, macs_to_nics=macs_to_nics, -+ fallback_nic=self.fallback_nic) - else: - LOG.warning("unexpected metadata 'network' key not valid: %s", - net_md) -@@ -458,15 +468,18 @@ def _collect_platform_data(): - return data - - --def convert_ec2_metadata_network_config(network_md, macs_to_nics=None): -+def convert_ec2_metadata_network_config(network_md, macs_to_nics=None, -+ fallback_nic=None): - """Convert ec2 metadata to network config version 1 data dict. - - @param: network_md: 'network' portion of EC2 metadata. - generally formed as {"interfaces": {"macs": {}} where - 'macs' is a dictionary with mac address as key and contents like: - {"device-number": "0", "interface-id": "...", "local-ipv4s": ...} -- @param: macs_to_name: Optional dict mac addresses and the nic name. If -+ @param: macs_to_nics: Optional dict of mac addresses and nic names. If - not provided, get_interfaces_by_mac is called to get it from the OS. -+ @param: fallback_nic: Optionally provide the primary nic interface name. -+ This nic will be guaranteed to minimally have a dhcp4 configuration. - - @return A dict of network config version 1 based on the metadata and macs. - """ -@@ -480,7 +493,8 @@ def convert_ec2_metadata_network_config(network_md, macs_to_nics=None): - continue # Not a physical nic represented in metadata - nic_cfg = {'type': 'physical', 'name': nic_name, 'subnets': []} - nic_cfg['mac_address'] = mac -- if nic_metadata.get('public-ipv4s'): -+ if (nic_name == fallback_nic or nic_metadata.get('public-ipv4s') or -+ nic_metadata.get('local-ipv4s')): - nic_cfg['subnets'].append({'type': 'dhcp4'}) - if nic_metadata.get('ipv6s'): - nic_cfg['subnets'].append({'type': 'dhcp6'}) -diff --git a/tests/unittests/test_datasource/test_ec2.py b/tests/unittests/test_datasource/test_ec2.py -index a7301dbf..6af699a6 100644 ---- a/tests/unittests/test_datasource/test_ec2.py -+++ b/tests/unittests/test_datasource/test_ec2.py -@@ -51,6 +51,29 @@ DEFAULT_METADATA = { - "vpc-ipv4-cidr-block": "172.31.0.0/16", - "vpc-ipv4-cidr-blocks": "172.31.0.0/16", - "vpc-ipv6-cidr-blocks": "2600:1f16:aeb:b200::/56" -+ }, -+ "06:17:04:d7:26:0A": { -+ "device-number": "1", # Only IPv4 local config -+ "interface-id": "eni-e44ef49f", -+ "ipv4-associations": {"": "172.3.3.16"}, -+ "ipv6s": "", # No IPv6 config -+ "local-hostname": ("ip-172-3-3-16.us-east-2." -+ "compute.internal"), -+ "local-ipv4s": "172.3.3.16", -+ "mac": "06:17:04:d7:26:0A", -+ "owner-id": "950047163771", -+ "public-hostname": ("ec2-172-3-3-16.us-east-2." -+ "compute.amazonaws.com"), -+ "public-ipv4s": "", # No public ipv4 config -+ "security-group-ids": "sg-5a61d333", -+ "security-groups": "wide-open", -+ "subnet-id": "subnet-20b8565b", -+ "subnet-ipv4-cidr-block": "172.31.16.0/20", -+ "subnet-ipv6-cidr-blocks": "", -+ "vpc-id": "vpc-87e72bee", -+ "vpc-ipv4-cidr-block": "172.31.0.0/16", -+ "vpc-ipv4-cidr-blocks": "172.31.0.0/16", -+ "vpc-ipv6-cidr-blocks": "" - } - } - } -@@ -209,12 +232,20 @@ class TestEc2(test_helpers.HttprettyTestCase): - - @httpretty.activate - def test_network_config_property_returns_version_1_network_data(self): -- """network_config property returns network version 1 for metadata.""" -+ """network_config property returns network version 1 for metadata. -+ -+ Only one device is configured even when multiple exist in metadata. -+ """ - ds = self._setup_ds( - platform_data=self.valid_platform_data, - sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, - md=DEFAULT_METADATA) -- ds.get_data() -+ find_fallback_path = ( -+ 'cloudinit.sources.DataSourceEc2.net.find_fallback_nic') -+ with mock.patch(find_fallback_path) as m_find_fallback: -+ m_find_fallback.return_value = 'eth9' -+ ds.get_data() -+ - mac1 = '06:17:04:d7:26:09' # Defined in DEFAULT_METADATA - expected = {'version': 1, 'config': [ - {'mac_address': '06:17:04:d7:26:09', 'name': 'eth9', -@@ -222,9 +253,48 @@ class TestEc2(test_helpers.HttprettyTestCase): - 'type': 'physical'}]} - patch_path = ( - 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') -+ get_interface_mac_path = ( -+ 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') -+ with mock.patch(patch_path) as m_get_interfaces_by_mac: -+ with mock.patch(find_fallback_path) as m_find_fallback: -+ with mock.patch(get_interface_mac_path) as m_get_mac: -+ m_get_interfaces_by_mac.return_value = {mac1: 'eth9'} -+ m_find_fallback.return_value = 'eth9' -+ m_get_mac.return_value = mac1 -+ self.assertEqual(expected, ds.network_config) -+ -+ @httpretty.activate -+ def test_network_config_property_set_dhcp4_on_private_ipv4(self): -+ """network_config property configures dhcp4 on private ipv4 nics. -+ -+ Only one device is configured even when multiple exist in metadata. -+ """ -+ ds = self._setup_ds( -+ platform_data=self.valid_platform_data, -+ sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, -+ md=DEFAULT_METADATA) -+ find_fallback_path = ( -+ 'cloudinit.sources.DataSourceEc2.net.find_fallback_nic') -+ with mock.patch(find_fallback_path) as m_find_fallback: -+ m_find_fallback.return_value = 'eth9' -+ ds.get_data() -+ -+ mac1 = '06:17:04:d7:26:0A' # IPv4 only in DEFAULT_METADATA -+ expected = {'version': 1, 'config': [ -+ {'mac_address': '06:17:04:d7:26:0A', 'name': 'eth9', -+ 'subnets': [{'type': 'dhcp4'}], -+ 'type': 'physical'}]} -+ patch_path = ( -+ 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') -+ get_interface_mac_path = ( -+ 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') - with mock.patch(patch_path) as m_get_interfaces_by_mac: -- m_get_interfaces_by_mac.return_value = {mac1: 'eth9'} -- self.assertEqual(expected, ds.network_config) -+ with mock.patch(find_fallback_path) as m_find_fallback: -+ with mock.patch(get_interface_mac_path) as m_get_mac: -+ m_get_interfaces_by_mac.return_value = {mac1: 'eth9'} -+ m_find_fallback.return_value = 'eth9' -+ m_get_mac.return_value = mac1 -+ self.assertEqual(expected, ds.network_config) - - def test_network_config_property_is_cached_in_datasource(self): - """network_config property is cached in DataSourceEc2.""" -@@ -321,9 +391,11 @@ class TestEc2(test_helpers.HttprettyTestCase): - - @httpretty.activate - @mock.patch('cloudinit.net.EphemeralIPv4Network') -+ @mock.patch('cloudinit.net.find_fallback_nic') - @mock.patch('cloudinit.net.dhcp.maybe_perform_dhcp_discovery') - @mock.patch('cloudinit.sources.DataSourceEc2.util.is_FreeBSD') -- def test_ec2_local_performs_dhcp_on_non_bsd(self, m_is_bsd, m_dhcp, m_net): -+ def test_ec2_local_performs_dhcp_on_non_bsd(self, m_is_bsd, m_dhcp, -+ m_fallback_nic, m_net): - """Ec2Local returns True for valid platform data on non-BSD with dhcp. - - DataSourceEc2Local will setup initial IPv4 network via dhcp discovery. -@@ -331,6 +403,7 @@ class TestEc2(test_helpers.HttprettyTestCase): - When the platform data is valid, return True. - """ - -+ m_fallback_nic.return_value = 'eth9' - m_is_bsd.return_value = False - m_dhcp.return_value = [{ - 'interface': 'eth9', 'fixed-address': '192.168.2.9', -@@ -344,7 +417,7 @@ class TestEc2(test_helpers.HttprettyTestCase): - - ret = ds.get_data() - self.assertTrue(ret) -- m_dhcp.assert_called_once_with() -+ m_dhcp.assert_called_once_with('eth9') - m_net.assert_called_once_with( - broadcast='192.168.2.255', interface='eth9', ip='192.168.2.9', - prefix_or_mask='255.255.255.0', router='192.168.2.1') -@@ -389,6 +462,57 @@ class TestConvertEc2MetadataNetworkConfig(test_helpers.CiTestCase): - ec2.convert_ec2_metadata_network_config( - network_metadata_ipv6, macs_to_nics)) - -+ def test_convert_ec2_metadata_network_config_handles_local_dhcp4(self): -+ """Config dhcp4 when there are no public addresses in public-ipv4s.""" -+ macs_to_nics = {self.mac1: 'eth9'} -+ network_metadata_ipv6 = copy.deepcopy(self.network_metadata) -+ nic1_metadata = ( -+ network_metadata_ipv6['interfaces']['macs'][self.mac1]) -+ nic1_metadata['local-ipv4s'] = '172.3.3.15' -+ nic1_metadata.pop('public-ipv4s') -+ expected = {'version': 1, 'config': [ -+ {'mac_address': self.mac1, 'type': 'physical', -+ 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} -+ self.assertEqual( -+ expected, -+ ec2.convert_ec2_metadata_network_config( -+ network_metadata_ipv6, macs_to_nics)) -+ -+ def test_convert_ec2_metadata_network_config_handles_absent_dhcp4(self): -+ """Config dhcp4 on fallback_nic when there are no ipv4 addresses.""" -+ macs_to_nics = {self.mac1: 'eth9'} -+ network_metadata_ipv6 = copy.deepcopy(self.network_metadata) -+ nic1_metadata = ( -+ network_metadata_ipv6['interfaces']['macs'][self.mac1]) -+ nic1_metadata['public-ipv4s'] = '' -+ -+ # When no ipv4 or ipv6 content but fallback_nic set, set dhcp4 config. -+ expected = {'version': 1, 'config': [ -+ {'mac_address': self.mac1, 'type': 'physical', -+ 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} -+ self.assertEqual( -+ expected, -+ ec2.convert_ec2_metadata_network_config( -+ network_metadata_ipv6, macs_to_nics, fallback_nic='eth9')) -+ -+ def test_convert_ec2_metadata_network_config_handles_local_v4_and_v6(self): -+ """When dhcp6 is public and dhcp4 is set to local enable both.""" -+ macs_to_nics = {self.mac1: 'eth9'} -+ network_metadata_both = copy.deepcopy(self.network_metadata) -+ nic1_metadata = ( -+ network_metadata_both['interfaces']['macs'][self.mac1]) -+ nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' -+ nic1_metadata.pop('public-ipv4s') -+ nic1_metadata['local-ipv4s'] = '10.0.0.42' # Local ipv4 only on vpc -+ expected = {'version': 1, 'config': [ -+ {'mac_address': self.mac1, 'type': 'physical', -+ 'name': 'eth9', -+ 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}]}]} -+ self.assertEqual( -+ expected, -+ ec2.convert_ec2_metadata_network_config( -+ network_metadata_both, macs_to_nics)) -+ - def test_convert_ec2_metadata_network_config_handles_dhcp4_and_dhcp6(self): - """Config both dhcp4 and dhcp6 when both vpc-ipv6 and ipv4 exists.""" - macs_to_nics = {self.mac1: 'eth9'} --- -2.14.3 - diff --git a/cloud-init-17.1-nm-controlled.patch b/cloud-init-17.1-nm-controlled.patch deleted file mode 100644 index 668d63e..0000000 --- a/cloud-init-17.1-nm-controlled.patch +++ /dev/null @@ -1,291 +0,0 @@ -Index: cloud-init-17.1/cloudinit/net/sysconfig.py -=================================================================== ---- cloud-init-17.1.orig/cloudinit/net/sysconfig.py -+++ cloud-init-17.1/cloudinit/net/sysconfig.py -@@ -230,7 +230,6 @@ class Renderer(renderer.Renderer): - iface_defaults = tuple([ - ('ONBOOT', True), - ('USERCTL', False), -- ('NM_CONTROLLED', False), - ('BOOTPROTO', 'none'), - ]) - -Index: cloud-init-17.1/tests/unittests/test_net.py -=================================================================== ---- cloud-init-17.1.orig/tests/unittests/test_net.py -+++ cloud-init-17.1/tests/unittests/test_net.py -@@ -146,7 +146,6 @@ GATEWAY=172.19.3.254 - HWADDR=fa:16:3e:ed:9a:59 - IPADDR=172.19.1.34 - NETMASK=255.255.252.0 --NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no -@@ -214,7 +213,6 @@ IPADDR=172.19.1.34 - IPADDR1=10.0.0.10 - NETMASK=255.255.252.0 - NETMASK1=255.255.255.0 --NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no -@@ -304,7 +302,6 @@ IPV6ADDR_SECONDARIES="2001:DB9::10/64 20 - IPV6INIT=yes - IPV6_DEFAULTGW=2001:DB8::1 - NETMASK=255.255.252.0 --NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no -@@ -428,7 +425,6 @@ NETWORK_CONFIGS = { - BOOTPROTO=none - DEVICE=eth1 - HWADDR=cf:d6:af:48:e8:80 -- NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no"""), -@@ -440,7 +436,6 @@ NETWORK_CONFIGS = { - HWADDR=c0:d6:9f:2c:e8:80 - IPADDR=192.168.21.3 - NETMASK=255.255.255.0 -- NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no"""), -@@ -552,7 +547,6 @@ NETWORK_CONFIGS = { - IPV6ADDR=2001:1::1/64 - IPV6INIT=yes - NETMASK=255.255.255.0 -- NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no -@@ -794,14 +788,12 @@ pre-down route del -net 10.0.0.0 netmask - DHCPV6C=yes - IPV6INIT=yes - MACADDR=aa:bb:cc:dd:ee:ff -- NM_CONTROLLED=no - ONBOOT=yes - TYPE=Bond - USERCTL=no"""), - 'ifcfg-bond0.200': textwrap.dedent("""\ - BOOTPROTO=dhcp - DEVICE=bond0.200 -- NM_CONTROLLED=no - ONBOOT=yes - PHYSDEV=bond0 - TYPE=Ethernet -@@ -817,7 +809,6 @@ pre-down route del -net 10.0.0.0 netmask - IPV6INIT=yes - IPV6_DEFAULTGW=2001:4800:78ff:1b::1 - NETMASK=255.255.255.0 -- NM_CONTROLLED=no - ONBOOT=yes - PRIO=22 - STP=off -@@ -827,7 +818,6 @@ pre-down route del -net 10.0.0.0 netmask - BOOTPROTO=none - DEVICE=eth0 - HWADDR=c0:d6:9f:2c:e8:80 -- NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no"""), -@@ -841,7 +831,6 @@ pre-down route del -net 10.0.0.0 netmask - MTU=1500 - NETMASK=255.255.255.0 - NETMASK1=255.255.255.0 -- NM_CONTROLLED=no - ONBOOT=yes - PHYSDEV=eth0 - TYPE=Ethernet -@@ -852,7 +841,6 @@ pre-down route del -net 10.0.0.0 netmask - DEVICE=eth1 - HWADDR=aa:d6:9f:2c:e8:80 - MASTER=bond0 -- NM_CONTROLLED=no - ONBOOT=yes - SLAVE=yes - TYPE=Ethernet -@@ -862,7 +850,6 @@ pre-down route del -net 10.0.0.0 netmask - DEVICE=eth2 - HWADDR=c0:bb:9f:2c:e8:80 - MASTER=bond0 -- NM_CONTROLLED=no - ONBOOT=yes - SLAVE=yes - TYPE=Ethernet -@@ -872,7 +859,6 @@ pre-down route del -net 10.0.0.0 netmask - BRIDGE=br0 - DEVICE=eth3 - HWADDR=66:bb:9f:2c:e8:80 -- NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no"""), -@@ -881,7 +867,6 @@ pre-down route del -net 10.0.0.0 netmask - BRIDGE=br0 - DEVICE=eth4 - HWADDR=98:bb:9f:2c:e8:80 -- NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no"""), -@@ -889,7 +874,6 @@ pre-down route del -net 10.0.0.0 netmask - BOOTPROTO=dhcp - DEVICE=eth5 - HWADDR=98:bb:9f:2c:e8:8a -- NM_CONTROLLED=no - ONBOOT=no - TYPE=Ethernet - USERCTL=no""") -@@ -1171,7 +1155,6 @@ pre-down route del -net 10.0.0.0 netmask - IPV6INIT=yes - NETMASK=255.255.255.0 - NETMASK1=255.255.255.0 -- NM_CONTROLLED=no - ONBOOT=yes - TYPE=Bond - USERCTL=no -@@ -1181,7 +1164,6 @@ pre-down route del -net 10.0.0.0 netmask - DEVICE=bond0s0 - HWADDR=aa:bb:cc:dd:e8:00 - MASTER=bond0 -- NM_CONTROLLED=no - ONBOOT=yes - SLAVE=yes - TYPE=Ethernet -@@ -1199,7 +1181,6 @@ pre-down route del -net 10.0.0.0 netmask - DEVICE=bond0s1 - HWADDR=aa:bb:cc:dd:e8:01 - MASTER=bond0 -- NM_CONTROLLED=no - ONBOOT=yes - SLAVE=yes - TYPE=Ethernet -@@ -1236,7 +1217,6 @@ pre-down route del -net 10.0.0.0 netmask - BOOTPROTO=none - DEVICE=en0 - HWADDR=aa:bb:cc:dd:e8:00 -- NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no"""), -@@ -1252,7 +1232,6 @@ pre-down route del -net 10.0.0.0 netmask - IPV6_DEFAULTGW=2001:1::1 - NETMASK=255.255.255.0 - NETMASK1=255.255.255.0 -- NM_CONTROLLED=no - ONBOOT=yes - PHYSDEV=en0 - TYPE=Ethernet -@@ -1293,7 +1272,6 @@ pre-down route del -net 10.0.0.0 netmask - DEVICE=br0 - IPADDR=192.168.2.2 - NETMASK=255.255.255.0 -- NM_CONTROLLED=no - ONBOOT=yes - PRIO=22 - STP=off -@@ -1307,7 +1285,6 @@ pre-down route del -net 10.0.0.0 netmask - HWADDR=52:54:00:12:34:00 - IPV6ADDR=2001:1::100/96 - IPV6INIT=yes -- NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no -@@ -1319,7 +1296,6 @@ pre-down route del -net 10.0.0.0 netmask - HWADDR=52:54:00:12:34:01 - IPV6ADDR=2001:1::101/96 - IPV6INIT=yes -- NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no -@@ -1393,7 +1369,6 @@ pre-down route del -net 10.0.0.0 netmask - HWADDR=52:54:00:12:34:00 - IPADDR=192.168.1.2 - NETMASK=255.255.255.0 -- NM_CONTROLLED=no - ONBOOT=no - TYPE=Ethernet - USERCTL=no -@@ -1403,7 +1378,6 @@ pre-down route del -net 10.0.0.0 netmask - DEVICE=eth1 - HWADDR=52:54:00:12:34:aa - MTU=1480 -- NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no -@@ -1412,7 +1386,6 @@ pre-down route del -net 10.0.0.0 netmask - BOOTPROTO=none - DEVICE=eth2 - HWADDR=52:54:00:12:34:ff -- NM_CONTROLLED=no - ONBOOT=no - TYPE=Ethernet - USERCTL=no -@@ -1685,7 +1658,6 @@ class TestSysConfigRendering(CiTestCase) - BOOTPROTO=dhcp - DEVICE=eth1000 - HWADDR=07-1C-C6-75-A4-BE --NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no -@@ -1805,7 +1777,6 @@ GATEWAY=10.0.2.2 - HWADDR=52:54:00:12:34:00 - IPADDR=10.0.2.15 - NETMASK=255.255.255.0 --NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no -@@ -1826,7 +1797,6 @@ USERCTL=no - # - BOOTPROTO=dhcp - DEVICE=eth0 --NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no -Index: cloud-init-17.1/tests/unittests/test_distros/test_netconfig.py -=================================================================== ---- cloud-init-17.1.orig/tests/unittests/test_distros/test_netconfig.py -+++ cloud-init-17.1/tests/unittests/test_distros/test_netconfig.py -@@ -481,7 +481,6 @@ DEVICE=eth0 - GATEWAY=192.168.1.254 - IPADDR=192.168.1.5 - NETMASK=255.255.255.0 --NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no -@@ -498,7 +497,6 @@ USERCTL=no - # - BOOTPROTO=dhcp - DEVICE=eth1 --NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no -@@ -632,7 +630,6 @@ DEVICE=eth0 - IPV6ADDR=2607:f0d0:1002:0011::2/64 - IPV6INIT=yes - IPV6_DEFAULTGW=2607:f0d0:1002:0011::1 --NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no -@@ -647,7 +644,6 @@ USERCTL=no - # - BOOTPROTO=dhcp - DEVICE=eth1 --NM_CONTROLLED=no - ONBOOT=yes - TYPE=Ethernet - USERCTL=no diff --git a/cloud-init-17.1-no-override-default-network.patch b/cloud-init-17.1-no-override-default-network.patch deleted file mode 100644 index 7c21c83..0000000 --- a/cloud-init-17.1-no-override-default-network.patch +++ /dev/null @@ -1,200 +0,0 @@ -diff -rup cloud-init-17.1.orig/cloudinit/net/sysconfig.py cloud-init-17.1/cloudinit/net/sysconfig.py ---- cloud-init-17.1.orig/cloudinit/net/sysconfig.py 2018-03-26 19:22:35.693111559 +0200 -+++ cloud-init-17.1/cloudinit/net/sysconfig.py 2018-03-26 23:47:41.424803588 +0200 -@@ -586,7 +586,17 @@ class Renderer(renderer.Renderer): - - # always write /etc/sysconfig/network configuration - sysconfig_path = util.target_path(target, "etc/sysconfig/network") -- netcfg = [_make_header(), 'NETWORKING=yes'] -+ # Make sure that existing lines, other than overriding ones, remain -+ netcfg = [] -+ for line in util.load_file(sysconfig_path, quiet=True).split('\n'): -+ if 'cloud-init' in line: -+ break -+ if not line.startswith(('NETWORKING=', -+ 'IPV6_AUTOCONF=', -+ 'NETWORKING_IPV6=')): -+ netcfg.append(line) -+ # Now generate the cloud-init portion of sysconfig/network -+ netcfg.extend([_make_header(), 'NETWORKING=yes']) - if network_state.use_ipv6: - netcfg.append('NETWORKING_IPV6=yes') - netcfg.append('IPV6_AUTOCONF=no') -diff -rup cloud-init-17.1.orig/tests/unittests/test_distros/test_netconfig.py cloud-init-17.1/tests/unittests/test_distros/test_netconfig.py ---- cloud-init-17.1.orig/tests/unittests/test_distros/test_netconfig.py 2018-03-26 19:22:35.717111557 +0200 -+++ cloud-init-17.1/tests/unittests/test_distros/test_netconfig.py 2018-03-26 22:08:25.008717651 +0200 -@@ -384,6 +384,82 @@ hn0: flags=8843 +Date: Fri, 21 Feb 2020 10:52:26 +0100 +Subject: [PATCH] Disable LXD tests + +Signed-off-by: Eduardo Otubo +--- + tests/cloud_tests/platforms/__init__.py | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/tests/cloud_tests/platforms/__init__.py b/tests/cloud_tests/platforms/__init__.py +index 6a410b84..2076d1c7 100644 +--- a/tests/cloud_tests/platforms/__init__.py ++++ b/tests/cloud_tests/platforms/__init__.py +@@ -3,14 +3,12 @@ + """Main init.""" + + from .ec2 import platform as ec2 +-from .lxd import platform as lxd + from .nocloudkvm import platform as nocloudkvm + from .azurecloud import platform as azurecloud + + PLATFORMS = { + 'ec2': ec2.EC2Platform, + 'nocloud-kvm': nocloudkvm.NoCloudKVMPlatform, +- 'lxd': lxd.LXDPlatform, + 'azurecloud': azurecloud.AzureCloudPlatform, + } + +-- +2.17.2 + diff --git a/cloud-init-19.4-nm-controlled.patch b/cloud-init-19.4-nm-controlled.patch new file mode 100644 index 0000000..1f7b26d --- /dev/null +++ b/cloud-init-19.4-nm-controlled.patch @@ -0,0 +1,540 @@ +From 98657d64a1d40769b31fcf375ebb1ea0b373350c Mon Sep 17 00:00:00 2001 +From: Eduardo Otubo +Date: Fri, 21 Feb 2020 11:10:09 +0100 +Subject: [PATCH] Do not write NM_CONTROLLED=no in generated interface config + files + +Signed-off-by: Eduardo Otubo +--- + cloudinit/net/sysconfig.py | 1 - + .../unittests/test_distros/test_netconfig.py | 8 --- + tests/unittests/test_net.py | 55 ------------------- + 3 files changed, 64 deletions(-) + +diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py +index 310cdf01..8bd7e887 100644 +--- a/cloudinit/net/sysconfig.py ++++ b/cloudinit/net/sysconfig.py +@@ -272,7 +272,6 @@ class Renderer(renderer.Renderer): + iface_defaults = tuple([ + ('ONBOOT', True), + ('USERCTL', False), +- ('NM_CONTROLLED', False), + ('BOOTPROTO', 'none'), + ('STARTMODE', 'auto'), + ]) +diff --git a/tests/unittests/test_distros/test_netconfig.py b/tests/unittests/test_distros/test_netconfig.py +index 67209955..1df3bfb5 100644 +--- a/tests/unittests/test_distros/test_netconfig.py ++++ b/tests/unittests/test_distros/test_netconfig.py +@@ -466,7 +466,6 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase): + GATEWAY=192.168.1.254 + IPADDR=192.168.1.5 + NETMASK=255.255.255.0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -475,7 +474,6 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase): + self.ifcfg_path('eth1'): dedent("""\ + BOOTPROTO=dhcp + DEVICE=eth1 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -500,7 +498,6 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase): + IPV6ADDR=2607:f0d0:1002:0011::2/64 + IPV6INIT=yes + IPV6_DEFAULTGW=2607:f0d0:1002:0011::1 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -509,7 +506,6 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase): + self.ifcfg_path('eth1'): dedent("""\ + BOOTPROTO=dhcp + DEVICE=eth1 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -562,7 +558,6 @@ class TestNetCfgDistroOpensuse(TestNetCfgDistroBase): + GATEWAY=192.168.1.254 + IPADDR=192.168.1.5 + NETMASK=255.255.255.0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -571,7 +566,6 @@ class TestNetCfgDistroOpensuse(TestNetCfgDistroBase): + self.ifcfg_path('eth1'): dedent("""\ + BOOTPROTO=dhcp + DEVICE=eth1 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -593,7 +587,6 @@ class TestNetCfgDistroOpensuse(TestNetCfgDistroBase): + IPV6ADDR=2607:f0d0:1002:0011::2/64 + IPV6INIT=yes + IPV6_DEFAULTGW=2607:f0d0:1002:0011::1 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -602,7 +595,6 @@ class TestNetCfgDistroOpensuse(TestNetCfgDistroBase): + self.ifcfg_path('eth1'): dedent("""\ + BOOTPROTO=dhcp + DEVICE=eth1 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py +index 01119e0a..40427461 100644 +--- a/tests/unittests/test_net.py ++++ b/tests/unittests/test_net.py +@@ -496,7 +496,6 @@ GATEWAY=172.19.3.254 + HWADDR=fa:16:3e:ed:9a:59 + IPADDR=172.19.1.34 + NETMASK=255.255.252.0 +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -530,7 +529,6 @@ GATEWAY=172.19.3.254 + HWADDR=fa:16:3e:ed:9a:59 + IPADDR=172.19.1.34 + NETMASK=255.255.252.0 +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -600,7 +598,6 @@ IPADDR=172.19.1.34 + IPADDR1=10.0.0.10 + NETMASK=255.255.252.0 + NETMASK1=255.255.255.0 +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -636,7 +633,6 @@ IPADDR=172.19.1.34 + IPADDR1=10.0.0.10 + NETMASK=255.255.252.0 + NETMASK1=255.255.255.0 +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -731,7 +727,6 @@ IPV6ADDR_SECONDARIES="2001:DB9::10/64 2001:DB10::10/64" + IPV6INIT=yes + IPV6_DEFAULTGW=2001:DB8::1 + NETMASK=255.255.252.0 +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -772,7 +767,6 @@ IPV6ADDR_SECONDARIES="2001:DB9::10/64 2001:DB10::10/64" + IPV6INIT=yes + IPV6_DEFAULTGW=2001:DB8::1 + NETMASK=255.255.252.0 +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -889,7 +883,6 @@ NETWORK_CONFIGS = { + BOOTPROTO=none + DEVICE=eth1 + HWADDR=cf:d6:af:48:e8:80 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -907,7 +900,6 @@ NETWORK_CONFIGS = { + IPADDR=192.168.21.3 + NETMASK=255.255.255.0 + METRIC=10000 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -1022,7 +1014,6 @@ NETWORK_CONFIGS = { + IPV6ADDR=2001:1::1/64 + IPV6INIT=yes + NETMASK=255.255.255.0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -1062,7 +1053,6 @@ NETWORK_CONFIGS = { + DHCPV6C=yes + IPV6INIT=yes + DEVICE=iface0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -1111,7 +1101,6 @@ NETWORK_CONFIGS = { + IPV6INIT=yes + IPV6_FORCE_ACCEPT_RA=yes + DEVICE=iface0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -1160,7 +1149,6 @@ NETWORK_CONFIGS = { + IPV6INIT=yes + IPV6_FORCE_ACCEPT_RA=no + DEVICE=iface0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -1199,7 +1187,6 @@ NETWORK_CONFIGS = { + IPV6_AUTOCONF=yes + IPV6INIT=yes + DEVICE=iface0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -1240,7 +1227,6 @@ NETWORK_CONFIGS = { + IPV6_AUTOCONF=yes + IPV6INIT=yes + DEVICE=iface0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -1281,7 +1267,6 @@ NETWORK_CONFIGS = { + IPV6INIT=yes + IPV6_FORCE_ACCEPT_RA=yes + DEVICE=iface0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -1491,7 +1476,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true + DHCPV6C=yes + IPV6INIT=yes + MACADDR=aa:bb:cc:dd:ee:ff +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Bond +@@ -1500,7 +1484,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true + BOOTPROTO=dhcp + DEVICE=bond0.200 + DHCLIENT_SET_DEFAULT_ROUTE=no +- NM_CONTROLLED=no + ONBOOT=yes + PHYSDEV=bond0 + STARTMODE=auto +@@ -1519,7 +1502,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true + IPV6_DEFAULTGW=2001:4800:78ff:1b::1 + MACADDR=bb:bb:bb:bb:bb:aa + NETMASK=255.255.255.0 +- NM_CONTROLLED=no + ONBOOT=yes + PRIO=22 + STARTMODE=auto +@@ -1530,7 +1512,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true + BOOTPROTO=none + DEVICE=eth0 + HWADDR=c0:d6:9f:2c:e8:80 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -1548,7 +1529,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true + MTU=1500 + NETMASK=255.255.255.0 + NETMASK1=255.255.255.0 +- NM_CONTROLLED=no + ONBOOT=yes + PHYSDEV=eth0 + STARTMODE=auto +@@ -1560,7 +1540,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true + DEVICE=eth1 + HWADDR=aa:d6:9f:2c:e8:80 + MASTER=bond0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + SLAVE=yes +@@ -1571,7 +1550,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true + DEVICE=eth2 + HWADDR=c0:bb:9f:2c:e8:80 + MASTER=bond0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + SLAVE=yes +@@ -1582,7 +1560,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true + BRIDGE=br0 + DEVICE=eth3 + HWADDR=66:bb:9f:2c:e8:80 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -1592,7 +1569,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true + BRIDGE=br0 + DEVICE=eth4 + HWADDR=98:bb:9f:2c:e8:80 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -1602,7 +1578,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true + DEVICE=eth5 + DHCLIENT_SET_DEFAULT_ROUTE=no + HWADDR=98:bb:9f:2c:e8:8a +- NM_CONTROLLED=no + ONBOOT=no + STARTMODE=manual + TYPE=Ethernet +@@ -1614,7 +1589,6 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true + IPADDR=192.168.200.7 + MTU=9000 + NETMASK=255.255.255.0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=InfiniBand +@@ -2027,7 +2001,6 @@ iface bond0 inet6 static + MTU=9000 + NETMASK=255.255.255.0 + NETMASK1=255.255.255.0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Bond +@@ -2038,7 +2011,6 @@ iface bond0 inet6 static + DEVICE=bond0s0 + HWADDR=aa:bb:cc:dd:e8:00 + MASTER=bond0 +- NM_CONTROLLED=no + ONBOOT=yes + SLAVE=yes + STARTMODE=auto +@@ -2055,7 +2027,6 @@ iface bond0 inet6 static + DEVICE=bond0s1 + HWADDR=aa:bb:cc:dd:e8:01 + MASTER=bond0 +- NM_CONTROLLED=no + ONBOOT=yes + SLAVE=yes + STARTMODE=auto +@@ -2088,7 +2059,6 @@ iface bond0 inet6 static + MTU=9000 + NETMASK=255.255.255.0 + NETMASK1=255.255.255.0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Bond +@@ -2099,7 +2069,6 @@ iface bond0 inet6 static + DEVICE=bond0s0 + HWADDR=aa:bb:cc:dd:e8:00 + MASTER=bond0 +- NM_CONTROLLED=no + ONBOOT=yes + SLAVE=yes + STARTMODE=auto +@@ -2122,7 +2091,6 @@ iface bond0 inet6 static + DEVICE=bond0s1 + HWADDR=aa:bb:cc:dd:e8:01 + MASTER=bond0 +- NM_CONTROLLED=no + ONBOOT=yes + SLAVE=yes + STARTMODE=auto +@@ -2161,7 +2129,6 @@ iface bond0 inet6 static + BOOTPROTO=none + DEVICE=en0 + HWADDR=aa:bb:cc:dd:e8:00 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -2180,7 +2147,6 @@ iface bond0 inet6 static + MTU=2222 + NETMASK=255.255.255.0 + NETMASK1=255.255.255.0 +- NM_CONTROLLED=no + ONBOOT=yes + PHYSDEV=en0 + STARTMODE=auto +@@ -2222,7 +2188,6 @@ iface bond0 inet6 static + DEVICE=br0 + IPADDR=192.168.2.2 + NETMASK=255.255.255.0 +- NM_CONTROLLED=no + ONBOOT=yes + PRIO=22 + STARTMODE=auto +@@ -2238,7 +2203,6 @@ iface bond0 inet6 static + IPADDR6=2001:1::100/96 + IPV6ADDR=2001:1::100/96 + IPV6INIT=yes +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -2252,7 +2216,6 @@ iface bond0 inet6 static + IPADDR6=2001:1::101/96 + IPV6ADDR=2001:1::101/96 + IPV6INIT=yes +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -2327,7 +2290,6 @@ iface bond0 inet6 static + HWADDR=52:54:00:12:34:00 + IPADDR=192.168.1.2 + NETMASK=255.255.255.0 +- NM_CONTROLLED=no + ONBOOT=no + STARTMODE=manual + TYPE=Ethernet +@@ -2338,7 +2300,6 @@ iface bond0 inet6 static + DEVICE=eth1 + HWADDR=52:54:00:12:34:aa + MTU=1480 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -2348,7 +2309,6 @@ iface bond0 inet6 static + BOOTPROTO=none + DEVICE=eth2 + HWADDR=52:54:00:12:34:ff +- NM_CONTROLLED=no + ONBOOT=no + STARTMODE=manual + TYPE=Ethernet +@@ -2766,7 +2726,6 @@ class TestRhelSysConfigRendering(CiTestCase): + BOOTPROTO=dhcp + DEVICE=eth1000 + HWADDR=07-1c-c6-75-a4-be +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -2888,7 +2847,6 @@ GATEWAY=10.0.2.2 + HWADDR=52:54:00:12:34:00 + IPADDR=10.0.2.15 + NETMASK=255.255.255.0 +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -2920,7 +2878,6 @@ HWADDR=fa:16:3e:25:b4:59 + IPADDR=51.68.89.122 + MTU=1500 + NETMASK=255.255.240.0 +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -2935,7 +2892,6 @@ DEVICE=eth1 + DHCLIENT_SET_DEFAULT_ROUTE=no + HWADDR=fa:16:3e:b1:ca:29 + MTU=9000 +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -2961,7 +2917,6 @@ USERCTL=no + # + BOOTPROTO=dhcp + DEVICE=eth0 +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -3168,7 +3123,6 @@ USERCTL=no + IPV6INIT=yes + IPV6_DEFAULTGW=2001:db8::1 + NETMASK=255.255.255.0 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -3194,7 +3148,6 @@ USERCTL=no + 'ifcfg-eno1': textwrap.dedent("""\ + BOOTPROTO=none + DEVICE=eno1 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -3206,7 +3159,6 @@ USERCTL=no + IPADDR=192.6.1.9 + MTU=1495 + NETMASK=255.255.255.0 +- NM_CONTROLLED=no + ONBOOT=yes + PHYSDEV=eno1 + STARTMODE=auto +@@ -3238,7 +3190,6 @@ USERCTL=no + IPADDR=10.101.8.65 + MTU=1334 + NETMASK=255.255.255.192 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Bond +@@ -3249,7 +3200,6 @@ USERCTL=no + BOOTPROTO=none + DEVICE=enp0s0 + MASTER=bond0 +- NM_CONTROLLED=no + ONBOOT=yes + SLAVE=yes + STARTMODE=auto +@@ -3261,7 +3211,6 @@ USERCTL=no + BOOTPROTO=none + DEVICE=enp0s1 + MASTER=bond0 +- NM_CONTROLLED=no + ONBOOT=yes + SLAVE=yes + STARTMODE=auto +@@ -3286,7 +3235,6 @@ USERCTL=no + DEVICE=eno1 + HWADDR=07-1c-c6-75-a4-be + METRIC=100 +- NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -3386,7 +3334,6 @@ class TestOpenSuseSysConfigRendering(CiTestCase): + BOOTPROTO=dhcp + DEVICE=eth1000 + HWADDR=07-1c-c6-75-a4-be +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -3508,7 +3455,6 @@ GATEWAY=10.0.2.2 + HWADDR=52:54:00:12:34:00 + IPADDR=10.0.2.15 + NETMASK=255.255.255.0 +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +@@ -3538,7 +3484,6 @@ USERCTL=no + # + BOOTPROTO=dhcp + DEVICE=eth0 +-NM_CONTROLLED=no + ONBOOT=yes + STARTMODE=auto + TYPE=Ethernet +-- +2.17.2 + diff --git a/cloud-init-19.4-no-override-default-network.patch b/cloud-init-19.4-no-override-default-network.patch new file mode 100644 index 0000000..b7934ba --- /dev/null +++ b/cloud-init-19.4-no-override-default-network.patch @@ -0,0 +1,36 @@ +From 674873573abf2b6e10b09d533a58437c35d508f8 Mon Sep 17 00:00:00 2001 +From: Eduardo Otubo +Date: Fri, 21 Feb 2020 11:40:34 +0100 +Subject: [PATCH] Don't override default network configuration + +Signed-off-by: Eduardo Otubo +--- + cloudinit/net/sysconfig.py | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py +index 310cdf01..87b8f743 100644 +--- a/cloudinit/net/sysconfig.py ++++ b/cloudinit/net/sysconfig.py +@@ -755,7 +755,17 @@ class Renderer(renderer.Renderer): + # Distros configuring /etc/sysconfig/network as a file e.g. Centos + if sysconfig_path.endswith('network'): + util.ensure_dir(os.path.dirname(sysconfig_path)) +- netcfg = [_make_header(), 'NETWORKING=yes'] ++ # Make sure that existing lines, other than overriding ones, remain ++ netcfg = [] ++ for line in util.load_file(sysconfig_path, quiet=True).split('\n'): ++ if 'cloud-init' in line: ++ break ++ if not line.startswith(('NETWORKING=', ++ 'IPV6_AUTOCONF=', ++ 'NETWORKING_IPV6=')): ++ netcfg.append(line) ++ # Now generate the cloud-init portion of sysconfig/network ++ netcfg.extend([_make_header(), 'NETWORKING=yes']) + if network_state.use_ipv6: + netcfg.append('NETWORKING_IPV6=yes') + netcfg.append('IPV6_AUTOCONF=no') +-- +2.17.2 + diff --git a/cloud-init.spec b/cloud-init.spec index f8fb0f7..07047bf 100644 --- a/cloud-init.spec +++ b/cloud-init.spec @@ -1,6 +1,6 @@ Name: cloud-init -Version: 17.1 -Release: 15%{?dist} +Version: 19.4 +Release: 1%{?dist} Summary: Cloud instance init scripts License: ASL 2.0 or GPLv3 URL: http://launchpad.net/cloud-init @@ -9,25 +9,15 @@ Source0: https://launchpad.net/cloud-init/trunk/%{version}/+download/%{na Source1: cloud-init-tmpfiles.conf # Disable tests that require pylxd, which we don't have on Fedora -Patch1: cloud-init-17.1-disable-lxd-tests.patch +Patch1: cloud-init-19.4-disable-lxd-tests.patch # Do not write NM_CONTROLLED=no in generated interface config files # https://bugzilla.redhat.com/show_bug.cgi?id=1385172 -Patch2: cloud-init-17.1-nm-controlled.patch +Patch2: cloud-init-19.4-nm-controlled.patch # Keep old properties in /etc/sysconfig/network # https://bugzilla.redhat.com/show_bug.cgi?id=1558641 -Patch3: cloud-init-17.1-no-override-default-network.patch - -# Enable dhcp for interfaces on EC2 instances with only local addresses. -# https://bugzilla.redhat.com/show_bug.cgi?id=1569321 -Patch4: cloud-init-17.1-fix-local-ipv4-only.patch - -# opennebula: exclude EPOCHREALTIME as known bash env variable with a delta. -Patch5: cloud-init-17.1-exclude_EPOCHREALTIME.patch - -# platform.dist has been removed in Pyton 3.8. -Patch6: cloud-init-17.1-deprecated_platform_dist.patch +Patch3: cloud-init-19.4-no-override-default-network.patch BuildArch: noarch @@ -167,6 +157,10 @@ nosetests-%{python3_version} tests/unittests/ %changelog +* Fri Feb 14 2020 Eduardo Otubo - 19.4-1 +- Updated to 19.4 +- Rebasing the Fedora specific patches but removing patches that don't apply anymore + * Tue Jan 28 2020 Fedora Release Engineering - 17.1-15 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild diff --git a/sources b/sources index 2670862..9d978cc 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cloud-init-17.1.tar.gz) = 988cae4291c8d6a5bce012b78d651c602c02ad38c3790e9ed9aa7c815ae84c98767718ab9b0d346ddbc9c83cb886d455590128af750183618c0bf0f0c5a79564 +SHA512 (cloud-init-19.4.tar.gz) = e69ea47eab41d69d64fa44102fbde59319da5f71a68f28a0f6ac65cd6866542b4fe58a71b84c903cfa9b1d2f26eb648cdf4de633b8df61e4f89c9fa4c2a2b1d3