]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Fixes port status hanging to build status
authorPetrut Lucian <lpetrut@cloudbasesolutions.com>
Wed, 25 Sep 2013 17:07:01 +0000 (20:07 +0300)
committerPetrut Lucian <lpetrut@cloudbasesolutions.com>
Thu, 10 Oct 2013 12:36:02 +0000 (15:36 +0300)
ML2 plugin changes the port status to "build" when get_device_details
is called. For this reason, the port status must be updated once the
port details are processed.

Fixes bug: #1224991

Change-Id: I2c0321073cc07e1764fedbfbecbc844557ac6bc9

neutron/plugins/hyperv/agent/hyperv_neutron_agent.py
neutron/tests/unit/hyperv/test_hyperv_neutron_agent.py

index 40c347a8ac8c6aba20bed003509bef51c8051fd4..f6ea12c46069c56a5ead7679142102186e94be6e 100644 (file)
@@ -281,6 +281,10 @@ class HyperVNeutronAgent(object):
                     device_details['physical_network'],
                     device_details['segmentation_id'],
                     device_details['admin_state_up'])
+                self.plugin_rpc.update_device_up(self.context,
+                                                 device,
+                                                 self.agent_id,
+                                                 cfg.CONF.host)
         return resync
 
     def _treat_devices_removed(self, devices):
index f9e17d41bb687b78f9c3da4d75469b6d07ebac8b..7969834dfc8ccee4ad4e459260070f900876eb9c 100644 (file)
@@ -90,8 +90,20 @@ class TestHyperVNeutronAgent(base.BaseTestCase):
     def test_treat_devices_added_updates_known_port(self):
         details = mock.MagicMock()
         details.__contains__.side_effect = lambda x: True
-        self.assertTrue(self.mock_treat_devices_added(details,
-                                                      '_treat_vif_port'))
+        with mock.patch.object(self.agent.plugin_rpc,
+                               "update_device_up") as func:
+            self.assertTrue(self.mock_treat_devices_added(details,
+                                                          '_treat_vif_port'))
+            self.assertTrue(func.called)
+
+    def test_treat_devices_added_missing_port_id(self):
+        details = mock.MagicMock()
+        details.__contains__.side_effect = lambda x: False
+        with mock.patch.object(self.agent.plugin_rpc,
+                               "update_device_up") as func:
+            self.assertFalse(self.mock_treat_devices_added(details,
+                                                           '_treat_vif_port'))
+            self.assertFalse(func.called)
 
     def test_treat_devices_removed_returns_true_for_missing_device(self):
         attrs = {'update_device_down.side_effect': Exception()}