[PATCH 08/13] Have DHCP handler raise any results correctly.

Matthew W. S. Bell matthew at bells23.org.uk
Sat Apr 25 18:18:33 UTC 2009


From: Matthew W. S. Bell <mentor at engelbert.(none)>


Signed-off-by: Matthew W. S. Bell <matthew at bells23.org.uk>
---
 src/netconf/ifaces/dhcp/handler.py |    9 ++++++---
 src/netconf/ifaces/eni/handler.py  |    5 -----
 src/netconf/ifaces/handler.py      |    6 ++++++
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/netconf/ifaces/dhcp/handler.py b/src/netconf/ifaces/dhcp/handler.py
index fa87106..396d6e9 100644
--- a/src/netconf/ifaces/dhcp/handler.py
+++ b/src/netconf/ifaces/dhcp/handler.py
@@ -58,12 +58,15 @@ class DHCPHandler(BaseIfaceHandler):
         # peer, since the dhclient process still holds the old peer's FDs. The
         # solution is probably to reattach new peers to the old peer pipes...
 
+        def cb_result(result):
+            self._handled_event(e, parent_event)
+
         if cmd.name == 'IFUP':
-            return self._ifup(cmd, manip, cb_result, verbose)
+            self._ifup(cmd, manip, cb_result, verbose)
         elif cmd.name == 'IFDOWN':
-            return self._ifdown(cmd, manip, cb_result, verbose)
+            self._ifdown(cmd, manip, cb_result, verbose)
 
-        cb_result(BaseIfaceHandler.UnknownCommandError(cmd))
+        raise BaseIfaceHandler.UnknownCommandError(cmd)
 
     @public
     def go_away(self, cmd, manip, cb_result, verbose=None):
diff --git a/src/netconf/ifaces/eni/handler.py b/src/netconf/ifaces/eni/handler.py
index c810947..c9ab0dd 100644
--- a/src/netconf/ifaces/eni/handler.py
+++ b/src/netconf/ifaces/eni/handler.py
@@ -224,11 +224,6 @@ class EniHandler(BaseIfaceHandler):
                                wait_for_hookrunner)
         return runner()
 
-    @private
-    def _handled_event(self, result, parent_event):
-        event = Event('HANDLED', result, self, parent=parent_event)
-        self._core.pubsub.publish(event)
-
     class IfaceNotDefinedResult(BaseIfaceHandler.CannotHandleResult):
         @public
         def __init__(self, iface, eni):
diff --git a/src/netconf/ifaces/handler.py b/src/netconf/ifaces/handler.py
index 6e86443..2ebf89f 100644
--- a/src/netconf/ifaces/handler.py
+++ b/src/netconf/ifaces/handler.py
@@ -32,6 +32,7 @@ from netconf.util.access import public, protected, private
 from netconf.util import logger
 from netconf.commands import InvalidCommandError
 from netconf.cmdresult import CannotHandleResult, BusyResult
+from netconf.event import Event
 
 
 class BaseIfaceHandler(object, logger.Mixin):
@@ -62,6 +63,11 @@ class BaseIfaceHandler(object, logger.Mixin):
         except AttributeError:
             return False
 
+    @protected
+    def _handled_event(self, result, parent_event):
+        event = Event('HANDLED', result, self, parent=parent_event)
+        self._core.pubsub.publish(event)
+
     @public
     @purevirtual
     def go_away(self, cmd, manip, verbose=None):
-- 
1.6.2.4




More information about the netconf-devel mailing list