]> git.proxmox.com Git - mirror_ifupdown2.git/commitdiff
ifupdown2: mstpctl: check mstpd running just once during init of mstpctl modules
authorRoopa Prabhu <roopa@cumulusnetworks.com>
Sat, 28 Nov 2015 03:31:25 +0000 (19:31 -0800)
committerSam Tannous <stannous@cumulusnetworks.com>
Wed, 9 Dec 2015 19:02:07 +0000 (14:02 -0500)
Ticket: CM-8035
Reviewed By: wkok
Testing Done: Tested mstp commands in interfaces file

(cherry picked from commit 2c3471f2082c8adbdcc395cbd0066680f280b9e5)

addons/mstpctl.py
ifupdownaddons/systemutils.py

index 9bde3f69bef435e33faf03310a758ca5cae83f3c..5957af04157f8e9c20ddeccd11f6e1680fa0bff7 100644 (file)
@@ -11,7 +11,7 @@ from ifupdownaddons.modulebase import moduleBase
 from ifupdownaddons.bridgeutils import brctl
 from ifupdownaddons.iproute2 import iproute2
 from ifupdownaddons.mstpctlutil import mstpctlutil
-import traceback
+from ifupdownaddons.systemutils import systemUtils
 
 class mstpctlFlags:
     PORT_PROCESSED = 0x1
@@ -171,6 +171,8 @@ class mstpctl(moduleBase):
         self.name = self.__class__.__name__
         self.brctlcmd = None
         self.mstpctlcmd = None
+        self.mstpd_running = (True if systemUtils.is_process_running('mstpd')
+                             else False)
 
     def _is_bridge(self, ifaceobj):
         if (ifaceobj.get_attr_value_first('mstpctl-ports') or
@@ -371,8 +373,7 @@ class mstpctl(moduleBase):
         # Check if bridge port
         bridgename = self.ipcmd.bridge_port_get_bridge_name(ifaceobj.name)
         if bridgename:
-            mstpd_running = (True if self.mstpctlcmd.is_mstpd_running()
-                             else False)
+            mstpd_running = self.mstpd_running
             stp_running_on = self._is_running_userspace_stp_state_on(bridgename)
             applied = self._apply_bridge_port_settings(ifaceobj, bridgename,
                                                        None, stp_running_on,
@@ -416,7 +417,7 @@ class mstpctl(moduleBase):
                                     self.brctlcmd.set_stp)
             else:
                stp = self.brctlcmd.get_stp(ifaceobj.name)
-            if (self.mstpctlcmd.is_mstpd_running() and
+            if (self.mstpd_running and
                     (stp == 'yes' or stp == 'on')):
                 self._apply_bridge_settings(ifaceobj)
                 self._apply_bridge_port_settings_all(ifaceobj,
index 292af8d45245944bd7392c9a89ace052c06a8339..84d1873ab8db71b8832c80d7124cfb5fb907994e 100644 (file)
@@ -42,3 +42,15 @@ class systemUtils():
             # XXX: check for subprocess errors vs os error
             return False
         return True
+
+    @classmethod
+    def is_process_running(self, processname):
+        if not processname:
+            return False
+        utilsobj = utilsBase()
+        try:
+            utilsobj.exec_command('/bin/pidof %s' %processname)
+        except:
+            return False
+        else:
+            return True