Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package cloud-init for openSUSE:Factory checked in at 2023-03-02 23:01:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cloud-init (Old) and /work/SRC/openSUSE:Factory/.cloud-init.new.31432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cloud-init" Thu Mar 2 23:01:51 2023 rev:87 rq:1068502 version:23.1 Changes: -------- --- /work/SRC/openSUSE:Factory/cloud-init/cloud-init.changes 2022-05-12 22:58:02.944610611 +0200 +++ /work/SRC/openSUSE:Factory/.cloud-init.new.31432/cloud-init.changes 2023-03-02 23:01:54.826732649 +0100 @@ -2 +2 @@ -Tue Apr 26 09:44:55 UTC 2022 - pgaj...@suse.com +Thu Feb 23 13:38:43 UTC 2023 - Robert Schweikert <rjsch...@suse.com> @@ -4,2 +4,883 @@ -- python-mock is not required for build - https://trello.com/c/S6eADbii/64-remove-python-mock +- Update to version 23.1 + + Remove patches included upstream: + - cloud-init-btrfs-queue-resize.patch + - cloud-init-micro-is-suse.patch + - cloud-init-suse-afternm.patch + - cloud-init-prefer-nm.patch + - cloud-init-transact-up.patch + + Forward port + - cloud-init-write-routes.patch + + Added + - cloud-init-fix-ca-test.patch + + Support transactional-updates for SUSE based distros (#1997) + [Robert Schweikert] + + Set ownership for new folders in Write Files Module (#1980) + [Jack] (LP: #1990513) + + add OpenCloudOS and TencentOS support (#1964) [wynnfeng] + + lxd: Retry if the server isn't ready (#2025) + + test: switch pycloudlib source to pypi (#2024) + + test: Fix integration test deprecation message (#2023) + + Recognize opensuse-microos, dev tooling fixes [Robert Schweikert] + + sources/azure: refactor imds handler into own module (#1977) + [Chris Patterson] + + docs: deprecation generation support [1/2] (#2013) + + add function is_virtual to distro/FreeBSD (#1957) [Mina GaliÄ] + + cc_ssh: support multiple hostcertificates (#2018) (LP: #1999164) + + Fix minor schema validation regression and fixup typing (#2017) + + doc: Reword user data debug section (#2019) + + Overhaul/rewrite of certificate handling as follows: (#1962) + [dermotbradley] (LP: #1931174) + + disk_setup: use byte string when purging the partition table (#2012) + [Stefan Prietl] + + cli: schema also validate vendordata*. + + ci: sort and add checks for cla signers file [Stefan Prietl] + + Add "ederst" as contributor (#2010) [Stefan Prietl] + + readme: add reference to packages dir (#2001) + + docs: update downstream package list (#2002) + + docs: add google search verification (#2000) [s-makin] + + docs: fix 404 render use default notfound_urls_prefix in RTD conf (#2004) + + Fix OpenStack datasource detection on bare metal (#1923) + [Alexander Birkner] (LP: #1815990) + + docs: add themed RTD 404 page and pointer to readthedocs-hosted (#1993) + + schema: fix gpt labels, use type string for GUID (#1995) + + cc_disk_setup: code cleanup (#1996) + + netplan: keep custom strict perms when 50-cloud-init.yaml exists + + cloud-id: better handling of change in datasource files + [d1r3ct0r] (LP: #1998998) + + tests: Remove restart check from test + + Ignore duplicate macs from mscc_felix and fsl_enetc (LP: #1997922) + + Warn on empty network key (#1990) + + Fix Vultr cloud_interfaces usage (#1986) [eb3095] + + cc_puppet: Update puppet service name (#1970) [d1r3ct0r] (LP: #2002969) + + docs: Clarify networking docs (#1987) + + lint: remove httpretty (#1985) [sxt1001] + + cc_set_passwords: Prevent traceback when restarting ssh (#1981) + + tests: fix lp1912844 (#1978) + + tests: Skip ansible test on bionic (#1984) + + Wait for NetworkManager (#1983) [Robert Schweikert] + + docs: minor polishing (#1979) [s-makin] + + CI: migrate integration-test to GH actions (#1969) + + Fix permission of SSH host keys (#1971) [Ron Gebauer] + + Fix default route rendering on v2 ipv6 (#1973) (LP: #2003562) + + doc: fix path in net_convert command (#1975) + + docs: update net_convert docs (#1974) + + doc: fix dead link + + cc_set_hostname: ignore /var/lib/cloud/data/set-hostname if it's empty + (#1967) [Emanuele Giuseppe Esposito] + + distros/rhel.py: _read_hostname() missing strip on "hostname" (#1941) + [Mark Mielke] + + integration tests: add IBM VPC support (SC-1352) (#1915) + + machine-id: set to uninitialized to trigger regeneration on clones + (LP: #1999680) + + sources/azure: retry on connection error when fetching metdata (#1968) + [Chris Patterson] + + Ensure ssh state accurately obtained (#1966) + + bddeb: drop dh-systemd dependency on newer deb-based releases [d1r3ct0r] + + doc: fix `config formats` link in cloudsigma.rst (#1960) + + Fix wrong subp syntax in cc_set_passwords.py (#1961) + + docs: update the PR template link to readthedocs (#1958) [d1r3ct0r] + + ci: switch unittests to gh actions (#1956) + + Add mount_default_fields for PhotonOS. (#1952) [Shreenidhi Shedi] + + sources/azure: minor refactor for metadata source detection logic + (#1936) [Chris Patterson] + + add "CalvoM" as contributor (#1955) [d1r3ct0r] + + ci: doc to gh actions (#1951) + + lxd: handle 404 from missing devices route for LXD 4.0 (LP: #2001737) + + docs: Diataxis overhaul (#1933) [s-makin] + + vultr: Fix issue regarding cache and region codes (#1938) [eb3095] + + cc_set_passwords: Move ssh status checking later (SC-1368) (#1909) + (LP: #1998526) + + Improve Wireguard module idempotency (#1940) [Fabian Lichtenegger-Lukas] + + network/netplan: add gateways as on-link when necessary (#1931) + [Louis Sautier] (LP: #2000596) + + tests: test_lxd assert features.networks.zones when present (#1939) + + Use btrfs enquque when available (#1926) [Robert Schweikert] + + sources/azure: drop description for report_failure_to_fabric() (#1934) + [Chris Patterson] + + cc_disk_setup.py: fix MBR single partition creation (#1932) + [dermotbradley] (LP: #1851438) + + Fix typo with package_update/package_upgrade (#1927) [eb3095] + + sources/azure: fix device driver matching for net config (#1914) + [Chris Patterson] + + BSD: fix duplicate macs in Ifconfig parser (#1917) [Mina GaliÄ] + + test: mock dns calls (#1922) + + pycloudlib: add lunar support for integration tests (#1928) + + nocloud: add support for dmi variable expansion for seedfrom URL + (LP: #1994980) + + tools: read-version drop extra call to git describe --long + + doc: improve cc_write_files doc (#1916) + + read-version: When insufficient tags, use cloudinit.version.get_version + + mounts: document weird prefix in schema (#1913) + + add utility function test cases (#1910) [sxt1001] + + test: mock file deletion in dhcp tests (#1911) + + Ensure network ready before cloud-init service runs on RHEL (#1893) + (LP: #1998655) + + docs: add copy button to code blocks (#1890) [s-makin] + + netplan: define features.NETPLAN_CONFIG_ROOT_READ_ONLY flag + + azure: fix support for systems without az command installed (#1908) + + Networking Clarification (#1892) + + Fix the distro.osfamily output problem in the openEuler system. (#1895) + [sxt1001] (LP: #1999042) + + pycloudlib: bump commit dropping azure api smoke test + + net: netplan config root read-only as wifi config can contain creds + + autoinstall: clarify docs for users + + sources/azure: encode health report as utf-8 (#1897) [Chris Patterson] + + Add back gateway4/6 deprecation to docs (#1898) + + networkd: Add support for multiple [Route] sections (#1868) + [Nigel Kukard] + + doc: add qemu tutorial (#1863) + + lint: fix tip-flake8 and tip-mypy (#1896) + + Add support for setting uid when creating users on FreeBSD (#1888) + [einsibjarni] + + Fix exception in BSD networking code-path (#1894) [Mina GaliÄ] + + Append derivatives to is_rhel list in cloud.cfg.tmpl (#1887) [Louis Abel] + + FreeBSD init: use cloudinit_enable as only rcvar (#1875) [Mina GaliÄ] + + feat: add support aliyun metadata security harden mode (#1865) + [Manasseh Zhou] + + docs: uprate analyze to performance page [s-makin] + + test: fix lxd preseed managed network config (#1881) + + Add support for static IPv6 addresses for FreeBSD (#1839) [einsibjarni] + + Make 3.12 failures not fail the build (#1873) + + Docs: adding relative links [s-makin] + + Update read-version + + Fix setup.py to align with PEP 440 versioning replacing trailing + + travis: promote 3.11-dev to 3.11 (#1866) + + test_cloud_sigma: delete useless test (#1828) [sxt1001] + + Add "nkukard" as contributor (#1864) [Nigel Kukard] + + tests: ds-id mocks for vmware-rpctool as utility may not exist in env + + doc: add how to render new module doc (#1855) + + doc: improve module creation explanation (#1851) + + Add Support for IPv6 metadata to OpenStack (#1805) + [Marvin Vogt] (LP: #1906849) + + add xiaoge1001 to .github-cla-signers (#1854) [sxt1001] + + network: Deprecate gateway{4,6} keys in network config v2 (#1794) + (LP: #1992512) + + VMware: Move Guest Customization transport from OVF to VMware (#1573) + [PengpengSun] + + doc: home page links added (#1852) [s-makin] + +From 22.4.2 + + status: handle ds not defined in status.json (#1876) (LP: #1997559) + +From 22.4.1 + + net: skip duplicate mac check for netvsc nic and its VF (#1853) + [Anh Vo] (LP: #1844191) + + ChangeLog: whitespace cleanup (#1850) + + changelog: capture 22.3.1-4 releases + +------------------------------------------------------------------- +Fri Feb 3 22:02:32 UTC 2023 - Robert Schweikert <rjsch...@suse.com> + +- Add cloud-init-transact-up.patch to support transactional-updates + +------------------------------------------------------------------- +Tue Jan 31 19:47:23 UTC 2023 - Robert Schweikert <rjsch...@suse.com> + +- Add cloud-init-prefer-nm.patch + + Prefer NetworkManager of sysconfig when available + +------------------------------------------------------------------- +Thu Dec 22 18:10:45 UTC 2022 - Robert Schweikert <rjsch...@suse.com> + +- Update to version 22.4 + + Remove patches included upstream: + - cloud-init-vmware-test.patch + - cloud-init-sysctl-not-in-bin.patch + + Forward port: + - cloud-init-write-routes.patch + - cloud-init-break-resolv-symlink.patch + - cloud-init-sysconf-path.patch + - cloud-init-no-tempnet-oci.patch + + Add cloud-init-btrfs-queue-resize.patch (bsc#1171511) + + Add cloud-init-micro-is-suse.patch (bsc#1203393) [Martin Petersen] ++++ 691 more lines (skipped) ++++ between /work/SRC/openSUSE:Factory/cloud-init/cloud-init.changes ++++ and /work/SRC/openSUSE:Factory/.cloud-init.new.31432/cloud-init.changes Old: ---- cloud-init-21.4.tar.gz cloud-init-sysctl-not-in-bin.patch cloud-init-vmware-test.patch New: ---- cloud-init-23.1.tar.gz cloud-init-fix-ca-test.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cloud-init.spec ++++++ --- /var/tmp/diff_new_pack.J74Sn2/_old 2023-03-02 23:01:55.662736436 +0100 +++ /var/tmp/diff_new_pack.J74Sn2/_new 2023-03-02 23:01:55.670736472 +0100 @@ -1,7 +1,7 @@ # # spec file for package cloud-init # -# Copyright (c) 2021 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2023 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %global configver 0.7 Name: cloud-init -Version: 21.4 +Version: 23.1 Release: 0 License: GPL-3.0 Summary: Cloud node initialization tool @@ -27,17 +27,16 @@ Source0: %{name}-%{version}.tar.gz Source1: rsyslog-cloud-init.cfg Patch1: datasourceLocalDisk.patch -# FIXME (lp#1812117) -Patch2: cloud-init-write-routes.patch # FIXME (lp#1849296) -Patch3: cloud-init-break-resolv-symlink.patch +Patch2: cloud-init-break-resolv-symlink.patch # FIXME no proposed solution -Patch4: cloud-init-sysconf-path.patch +Patch3: cloud-init-sysconf-path.patch # FIXME (lp#1860164) -Patch5: cloud-init-no-tempnet-oci.patch -# FIXME https://github.com/canonical/cloud-init/pull/1278 -Patch6: cloud-init-sysctl-not-in-bin.patch -Patch7: cloud-init-vmware-test.patch +Patch4: cloud-init-no-tempnet-oci.patch +# FIXME https://github.com/canonical/cloud-init/pull/2036 +Patch5: cloud-init-fix-ca-test.patch +# FIXME (lp#1812117) +Patch6: cloud-init-write-routes.patch BuildRequires: fdupes BuildRequires: filesystem # pkg-config is needed to find correct systemd unit dir @@ -53,10 +52,16 @@ BuildRequires: python3-configobj >= 5.0.2 BuildRequires: python3-httpretty BuildRequires: python3-jsonpatch +BuildRequires: python3-jsonschema BuildRequires: python3-netifaces BuildRequires: python3-oauthlib BuildRequires: python3-pytest +BuildRequires: python3-pytest-cov +BuildRequires: python3-pytest-mock BuildRequires: python3-requests +BuildRequires: python3-responses +BuildRequires: python3-serial +BuildRequires: system-user-nobody %if 0%{?is_opensuse} BuildRequires: openSUSE-release %else @@ -79,13 +84,16 @@ Requires: python3-pyserial Requires: python3-PyYAML Requires: python3-requests +Requires: python3-responses +Requires: python3-serial Requires: python3-setuptools -Requires: python3-six Requires: python3-xml Requires: sudo Requires: util-linux Requires: wget +%if 0%{?suse_version} && 0%{?suse_version} <= 1500 Requires: wicked-service +%endif Requires: cloud-init-config = %configver BuildRoot: %{_tmppath}/%{name}-%{version}-build %define docdir %{_defaultdocdir}/%{name} @@ -134,7 +142,6 @@ %patch4 %patch5 %patch6 -%patch7 -p1 # patch in the full version to version.py version_pys=$(find . -name version.py -type f) @@ -146,8 +153,6 @@ python3 setup.py build %check -## Ignore test failure currently not doing anything with opennebula -rm -v tests/unittests/test_datasource/test_opennebula.py make unittest %install @@ -201,6 +206,8 @@ %{_bindir}/cloud-init %{_bindir}/cloud-init-per %dir %{_sysconfdir}/cloud +%dir %{_sysconfdir}/cloud/clean.d +%{_sysconfdir}/cloud/clean.d/README %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg.d %config(noreplace) %{_sysconfdir}/cloud/templates %{_sysconfdir}/dhcp/dhclient-exit-hooks.d/hook-dhclient @@ -213,7 +220,7 @@ %endif %{_datadir}/bash-completion/completions/cloud-init %{python3_sitelib}/cloudinit -%{python3_sitelib}/cloud_init-%{version}-py%{py3_ver}.egg-info +%{python3_sitelib}/cloud_init-%{version}*.egg-info %{_prefix}/lib/cloud-init %{systemd_prefix}/systemd/system-generators/cloud-init-generator %{systemd_prefix}/systemd/system/cloud-config.service @@ -236,6 +243,7 @@ %dir /etc/dhcp/dhclient-exit-hooks.d %dir /etc/systemd/system/sshd-keygen@.service.d + %files config-suse %defattr(-,root,root) %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg @@ -246,8 +254,4 @@ %{docdir}/*.txt %dir %{docdir}/examples -#%files test -#%defattr(-,root,root) -#%{python_sitelib}/tests - %changelog ++++++ cloud-init-21.4.tar.gz -> cloud-init-23.1.tar.gz ++++++ ++++ 236467 lines of diff (skipped) ++++++ cloud-init-break-resolv-symlink.patch ++++++ --- /var/tmp/diff_new_pack.J74Sn2/_old 2023-03-02 23:01:56.422739878 +0100 +++ /var/tmp/diff_new_pack.J74Sn2/_new 2023-03-02 23:01:56.426739896 +0100 @@ -1,8 +1,8 @@ --- cloudinit/net/sysconfig.py.orig +++ cloudinit/net/sysconfig.py -@@ -918,6 +918,11 @@ class Renderer(renderer.Renderer): - resolv_content = self._render_dns(network_state, - existing_dns_path=dns_path) +@@ -998,6 +998,11 @@ class Renderer(renderer.Renderer): + 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 @@ -11,5 +11,5 @@ + os.unlink(dns_path) util.write_file(dns_path, resolv_content, file_mode) if self.networkmanager_conf_path: - nm_conf_path = subp.target_path(target, + nm_conf_path = subp.target_path( ++++++ cloud-init-fix-ca-test.patch ++++++ --- tests/unittests/config/test_cc_ca_certs.py.orig +++ tests/unittests/config/test_cc_ca_certs.py @@ -311,6 +311,7 @@ class TestRemoveDefaultCaCerts(TestCase) "cloud_dir": tmpdir, } ) + self.add_patch("cloudinit.config.cc_ca_certs.os.stat", "m_stat") def test_commands(self): ca_certs_content = "# line1\nline2\nline3\n" @@ -318,6 +319,7 @@ class TestRemoveDefaultCaCerts(TestCase) "# line1\n# Modified by cloud-init to deselect certs due to" " user-data\n!line2\n!line3\n" ) + self.m_stat.return_value.st_size = 1 for distro_name in cc_ca_certs.distros: conf = cc_ca_certs._distro_ca_certs_configs(distro_name) ++++++ cloud-init-no-tempnet-oci.patch ++++++ --- /var/tmp/diff_new_pack.J74Sn2/_old 2023-03-02 23:01:56.458740041 +0100 +++ /var/tmp/diff_new_pack.J74Sn2/_new 2023-03-02 23:01:56.466740077 +0100 @@ -1,34 +1,17 @@ --- cloudinit/sources/DataSourceOracle.py.orig +++ cloudinit/sources/DataSourceOracle.py -@@ -134,14 +134,17 @@ class DataSourceOracle(sources.DataSourc - BUILTIN_DS_CONFIG["configure_secondary_nics"] - ) - network_context = noop() -- if not _is_iscsi_root(): -- network_context = dhcp.EphemeralDHCPv4( -- iface=net.find_fallback_nic(), -- connectivity_url_data={ -- "url": METADATA_PATTERN.format(version=2, path="instance"), -- "headers": V2_HEADERS, -- } -- ) -+ # SUSE images are built with iSCSI setup. The detection of the -+ # configured network for iscsi boot is distribution dependent. -+ # There's no implementation for openSUSE/SLE yet. -+ #if not _is_iscsi_root(): -+ # network_context = dhcp.EphemeralDHCPv4( -+ # iface=net.find_fallback_nic(), -+ # connectivity_url_data={ -+ # "url": METADATA_PATTERN.format(version=2, path="instance"), -+ # "headers": V2_HEADERS, -+ # } -+ # ) - with network_context: - fetched_metadata = read_opc_metadata( - fetch_vnics_data=fetch_vnics_data ---- cloudinit/sources/tests/test_oracle.py.orig -+++ cloudinit/sources/tests/test_oracle.py -@@ -666,6 +666,7 @@ class TestNonIscsiRoot_GetDataBehaviour: +@@ -204,6 +204,8 @@ class DataSourceOracle(sources.DataSourc + + def _is_iscsi_root(self) -> bool: + """Return whether we are on a iscsi machine.""" ++ # SUSE images are built with iSCSI setup. ++ return True + return self._network_config_source.is_applicable() + + def _get_iscsi_config(self) -> dict: +--- tests/unittests/sources/test_oracle.py.orig ++++ tests/unittests/sources/test_oracle.py +@@ -996,6 +996,7 @@ class TestNonIscsiRoot_GetDataBehaviour: def test_read_opc_metadata_called_with_ephemeral_dhcp( self, m_find_fallback_nic, m_EphemeralDHCPv4, oracle_ds ): ++++++ cloud-init-sysconf-path.patch ++++++ --- /var/tmp/diff_new_pack.J74Sn2/_old 2023-03-02 23:01:56.478740132 +0100 +++ /var/tmp/diff_new_pack.J74Sn2/_new 2023-03-02 23:01:56.482740150 +0100 @@ -1,14 +1,13 @@ --- cloudinit/net/sysconfig.py.orig +++ cloudinit/net/sysconfig.py -@@ -973,9 +973,7 @@ def available_sysconfig(target=None): - if not subp.which(p, search=search, target=target): +@@ -1056,8 +1056,7 @@ def available(target=None): return False -- expected_paths = [ -- 'etc/sysconfig/network-scripts/network-functions', -- 'etc/sysconfig/config'] -+ expected_paths = ['etc/sysconfig/network/scripts/functions.netconfig'] + expected_paths = [ +- "etc/sysconfig/network-scripts/network-functions", +- "etc/sysconfig/config", ++ 'etc/sysconfig/network/scripts/functions.netconfig' + ] for p in expected_paths: if os.path.isfile(subp.target_path(target, p)): - return True ++++++ cloud-init-write-routes.patch ++++++ --- /var/tmp/diff_new_pack.J74Sn2/_old 2023-03-02 23:01:56.498740222 +0100 +++ /var/tmp/diff_new_pack.J74Sn2/_new 2023-03-02 23:01:56.502740240 +0100 @@ -1,45 +1,24 @@ --- cloudinit/distros/__init__.py.orig +++ cloudinit/distros/__init__.py -@@ -220,6 +220,15 @@ class Distro(persistence.CloudInitPickle - network_state = parse_net_config_data(netconfig) - try: - self._write_network_state(network_state) -+ # The sysconfig renderer has no route writing implementation -+ # for SUSE yet use the old code for now that depends on the -+ # raw config. -+ try: -+ # Only exists for SUSE distro via this patch all other -+ # implementations throw which breaks testing -+ self._write_routes(netconfig) -+ except AttributeError: -+ pass - except NotImplementedError: - # backwards compat until all distros have apply_network_config - return self._apply_network_from_network_config( ---- cloudinit/distros/opensuse.py.orig -+++ cloudinit/distros/opensuse.py -@@ -8,9 +8,12 @@ - # - # This file is part of cloud-init. See LICENSE file for license information. - -+import logging -+ - from cloudinit import distros - - from cloudinit.distros.parsers.hostname import HostnameConf -+from cloudinit.net.network_state import mask_to_net_prefix +@@ -276,6 +276,15 @@ class Distro(persistence.CloudInitPickle - from cloudinit import helpers - from cloudinit import subp -@@ -19,6 +22,7 @@ from cloudinit import util - from cloudinit.distros import rhel_util as rhutil - from cloudinit.settings import PER_INSTANCE + network_state = parse_net_config_data(netconfig, renderer=renderer) + self._write_network_state(network_state, renderer) ++ # The sysconfig renderer has no route writing implementation ++ # for SUSE yet use the old code for now that depends on the ++ # raw config. ++ try: ++ # Only exists for SUSE distro via this patch all other ++ # implementations throw which breaks testing ++ self._write_routes(netconfig) ++ except AttributeError: ++ pass -+LOG = logging.getLogger(__name__) - - class Distro(distros.Distro): - clock_conf_fn = '/etc/sysconfig/clock' -@@ -168,6 +172,143 @@ class Distro(distros.Distro): + # Now try to bring them up + if bring_up: +--- cloudinit/distros/opensuse.py.orig ++++ cloudinit/distros/opensuse.py +@@ -238,6 +238,143 @@ class Distro(distros.Distro): conf.set_hostname(hostname) util.write_file(filename, str(conf), 0o644) @@ -79,7 +58,7 @@ + if dest != 'default': + netmask = route.get('netmask') + if netmask: -+ prefix = mask_to_net_prefix(netmask) ++ prefix = ipv4_mask_to_net_prefix(netmask) + dest += '/' + str(prefix) + if '/' not in dest: + LOG.warning(