def _extend_network_dict_provider(self, context, network, multiprovider=None, bindings=None): if not bindings: bindings = nsx_db.get_network_bindings(context.session, network['id']) if not multiprovider: multiprovider = nsx_db.is_multiprovider_network( context.session, network['id']) # With NSX plugin 'normal' overlay networks will have no binding # TODO(salvatore-orlando) make sure users can specify a distinct # phy_uuid as 'provider network' for STT net type if bindings: if not multiprovider: # network came in through provider networks api network[pnet.NETWORK_TYPE] = bindings[0].binding_type network[pnet.PHYSICAL_NETWORK] = bindings[0].phy_uuid network[pnet.SEGMENTATION_ID] = bindings[0].vlan_id else: # network come in though multiprovider networks api network[mpnet.SEGMENTS] = [{ pnet.NETWORK_TYPE: binding.binding_type, pnet.PHYSICAL_NETWORK: binding.phy_uuid, pnet.SEGMENTATION_ID: binding.vlan_id } for binding in bindings]
def _create_and_delete_dvs_network(self, network_type='flat', vlan_tag=0, trunk_mode=False): params = {'provider:network_type': network_type, 'provider:physical_network': 'fake-moid', 'name': 'fake-name'} if network_type == 'vlan': params['provider:segmentation_id'] = vlan_tag if trunk_mode: params['vlan_transparent'] = True params['arg_list'] = tuple(params.keys()) with mock.patch.object(self._plugin._dvs, 'add_port_group') as mock_add,\ mock.patch.object(self._plugin._dvs, 'delete_port_group') as mock_delete,\ mock.patch.object(dvs.DvsManager, 'add_port_group') as mock_dvs_add,\ mock.patch.object(dvs.DvsManager, 'delete_port_group'),\ mock.patch.object(dvs.DvsManager, 'get_dvs_moref_by_name', return_value=mock.MagicMock() ) as mock_dvs_moref,\ mock.patch.object(dvs.DvsManager, '_get_trunk_vlan_spec') as mock_trunk_vlan: with self.network(**params) as network: ctx = context.get_admin_context() id = network['network']['id'] dvs_id = '%s-%s' % (network['network']['name'], id) binding = nsx_db.get_network_bindings(ctx.session, id) self.assertIsNotNone(binding) if network_type == 'flat': self.assertEqual('flat', binding[0].binding_type) self.assertEqual(0, binding[0].vlan_id) self.assertEqual('fake-moid', binding[0].phy_uuid) elif network_type == 'vlan': self.assertEqual('vlan', binding[0].binding_type) self.assertEqual(vlan_tag, binding[0].vlan_id) self.assertEqual('fake-moid', binding[0].phy_uuid) elif network_type == 'portgroup': self.assertEqual('portgroup', binding[0].binding_type) self.assertEqual(0, binding[0].vlan_id) self.assertEqual('fake-moid', binding[0].phy_uuid) else: self.fail() if network_type != 'portgroup': mock_dvs_add.assert_called_once_with( mock_dvs_moref.return_value, dvs_id, vlan_tag, trunk_mode=trunk_mode) else: mock_add.call_count = 0 mock_delete.call_count = 0 if trunk_mode: mock_trunk_vlan.called_once_with(start=0, end=4094) else: mock_trunk_vlan.call_count = 0
def _dvs_delete_network(self, context, id): network = self._get_network(context, id) dvs_id = self._dvs_get_id(network) bindings = nsx_db.get_network_bindings(context.session, id) with context.session.begin(subtransactions=True): nsx_db.delete_network_bindings(context.session, id) super(NsxDvsV2, self).delete_network(context, id) try: if (not bindings or bindings[0].binding_type != c_utils.NetworkTypes.PORTGROUP): self._dvs.delete_port_group(dvs_id) except Exception: LOG.exception(_LE('Unable to delete DVS port group %s'), id) self.handle_network_dhcp_access(context, id, action='delete_network')
def _dvs_delete_network(self, context, id): network = self._get_network(context, id) dvs_id = self._dvs_get_id(network) bindings = nsx_db.get_network_bindings(context.session, id) with db_api.context_manager.writer.using(context): nsx_db.delete_network_bindings(context.session, id) super(NsxDvsV2, self).delete_network(context, id) try: if (not bindings or bindings[0].binding_type != c_utils.NetworkTypes.PORTGROUP): self._dvs.delete_port_group(dvs_id) except Exception: LOG.exception('Unable to delete DVS port group %s', id) self.handle_network_dhcp_access(context, id, action='delete_network')
def _dvs_delete_network(self, context, id): network = self._get_network(context, id) dvs_id = self._dvs_get_id(network) bindings = nsx_db.get_network_bindings(context.session, id) with db_api.CONTEXT_WRITER.using(context): nsx_db.delete_network_bindings(context.session, id) super(NsxDvsV2, self).delete_network(context, id) try: if (not bindings or bindings[0].binding_type != c_utils.NetworkTypes.PORTGROUP): dvs_name = bindings[0].phy_uuid self._delete_port_group(dvs_id, dvs_name) except Exception: LOG.exception('Unable to delete DVS port group %s', id) self.handle_network_dhcp_access(context, id, action='delete_network')
def _create_and_delete_dvs_network(self, network_type='flat', vlan_tag=0): params = { 'provider:network_type': network_type, 'provider:physical_network': 'fake-moid', 'name': 'fake-name' } if network_type == 'vlan': params['provider:segmentation_id'] = vlan_tag params['arg_list'] = tuple(params.keys()) with mock.patch.object(self._plugin._dvs, 'add_port_group') as mock_add,\ mock.patch.object(self._plugin._dvs, 'delete_port_group') as mock_delete: with self.network(**params) as network: ctx = context.get_admin_context() id = network['network']['id'] dvs_id = '%s-%s' % (network['network']['name'], id) binding = nsx_db.get_network_bindings(ctx.session, id) self.assertIsNotNone(binding) if network_type == 'flat': self.assertEqual('flat', binding[0].binding_type) self.assertEqual(0, binding[0].vlan_id) self.assertEqual('dvs', binding[0].phy_uuid) elif network_type == 'vlan': self.assertEqual('vlan', binding[0].binding_type) self.assertEqual(vlan_tag, binding[0].vlan_id) self.assertEqual('dvs', binding[0].phy_uuid) elif network_type == 'portgroup': self.assertEqual('portgroup', binding[0].binding_type) self.assertEqual(0, binding[0].vlan_id) self.assertEqual('fake-moid', binding[0].phy_uuid) else: self.fail() if network_type != 'portgroup': mock_add.assert_called_once_with(dvs_id, vlan_tag) else: mock_add.call_count = 0 mock_delete.call_count = 0
def _create_and_delete_dvs_network(self, network_type='flat', vlan_tag=0): params = {'provider:network_type': network_type} if network_type == 'vlan': params['provider:segmentation_id'] = vlan_tag params['arg_list'] = tuple(params.keys()) with mock.patch.object(self._plugin._dvs, 'add_port_group') as mock_add,\ mock.patch.object(self._plugin._dvs, 'delete_port_group'): with self.network(**params) as network: ctx = context.get_admin_context() id = network['network']['id'] dvs_id = '%s-%s' % (network['network']['name'], id) binding = nsx_db.get_network_bindings(ctx.session, id) self.assertIsNotNone(binding) self.assertEqual('dvs', binding[0].phy_uuid) if network_type == 'flat': self.assertEqual('flat', binding[0].binding_type) self.assertEqual(0, binding[0].vlan_id) elif network_type == 'vlan': self.assertEqual('vlan', binding[0].binding_type) self.assertEqual(vlan_tag, binding[0].vlan_id) else: self.fail() mock_add.assert_called_once_with(dvs_id, vlan_tag)
def _extend_network_dict_provider(self, context, network, multiprovider=None, bindings=None): if not bindings: bindings = nsx_db.get_network_bindings(context.session, network['id']) if not multiprovider: multiprovider = nsx_db.is_multiprovider_network(context.session, network['id']) # With NSX plugin 'normal' overlay networks will have no binding # TODO(salvatore-orlando) make sure users can specify a distinct # phy_uuid as 'provider network' for STT net type if bindings: if not multiprovider: # network came in through provider networks api network[pnet.NETWORK_TYPE] = bindings[0].binding_type network[pnet.PHYSICAL_NETWORK] = bindings[0].phy_uuid network[pnet.SEGMENTATION_ID] = bindings[0].vlan_id else: # network come in though multiprovider networks api network[mpnet.SEGMENTS] = [ {pnet.NETWORK_TYPE: binding.binding_type, pnet.PHYSICAL_NETWORK: binding.phy_uuid, pnet.SEGMENTATION_ID: binding.vlan_id} for binding in bindings]