Skip to content

Instantly share code, notes, and snippets.

@ad-m
Created March 11, 2019 03:30
Show Gist options
  • Select an option

  • Save ad-m/e65c8a42c1567160a1a10b303ff3583a to your computer and use it in GitHub Desktop.

Select an option

Save ad-m/e65c8a42c1567160a1a10b303ff3583a to your computer and use it in GitHub Desktop.
commit 2b82852db9b5595ba3024468edd5f39c76e193e3
Author: Adam Dobrawy <naczelnik@jawnosc.tk>
Date: Mon Mar 11 03:54:37 2019 +0100
Update version to 18.5
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-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 <chad.smith@canonical.com>
-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<UP,BROADCAST,RUNNING,SIM
- buf.write(content)
- write_bufs[filename] = buf
-
-+ def replace_load_file(filename, *args, **kwargs):
-+ if filename == '/etc/sysconfig/network':
-+ return 'TEST=yes\nTEST2=yes'
-+ else:
-+ return ''
-+
-+ with ExitStack() as mocks:
-+ mocks.enter_context(
-+ mock.patch.object(util, 'write_file', replace_write))
-+ mocks.enter_context(
-+ mock.patch.object(util, 'load_file', replace_load_file))
-+ mocks.enter_context(
-+ mock.patch.object(os.path, 'isfile', return_value=False))
-+
-+ rh_distro.apply_network(BASE_NET_CFG, False)
-+
-+ self.assertEqual(len(write_bufs), 4)
-+ self.assertIn('/etc/sysconfig/network-scripts/ifcfg-lo',
-+ write_bufs)
-+ write_buf = write_bufs['/etc/sysconfig/network-scripts/ifcfg-lo']
-+ expected_buf = '''
-+DEVICE="lo"
-+ONBOOT=yes
-+'''
-+ self.assertCfgEquals(expected_buf, str(write_buf))
-+ self.assertEqual(write_buf.mode, 0o644)
-+
-+ self.assertIn('/etc/sysconfig/network-scripts/ifcfg-eth0',
-+ write_bufs)
-+ write_buf = write_bufs['/etc/sysconfig/network-scripts/ifcfg-eth0']
-+ expected_buf = '''
-+DEVICE="eth0"
-+BOOTPROTO="static"
-+NETMASK="255.255.255.0"
-+IPADDR="192.168.1.5"
-+ONBOOT=yes
-+GATEWAY="192.168.1.254"
-+BROADCAST="192.168.1.0"
-+'''
-+ self.assertCfgEquals(expected_buf, str(write_buf))
-+ self.assertEqual(write_buf.mode, 0o644)
-+
-+ self.assertIn('/etc/sysconfig/network-scripts/ifcfg-eth1',
-+ write_bufs)
-+ write_buf = write_bufs['/etc/sysconfig/network-scripts/ifcfg-eth1']
-+ expected_buf = '''
-+DEVICE="eth1"
-+BOOTPROTO="dhcp"
-+ONBOOT=yes
-+'''
-+ self.assertCfgEquals(expected_buf, str(write_buf))
-+ self.assertEqual(write_buf.mode, 0o644)
-+
-+ self.assertIn('/etc/sysconfig/network', write_bufs)
-+ write_buf = write_bufs['/etc/sysconfig/network']
-+ expected_buf = '''
-+# Created by cloud-init v. 0.7
-+NETWORKING=yes
-+TEST=yes
-+TEST2=yes
-+'''
-+ self.assertCfgEquals(expected_buf, str(write_buf))
-+ self.assertEqual(write_buf.mode, 0o644)
-+
-+ def test_simple_write_rh_no_extra(self):
-+ rh_distro = self._get_distro('rhel')
-+
-+ write_bufs = {}
-+
-+ def replace_write(filename, content, mode=0o644, omode="wb"):
-+ buf = WriteBuffer()
-+ buf.mode = mode
-+ buf.omode = omode
-+ buf.write(content)
-+ write_bufs[filename] = buf
-+
- with ExitStack() as mocks:
- mocks.enter_context(
- mock.patch.object(util, 'write_file', replace_write))
-@@ -453,6 +529,12 @@ NETWORKING=yes
- buf.write(content)
- write_bufs[filename] = buf
-
-+ def replace_load_file(filename, *args, **kwargs):
-+ if filename == '/etc/sysconfig/network':
-+ return 'TEST=yes\nTEST2=yes'
-+ else:
-+ return ''
-+
- with ExitStack() as mocks:
- # sysconfig availability checks
- mocks.enter_context(
-@@ -460,7 +542,7 @@ NETWORKING=yes
- mocks.enter_context(
- mock.patch.object(util, 'write_file', replace_write))
- mocks.enter_context(
-- mock.patch.object(util, 'load_file', return_value=''))
-+ mock.patch.object(util, 'load_file', replace_load_file))
- mocks.enter_context(
- mock.patch.object(os.path, 'isfile', return_value=True))
-
-@@ -509,6 +591,8 @@ USERCTL=no
- expected_buf = '''
- # Created by cloud-init v. 0.7
- NETWORKING=yes
-+TEST=yes
-+TEST2=yes
- '''
- self.assertCfgEquals(expected_buf, str(write_buf))
- self.assertEqual(write_buf.mode, 0o644)
-@@ -525,13 +609,20 @@ NETWORKING=yes
- buf.write(content)
- write_bufs[filename] = buf
-
-+ def replace_load_file(filename, *args, **kwargs):
-+ if filename == '/etc/sysconfig/network':
-+ return 'TEST=yes\nTEST2=yes'
-+ else:
-+ return ''
-+
- with ExitStack() as mocks:
- mocks.enter_context(
- mock.patch.object(util, 'write_file', replace_write))
- mocks.enter_context(
-- mock.patch.object(util, 'load_file', return_value=''))
-+ mock.patch.object(util, 'load_file', replace_load_file))
- mocks.enter_context(
- mock.patch.object(os.path, 'isfile', return_value=False))
-+
- rh_distro.apply_network(BASE_NET_CFG_IPV6, False)
-
- self.assertEqual(len(write_bufs), 4)
-@@ -587,6 +678,8 @@ IPV6_DEFAULTGW="2607:f0d0:1002:0011::1"
- NETWORKING=yes
- NETWORKING_IPV6=yes
- IPV6_AUTOCONF=no
-+TEST=yes
-+TEST2=yes
- '''
- self.assertCfgEquals(expected_buf, str(write_buf))
- self.assertEqual(write_buf.mode, 0o644)
-@@ -604,13 +697,19 @@ IPV6_AUTOCONF=no
- buf.write(content)
- write_bufs[filename] = buf
-
-+ def replace_load_file(filename, *args, **kwargs):
-+ if filename == '/etc/sysconfig/network':
-+ return 'TEST=yes\nTEST2=yes'
-+ else:
-+ return ''
-+
- with ExitStack() as mocks:
- mocks.enter_context(
- mock.patch.object(util, 'which', return_value=True))
- mocks.enter_context(
- mock.patch.object(util, 'write_file', replace_write))
- mocks.enter_context(
-- mock.patch.object(util, 'load_file', return_value=''))
-+ mock.patch.object(util, 'load_file', replace_load_file))
- mocks.enter_context(
- mock.patch.object(os.path, 'isfile', return_value=True))
-
-@@ -658,6 +757,8 @@ USERCTL=no
- NETWORKING=yes
- NETWORKING_IPV6=yes
- IPV6_AUTOCONF=no
-+TEST=yes
-+TEST2=yes
- '''
- self.assertCfgEquals(expected_buf, str(write_buf))
- self.assertEqual(write_buf.mode, 0o644)
diff --git a/cloud-init.spec b/cloud-init.spec
index d245b7b..71a660b 100644
--- a/cloud-init.spec
+++ b/cloud-init.spec
@@ -1,6 +1,6 @@
Name: cloud-init
-Version: 17.1
-Release: 8%{?dist}
+Version: 18.5
+Release: 1%{?dist}
Summary: Cloud instance init scripts
License: ASL 2.0 or GPLv3
URL: http://launchpad.net/cloud-init
@@ -8,21 +8,6 @@ URL: http://launchpad.net/cloud-init
Source0: https://launchpad.net/cloud-init/trunk/%{version}/+download/%{name}-%{version}.tar.gz
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
-
-# 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
-
-# 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
-
BuildArch: noarch
BuildRequires: pkgconfig(systemd)
@@ -138,6 +123,7 @@ nosetests-%{python3_version} tests/unittests/
%config(noreplace) %{_sysconfdir}/rsyslog.d/21-cloudinit.conf
%{_sysconfdir}/NetworkManager/dispatcher.d/hook-network-manager
%{_sysconfdir}/dhcp/dhclient-exit-hooks.d/hook-dhclient
+%{_sysconfdir}/bash_completion.d/cloud-init
/lib/udev/rules.d/66-azure-ephemeral.rules
%{_unitdir}/cloud-config.service
%{_unitdir}/cloud-final.service
@@ -150,11 +136,15 @@ nosetests-%{python3_version} tests/unittests/
%{python3_sitelib}/*
%{_libexecdir}/%{name}
%{_bindir}/cloud-init*
+%{_bindir}/cloud-id
%dir /run/cloud-init
%dir /var/lib/cloud
%changelog
+* Mon Mar 11 2019 Adam Dobrawy <releng@fedoraproject.org> - 18.5-1
+- Update to 18.5
+
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 17.1-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
diff --git a/sources b/sources
index 2670862..2989adf 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (cloud-init-17.1.tar.gz) = 988cae4291c8d6a5bce012b78d651c602c02ad38c3790e9ed9aa7c815ae84c98767718ab9b0d346ddbc9c83cb886d455590128af750183618c0bf0f0c5a79564
+SHA512 (cloud-init-18.5.tar.gz) = f89ee636922e33b5b2dcb5230763404fbeee148e28b8f61bf5b2f1f07000f960f9d38545dfb7bcbe9afb8253f77d66c94b39e9a159715b44a440a7cbe1fe1aeb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment