Hello community, here is the log from the commit of package cloud-init for openSUSE:Leap:15.2 checked in at 2020-02-04 17:59:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/cloud-init (Old) and /work/SRC/openSUSE:Leap:15.2/.cloud-init.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cloud-init" Tue Feb 4 17:59:17 2020 rev:38 rq:769213 version:19.4 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/cloud-init/cloud-init.changes 2020-01-15 14:50:28.217417132 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.cloud-init.new.26092/cloud-init.changes 2020-02-04 17:59:23.544929413 +0100 @@ -1,0 +2,271 @@ +Fri Jan 17 18:55:41 UTC 2020 - Robert Schweikert <rjsch...@suse.com> + +- Add cloud-init-no-tempnet-oci.patch (bsc#1161132, bsc#1161133) + + Do not attempt to configure an ephemeral network on OCI. We + boot off iSCSI and the network is up. Just read the data. + +------------------------------------------------------------------- +Tue Jan 14 15:14:52 UTC 2020 - Tomáš Chvátal <tchva...@suse.com> + +- Add patch to build properly with python 3.8: + * 0001-Make-tests-work-with-Python-3.8-139.patch + +------------------------------------------------------------------- +Thu Jan 9 18:56:26 UTC 2020 - Robert Schweikert <rjsch...@suse.com> + +- Update to version 19.4 + + Remove patches included upstream: + - cloud-init-after-wicked.patch + - cloud-init-noresolv-merge-no-dns-data.diff + - cloud-init-renderer-detect.patch + - cloud-init-trigger-udev.patch + + Removed patches merged with cloud-init-mix-static-dhcp.patch + - cloud-init-proper-ipv6-setting.patch + - cloud-init-static-net.patch + + Added cloud-init-mix-static-dhcp.patch (bsc#1157894) + + Forward port cloud-init-sysconf-path.patch + + doc: specify _ over - in cloud config modules + + [Joshua Powers] (LP: #1293254) + + tools: Detect python to use via env in migrate-lp-user-to-github + + [Adam Dobrawy] + + Partially revert "fix unlocking method on FreeBSD" (#116) + + tests: mock uid when running as root (#113) + + [Joshua Powers] (LP: #1856096) + + cloudinit/netinfo: remove unused getgateway (#111) + + docs: clear up apt config sections (#107) [Joshua Powers] (LP: #1832823) + + doc: add kernel command line option to user data (#105) + + [Joshua Powers] (LP: #1846524) + + config/cloud.cfg.d: update README [Joshua Powers] (LP: #1855006) + + azure: avoid re-running cloud-init when instance-id is byte-swapped + + (#84) [AOhassan] + + fix unlocking method on FreeBSD [Igor Galić] (LP: #1854594) + + debian: add reference to the manpages [Joshua Powers] + + ds_identify: if /sys is not available use dmidecode (#42) + + [Igor Galić] (LP: #1852442) + + docs: add cloud-id manpage [Joshua Powers] + + docs: add cloud-init-per manpage [Joshua Powers] + + docs: add cloud-init manpage [Joshua Powers] + + docs: add additional details to per-instance/once [Joshua Powers] + + Update doc-requirements.txt [Joshua Powers] + + doc-requirements: add missing dep [Joshua Powers] + + dhcp: Support RedHat dhcp rfc3442 lease format for option 121 (#76) + + [Eric Lafontaine] (LP: #1850642) + + network_state: handle empty v1 config (#45) (LP: #1852496) + + docs: Add document on how to report bugs [Joshua Powers] + + Add an Amazon distro in the redhat OS family [Frederick Lefebvre] + + removed a couple of "the"s [gaughen] + + docs: fix line length and remove highlighting [Joshua Powers] + + docs: Add security.md to readthedocs [Joshua Powers] + + Multiple file fix for AuthorizedKeysFile config (#60) [Eduardo Otubo] + + Revert "travis: only run CI on pull requests" + + doc: update links on README.md [Joshua Powers] + + doc: Updates to wording of README.md [Joshua Powers] + + Add security.md [Joshua Powers] + + setup.py: Amazon Linux sets libexec to /usr/libexec (#52) + + [Frederick Lefebvre] + + Fix linting failure in test_url_helper (#83) [Eric Lafontaine] + + url_helper: read_file_or_url should pass headers param into readurl + + (#66) (LP: #1854084) + + dmidecode: log result *after* stripping n [Igor Galić] + + cloud_tests: add azure platform support to integration tests + + [ahosmanmsft] + + set_passwords: support for FreeBSD (#46) [Igor Galić] + + tools: migrate-lp-user-to-github removes repo_dir if created (#35) + + Correct jumbled documentation for cc_set_hostname module (#64) + + [do3meli] (LP: #1853543) + + FreeBSD: fix for get_linux_distro() and lru_cache (#59) + + [Igor Galić] (LP: #1815030) + + ec2: Add support for AWS IMDS v2 (session-oriented) (#55) + + tests: Fix cloudsigma tests when no dmidecode data is present. (#57) + + [Scott Moser] + + net: IPv6, accept_ra, slaac, stateless (#51) + + [Harald] (LP: #1806014, #1808647) + + docs: Update the configdrive datasource links (#44) + + [Joshua Powers] (LP: #1852461) + + distro: correctly set usr_lib_exec path for FreeBSD distro (#40) + + [Igor Galić] (LP: #1852491) + + azure: support secondary ipv6 addresses (#33) + + Fix metadata check when local-hostname is null (#32) + + [Mark Goddard] (LP: #1852100) + + switch default FreeBSD salt minion pkg from py27 to py36 + + [Dominic Schlegel] + + travis: only run CI on pull requests + + add data-server dns entry as new metadata server detection [Joshua Hügli] + + pycodestyle: remove unused local variable + + reporting: Using a uuid to enforce uniqueness on the KVP keys. [momousta] + + docs: touchups in rtd intro and README.md + + doc: update launchpad git refs to github + + github: drop pull-request template to prepare for migration + + tools: add migrate-lp-user-to-github script to link LP to github + + github: new basic project readme + +- From 19.3 + + azure: support matching dhcp route-metrics for dual-stack ipv4 ipv6 + + (LP: #1850308) + + configdrive: fix subplatform config-drive for /config-drive source + + [David Kindred] (LP: #1849731) + + DataSourceSmartOS: reconfigure network on each boot + + [Mike Gerdts] (LP: #1765801) + + Add config for ssh-key import and consuming user-data [Pavel Zakharov] + + net: fix subnet_is_ipv6() for stateless|stateful + + [Harald Jensås] (LP: #1848690) + + OVF: disable custom script execution by default [Xiaofeng Wang] + + cc_puppet: Implement csr_attributes.yaml support [Matthias Baur] + + cloud-init.service: on centos/fedora/redhat wait on NetworkManager.service + + (LP: #1843334) + + azure: Do not lock user on instance id change [Sam Eiderman] (LP: #1849677) + + net/netplan: use ipv6-mtu key for specifying ipv6 mtu values + + Fix usages of yaml, and move yaml_dump to safeyaml.dumps. (LP: #1849640) + + exoscale: Increase url_max_wait to 120s. [Chris Glass] + + net/sysconfig: fix available check on SUSE distros + + [Robert Schweikert] (LP: #1849378) + + docs: Fix incorrect Azure IMDS IP address [Joshua Powers] (LP: #1849508) + + introduce .travis.yml + + net: enable infiniband support in eni and sysconfig renderers + + [Darren Birkett] (LP: #1847114) + + guestcust_util: handle special characters in config file [Xiaofeng Wang] + + fix some more typos in comments [Dominic Schlegel] + + replace any deprecated log.warn with log.warning + + [Dominic Schlegel] (LP: #1508442) + + net: handle openstack dhcpv6-stateless configuration + + [Harald Jensås] (LP: #1847517) + + Add .venv/ to .gitignore [Dominic Schlegel] + + Small typo fixes in code comments. [Dominic Schlegel] + + cloud_test/lxd: Retry container delete a few times + + Add Support for e24cloud to Ec2 datasource. (LP: #1696476) + + Add RbxCloud datasource [Adam Dobrawy] + + get_interfaces: don't exclude bridge and bond members (LP: #1846535) + + Add support for Arch Linux in render-cloudcfg [Conrad Hoffmann] + + util: json.dumps on python 2.7 will handle UnicodeDecodeError on binary + + (LP: #1801364) + + debian/ubuntu: add missing word to netplan/ENI header (LP: #1845669) + + ovf: do not generate random instance-id for IMC customization path + + sysconfig: only write resolv.conf if network_state has DNS values + + (LP: #1843634) + + sysconfig: use distro variant to check if available (LP: #1843584) + + systemd/cloud-init.service.tmpl: start after wicked.service + + [Robert Schweikert] + + docs: fix zstack documentation lints + + analyze/show: remove trailing space in output + + Add missing space in warning: "not avalid seed" [Brian Candler] + + pylintrc: add 'enter_context' to generated-members list + + Add datasource for ZStack platform. [Shixin Ruan] (LP: #1841181) + + docs: organize TOC and update summary of project [Joshua Powers] + + tools: make clean now cleans the dev directory, not the system + + docs: create cli specific page [Joshua Powers] + + docs: added output examples to analyze.rst [Joshua Powers] + + docs: doc8 fixes for instancedata page [Joshua Powers] + + docs: clean up formatting, organize boot page [Joshua Powers] + + net: add is_master check for filtering device list (LP: #1844191) + + docs: more complete list of availability [Joshua Powers] + + docs: start FAQ page [Joshua Powers] + + docs: cleanup output & order of datasource page [Joshua Powers] + + Brightbox: restrict detection to require full domain match .brightbox.com + + VMWware: add option into VMTools config to enable/disable custom script. + + [Xiaofeng Wang] + + net,Oracle: Add support for netfailover detection + + atomic_helper: add DEBUG logging to write_file (LP: #1843276) + + doc: document doc, create makefile and tox target [Joshua Powers] + + .gitignore: ignore files produced by package builds + + docs: fix whitespace, spelling, and line length [Joshua Powers] + + docs: remove unnecessary file in doc directory [Joshua Powers] + + Oracle: Render secondary vnic IP and MTU values only + + exoscale: fix sysconfig cloud_config_modules overrides (LP: #1841454) + + net/cmdline: refactor to allow multiple initramfs network config sources + + ubuntu-drivers: call db_x_loadtemplatefile to accept NVIDIA EULA + + (LP: #1840080) + + Add missing #cloud-config comment on first example in documentation. + + [Florian Müller] + + ubuntu-drivers: emit latelink=true debconf to accept nvidia eula + + (LP: #1840080) + + DataSourceOracle: prefer DS network config over initramfs + + format.rst: add text/jinja2 to list of content types (+ cleanups) + + Add GitHub pull request template to point people at hacking doc + + cloudinit/distros/parsers/sys_conf: add docstring to SysConf + + pyflakes: remove unused variable [Joshua Powers] + + Azure: Record boot timestamps, system information, and diagnostic events + + [Anh Vo] + + DataSourceOracle: configure secondary NICs on Virtual Machines + + distros: fix confusing variable names + + azure/net: generate_fallback_nic emits network v2 config instead of v1 + + Add support for publishing host keys to GCE guest attributes [Rick Wright] + + New data source for the Exoscale.com cloud platform [Chris Glass] + + doc: remove intersphinx extension + + cc_set_passwords: rewrite documentation (LP: #1838794) + + net/cmdline: split interfaces_by_mac and init network config determination + + stages: allow data sources to override network config source order + + cloud_tests: updates and fixes ++++ 82 more lines (skipped) ++++ between /work/SRC/openSUSE:Leap:15.2/cloud-init/cloud-init.changes ++++ and /work/SRC/openSUSE:Leap:15.2/.cloud-init.new.26092/cloud-init.changes Old: ---- cloud-init-19.1.tar.gz cloud-init-add-static-routes.diff cloud-init-after-wicked.patch cloud-init-detect-nova.diff cloud-init-noresolv-merge-no-dns-data.diff cloud-init-static-net.patch cloud-init-trigger-udev.patch New: ---- 0001-Make-tests-work-with-Python-3.8-139.patch cloud-init-19.4.tar.gz cloud-init-break-resolv-symlink.patch cloud-init-mix-static-dhcp.patch cloud-init-no-tempnet-oci.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cloud-init.spec ++++++ --- /var/tmp/diff_new_pack.vzisYD/_old 2020-02-04 17:59:24.332929888 +0100 +++ /var/tmp/diff_new_pack.vzisYD/_new 2020-02-04 17:59:24.332929888 +0100 @@ -18,40 +18,33 @@ %global configver 0.7 Name: cloud-init -Version: 19.1 +Version: 19.4 Release: 0 -License: GPL-3.0 and AGPL-3.0 +License: GPL-3.0 Summary: Cloud node initialization tool Url: http://launchpad.net/cloud-init/ Group: System/Management Source0: %{name}-%{version}.tar.gz Source1: rsyslog-cloud-init.cfg - - +Patch0: 0001-Make-tests-work-with-Python-3.8-139.patch # FIXME # python2 disables SIGPIPE, causing broken pipe errors in shell scripts (bsc#903449) Patch20: cloud-init-python2-sigpipe.patch Patch21: cloud-init-template-py2.patch Patch29: datasourceLocalDisk.patch Patch34: cloud-init-tests-set-exec.patch -# FIXME no proposed solution -Patch38: cloud-init-sysconf-path.patch -# FIXME (lp# 1800854) -Patch41: cloud-init-static-net.patch # FIXME (lp#1801364) Patch42: cloud-init-ostack-metadat-dencode.patch # FIXME (lp#1812117) Patch43: cloud-init-write-routes.patch -# FIXME (lp#1817368) -Patch47: cloud-init-trigger-udev.patch -# FIXME (lp#1669875) patch by mvoelker@launchpad -Patch48: cloud-init-detect-nova.diff -# FIXME (lp#1821102) -Patch49: cloud-init-add-static-routes.diff -# FIXME (lp#1843634) -Patch50: cloud-init-noresolv-merge-no-dns-data.diff -# FIXME -Patch51: cloud-init-after-wicked.patch +# FIXME (lp#1849296) +Patch52: cloud-init-break-resolv-symlink.patch +# FIXME (lp#1858808) +Patch55: cloud-init-mix-static-dhcp.patch +# FIXME no proposed solution +Patch56: cloud-init-sysconf-path.patch +# FIXME (lp#1860164) +Patch57: cloud-init-no-tempnet-oci.patch BuildRequires: fdupes BuildRequires: filesystem @@ -184,21 +177,19 @@ %prep %setup -q +%patch0 -p1 %if 0%{?suse_version} < 1315 %patch20 %patch21 %endif %patch29 -p0 %patch34 -%patch38 -%patch41 %patch42 %patch43 -%patch47 -%patch48 -p1 -%patch49 -p1 -%patch50 -p1 -%patch51 -p1 +%patch52 +%patch55 -p0 +%patch56 +%patch57 %build %if 0%{?suse_version} && 0%{?suse_version} <= 1315 @@ -235,9 +226,14 @@ mkdir -p %{buildroot}%{_localstatedir}/lib/cloud # move documentation mkdir -p %{buildroot}%{_defaultdocdir} -mv %{buildroot}%{_datadir}/doc/%{name} %{buildroot}%{docdir} +mv %{buildroot}%{_datadir}/doc/%{name} %{buildroot}%{_defaultdocdir} +# man pages +mkdir -p %{buildroot}%{_mandir}/man1 +mv doc/man/* %{buildroot}%{_mandir}/man1 # copy the LICENSE -cp LICENSE %{buildroot}%{docdir} +mkdir -p %{buildroot}%{_defaultlicensedir}/%{name} +cp LICENSE %{buildroot}%{_defaultlicensedir}/%{name} +cp LICENSE-GPLv3 %{buildroot}%{_defaultlicensedir}/%{name} # Set the distribution indicator %if 0%{?suse_version} %if 0%{?is_opensuse} @@ -286,8 +282,7 @@ %files %defattr(-,root,root) -# do not mark as doc or we get conflicts with the doc package -%{docdir}/LICENSE +%license LICENSE LICENSE-GPLv3 %{_bindir}/cloud-id %{_bindir}/cloud-init %{_bindir}/cloud-init-per @@ -296,6 +291,7 @@ %config(noreplace) %{_sysconfdir}/cloud/templates %{_sysconfdir}/dhcp/dhclient-exit-hooks.d/hook-dhclient %{_sysconfdir}/NetworkManager/dispatcher.d/hook-network-manager +%{_mandir}/man*/* %if 0%{?suse_version} && 0%{?suse_version} < 1500 %dir %{_datadir}/bash-completion %dir %{_datadir}/bash-completion/completions @@ -351,9 +347,7 @@ %files doc %defattr(-,root,root) %{docdir}/examples/* -%{docdir}/README %{docdir}/*.txt -#%{docdir}/*.rst %dir %{docdir}/examples #%files test ++++++ 0001-Make-tests-work-with-Python-3.8-139.patch ++++++ >From c5a7d7979c036f6dc6823f429c6b6820f7f74241 Mon Sep 17 00:00:00 2001 From: Conrad Hoffmann <1226676+bitfeh...@users.noreply.github.com> Date: Wed, 8 Jan 2020 15:18:48 +0100 Subject: [PATCH] Make tests work with Python 3.8 (#139) * Make DistroChecker test work with Python 3.8 In Python 3.8, `platform.linux_distribution` has been removed. This was anticipated, and the cloud-init code uses its own `util.get_linux_distro` instead, which works fine w/o `platform.linux_distribution`. However, these tests still try to mock the platform function, which fails if it doesn't exist (Python 3.8). Instead, mock the new function here, as this is a test for code that depends on it rather than the function itself. * Make GetLinuxDistro tests work with Python 3.8 In Python 3.8, `platform.dist` was removed, so allow mock to create the function by setting `create=True`. * Make linter happy in Python 3.8 Suppress E1101(no-member) as this function was removed. --- cloudinit/analyze/tests/test_boot.py | 8 ++++---- cloudinit/tests/test_util.py | 6 +++--- cloudinit/util.py | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cloudinit/analyze/tests/test_boot.py b/cloudinit/analyze/tests/test_boot.py index 706e2cc0..f4001c14 100644 --- a/cloudinit/analyze/tests/test_boot.py +++ b/cloudinit/analyze/tests/test_boot.py @@ -12,17 +12,17 @@ class TestDistroChecker(CiTestCase): @mock.patch('cloudinit.util.system_info', return_value={'dist': ('', '', ''), 'system': ''}) - @mock.patch('platform.linux_distribution', return_value=('', '', '')) + @mock.patch('cloudinit.util.get_linux_distro', return_value=('', '', '')) @mock.patch('cloudinit.util.is_FreeBSD', return_value=False) - def test_blank_distro(self, m_sys_info, m_linux_distribution, m_free_bsd): + def test_blank_distro(self, m_sys_info, m_get_linux_distro, m_free_bsd): self.assertEqual(err_code, dist_check_timestamp()) @mock.patch('cloudinit.util.system_info', return_value={'dist': ('', '', '')}) - @mock.patch('platform.linux_distribution', return_value=('', '', '')) + @mock.patch('cloudinit.util.get_linux_distro', return_value=('', '', '')) @mock.patch('cloudinit.util.is_FreeBSD', return_value=True) def test_freebsd_gentoo_cant_find(self, m_sys_info, - m_linux_distribution, m_is_FreeBSD): + m_get_linux_distro, m_is_FreeBSD): self.assertEqual(err_code, dist_check_timestamp()) @mock.patch('cloudinit.util.subp', return_value=(0, 1)) diff --git a/cloudinit/tests/test_util.py b/cloudinit/tests/test_util.py index 64ed82ea..be100646 100644 --- a/cloudinit/tests/test_util.py +++ b/cloudinit/tests/test_util.py @@ -523,7 +523,7 @@ class TestGetLinuxDistro(CiTestCase): self.assertEqual( ('opensuse-tumbleweed', '20180920', platform.machine()), dist) - @mock.patch('platform.dist') + @mock.patch('platform.dist', create=True) def test_get_linux_distro_no_data(self, m_platform_dist, m_path_exists): """Verify we get no information if os-release does not exist""" m_platform_dist.return_value = ('', '', '') @@ -531,7 +531,7 @@ class TestGetLinuxDistro(CiTestCase): dist = util.get_linux_distro() self.assertEqual(('', '', ''), dist) - @mock.patch('platform.dist') + @mock.patch('platform.dist', create=True) def test_get_linux_distro_no_impl(self, m_platform_dist, m_path_exists): """Verify we get an empty tuple when no information exists and Exceptions are not propagated""" @@ -540,7 +540,7 @@ class TestGetLinuxDistro(CiTestCase): dist = util.get_linux_distro() self.assertEqual(('', '', ''), dist) - @mock.patch('platform.dist') + @mock.patch('platform.dist', create=True) def test_get_linux_distro_plat_data(self, m_platform_dist, m_path_exists): """Verify we get the correct platform information""" m_platform_dist.return_value = ('foo', '1.1', 'aarch64') diff --git a/cloudinit/util.py b/cloudinit/util.py index 9d9d5c72..830c8e54 100644 --- a/cloudinit/util.py +++ b/cloudinit/util.py @@ -635,8 +635,8 @@ def get_linux_distro(): else: dist = ('', '', '') try: - # Will be removed in 3.7 - dist = platform.dist() # pylint: disable=W1505 + # Was removed in 3.8 + dist = platform.dist() # pylint: disable=W1505,E1101 except Exception: pass finally: -- 2.24.1 ++++++ cloud-init-19.1.tar.gz -> cloud-init-19.4.tar.gz ++++++ ++++ 19515 lines of diff (skipped) ++++++ cloud-init-break-resolv-symlink.patch ++++++ --- cloudinit/net/sysconfig.py.orig +++ cloudinit/net/sysconfig.py @@ -705,6 +705,11 @@ class Renderer(renderer.Renderer): resolv_content = self._render_dns(network_state, existing_dns_path=dns_path) if resolv_content: + # netconfig checks if /etc/resolv.conf is a symlink and if + # that is true will write it's version of the file clobbering + # our changes. + if os.path.islink(dns_path): + os.unlink(dns_path) util.write_file(dns_path, resolv_content, file_mode) if self.networkmanager_conf_path: nm_conf_path = util.target_path(target, ++++++ cloud-init-mix-static-dhcp.patch ++++++ ++++ 1660 lines (skipped) ++++++ cloud-init-no-tempnet-oci.patch ++++++ --- cloudinit/sources/DataSourceOracle.py.orig +++ cloudinit/sources/DataSourceOracle.py @@ -189,11 +189,17 @@ class DataSourceOracle(sources.DataSourc # network may be configured if iscsi root. If that is the case # then read_initramfs_config will return non-None. - if _is_iscsi_root(): - data = self.crawl_metadata() - else: - with dhcp.EphemeralDHCPv4(net.find_fallback_nic()): - data = self.crawl_metadata() + #if _is_iscsi_root(): + # data = self.crawl_metadata() + #else: + # with dhcp.EphemeralDHCPv4(net.find_fallback_nic()): + # data = self.crawl_metadata() + # + # The detection of the configured network for iscsi boot is + # distribution dependent and of course only implemented for + # Debian/Ubuntu. We know the network is up as we are booting from + # iscsi. Skip the BS and just read the damn data + data = self.crawl_metadata() self._crawled_metadata = data vdata = data['2013-10-17'] ++++++ cloud-init-sysconf-path.patch ++++++ --- /var/tmp/diff_new_pack.vzisYD/_old 2020-02-04 17:59:24.600930050 +0100 +++ /var/tmp/diff_new_pack.vzisYD/_new 2020-02-04 17:59:24.604930053 +0100 @@ -1,13 +1,13 @@ --- cloudinit/net/sysconfig.py.orig +++ cloudinit/net/sysconfig.py -@@ -660,9 +660,7 @@ def available(target=None): +@@ -891,9 +891,7 @@ def available_sysconfig(target=None): if not util.which(p, search=search, target=target): return False - expected_paths = [ - 'etc/sysconfig/network-scripts/network-functions', -- 'etc/sysconfig/network-scripts/ifdown-eth'] +- 'etc/sysconfig/config'] + expected_paths = ['etc/sysconfig/network/scripts/functions.netconfig'] for p in expected_paths: - if not os.path.isfile(util.target_path(target, p)): - return False + if os.path.isfile(util.target_path(target, p)): + return True ++++++ cloud-init-write-routes.patch ++++++ --- /var/tmp/diff_new_pack.vzisYD/_old 2020-02-04 17:59:24.616930060 +0100 +++ /var/tmp/diff_new_pack.vzisYD/_new 2020-02-04 17:59:24.620930062 +0100 @@ -1,6 +1,14 @@ --- cloudinit/distros/opensuse.py.orig +++ cloudinit/distros/opensuse.py -@@ -172,7 +172,48 @@ class Distro(distros.Distro): +@@ -11,6 +11,7 @@ + from cloudinit import distros + + from cloudinit.distros.parsers.hostname import HostnameConf ++from cloudinit.net.network_state import mask_to_net_prefix + + from cloudinit import helpers + from cloudinit import log as logging +@@ -172,7 +173,47 @@ class Distro(distros.Distro): util.write_file(out_fn, str(conf), 0o644) def _write_network_config(self, netconfig): @@ -29,20 +37,19 @@ + dest = route.get('network') + if dest in default_nets: + dest = 'default' -+ gateway = route.get('gateway') -+ config_routes += ' '.join([dest, gateway]) + if dest != 'default': -+ config_routes += ' ' + route.get('netmask', '') -+ else: -+ config_routes += ' -' -+ config_routes += ' -' -+ config_routes += '\n' ++ prefix = mask_to_net_prefix(route.get('netmask')) ++ dest += '/' + str(prefix) ++ gateway = route.get('gateway') ++ config_routes += ' '.join( ++ [dest, gateway, '-', '-\n'] ++ ) + if not config_routes: + dest = 'default' + gateway = subnet.get('gateway') + if gateway: + config_routes += ' '.join( -+ [dest, gateway, '-', '-', '\n'] ++ [dest, gateway, '-', '-\n'] + ) + if config_routes: + route_file = '/etc/sysconfig/network/ifroute-%s' % if_name