From: Ondrej Lichtner olichtne@redhat.com
The interface manager will now notify the controller when an interface was removed. The controller will remove the associated Device object from the device database of a Machine object.
Signed-off-by: Ondrej Lichtner olichtne@redhat.com --- lnst/Controller/NetTestController.py | 3 +++ lnst/Slave/InterfaceManager.py | 8 ++++++++ 2 files changed, 11 insertions(+)
diff --git a/lnst/Controller/NetTestController.py b/lnst/Controller/NetTestController.py index 0e9b546..889dfa7 100644 --- a/lnst/Controller/NetTestController.py +++ b/lnst/Controller/NetTestController.py @@ -920,6 +920,9 @@ class MessageDispatcher(ConnectionHandler): elif message[1]["type"] == "if_update": machine = self._machines[message[0]] machine.interface_update(message[1]) + elif message[1]["type"] == "if_deleted": + machine = self._machines[message[0]] + machine.dev_db_delete(message[1]) elif message[1]["type"] == "exception": msg = "Slave %s: %s" % (message[0], message[1]["Exception"]) raise CommandException(msg) diff --git a/lnst/Slave/InterfaceManager.py b/lnst/Slave/InterfaceManager.py index 104fc62..dbaedd3 100644 --- a/lnst/Slave/InterfaceManager.py +++ b/lnst/Slave/InterfaceManager.py @@ -113,6 +113,10 @@ class InterfaceManager(object): dev_name = self._devices[i].get_name() logging.debug("Deleting Device with if_index %d, name %s because "\ "it doesn't exist anymore." % (i, dev_name)) + + del_msg = {"type": "if_deleted", + "if_index": i} + self._server_handler.send_data_to_ctl(del_msg) del self._devices[i]
def handle_netlink_msgs(self, msgs): @@ -156,6 +160,10 @@ class InterfaceManager(object): if dev.get_netns() == None and dev.get_conf_dict() == None: dev.del_link() del self._devices[msg['index']] + + del_msg = {"type": "if_deleted", + "if_index": msg['index']} + self._server_handler.send_data_to_ctl(del_msg) else: return