import nmstate-1.1.0-5.el8_5
This commit is contained in:
parent
aaa1c8b9f1
commit
11fa53642d
45
SOURCES/BZ_2034139-do-not-rename-connection.patch
Normal file
45
SOURCES/BZ_2034139-do-not-rename-connection.patch
Normal file
@ -0,0 +1,45 @@
|
||||
From daad0a535b370d0a3f847526185c185aca2d9935 Mon Sep 17 00:00:00 2001
|
||||
From: Fernando Fernandez Mancera <ffmancera@riseup.net>
|
||||
Date: Thu, 2 Sep 2021 11:33:14 +0200
|
||||
Subject: [PATCH] nm.connection: do not rename existing connections
|
||||
|
||||
When an user is specifying a custom name for a connection and then use
|
||||
Nmstate to modify the interface, it will be renamed. That makes
|
||||
impossible to use other automation tools because it will require to use
|
||||
the uuid instead.
|
||||
|
||||
Integration test case added.
|
||||
|
||||
Ref: https://bugzilla.redhat.com/1998222
|
||||
|
||||
Signed-off-by: Fernando Fernandez Mancera <ffmancera@riseup.net>
|
||||
Signed-off-by: Gris Ge <fge@redhat.com>
|
||||
---
|
||||
libnmstate/nm/connection.py | 4 ----
|
||||
1 file changed, 4 deletions(-)
|
||||
|
||||
diff --git a/libnmstate/nm/connection.py b/libnmstate/nm/connection.py
|
||||
index 5a79c6f..39eb2b5 100644
|
||||
--- a/libnmstate/nm/connection.py
|
||||
+++ b/libnmstate/nm/connection.py
|
||||
@@ -98,9 +98,6 @@ class _ConnectionSetting:
|
||||
self._setting.props.master = controller
|
||||
self._setting.props.slave_type = port_type
|
||||
|
||||
- def set_profile_name(self, con_name):
|
||||
- self._setting.props.id = con_name
|
||||
-
|
||||
@property
|
||||
def setting(self):
|
||||
return self._setting
|
||||
@@ -116,7 +113,6 @@ def create_new_nm_simple_conn(iface, nm_profile):
|
||||
con_setting = _ConnectionSetting()
|
||||
if nm_profile and not is_multiconnect_profile(nm_profile):
|
||||
con_setting.import_by_profile(nm_profile, iface.is_controller)
|
||||
- con_setting.set_profile_name(iface.name)
|
||||
else:
|
||||
con_setting.create(
|
||||
iface.name, iface.name, nm_iface_type, iface.is_controller
|
||||
--
|
||||
2.27.0
|
||||
|
110
SOURCES/BZ_2034139-ovs-remove-ovs-port-prefix.patch
Normal file
110
SOURCES/BZ_2034139-ovs-remove-ovs-port-prefix.patch
Normal file
@ -0,0 +1,110 @@
|
||||
From cd41c2c0f6bef7b952648b358246fffa8ce3cf62 Mon Sep 17 00:00:00 2001
|
||||
From: Fernando Fernandez Mancera <ffmancera@riseup.net>
|
||||
Date: Thu, 2 Sep 2021 17:39:59 +0200
|
||||
Subject: [PATCH 1/2] nm.connection: add postfixes to OVS bridges and
|
||||
interfaces connections
|
||||
|
||||
When configuring an OVS bridge and interface with the same using
|
||||
Nmstate, it will generate two connection with the same name. If the user
|
||||
is willing to use nmcli to manage this profiles, it is not user friendly
|
||||
because they will need to use the connection UUID instead.
|
||||
|
||||
In order to solve this, Nmstate is adding a postfix on the connection
|
||||
name. "-if" for OVS interface and "-br" for OVS bridge.
|
||||
|
||||
Please, note that this issue does not affect kernel interfaces because
|
||||
it is not possible to have duplicated interfaces names in kernel.
|
||||
|
||||
Integration test case added.
|
||||
|
||||
Ref: https://bugzilla.redhat.com/1998218
|
||||
|
||||
Signed-off-by: Fernando Fernandez Mancera <ffmancera@riseup.net>
|
||||
Signed-off-by: Gris Ge <fge@redhat.com>
|
||||
---
|
||||
libnmstate/nm/connection.py | 14 +++++++++++++-
|
||||
1 file changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libnmstate/nm/connection.py b/libnmstate/nm/connection.py
|
||||
index 39eb2b5..afe3788 100644
|
||||
--- a/libnmstate/nm/connection.py
|
||||
+++ b/libnmstate/nm/connection.py
|
||||
@@ -114,8 +114,20 @@ def create_new_nm_simple_conn(iface, nm_profile):
|
||||
if nm_profile and not is_multiconnect_profile(nm_profile):
|
||||
con_setting.import_by_profile(nm_profile, iface.is_controller)
|
||||
else:
|
||||
+ # OVS bridge and interfaces could sharing the same interface name, to
|
||||
+ # distinguish them at NM connection level, instead of using interface
|
||||
+ # name as connection name, we append a postfix.
|
||||
+ con_name = iface.name
|
||||
+ if iface.type == InterfaceType.OVS_BRIDGE:
|
||||
+ con_name = con_name + "-br"
|
||||
+ elif iface.type == InterfaceType.OVS_INTERFACE:
|
||||
+ con_name = con_name + "-if"
|
||||
+
|
||||
con_setting.create(
|
||||
- iface.name, iface.name, nm_iface_type, iface.is_controller
|
||||
+ con_name,
|
||||
+ iface.name,
|
||||
+ nm_iface_type,
|
||||
+ iface.is_controller,
|
||||
)
|
||||
|
||||
apply_lldp_setting(con_setting, iface_info)
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
||||
From cfdd5afb1ef136d613d5adb3f6f5f6d156962586 Mon Sep 17 00:00:00 2001
|
||||
From: Radim Hrazdil <rhrazdil@redhat.com>
|
||||
Date: Wed, 10 Nov 2021 16:57:08 +0100
|
||||
Subject: [PATCH 2/2] ovs: remove ovs-port prefix
|
||||
|
||||
Prepending the prefix causes ovnkube-node pods to crash.
|
||||
This change adds -port postfix to ovs-interface connection instead.
|
||||
|
||||
Signed-off-by: Radim Hrazdil <rhrazdil@redhat.com>
|
||||
Signed-off-by: Gris Ge <fge@redhat.com>
|
||||
---
|
||||
libnmstate/nm/connection.py | 2 ++
|
||||
libnmstate/nm/ovs.py | 4 +---
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libnmstate/nm/connection.py b/libnmstate/nm/connection.py
|
||||
index afe3788..fb4ceba 100644
|
||||
--- a/libnmstate/nm/connection.py
|
||||
+++ b/libnmstate/nm/connection.py
|
||||
@@ -122,6 +122,8 @@ def create_new_nm_simple_conn(iface, nm_profile):
|
||||
con_name = con_name + "-br"
|
||||
elif iface.type == InterfaceType.OVS_INTERFACE:
|
||||
con_name = con_name + "-if"
|
||||
+ elif iface.type == InterfaceType.OVS_PORT:
|
||||
+ con_name = con_name + "-port"
|
||||
|
||||
con_setting.create(
|
||||
con_name,
|
||||
diff --git a/libnmstate/nm/ovs.py b/libnmstate/nm/ovs.py
|
||||
index 424df36..9f2cba0 100644
|
||||
--- a/libnmstate/nm/ovs.py
|
||||
+++ b/libnmstate/nm/ovs.py
|
||||
@@ -32,8 +32,6 @@ from libnmstate.schema import OvsDB
|
||||
from .common import NM
|
||||
|
||||
|
||||
-PORT_PROFILE_PREFIX = "ovs-port-"
|
||||
-
|
||||
CONTROLLER_TYPE_METADATA = "_controller_type"
|
||||
CONTROLLER_METADATA = "_controller"
|
||||
SETTING_OVS_EXTERNALIDS = "SettingOvsExternalIDs"
|
||||
@@ -311,7 +309,7 @@ def create_iface_for_nm_ovs_port(iface):
|
||||
if ovs.is_ovs_lag_port(port_options):
|
||||
port_name = port_options[OB.Port.NAME]
|
||||
else:
|
||||
- port_name = PORT_PROFILE_PREFIX + iface_name
|
||||
+ port_name = iface_name
|
||||
return OvsPortIface(
|
||||
{
|
||||
Interface.NAME: port_name,
|
||||
--
|
||||
2.27.0
|
||||
|
326
SOURCES/BZ_2039285-sriov-New-way-to-wait-VF-been-created.patch
Normal file
326
SOURCES/BZ_2039285-sriov-New-way-to-wait-VF-been-created.patch
Normal file
@ -0,0 +1,326 @@
|
||||
From b8e3c6928c2a22a828b85a6780de3cea1107aa85 Mon Sep 17 00:00:00 2001
|
||||
From: Gris Ge <fge@redhat.com>
|
||||
Date: Fri, 24 Dec 2021 16:34:30 +0800
|
||||
Subject: [PATCH] sriov: New way to wait VF been created
|
||||
|
||||
By checking `/sys/class/net/<pf_name>/device/virtfn<sriov_id>/net/`
|
||||
we could tell the interface name of VF.
|
||||
|
||||
The old VF name guessing method is removed. The `verify_sriov_vf()` is
|
||||
created to collect all VF interfaces name, then comparing it with
|
||||
`total_vfs` count and check whether they exists in current state.
|
||||
|
||||
The test indicate kernel/udev does not require extra time to remove VF
|
||||
interface when decreasing SR-IOV VF count.
|
||||
|
||||
Signed-off-by: Gris Ge <fge@redhat.com>
|
||||
---
|
||||
libnmstate/ifaces/ethernet.py | 100 +++++++++++++++-------------------
|
||||
libnmstate/ifaces/ifaces.py | 44 +--------------
|
||||
libnmstate/nispor/ethernet.py | 17 ++++++
|
||||
libnmstate/nm/profiles.py | 1 -
|
||||
libnmstate/nm/sriov.py | 5 +-
|
||||
5 files changed, 67 insertions(+), 100 deletions(-)
|
||||
|
||||
diff --git a/libnmstate/ifaces/ethernet.py b/libnmstate/ifaces/ethernet.py
|
||||
index 84fc665..720deab 100644
|
||||
--- a/libnmstate/ifaces/ethernet.py
|
||||
+++ b/libnmstate/ifaces/ethernet.py
|
||||
@@ -17,10 +17,9 @@
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
+from libnmstate.error import NmstateVerificationError
|
||||
from libnmstate.schema import Ethernet
|
||||
-from libnmstate.schema import Interface
|
||||
from libnmstate.schema import InterfaceType
|
||||
-from libnmstate.schema import InterfaceState
|
||||
|
||||
from .base_iface import BaseIface
|
||||
|
||||
@@ -30,7 +29,7 @@ MULTIPORT_PCI_DEVICE_PREFIX = "n"
|
||||
|
||||
|
||||
class EthernetIface(BaseIface):
|
||||
- IS_GENERATED_VF_METADATA = "_is_generated_vf"
|
||||
+ VF_IFACE_NAME_METADATA = "_vf_iface_name"
|
||||
|
||||
def __init__(self, info, save_to_disk=True):
|
||||
super().__init__(info, save_to_disk)
|
||||
@@ -56,10 +55,6 @@ class EthernetIface(BaseIface):
|
||||
state = super().state_for_verify()
|
||||
_capitalize_sriov_vf_mac(state)
|
||||
EthernetIface._canonicalize(state)
|
||||
- if self.is_generated_vf:
|
||||
- # The VF state is unpredictable when PF is changing total_vfs count
|
||||
- # Just don't verify generated VF state.
|
||||
- state.pop(Interface.STATE, None)
|
||||
return state
|
||||
|
||||
@property
|
||||
@@ -102,54 +97,6 @@ class EthernetIface(BaseIface):
|
||||
def duplex(self):
|
||||
return self.raw.get(Ethernet.CONFIG_SUBTREE, {}).get(Ethernet.DUPLEX)
|
||||
|
||||
- def create_sriov_vf_ifaces(self):
|
||||
- # Currently there is not a way to see the relation between a SR-IOV PF
|
||||
- # and its VFs. Broadcom BCM57416 follows a different name pattern for
|
||||
- # PF and VF, therefore it needs to be parsed if present.
|
||||
- #
|
||||
- # PF name: ens2f0np0
|
||||
- # VF name: ens2f0v0
|
||||
- #
|
||||
- # The different name pattern is due to:
|
||||
- # 1. The `n` is for `multi-port PCI device` support.
|
||||
- # 2. The `p*` is `phys_port_name` provided by the BCM driver
|
||||
- # `bnxt_en`.
|
||||
- #
|
||||
- # If the NIC is following the standard pattern "pfname+v+vfid", this
|
||||
- # split will not touch it and the vf_pattern will be the PF name.
|
||||
- # Ref: https://bugzilla.redhat.com/1959679
|
||||
- vf_pattern = self.name
|
||||
- multiport_pattern = (
|
||||
- MULTIPORT_PCI_DEVICE_PREFIX + BNXT_DRIVER_PHYS_PORT_PREFIX
|
||||
- )
|
||||
- if len(self.name.split(multiport_pattern)) == 2:
|
||||
- vf_pattern = self.name.split(multiport_pattern)[0]
|
||||
-
|
||||
- vf_ifaces = [
|
||||
- EthernetIface(
|
||||
- {
|
||||
- # According to manpage of systemd.net-naming-scheme(7),
|
||||
- # SRIOV VF interface will have v{slot} in device name.
|
||||
- # Currently, nmstate has no intention to support
|
||||
- # user-defined udev rule on SRIOV interface naming policy.
|
||||
- Interface.NAME: f"{vf_pattern}v{i}",
|
||||
- Interface.TYPE: InterfaceType.ETHERNET,
|
||||
- # VF will be in DOWN state initialy
|
||||
- Interface.STATE: InterfaceState.DOWN,
|
||||
- }
|
||||
- )
|
||||
- for i in range(0, self.sriov_total_vfs)
|
||||
- ]
|
||||
- # The generated vf metadata cannot be part of the original dict.
|
||||
- for vf in vf_ifaces:
|
||||
- vf._info[EthernetIface.IS_GENERATED_VF_METADATA] = True
|
||||
-
|
||||
- return vf_ifaces
|
||||
-
|
||||
- @property
|
||||
- def is_generated_vf(self):
|
||||
- return self._info.get(EthernetIface.IS_GENERATED_VF_METADATA) is True
|
||||
-
|
||||
def remove_vfs_entry_when_total_vfs_decreased(self):
|
||||
vfs_count = len(
|
||||
self._info[Ethernet.CONFIG_SUBTREE]
|
||||
@@ -173,6 +120,16 @@ class EthernetIface(BaseIface):
|
||||
def check_total_vfs_matches_vf_list(self, total_vfs):
|
||||
return total_vfs == len(self.sriov_vfs)
|
||||
|
||||
+ def to_dict(self):
|
||||
+ info = super().to_dict()
|
||||
+ for vf_info in (
|
||||
+ info.get(Ethernet.CONFIG_SUBTREE, {})
|
||||
+ .get(Ethernet.SRIOV_SUBTREE, {})
|
||||
+ .get(Ethernet.SRIOV.VFS_SUBTREE, [])
|
||||
+ ):
|
||||
+ vf_info.pop(EthernetIface.VF_IFACE_NAME_METADATA, None)
|
||||
+ return info
|
||||
+
|
||||
|
||||
def _capitalize_sriov_vf_mac(state):
|
||||
vfs = (
|
||||
@@ -184,3 +141,36 @@ def _capitalize_sriov_vf_mac(state):
|
||||
vf_mac = vf.get(Ethernet.SRIOV.VFS.MAC_ADDRESS)
|
||||
if vf_mac:
|
||||
vf[Ethernet.SRIOV.VFS.MAC_ADDRESS] = vf_mac.upper()
|
||||
+
|
||||
+
|
||||
+def verify_sriov_vf(iface, cur_ifaces):
|
||||
+ """
|
||||
+ Checking whether VF interface is been created
|
||||
+ """
|
||||
+ if not (
|
||||
+ iface.is_up
|
||||
+ and (iface.is_desired or iface.is_changed)
|
||||
+ and iface.type == InterfaceType.ETHERNET
|
||||
+ and iface.sriov_total_vfs > 0
|
||||
+ ):
|
||||
+ return
|
||||
+ cur_iface = cur_ifaces.get_iface(iface.name, iface.type)
|
||||
+ if not cur_iface:
|
||||
+ # Other verification will raise proper exception when current interface
|
||||
+ # is missing
|
||||
+ return
|
||||
+ cur_vf_names = []
|
||||
+ for sriov_vf in cur_iface.sriov_vfs:
|
||||
+ if sriov_vf.get(EthernetIface.VF_IFACE_NAME_METADATA):
|
||||
+ cur_vf_names.append(sriov_vf[EthernetIface.VF_IFACE_NAME_METADATA])
|
||||
+
|
||||
+ if len(cur_vf_names) != iface.sriov_total_vfs:
|
||||
+ raise NmstateVerificationError(
|
||||
+ f"Found VF ports count does not match desired "
|
||||
+ f"{iface.sriov_total_vfs}, current is: {','.join(cur_vf_names)}"
|
||||
+ )
|
||||
+ for cur_vf_name in cur_vf_names:
|
||||
+ if not cur_ifaces.get_iface(cur_vf_name, InterfaceType.ETHERNET):
|
||||
+ raise NmstateVerificationError(
|
||||
+ f"VF interface {cur_vf_name} of PF {iface.name} not found"
|
||||
+ )
|
||||
diff --git a/libnmstate/ifaces/ifaces.py b/libnmstate/ifaces/ifaces.py
|
||||
index be295e3..4bd6792 100644
|
||||
--- a/libnmstate/ifaces/ifaces.py
|
||||
+++ b/libnmstate/ifaces/ifaces.py
|
||||
@@ -33,6 +33,7 @@ from .base_iface import BaseIface
|
||||
from .bond import BondIface
|
||||
from .dummy import DummyIface
|
||||
from .ethernet import EthernetIface
|
||||
+from .ethernet import verify_sriov_vf
|
||||
from .infiniband import InfiniBandIface
|
||||
from .linux_bridge import LinuxBridgeIface
|
||||
from .macvlan import MacVlanIface
|
||||
@@ -151,7 +152,6 @@ class Ifaces:
|
||||
self._kernel_ifaces[iface.name] = iface
|
||||
|
||||
self._create_virtual_port()
|
||||
- self._create_sriov_vfs_when_changed()
|
||||
self._mark_vf_interface_as_absent_when_sriov_vf_decrease()
|
||||
self._validate_unknown_port()
|
||||
self._validate_unknown_parent()
|
||||
@@ -241,35 +241,6 @@ class Ifaces:
|
||||
for iface in new_ifaces:
|
||||
self._kernel_ifaces[iface.name] = iface
|
||||
|
||||
- def _create_sriov_vfs_when_changed(self):
|
||||
- """
|
||||
- When plugin set the TOTAL_VFS of PF, it might take 1 seconds or
|
||||
- more to have the VFs to be ready.
|
||||
- Nmstate should use verification retry to make sure VFs are full ready.
|
||||
- To do that, we include VFs into desire state.
|
||||
- """
|
||||
- new_ifaces = []
|
||||
- for iface in self.all_ifaces():
|
||||
- if (
|
||||
- iface.is_up
|
||||
- and (iface.is_desired or iface.is_changed)
|
||||
- and iface.type == InterfaceType.ETHERNET
|
||||
- and iface.sriov_total_vfs > 0
|
||||
- ):
|
||||
- for new_iface in iface.create_sriov_vf_ifaces():
|
||||
- cur_iface = self._kernel_ifaces.get(new_iface.name)
|
||||
- if cur_iface and cur_iface.is_desired:
|
||||
- raise NmstateNotSupportedError(
|
||||
- "Does not support changing SR-IOV PF interface "
|
||||
- "along with VF interface in the single desire "
|
||||
- f"state: PF {iface.name}, VF {cur_iface.name}"
|
||||
- )
|
||||
- else:
|
||||
- new_iface.mark_as_desired()
|
||||
- new_ifaces.append(new_iface)
|
||||
- for new_iface in new_ifaces:
|
||||
- self._kernel_ifaces[new_iface.name] = new_iface
|
||||
-
|
||||
def _mark_vf_interface_as_absent_when_sriov_vf_decrease(self):
|
||||
"""
|
||||
When SRIOV TOTAL_VFS decreased, we should mark certain VF interfaces
|
||||
@@ -647,6 +618,7 @@ class Ifaces:
|
||||
cur_ifaces._remove_ignore_interfaces(self._ignored_ifaces)
|
||||
self._remove_ignore_interfaces(self._ignored_ifaces)
|
||||
for iface in self.all_ifaces():
|
||||
+ verify_sriov_vf(iface, cur_ifaces)
|
||||
if iface.is_desired:
|
||||
if (
|
||||
iface.is_virtual
|
||||
@@ -700,18 +672,6 @@ class Ifaces:
|
||||
cur_iface.state_for_verify(),
|
||||
)
|
||||
)
|
||||
- elif (
|
||||
- iface.type == InterfaceType.ETHERNET and iface.is_sriov
|
||||
- ):
|
||||
- if not cur_iface.check_total_vfs_matches_vf_list(
|
||||
- iface.sriov_total_vfs
|
||||
- ):
|
||||
- raise NmstateVerificationError(
|
||||
- "The NIC exceeded the waiting time for "
|
||||
- "verification and it is failing because "
|
||||
- "the `total_vfs` does not match the VF "
|
||||
- "list length."
|
||||
- )
|
||||
|
||||
def gen_dns_metadata(self, dns_state, route_state):
|
||||
iface_metadata = dns_state.gen_metadata(self, route_state)
|
||||
diff --git a/libnmstate/nispor/ethernet.py b/libnmstate/nispor/ethernet.py
|
||||
index d6969b9..e4b82ff 100644
|
||||
--- a/libnmstate/nispor/ethernet.py
|
||||
+++ b/libnmstate/nispor/ethernet.py
|
||||
@@ -17,10 +17,13 @@
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
+import os
|
||||
+
|
||||
from libnmstate.schema import Ethernet
|
||||
from libnmstate.schema import InterfaceType
|
||||
|
||||
from .base_iface import NisporPluginBaseIface
|
||||
+from libnmstate.ifaces.ethernet import EthernetIface
|
||||
|
||||
|
||||
class NisporPluginEthernetIface(NisporPluginBaseIface):
|
||||
@@ -35,6 +38,9 @@ class NisporPluginEthernetIface(NisporPluginBaseIface):
|
||||
for vf in self.np_iface.sr_iov.vfs:
|
||||
vf_infos.append(
|
||||
{
|
||||
+ EthernetIface.VF_IFACE_NAME_METADATA: _get_vf_name(
|
||||
+ self.np_iface.name, vf.vf_id
|
||||
+ ),
|
||||
Ethernet.SRIOV.VFS.ID: vf.vf_id,
|
||||
Ethernet.SRIOV.VFS.MAC_ADDRESS: vf.mac.upper(),
|
||||
Ethernet.SRIOV.VFS.SPOOF_CHECK: vf.spoof_check,
|
||||
@@ -76,3 +82,14 @@ def np_ethtool_link_mode_to_nmstate(np_link_mode):
|
||||
info[Ethernet.SPEED] = np_link_mode.speed
|
||||
|
||||
return info
|
||||
+
|
||||
+
|
||||
+def _get_vf_name(pf_name, vf_id):
|
||||
+ try:
|
||||
+ vf_names = os.listdir(
|
||||
+ f"/sys/class/net/{pf_name}/device/virtfn{vf_id}/net/"
|
||||
+ )
|
||||
+ if len(vf_names) >= 1:
|
||||
+ return vf_names[0]
|
||||
+ except Exception:
|
||||
+ return ""
|
||||
diff --git a/libnmstate/nm/profiles.py b/libnmstate/nm/profiles.py
|
||||
index 3b0b6be..9e3020b 100644
|
||||
--- a/libnmstate/nm/profiles.py
|
||||
+++ b/libnmstate/nm/profiles.py
|
||||
@@ -71,7 +71,6 @@ class NmProfiles:
|
||||
for iface in sorted(
|
||||
list(net_state.ifaces.all_ifaces()), key=attrgetter("name")
|
||||
)
|
||||
- if not getattr(iface, "is_generated_vf", None)
|
||||
]
|
||||
|
||||
for profile in all_profiles:
|
||||
diff --git a/libnmstate/nm/sriov.py b/libnmstate/nm/sriov.py
|
||||
index a7e387c..e0bf60b 100644
|
||||
--- a/libnmstate/nm/sriov.py
|
||||
+++ b/libnmstate/nm/sriov.py
|
||||
@@ -102,8 +102,9 @@ def _create_sriov_vfs_from_config(vfs_config, sriov_setting, vf_ids_to_add):
|
||||
|
||||
|
||||
def _set_nm_attribute(vf_object, key, value):
|
||||
- nm_attr, nm_variant = SRIOV_NMSTATE_TO_NM_MAP[key]
|
||||
- vf_object.set_attribute(nm_attr, nm_variant(value))
|
||||
+ if key in SRIOV_NMSTATE_TO_NM_MAP:
|
||||
+ nm_attr, nm_variant = SRIOV_NMSTATE_TO_NM_MAP[key]
|
||||
+ vf_object.set_attribute(nm_attr, nm_variant(value))
|
||||
|
||||
|
||||
def _remove_sriov_vfs_in_setting(vfs_config, sriov_setting, vf_ids_to_remove):
|
||||
--
|
||||
2.27.0
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
Name: nmstate
|
||||
Version: 1.1.0
|
||||
Release: 3%{?dist}
|
||||
Release: 5%{?dist}
|
||||
Summary: Declarative network manager API
|
||||
License: LGPLv2+
|
||||
URL: https://github.com/%{srcname}/%{srcname}
|
||||
@ -15,6 +15,9 @@ Patch1: 0001-nmstatectl-fix-long-arguments-support.patch
|
||||
Patch2: 0002-nm-ethtool-Preserve-existing-ethtool-settings-when-u.patch
|
||||
Patch3: 0003-ovs-fix-state-ignore-for-ovs-port-when-removing-them.patch
|
||||
Patch4: 0004-nispor-fix-show-of-empty-next_hop_address-and-destin.patch
|
||||
Patch5: BZ_2034139-do-not-rename-connection.patch
|
||||
Patch6: BZ_2034139-ovs-remove-ovs-port-prefix.patch
|
||||
Patch7: BZ_2039285-sriov-New-way-to-wait-VF-been-created.patch
|
||||
BuildArch: noarch
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-setuptools
|
||||
@ -89,6 +92,12 @@ gpgv2 --keyring ./gpgkey-mantainers.gpg %{SOURCE1} %{SOURCE0}
|
||||
%{python3_sitelib}/%{libname}/plugins/__pycache__/nmstate_plugin_ovsdb*
|
||||
|
||||
%changelog
|
||||
* Wed Jan 12 2022 Gris Ge <fge@redhat.com> - 1.1.0-5
|
||||
- Remove OVS interface postfix. RHBZ#2034139
|
||||
|
||||
* Wed Jan 12 2022 Gris Ge <fge@redhat.com> - 1.1.0-4
|
||||
- Fix SR-IOV on ixgbe. RHBZ#2039285
|
||||
|
||||
* Tue Jul 27 2021 Gris Ge <fge@redhat.com> - 1.1.0-3
|
||||
- Fix state=ignore for OVS interface. RHBZ#1944054
|
||||
- Fix verification for next hop address 0.0.0.0. RHBZ#1985879
|
||||
|
Loading…
Reference in New Issue
Block a user