#6 Update to 19.4
Merged 4 years ago by dustymabe. Opened 4 years ago by otubo.
rpms/ otubo/cloud-init 1661441  into  master

@@ -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'

@@ -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,

-  }

-  

-  

@@ -1,31 +0,0 @@ 

- From d1a2fe7307e9cf2251d1f9a666c12d71d3f522d6 Mon Sep 17 00:00:00 2001

- From: Chad Smith <chad.smith@canonical.com>

- 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

@@ -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

- 

@@ -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

@@ -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)

@@ -0,0 +1,32 @@ 

+ From 1a8143951839afd5b0f80e9d00af582daa429fdc Mon Sep 17 00:00:00 2001

+ From: Eduardo Otubo <otubo@redhat.com>

+ Date: Fri, 21 Feb 2020 10:52:26 +0100

+ Subject: [PATCH] Disable LXD tests

+ 

+ Signed-off-by: Eduardo Otubo <otubo@redhat.com>

+ ---

+  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

+ 

@@ -0,0 +1,540 @@ 

+ From 98657d64a1d40769b31fcf375ebb1ea0b373350c Mon Sep 17 00:00:00 2001

+ From: Eduardo Otubo <otubo@redhat.com>

+ 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 <otubo@redhat.com>

+ ---

+  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

+ 

@@ -0,0 +1,36 @@ 

+ From 674873573abf2b6e10b09d533a58437c35d508f8 Mon Sep 17 00:00:00 2001

+ From: Eduardo Otubo <otubo@redhat.com>

+ Date: Fri, 21 Feb 2020 11:40:34 +0100

+ Subject: [PATCH] Don't override default network configuration

+ 

+ Signed-off-by: Eduardo Otubo <otubo@redhat.com>

+ ---

+  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

+ 

file modified
+9 -15
@@ -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 @@ 

  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 @@ 

  

  

  %changelog

+ * Fri Feb 14 2020 Eduardo Otubo <otubo@redhat.com> - 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 <releng@fedoraproject.org> - 17.1-15

  - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild

  

file modified
+1 -1
@@ -1,1 +1,1 @@ 

- SHA512 (cloud-init-17.1.tar.gz) = 988cae4291c8d6a5bce012b78d651c602c02ad38c3790e9ed9aa7c815ae84c98767718ab9b0d346ddbc9c83cb886d455590128af750183618c0bf0f0c5a79564

+ SHA512 (cloud-init-19.4.tar.gz) = e69ea47eab41d69d64fa44102fbde59319da5f71a68f28a0f6ac65cd6866542b4fe58a71b84c903cfa9b1d2f26eb648cdf4de633b8df61e4f89c9fa4c2a2b1d3

Removed both patches that are already included in the most recent version, changed the version and updated the source tarball.

since we're bumping the Version in the line above let's reset the Release here to: 1%{?dist}. Also update the changelog line below to reflect that change.

I'm okay with this change once @dustymabe's request is satisfied. :smile:

Thanks, @otubo!

it looks like the first patch doesn't apply:

+ /usr/bin/gzip -dc /builddir/build/SOURCES/cloud-init-19.4.tar.gz
+ /usr/bin/tar -xof -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd cloud-init-19.4
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ /usr/bin/cat /builddir/build/SOURCES/cloud-init-17.1-disable-lxd-tests.patch
+ /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch
1 out of 1 hunk FAILED -- saving rejects to file tests/cloud_tests/platforms/__init__.py.rej
RPM build errors:
error: Bad exit status from /var/tmp/rpm-tmp.x1Q0tJ (%prep)
    Bad exit status from /var/tmp/rpm-tmp.x1Q0tJ (%prep)
Child return code was: 1

@otubo can you rebase the patches so they apply against 19.4 ?

rebased onto 4393c919fb41ab1bb5703d396d8e4f72dcba535b

4 years ago

rebased onto e7d90aa

4 years ago

ok I'm going to merge this and continue it in #7

Pull-Request has been merged by dustymabe

4 years ago