コード例 #1
0
ファイル: plugin.py プロジェクト: akashgangil/vmware-nsx
 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]
コード例 #2
0
 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
コード例 #3
0
ファイル: plugin.py プロジェクト: akashgangil/vmware-nsx
 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')
コード例 #4
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 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')
コード例 #5
0
ファイル: plugin.py プロジェクト: openstack/vmware-nsx
 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')
コード例 #6
0
 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
コード例 #7
0
ファイル: test_plugin.py プロジェクト: aaronorosen/vmware-nsx
 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)
コード例 #8
0
ファイル: plugin.py プロジェクト: aaronorosen/vmware-nsx
 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]