diff --git a/.gitignore b/.gitignore index 82c44e1..c458948 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/nmstate-1.4.4.tar.gz -SOURCES/nmstate-vendor-1.4.4.tar.xz +SOURCES/nmstate-1.4.5.tar.gz +SOURCES/nmstate-vendor-1.4.5.tar.xz diff --git a/.nmstate.metadata b/.nmstate.metadata index e49bbc8..8630de5 100644 --- a/.nmstate.metadata +++ b/.nmstate.metadata @@ -1,2 +1,2 @@ -17340fe66e024e69e4c051e6a1bbd3d1974ca4ed SOURCES/nmstate-1.4.4.tar.gz -91a01d73ca8db5e882defaabc7529e97f4dd596a SOURCES/nmstate-vendor-1.4.4.tar.xz +cd4f8e938eabaf7e70fb251c06e477ba3bc9d8c8 SOURCES/nmstate-1.4.5.tar.gz +4735ef08c31684624a7844832cc2ba20e67983f6 SOURCES/nmstate-vendor-1.4.5.tar.xz diff --git a/SOURCES/BZ_2203277-ip-Support-static-route-with-auto-ip.patch b/SOURCES/BZ_2203277-ip-Support-static-route-with-auto-ip.patch deleted file mode 100644 index 489e4a8..0000000 --- a/SOURCES/BZ_2203277-ip-Support-static-route-with-auto-ip.patch +++ /dev/null @@ -1,184 +0,0 @@ -0001-covscan-Remove-dead-code.patch -0002-Run-cargo-clippy.patch -0003-ip-Support-static-route-with-auto-ip.patch -0004-test-Refresh-the-expired-CA-keys.patch -From 6ea4790a368260b43c207d19f20c728698ac2184 Mon Sep 17 00:00:00 2001 -From: Gris Ge -Date: Tue, 25 Apr 2023 14:52:59 +0800 -Subject: [PATCH 1/4] covscan: Remove dead code - -Removing the dead code found by covscan. - -Signed-off-by: Gris Ge -Signed-off-by: Akshata Konala ---- - libnmstate/dns.py | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/libnmstate/dns.py b/libnmstate/dns.py -index 853ece80..043c74a5 100644 ---- a/libnmstate/dns.py -+++ b/libnmstate/dns.py -@@ -173,7 +173,6 @@ class DnsState: - }, - }, - } -- return {} - - def _find_ifaces_for_name_servers( - self, ifaces, route_state, ignored_dns_ifaces --- -2.40.1 - - -From 0329b87b7856e244a4a2d34864a6e6eefa49b226 Mon Sep 17 00:00:00 2001 -From: Gris Ge -Date: Fri, 19 May 2023 17:57:51 +0800 -Subject: [PATCH 2/4] Run cargo clippy - -Signed-off-by: Gris Ge ---- - rust/src/lib/nispor/linux_bridge.rs | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/rust/src/lib/nispor/linux_bridge.rs b/rust/src/lib/nispor/linux_bridge.rs -index c03f03d6..c4cd104b 100644 ---- a/rust/src/lib/nispor/linux_bridge.rs -+++ b/rust/src/lib/nispor/linux_bridge.rs -@@ -63,7 +63,7 @@ pub(crate) fn append_bridge_port_config( - port_confs.push(port_conf); - } - -- if let Some(mut br_conf) = br_iface.bridge.as_mut() { -+ if let Some(br_conf) = br_iface.bridge.as_mut() { - br_conf.port = Some(port_confs); - } - } --- -2.40.1 - - -From 7c80a3acdb67eb09c3dcbeee7138315b3f855c7f Mon Sep 17 00:00:00 2001 -From: Gris Ge -Date: Fri, 19 May 2023 18:12:54 +0800 -Subject: [PATCH 3/4] ip: Support static route with auto ip - -Supporting assigning static route to interface with auto ip. For -example: - -```yml ---- -interfaces: - - name: eth1 - type: ethernet - state: up - ipv4: - dhcp: true - enabled: true - ipv6: - dhcp: true - autoconf: true - enabled: true -routes: - config: - - destination: 198.51.100.0/24 - metric: 150 - next-hop-address: 192.0.2.1 - next-hop-interface: eth1 - table-id: 254 - - destination: 2001:db8:2::/64 - metric: 151 - next-hop-address: 2001:db8:1::2 - next-hop-interface: eth1 -``` - -Integration test case included and been marked as tier1. - -Signed-off-by: Gris Ge ---- - libnmstate/route.py | 52 ++++++------- - tests/integration/dynamic_ip_test.py | 105 +++++++++++++++++++-------- - tests/lib/route_test.py | 28 +------ - 3 files changed, 105 insertions(+), 80 deletions(-) - -diff --git a/libnmstate/route.py b/libnmstate/route.py -index d3734279..c92cbbb6 100644 ---- a/libnmstate/route.py -+++ b/libnmstate/route.py -@@ -1,21 +1,4 @@ --# --# Copyright (c) 2020 Red Hat, Inc. --# --# This file is part of nmstate --# --# This program is free software: you can redistribute it and/or modify --# it under the terms of the GNU Lesser General Public License as published by --# the Free Software Foundation, either version 2.1 of the License, or --# (at your option) any later version. --# --# This program is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU Lesser General Public License for more details. --# --# You should have received a copy of the GNU Lesser General Public License --# along with this program. If not, see . --# -+# SPDX-License-Identifier: LGPL-2.1-or-later - - from collections import defaultdict - import logging -@@ -146,13 +129,6 @@ class RouteEntry(StateEntry): - f"Route {self.to_dict()} next hop to down/absent interface" - ) - return False -- if iface.is_dynamic( -- Interface.IPV6 if self.is_ipv6 else Interface.IPV4 -- ): -- self._invalid_reason = ( -- f"Route {self.to_dict()} next hop to interface with dynamic IP" -- ) -- return False - if self.is_ipv6: - if not iface.is_ipv6_enabled(): - self._invalid_reason = ( -@@ -194,7 +170,10 @@ class RouteState: - rt = RouteEntry(entry) - self._cur_routes[rt.next_hop_interface].add(rt) - if not ifaces or rt.is_valid(ifaces): -- self._routes[rt.next_hop_interface].add(rt) -+ # When user converting static IP to auto IP, we should -+ # not merge current static routes besides desired ones. -+ if not iface_switch_from_static_to_auto_ip(ifaces, rt): -+ self._routes[rt.next_hop_interface].add(rt) - else: - logging.debug( - f"The current route {entry} has been discarded due" -@@ -299,3 +278,24 @@ class RouteState: - {Route.KEY: {Route.CONFIG: cur_routes_info}}, - ) - ) -+ -+ -+def iface_switch_from_static_to_auto_ip(ifaces, rt): -+ iface_name = rt.next_hop_interface -+ if not iface_name or not ifaces: -+ return False -+ -+ if is_ipv6_address(rt.destination): -+ family = Interface.IPV6 -+ else: -+ family = Interface.IPV4 -+ -+ cur_iface = ifaces.get_cur_iface(iface_name, None) -+ des_iface = ifaces.get_iface(iface_name, None) -+ if ( -+ cur_iface -+ and des_iface -+ and not cur_iface.is_dynamic(family) -+ and des_iface.is_dynamic(family) -+ ): -+ return True --- -2.40.1 - diff --git a/SOURCES/RHEL-13936-dns-opt-fix.patch b/SOURCES/RHEL-13936-dns-opt-fix.patch new file mode 100644 index 0000000..abcbb2d --- /dev/null +++ b/SOURCES/RHEL-13936-dns-opt-fix.patch @@ -0,0 +1,157 @@ +From c95e26154cfe105faedb6fe6187e89da658e6d02 Mon Sep 17 00:00:00 2001 +From: Gris Ge +Date: Tue, 14 Nov 2023 16:08:35 +0800 +Subject: [PATCH 1/2] dns: Fix DNS option `ndots`, `timeout` and `attempts` + +The `ndots`, `timeout` and `attempts` DNS options are allowed to +hold a integer value in the format of `:`. Previously, +nmstate is treating them as invalid DNS option. This patch fix it. + +Now this YAML is supported: + +```yml +dns-resolver: + config: + options: + - rotate + - ndots:9 +``` + +Integration test cases included. + +Signed-off-by: Gris Ge +--- + libnmstate/dns.py | 31 ++++++++++++++++++++++++------- + 1 file changed, 24 insertions(+), 7 deletions(-) + +diff --git a/libnmstate/dns.py b/libnmstate/dns.py +index f792b896..5bb512e8 100644 +--- a/libnmstate/dns.py ++++ b/libnmstate/dns.py +@@ -19,14 +19,12 @@ EMPTY_DNS = { + REMOVE_DNS_CONFIG = {DNS.CONFIG: EMPTY_DNS} + + +-SUPPORTED_DNS_OPTIONS = [ +- "attempts", ++SUPPORTED_DNS_OPTS_NO_VALUE = [ + "debug", + "edns0", + "inet6", + "ip6-bytestring", + "ip6-dotint", +- "ndots", + "no-aaaa", + "no-check-names", + "no-ip6-dotint", +@@ -35,11 +33,16 @@ SUPPORTED_DNS_OPTIONS = [ + "rotate", + "single-request", + "single-request-reopen", +- "timeout", + "trust-ad", + "use-vc", + ] + ++SUPPORTED_DNS_OPTS_WITH_VALUE = [ ++ "ndots", ++ "timeout", ++ "attempts", ++] ++ + + class DnsState: + PRIORITY_METADATA = "_priority" +@@ -73,10 +76,24 @@ class DnsState: + + def _canonicalize_dns_options(self): + for opt in self.config_options: +- if opt not in SUPPORTED_DNS_OPTIONS: ++ if opt.find(":") > 0: ++ opt = opt[: opt.find(":")] ++ if opt not in SUPPORTED_DNS_OPTS_WITH_VALUE: ++ raise NmstateValueError( ++ "Option '{}' is not supported to hold " ++ "a value, only support these without " ++ "value: {} and these with values: {}:n", ++ opt, ++ ", ".join(SUPPORTED_DNS_OPTS_NO_VALUE), ++ ":n, ".join(SUPPORTED_DNS_OPTS_WITH_VALUE), ++ ) ++ elif opt not in SUPPORTED_DNS_OPTS_NO_VALUE: + raise NmstateValueError( +- f"Unsupported DNS option {opt}, only support: " +- f"{', '.join(SUPPORTED_DNS_OPTIONS)}", ++ "Option '{}' is not supported, only support these " ++ "without value: {} and these with values: {}:n", ++ opt, ++ ", ".join(SUPPORTED_DNS_OPTS_NO_VALUE), ++ ":n, ".join(SUPPORTED_DNS_OPTS_WITH_VALUE), + ) + + @property +-- +2.42.1 + + +From af07271ec5044ec092a3b66c0955636819ccde04 Mon Sep 17 00:00:00 2001 +From: Gris Ge +Date: Tue, 14 Nov 2023 16:16:53 +0800 +Subject: [PATCH 2/2] dns: Fix purging DNS config + +When user desires: + +```yml +--- +dns-resolver: + config: + search: [] +``` + +It means user want to remove all search but preserve servers and +options, current nmstate incorrectly treat this as purge also. + +This patch only treat these two as purge. + +```yml +dns-resolver: + config: {} +``` + +and + +```yml +dns-resolver: + config: + server: [] + search: [] + options: [] +``` + +Integration test cases included. + +Signed-off-by: Gris Ge +--- + libnmstate/nm/dns.py | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/libnmstate/nm/dns.py b/libnmstate/nm/dns.py +index 60ebbba7..b811fdb2 100644 +--- a/libnmstate/nm/dns.py ++++ b/libnmstate/nm/dns.py +@@ -158,7 +158,11 @@ def get_dns_config_iface_names(acs_and_ipv4_profiles, acs_and_ipv6_profiles): + for nm_ac, ip_profile in chain( + acs_and_ipv6_profiles, acs_and_ipv4_profiles + ): +- if ip_profile.props.dns or ip_profile.props.dns_search: ++ if ( ++ ip_profile.props.dns ++ or ip_profile.props.dns_search ++ or ip_profile.props.dns_options ++ ): + try: + iface_name = nm_ac.get_devices()[0].get_iface() + iface_names.append(iface_name) +-- +2.42.1 + diff --git a/SOURCES/nmstate-1.4.4.tar.gz.asc b/SOURCES/nmstate-1.4.4.tar.gz.asc deleted file mode 100644 index d885f4d..0000000 --- a/SOURCES/nmstate-1.4.4.tar.gz.asc +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCAAdFiEESP1vrlFad7SENoIch4lWe4cVzrwFAmRE940ACgkQh4lWe4cV -zrzJjxAA6hjRclf2YAkIrrdCyoU3TDElpADOjrTRMGe9K0kp5FEFPrzl9mJnDSNR -S0UL7Kwn0OBe9Pw8/0OMUPAHhiFy524yd1dRrb2X5RpH6Fem51ExCYHxYXWyRuxK -ll7JsTImeUxf0M+wetojLWaDOBT2Og1H6aRW62Jm8oa90l3Yjk4KZMNOslmY410V -H8QzfHa/R75ZpH6wH9RzyX7CNvCaglMEeBkMApvjSAppllolh7AkbjCCSEMiSnK/ -3HjSftvyGGDCn4VBP8hh05amz84ielK4RTqtz2fvzARudxxhQ+f9DJ/2fVFSv3RL -YxCQL3nYMnCqEK0LZ4hw5xdZcVGeuBBj5ubzWxzahy0dC87Lifvgy6/l1Tp5GBKt -wVSEA2dest55Punng784pNnYGnks/wKTK1TVnhLmTRe0IUJtUbz0cYse4JOfhxe+ -SYyVtSmrwaS3Lo/h2PtMua3aF92z9RP6dkNKin0c5WlBpmothwiEsCD6cZR148zB -y8hitadVZ9nysWFgT0EGVHMkzGTKaCVNJ1s3UsJUYiTUEMa3StzJX704NKEitnFX -SkC2qHMlV04BMtB6Nb+86LOOPBSh5u7vzqU0M7BAD4SmVkKH27asYaSqdG3kLez6 -XRW8eeQkS6LVAACm6Wrb37XecTAGPF9pE5P9Wmg0YKZpQM6t9NM= -=3XHy ------END PGP SIGNATURE----- diff --git a/SOURCES/nmstate-1.4.5.tar.gz.asc b/SOURCES/nmstate-1.4.5.tar.gz.asc new file mode 100644 index 0000000..a4340ad --- /dev/null +++ b/SOURCES/nmstate-1.4.5.tar.gz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEESP1vrlFad7SENoIch4lWe4cVzrwFAmVDid0ACgkQh4lWe4cV +zrx26BAAqv8ec7UMDkJ7MGAXwRpMZrLQ+zjPIDlVH0HVmdvZY2g8Lx2iK9g0xHeL +YGdVk3aL3UwQE/5Tt6qtzQ8sk76dWyveS1XxxNDLZa+TKvcGqDbxnmvOAIBJwrlD +4Q6MNWqudJDsboGotKSAoI/xHJafFzWfHU+SSp4AHtf2xHa2KFZqmaZW5gVdYq9j +/Zhepz8OQ+1s8/frVw1JEqKaTcw5gc0/2xNzh0MkC714Lkk4dhITHP6zh1HF/2i8 +LPIdVHMI8Ze7w4imiamr38+G3XzCQJ/6A/N6couFyJXrLgCn0Jm7Zv8t3TLW69JA +QD/YHcFgeZmh3QRHVoNIOunG7X7eczLjy61VVXMp3F38+GWSLxK2f7DMRyzRvIxF +uBrd9yBZ4qkSEqIG2tEBIZOPg4deDADaesyD3d5c0JROsmxkmhl9SEBk03qWtJEY +kWhCF4tGvVp1r+W7AjS6QpqAtFXJcBQdj1qs49fgRxVGjmw2ljMQdLT6O/oSFNpS +wzjvGhh8WvMcmStCQ0crTOeihYTyJu2PPqJ3c373EnE9xPN3cJVh+AGwV5kcpxkk +bJF8qooJDq7MAuNqiKdXORGzG0ht16TzJ4aE+1vGFAErYZitCzU13rkW3dKIU19h +KgFqlKXUHCS6J3KzJQszDpn+Hw8WOvcCQQ1LivcyLKHlvmTQPi4= +=51yt +-----END PGP SIGNATURE----- diff --git a/SOURCES/nmstate.gpg b/SOURCES/nmstate.gpg index 9c0f9a4..3b3a89b 100644 --- a/SOURCES/nmstate.gpg +++ b/SOURCES/nmstate.gpg @@ -47,5 +47,53 @@ E9NlXivSZRblfY9DEa4v0Zr7L9uyp2JU7taIexoLmPbefORThtGmNoc8DwzLlH8s SJXEX1ckgzCUNUPQs37ZmV7q4pXh2yYtcZwufH10o02nl67Yuv+43II3vuvEg9CO qOF1CIUdWB9SZwkAz4MeAjtw5d/YBSqYv9s0pSobvGuo7wBW7MTJ6PkGBzTvdR3H aOfE6WjbuPjr5H0J1oWyWa0/VB7i1OQ7/55IChT137OnVHRENP8HaGmRZYhxwLsI -=PdCG +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 +i2QY7dEEs/uMRtq8C8kSWg== +=259x -----END PGP PUBLIC KEY BLOCK----- diff --git a/SPECS/nmstate.spec b/SPECS/nmstate.spec index 6de53f3..7fb5f00 100644 --- a/SPECS/nmstate.spec +++ b/SPECS/nmstate.spec @@ -3,7 +3,7 @@ %define libname libnmstate Name: nmstate -Version: 1.4.4 +Version: 1.4.5 Release: 2%{?dist} Summary: Declarative network manager API License: LGPLv2+ @@ -14,7 +14,7 @@ Source2: https://www.nmstate.io/nmstate.gpg Source3: %{url}/releases/download/v%{version}/%{srcname}-vendor-%{version}.tar.xz # Patches 0X are reserved to downstream only Patch0: BZ_2132570-nm-reverse-IPv6-order-before-adding-them-to-setting.patch -Patch1: BZ_2203277-ip-Support-static-route-with-auto-ip.patch +Patch10: RHEL-13936-dns-opt-fix.patch BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: gnupg2 @@ -149,14 +149,29 @@ popd /sbin/ldconfig %changelog -* Tue Jul 04 2023 Akshata Konala - 1.4.4-2 -- Support static route with auto-ip. +* Wed Nov 15 2023 Gris Ge - 1.4.5-2 +- Fix use case on purging DNS option. RHEL-13936 -* Mon Apr 24 2023 Gris Ge - 1.4.4-1 -- Upgrade to 1.4.4. RHBZ#2186178 +* Thu Nov 02 2023 Gris Ge - 1.4.5-1 +- Support DNS option. RHEL-13936 -* Thu Mar 30 2023 Gris Ge - 1.4.3-1 -- Upgrade to 1.4.3. RHBZ#2181166 +* Wed Oct 04 2023 Wen Liang - 1.4.4-5 +- Support treating string as int for address prefix-length. RHEL-3358 + +* Wed Aug 30 2023 Fernando Fernandez Mancera - 1.4.4-4 +- Fix issue with ovs-bridge and ovs-interface with same name. RHBZ#2231843 + +* Tue May 30 2023 Fernando Fernandez Mancera - 1.4.4-3 +- Support static route with auto-ip. RHBZ#2203277 + +* Mon Apr 24 2023 Gris Ge - 1.4.4-2 +- Enable CI gating. + +* Sun Apr 23 2023 Gris Ge - 1.4.4-1 +- Upgrade to nmstate 1.4.4 + +* Wed Mar 29 2023 Gris Ge - 1.4.3-1 +- Upgrade to nmstate 1.4.3. RHBZ#2179899 * Mon Feb 27 2023 Gris Ge - 1.4.2-4 - Ignore undesired iface config. RHBZ#2160416