From d7d732332e486cd8969ff4b5ef95a24cb68b5441 Mon Sep 17 00:00:00 2001 From: Gris Ge Date: Mon, 27 Feb 2023 12:17:05 +0800 Subject: [PATCH] nm: Ignore error when creating profile if not desired When a undesired interface holding `autoconf: true` and `dhcp: false` for IPv6, nmstate will fail with error: Autoconf without DHCP is not supported yet This is caused by `nm/connection.py` try to create `NM.SimpleConnection` for every interface even not desired. This patch changed to: * Only create new `NM.SimpleConnection` when desired or changed. * Use current profile if exists when not desired or changed. * Ignore error if not desired/changed. Integration test case included. Signed-off-by: Gris Ge --- libnmstate/nm/profile.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/libnmstate/nm/profile.py b/libnmstate/nm/profile.py index ad1ad19f..1119cd1a 100644 --- a/libnmstate/nm/profile.py +++ b/libnmstate/nm/profile.py @@ -24,6 +24,7 @@ from distutils.version import StrictVersion import logging import time +from libnmstate.error import NmstateError from libnmstate.error import NmstateInternalError from libnmstate.error import NmstateLibnmError from libnmstate.error import NmstateNotSupportedError @@ -321,9 +322,22 @@ class NmProfile: # TODO: Use applied config as base profile # Or even better remove the base profile argument as top level # of nmstate should provide full/merged configure. - self._nm_simple_conn = create_new_nm_simple_conn( - self._iface, self._nm_profile - ) + if self._iface.is_changed or self._iface.is_desired: + self._nm_simple_conn = create_new_nm_simple_conn( + self._iface, self._nm_profile + ) + elif self._nm_profile: + self._nm_simple_conn = NM.SimpleConnection.new_clone( + self._nm_profile + ) + else: + try: + self._nm_simple_conn = create_new_nm_simple_conn( + self._iface, self._nm_profile + ) + # No error for undesired interface + except NmstateError: + pass def save_config(self, save_to_disk): self._check_sriov_support() -- 2.39.2