Hello community,

here is the log from the commit of package cloud-init for openSUSE:Factory 
checked in at 2019-05-03 22:23:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cloud-init (Old)
 and      /work/SRC/openSUSE:Factory/.cloud-init.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cloud-init"

Fri May  3 22:23:07 2019 rev:58 rq:699769 version:18.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/cloud-init/cloud-init.changes    2019-02-28 
21:24:28.925911458 +0100
+++ /work/SRC/openSUSE:Factory/.cloud-init.new.5148/cloud-init.changes  
2019-05-03 22:23:08.179974931 +0200
@@ -1,0 +2,15 @@
+Wed Apr 24 18:37:32 UTC 2019 - Robert Schweikert <[email protected]>
+
+- Update cloud-init-write-routes.patch (bsc#1132692)
+  + Properly accumulate all the defined routes for a given network device.
+    Previously only the last defined route was written to the routes file.
+
+-------------------------------------------------------------------
+Sat Mar 30 12:42:27 UTC 2019 - Robert Schweikert <[email protected]>
+
+- Update cloud-init-trigger-udev.patch (bsc#1125950)
+  + Write the udev rules to a different file than the default
+  + Settle udev if not all configured devices are in the device tree to
+    avoid race condition between udev and cloud-init
+
+-------------------------------------------------------------------
@@ -12 +27 @@
-  + Fix the order of calls, the SUSE imaplementation of route config file
+  + Fix the order of calls, the SUSE implementation of route config file

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cloud-init-trigger-udev.patch ++++++
--- /var/tmp/diff_new_pack.C2Ceci/_old  2019-05-03 22:23:08.739976133 +0200
+++ /var/tmp/diff_new_pack.C2Ceci/_new  2019-05-03 22:23:08.739976133 +0200
@@ -1,35 +1,36 @@
 --- cloudinit/net/sysconfig.py.orig
 +++ cloudinit/net/sysconfig.py
-@@ -15,6 +15,7 @@ from .network_state import (
-     is_ipv6_addr, net_prefix_to_ipv4_mask, subnet_is_ipv6)
+@@ -8,6 +8,7 @@ import six
+ from cloudinit.distros.parsers import networkmanager_conf
+ from cloudinit.distros.parsers import resolv_conf
+ from cloudinit import log as logging
++from cloudinit import net
+ from cloudinit import util
  
- LOG = logging.getLogger(__name__)
-+PERS_NET_RULES_DEFAULT = 'etc/udev/rules.d/70-persistent-net.rules'
- 
- 
- def _make_header(sep='#'):
-@@ -276,7 +277,7 @@ class Renderer(renderer.Renderer):
-             config = {}
-         self.sysconf_dir = config.get('sysconf_dir', 'etc/sysconfig')
-         self.netrules_path = config.get(
--            'netrules_path', 'etc/udev/rules.d/70-persistent-net.rules')
-+            'netrules_path', PERS_NET_RULES_DEFAULT)
-         self.dns_path = config.get('dns_path', 'etc/resolv.conf')
-         nm_conf_path = 'etc/NetworkManager/conf.d/99-cloud-init.conf'
-         self.networkmanager_conf_path = config.get('networkmanager_conf_path',
-@@ -676,6 +677,15 @@ class Renderer(renderer.Renderer):
+ from . import renderer
+@@ -673,6 +674,14 @@ class Renderer(renderer.Renderer):
+             if nm_conf_content:
+                 util.write_file(nm_conf_path, nm_conf_content, file_mode)
+         if self.netrules_path:
++            # When many interfaces are present it can happen that we get here
++            # before they are all setup. Settle if that is the case.
++            for iface in network_state.iter_interfaces(
++                    renderer.filter_by_physical):
++                path = net.sys_dev_path(str(iface))
++                if not os.path.exists(path):
++                    util.udevadm_settle(path, 5)
++                    break
              netrules_content = self._render_persistent_net(network_state)
              netrules_path = util.target_path(target, self.netrules_path)
              util.write_file(netrules_path, netrules_content, file_mode)
-+            # Making the assumption that the configured file is in a sane
-+            # location
-+            if (
-+                    os.path.basename(PERS_NET_RULES_DEFAULT)
-+                    != os.path.basename(netrules_path)
-+            ):
-+                util.subp(
-+                    ['udevadm', 'trigger', '-a ACTION=add', '-a 
SUBSYSTEM=net']
-+                )
- 
-         sysconfig_path = util.target_path(target, templates.get('control'))
-         # Distros configuring /etc/sysconfig/network as a file e.g. Centos
+--- cloudinit/distros/opensuse.py.orig
++++ cloudinit/distros/opensuse.py
+@@ -38,6 +38,8 @@ class Distro(distros.Distro):
+         'sysconfig': {
+             'control': 'etc/sysconfig/network/config',
+             'iface_templates': '%(base)s/network/ifcfg-%(name)s',
++            'netrules_path': (
++                'etc/udev/rules.d/85-persistent-net-cloud-init.rules'),
+             'route_templates': {
+                 'ipv4': '%(base)s/network/ifroute-%(name)s',
+                 'ipv6': '%(base)s/network/ifroute-%(name)s',

++++++ cloud-init-write-routes.patch ++++++
--- /var/tmp/diff_new_pack.C2Ceci/_old  2019-05-03 22:23:08.743976141 +0200
+++ /var/tmp/diff_new_pack.C2Ceci/_new  2019-05-03 22:23:08.747976150 +0200
@@ -22,9 +22,9 @@
 +        for config in device_configs:
 +            if_name = config.get('name')
 +            subnets = config.get('subnets', [])
++            config_routes = ''
 +            for subnet in subnets:
 +                routes = subnet.get('routes', [])
-+                config_routes = ''
 +                for route in routes:
 +                    dest = route.get('network')
 +                    if dest in default_nets:


Reply via email to