From: rossella Date: Sat, 15 Aug 2015 12:30:29 +0000 (+0000) Subject: SimpleInterfaceMonitor handle case when ofport is an empty set X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=cbeee7da500114d289f4cfc6b5e1ddaf8d5c8acf;p=openstack-build%2Fneutron-build.git SimpleInterfaceMonitor handle case when ofport is an empty set ofport is usually an integer but when a port is not ready ofport is an empty set. This patch makes SimpleInterfaceMonitor handle that case too. Change-Id: I91611d73e8d5551fc458082ce021cbeb5123a6f2 Closes-bug: #1485206 --- diff --git a/neutron/agent/linux/ovsdb_monitor.py b/neutron/agent/linux/ovsdb_monitor.py index f992bca25..8dafa7073 100644 --- a/neutron/agent/linux/ovsdb_monitor.py +++ b/neutron/agent/linux/ovsdb_monitor.py @@ -104,6 +104,8 @@ class SimpleInterfaceMonitor(OvsdbMonitor): for ovs_id, action, name, ofport, external_ids in json: if external_ids: external_ids = ovsdb.val_to_py(external_ids) + if ofport: + ofport = ovsdb.val_to_py(ofport) device = {'name': name, 'ofport': ofport, 'external_ids': external_ids} diff --git a/neutron/tests/unit/agent/linux/test_ovsdb_monitor.py b/neutron/tests/unit/agent/linux/test_ovsdb_monitor.py index 604d6cc4a..ec1fb52d3 100644 --- a/neutron/tests/unit/agent/linux/test_ovsdb_monitor.py +++ b/neutron/tests/unit/agent/linux/test_ovsdb_monitor.py @@ -14,6 +14,7 @@ import mock +from neutron.agent.common import ovs_lib from neutron.agent.linux import ovsdb_monitor from neutron.tests import base @@ -93,3 +94,13 @@ class TestSimpleInterfaceMonitor(base.BaseTestCase): self.monitor.get_events() self.assertTrue(process_events.called) self.assertFalse(self.monitor.has_updates) + + def process_event_unassigned_of_port(self): + output = '{"data":[["e040fbec-0579-4990-8324-d338da33ae88","insert",' + output += '"m50",["set",[]],["map",[]]]],"headings":["row","action",' + output += '"name","ofport","external_ids"]}' + with mock.patch.object( + self.monitor, 'iter_stdout', return_value=[output]): + self.monitor.process_events() + self.assertEqual(self.monitor.new_events['added'][0]['ofport'], + ovs_lib.UNASSIGNED_OFPORT)