From 464c307c68fca0353fb7d65acf650001c8de3f73 Mon Sep 17 00:00:00 2001 From: Aaron Rosen Date: Wed, 12 Feb 2014 14:25:31 -0800 Subject: [PATCH] NSX: Fix newly created port's status should be DOWN Previously when creating a port in neutron using the nsx plugin the port status returned would be ACTIVE even if this was not the case. Now, DOWN is returned which will be updated by the backend when the port goes ACTIVE. Change-Id: I600fb1292ae79146cb14c7e23170262973878de0 Closes-bug: #1279551 --- neutron/plugins/nicira/NeutronPlugin.py | 2 ++ neutron/tests/unit/vmware/test_nsx_plugin.py | 2 ++ neutron/tests/unit/vmware/test_nsx_sync.py | 6 +++--- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/neutron/plugins/nicira/NeutronPlugin.py b/neutron/plugins/nicira/NeutronPlugin.py index bad803cdebd..db5c7bc4b95 100644 --- a/neutron/plugins/nicira/NeutronPlugin.py +++ b/neutron/plugins/nicira/NeutronPlugin.py @@ -1129,6 +1129,8 @@ class NvpPluginV2(addr_pair_db.AllowedAddressPairsMixin, # ATTR_NOT_SPECIFIED is for the case where a port is created on a # shared network that is not owned by the tenant. port_data = port['port'] + # Set port status as 'DOWN'. This will be updated by backend sync. + port_data['status'] = constants.PORT_STATUS_DOWN with context.session.begin(subtransactions=True): # First we allocate port in neutron database neutron_db = super(NvpPluginV2, self).create_port(context, port) diff --git a/neutron/tests/unit/vmware/test_nsx_plugin.py b/neutron/tests/unit/vmware/test_nsx_plugin.py index 73543cddb1c..2e9de71a2e1 100644 --- a/neutron/tests/unit/vmware/test_nsx_plugin.py +++ b/neutron/tests/unit/vmware/test_nsx_plugin.py @@ -112,6 +112,8 @@ class NsxPluginV2TestCase(test_plugin.NeutronDbPluginV2TestCase): self.fc.fake_request) super(NsxPluginV2TestCase, self).setUp(plugin=plugin, ext_mgr=ext_mgr) + # Newly created port's status is always 'DOWN' till NSX wires them. + self.port_create_status = constants.PORT_STATUS_DOWN cfg.CONF.set_override('metadata_mode', None, 'NSX') self.addCleanup(self.fc.reset_all) self.addCleanup(mock.patch.stopall) diff --git a/neutron/tests/unit/vmware/test_nsx_sync.py b/neutron/tests/unit/vmware/test_nsx_sync.py index 7a94fac43ca..1a89d0a6b32 100644 --- a/neutron/tests/unit/vmware/test_nsx_sync.py +++ b/neutron/tests/unit/vmware/test_nsx_sync.py @@ -584,16 +584,16 @@ class SyncTestCase(base.BaseTestCase): lp_uuid = self.fc._fake_lswitch_lport_dict.keys()[0] lport = self.fc._fake_lswitch_lport_dict[lp_uuid] q_port_id = self._get_tag_dict(lport['tags'])['q_port_id'] - lport['status'] = 'false' + lport['status'] = 'true' q_port_data = self._plugin._get_port(ctx, q_port_id) self._plugin._synchronizer.synchronize_port(ctx, q_port_data) # Reload from db q_ports = self._plugin.get_ports(ctx) for q_port in q_ports: if q_port['id'] == q_port_id: - exp_status = constants.PORT_STATUS_DOWN - else: exp_status = constants.PORT_STATUS_ACTIVE + else: + exp_status = constants.PORT_STATUS_DOWN self.assertEqual(exp_status, q_port['status']) def test_synchronize_port_on_get(self):