NSX: fix error when creating VM ports on subnets without dhcp

The error was caused by a missing LSN port (which is created when
the subnet is setup with dhcp enabled). Therefore, check the port
is in place before proceeding with the setup.

Change-Id: I658ead0c324a24ad3f061844ecac13cd3359d341
Closes-bug: 1316365
This commit is contained in:
armando-migliaccio 2014-05-05 18:39:55 -07:00 committed by Armando Migliaccio
parent 5f889fb49c
commit d2baa7c9b5
2 changed files with 8 additions and 13 deletions

View File

@ -296,12 +296,11 @@ class LsnManager(object):
self.lsn_port_dispose(context, network_id, const.METADATA_MAC)
def _lsn_port_host_conf(self, context, network_id, subnet_id, data, hdlr):
lsn_id = None
lsn_port_id = None
lsn_id, lsn_port_id = self.lsn_port_get(
context, network_id, subnet_id, raise_on_err=False)
try:
lsn_id, lsn_port_id = self.lsn_port_get(
context, network_id, subnet_id)
hdlr(self.cluster, lsn_id, lsn_port_id, data)
if lsn_id and lsn_port_id:
hdlr(self.cluster, lsn_id, lsn_port_id, data)
except (n_exc.NotFound, api_exc.NsxApiException):
LOG.error(_('Error while configuring LSN '
'port %s'), lsn_port_id)

View File

@ -666,14 +666,10 @@ class LsnManagerTestCase(base.BaseTestCase):
def test_lsn_port_host_conf_lsn_port_not_found(self):
with mock.patch.object(
self.manager,
'lsn_port_get',
side_effect=p_exc.LsnPortNotFound(lsn_id=self.lsn_id,
entity='subnet',
entity_id=self.sub_id)):
self.assertRaises(p_exc.PortConfigurationError,
self.manager._lsn_port_host_conf, mock.ANY,
self.net_id, self.sub_id, mock.ANY, mock.Mock())
self.manager, 'lsn_port_get', return_value=(None, None)) as f:
self.manager._lsn_port_host_conf(
mock.ANY, self.net_id, self.sub_id, mock.ANY, mock.Mock())
self.assertEqual(1, f.call_count)
def _test_lsn_port_update(self, dhcp=None, meta=None):
self.manager.lsn_port_update(