]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
SimpleInterfaceMonitor handle case when ofport is an empty set
authorrossella <rsblendido@suse.com>
Sat, 15 Aug 2015 12:30:29 +0000 (12:30 +0000)
committerrossella <rsblendido@suse.com>
Wed, 26 Aug 2015 10:10:42 +0000 (10:10 +0000)
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

neutron/agent/linux/ovsdb_monitor.py
neutron/tests/unit/agent/linux/test_ovsdb_monitor.py

index f992bca25b5932b0b3c7b94a623a994880fd827d..8dafa70738e027d16d2b4fa1b17ff29d094ec5f6 100644 (file)
@@ -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}
index 604d6cc4ad86a729284e3e4e18cf412bc728ce7f..ec1fb52d3bf2aaff613ebbded122c72143024340 100644 (file)
@@ -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)