From 47e51e7521784f6a2edcfbf71a9aac0237e76e42 Mon Sep 17 00:00:00 2001 From: armando-migliaccio Date: Mon, 28 Apr 2014 20:24:18 -0700 Subject: [PATCH] NSX: fix migration for networks without a subnet In case the network is without a subnet, calling the validation logic during the report phase leads to an error because the LSN would have been already allocated during the migration phase. Bypass the issue by calling the plugin directly, which is what the validation logic does in the first place. Closes-bug: #1313997 Change-Id: I14f77ae3b0cc147c4ea1c79e56bdd809de7c76a0 --- neutron/plugins/vmware/dhcp_meta/migration.py | 7 ++++--- neutron/tests/unit/vmware/test_dhcpmeta.py | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/neutron/plugins/vmware/dhcp_meta/migration.py b/neutron/plugins/vmware/dhcp_meta/migration.py index cda14c574..992a88346 100644 --- a/neutron/plugins/vmware/dhcp_meta/migration.py +++ b/neutron/plugins/vmware/dhcp_meta/migration.py @@ -155,10 +155,11 @@ class MigrationManager(object): lsn_id, lsn_port_id = self.manager.lsn_port_get( context, network_id, subnet_id, raise_on_err=False) else: - subnet = self.validate(context, network_id) - if subnet: + filters = {'network_id': [network_id]} + subnets = self.plugin.get_subnets(context, filters=filters) + if subnets: lsn_id, lsn_port_id = self.manager.lsn_port_get( - context, network_id, subnet['id'], raise_on_err=False) + context, network_id, subnets[0]['id'], raise_on_err=False) else: lsn_id = self.manager.lsn_get(context, network_id, raise_on_err=False) diff --git a/neutron/tests/unit/vmware/test_dhcpmeta.py b/neutron/tests/unit/vmware/test_dhcpmeta.py index c83a326e6..31cb01da8 100644 --- a/neutron/tests/unit/vmware/test_dhcpmeta.py +++ b/neutron/tests/unit/vmware/test_dhcpmeta.py @@ -218,7 +218,7 @@ class MigrationManagerTestCase(base.BaseTestCase): 'services': ['foo_lsn_id'], 'type': 'lsn'}) def _test_report_for_lsn_without_subnet(self, validated_subnet): - with mock.patch.object(self.manager, 'validate', + with mock.patch.object(self.manager.plugin, 'get_subnets', return_value=validated_subnet): self.manager.manager.lsn_port_get.return_value = ( ('foo_lsn_id', 'foo_lsn_port_id')) @@ -230,7 +230,7 @@ class MigrationManagerTestCase(base.BaseTestCase): self.assertEqual(expected, report) def test_report_for_lsn_without_subnet_subnet_found(self): - self._test_report_for_lsn_without_subnet({'id': self.subnet_id}) + self._test_report_for_lsn_without_subnet([{'id': self.subnet_id}]) def test_report_for_lsn_without_subnet_subnet_not_found(self): self.manager.manager.lsn_get.return_value = 'foo_lsn_id' -- 2.45.2