Blame SOURCES/BZ_1820009_remove_duplicate_call_of_is_ovs_running.patch

47b589
From 69bed0e79bd951b4e5496cae6b3738649030b5ae Mon Sep 17 00:00:00 2001
47b589
From: Gris Ge <fge@redhat.com>
47b589
Date: Tue, 23 Jun 2020 20:28:30 +0800
47b589
Subject: [PATCH] ovs: Eliminate the repeat call of is_ovs_running()
47b589
47b589
The `validate_interface_capabilities()` is invoking `is_ovs_running()`
47b589
on every interface. Fixed by using `set()` for interface types for
47b589
duplicate types and also caching ovs daemon status.
47b589
47b589
The `NetworkManagerPlugin.get_interfaces()` is invoking
47b589
`is_ovs_running()` on every interface. Fixed by caching ovs daemon
47b589
status.
47b589
47b589
Signed-off-by: Gris Ge <fge@redhat.com>
47b589
---
47b589
 libnmstate/nm/plugin.py | 3 ++-
47b589
 libnmstate/validator.py | 5 +++--
47b589
 2 files changed, 5 insertions(+), 3 deletions(-)
47b589
47b589
diff --git a/libnmstate/nm/plugin.py b/libnmstate/nm/plugin.py
47b589
index 20fa77e..4032359 100644
47b589
--- a/libnmstate/nm/plugin.py
47b589
+++ b/libnmstate/nm/plugin.py
47b589
@@ -97,6 +97,7 @@ class NetworkManagerPlugin(NmstatePlugin):
47b589
 
47b589
     def get_interfaces(self):
47b589
         info = []
47b589
+        capabilities = self.capabilities
47b589
 
47b589
         devices_info = [
47b589
             (dev, nm_device.get_device_common_info(dev))
47b589
@@ -122,7 +123,7 @@ class NetworkManagerPlugin(NmstatePlugin):
47b589
             if nm_bond.is_bond_type_id(type_id):
47b589
                 bondinfo = nm_bond.get_bond_info(dev)
47b589
                 iface_info.update(_ifaceinfo_bond(bondinfo))
47b589
-            elif NmstatePlugin.OVS_CAPABILITY in self.capabilities:
47b589
+            elif NmstatePlugin.OVS_CAPABILITY in capabilities:
47b589
                 if nm_ovs.is_ovs_bridge_type_id(type_id):
47b589
                     iface_info["bridge"] = nm_ovs.get_ovs_info(
47b589
                         self.context, dev, devices_info
47b589
diff --git a/libnmstate/validator.py b/libnmstate/validator.py
47b589
index ee30166..02890b4 100644
47b589
--- a/libnmstate/validator.py
47b589
+++ b/libnmstate/validator.py
47b589
@@ -47,9 +47,10 @@ def validate_capabilities(state, capabilities):
47b589
 
47b589
 
47b589
 def validate_interface_capabilities(ifaces_state, capabilities):
47b589
-    ifaces_types = [iface_state.get("type") for iface_state in ifaces_state]
47b589
+    ifaces_types = {iface_state.get("type") for iface_state in ifaces_state}
47b589
     has_ovs_capability = NmstatePlugin.OVS_CAPABILITY in capabilities
47b589
     has_team_capability = NmstatePlugin.TEAM_CAPABILITY in capabilities
47b589
+    ovs_is_running = is_ovs_running()
47b589
     for iface_type in ifaces_types:
47b589
         is_ovs_type = iface_type in (
47b589
             InterfaceType.OVS_BRIDGE,
47b589
@@ -57,7 +58,7 @@ def validate_interface_capabilities(ifaces_state, capabilities):
47b589
             InterfaceType.OVS_PORT,
47b589
         )
47b589
         if is_ovs_type and not has_ovs_capability:
47b589
-            if not is_ovs_running():
47b589
+            if not ovs_is_running:
47b589
                 raise NmstateDependencyError(
47b589
                     "openvswitch service is not started."
47b589
                 )
47b589
-- 
47b589
2.27.0
47b589