]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Fix OVS agent reclaims local VLAN
authorÉdouard Thuleau <edouard.thuleau@cloudwatt.com>
Mon, 18 Nov 2013 15:31:25 +0000 (15:31 +0000)
committerÉdouard Thuleau <edouard.thuleau@cloudwatt.com>
Mon, 18 Nov 2013 15:43:11 +0000 (15:43 +0000)
If a port disappears on an OVS agent, the port is removed of the lvm
vif_ports list. And if it's the last port of the network on this agent,
the network local VLAN is reclaim.

Change-Id: I07e03107eb86a84eeb8e4d06f27a1d2fbd7cea57
Closes-Bug: #1252284

neutron/plugins/openvswitch/agent/ovs_neutron_agent.py
neutron/tests/unit/openvswitch/test_ovs_neutron_agent.py

index b093d0a2d30260b0dfc41124207b6a19122919f9..3e34b7b2082cb0fffc5fa448694b1be6ea36a317 100644 (file)
@@ -972,21 +972,16 @@ class OVSNeutronAgent(sg_rpc.SecurityGroupAgentRpcCallbackMixin,
         for device in devices:
             LOG.info(_("Attachment %s removed"), device)
             try:
-                details = self.plugin_rpc.update_device_down(self.context,
-                                                             device,
-                                                             self.agent_id,
-                                                             cfg.CONF.host)
+                self.plugin_rpc.update_device_down(self.context,
+                                                   device,
+                                                   self.agent_id,
+                                                   cfg.CONF.host)
             except Exception as e:
                 LOG.debug(_("port_removed failed for %(device)s: %(e)s"),
                           {'device': device, 'e': e})
                 resync = True
                 continue
-            if details['exists']:
-                LOG.info(_("Port %s updated."), device)
-                # Nothing to do regarding local networking
-            else:
-                LOG.debug(_("Device %s not defined on plugin"), device)
-                self.port_unbound(device)
+            self.port_unbound(device)
         return resync
 
     def treat_ancillary_devices_removed(self, devices):
index 874ef2011d0d2c3cd636c25cdccf20d4d47f9cda..569e6a2a2426b562d8876dd7f18ca1f96bc02bd0 100644 (file)
@@ -222,7 +222,7 @@ class TestOvsNeutronAgent(base.BaseTestCase):
                                return_value=details):
             with mock.patch.object(self.agent, 'port_unbound') as port_unbound:
                 self.assertFalse(self.agent.treat_devices_removed([{}]))
-        self.assertEqual(port_unbound.called, not port_exists)
+        self.assertTrue(port_unbound.called)
 
     def test_treat_devices_removed_unbinds_port(self):
         self._mock_treat_devices_removed(True)