Merge "Fix for failing network operations in Cisco plugin"
This commit is contained in:
commit
5ba0f9c4e4
@ -1,6 +1,7 @@
|
||||
[PLUGINS]
|
||||
#ucs_plugin=quantum.plugins.cisco.ucs.cisco_ucs_plugin_v2.UCSVICPlugin
|
||||
#nexus_plugin=quantum.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin
|
||||
vswitch_plugin=quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
|
||||
|
||||
[INVENTORY]
|
||||
#ucs_plugin=quantum.plugins.cisco.ucs.cisco_ucs_inventory_v2.UCSInventory
|
||||
|
@ -13,8 +13,8 @@ max_port_profiles=65568
|
||||
max_networks=65568
|
||||
|
||||
[MODEL]
|
||||
#model_class=quantum.plugins.cisco.models.l2network_multi_blade.L2NetworkMultiBlade
|
||||
model_class=quantum.plugins.cisco.models.network_multi_blade_v2.NetworkMultiBladeV2
|
||||
#model_class=quantum.plugins.cisco.models.network_multi_blade_v2.NetworkMultiBladeV2
|
||||
model_class=quantum.plugins.cisco.models.virt_phy_sw_v2.VirtualPhysicalSwitchModelV2
|
||||
|
||||
[SEGMENTATION]
|
||||
manager_class=quantum.plugins.cisco.segmentation.l2network_vlan_mgr_v2.L2NetworkVLANMgr
|
||||
|
@ -28,6 +28,7 @@ from quantum.plugins.cisco.db import network_models_v2
|
||||
from quantum.plugins.cisco.db import nexus_models_v2
|
||||
from quantum.plugins.cisco.db import ucs_models_v2
|
||||
from quantum.plugins.cisco import l2network_plugin_configuration as conf
|
||||
from quantum.plugins.openvswitch import ovs_models_v2
|
||||
|
||||
|
||||
def initialize():
|
||||
@ -525,3 +526,14 @@ def update_credential(tenant_id, credential_id,
|
||||
except exc.NoResultFound:
|
||||
raise c_exc.CredentialNotFound(credential_id=credential_id,
|
||||
tenant_id=tenant_id)
|
||||
|
||||
|
||||
def get_ovs_vlans():
|
||||
session = db.get_session()
|
||||
try:
|
||||
bindings = (session.query(ovs_models_v2.VlanAllocation).
|
||||
filter_by(allocated=True).
|
||||
all())
|
||||
except exc.NoResultFound:
|
||||
return []
|
||||
return [binding.vlan_id for binding in bindings]
|
||||
|
@ -163,6 +163,10 @@ class VirtualPhysicalSwitchModelV2(quantum_plugin_base_v2.QuantumPluginBaseV2):
|
||||
else:
|
||||
return func(*args)
|
||||
|
||||
def _get_segmentation_id(self, network_id):
|
||||
binding_seg_id = odb.get_network_binding(None, network_id)
|
||||
return binding_seg_id.segmentation_id
|
||||
|
||||
def create_network(self, context, network):
|
||||
"""
|
||||
Perform this operation in the context of the configured device
|
||||
@ -174,12 +178,12 @@ class VirtualPhysicalSwitchModelV2(quantum_plugin_base_v2.QuantumPluginBaseV2):
|
||||
ovs_output = self._invoke_plugin_per_device(const.VSWITCH_PLUGIN,
|
||||
self._func_name(),
|
||||
args)
|
||||
vlan_id = odb.get_vlan(ovs_output[0]['id'])
|
||||
vlan_id = self._get_segmentation_id(ovs_output[0]['id'])
|
||||
vlan_name = conf.VLAN_NAME_PREFIX + str(vlan_id)
|
||||
vlan_ids = odb.get_vlans()
|
||||
vlan_ids = cdb.get_ovs_vlans()
|
||||
vlanids = ''
|
||||
for v_id in vlan_ids:
|
||||
vlanids = str(v_id[0]) + ',' + vlanids
|
||||
vlanids = str(v_id) + ',' + vlanids
|
||||
vlanids = vlanids.strip(',')
|
||||
args = [ovs_output[0]['tenant_id'], ovs_output[0]['name'],
|
||||
ovs_output[0]['id'], vlan_name, vlan_id,
|
||||
@ -202,7 +206,7 @@ class VirtualPhysicalSwitchModelV2(quantum_plugin_base_v2.QuantumPluginBaseV2):
|
||||
args = [context, networks]
|
||||
ovs_output = self._plugins[
|
||||
const.VSWITCH_PLUGIN].create_network_bulk(context, networks)
|
||||
vlan_ids = odb.get_vlans()
|
||||
vlan_ids = cdb.get_ovs_vlans()
|
||||
vlanids = ''
|
||||
for v_id in vlan_ids:
|
||||
vlanids = str(v_id[0]) + ',' + vlanids
|
||||
@ -210,7 +214,7 @@ class VirtualPhysicalSwitchModelV2(quantum_plugin_base_v2.QuantumPluginBaseV2):
|
||||
LOG.debug("ovs_output: %s\n " % ovs_output)
|
||||
ovs_networks = ovs_output
|
||||
for ovs_network in ovs_networks:
|
||||
vlan_id = odb.get_vlan(ovs_network['id'])
|
||||
vlan_id = self._get_segmentation_id(ovs_network['id'])
|
||||
vlan_name = conf.VLAN_NAME_PREFIX + str(vlan_id)
|
||||
args = [ovs_network['tenant_id'], ovs_network['name'],
|
||||
ovs_network['id'], vlan_name, vlan_id,
|
||||
@ -232,8 +236,8 @@ class VirtualPhysicalSwitchModelV2(quantum_plugin_base_v2.QuantumPluginBaseV2):
|
||||
ovs_output = self._invoke_plugin_per_device(const.VSWITCH_PLUGIN,
|
||||
self._func_name(),
|
||||
args)
|
||||
vlan_id = odb.get_vlan(ovs_output[0]['id'])
|
||||
vlan_ids = ','.join(str(vlan[0]) for vlan in odb.get_vlans())
|
||||
vlan_id = self._get_segmentation_id(ovs_output[0]['id'])
|
||||
vlan_ids = ','.join(str(vlan[0]) for vlan in cdb.get_ovs_vlans())
|
||||
args = [ovs_output[0]['tenant_id'], id, {'vlan_id': vlan_id},
|
||||
{'net_admin_state': ovs_output[0]['admin_state_up']},
|
||||
{'vlan_ids': vlan_ids}]
|
||||
@ -251,7 +255,7 @@ class VirtualPhysicalSwitchModelV2(quantum_plugin_base_v2.QuantumPluginBaseV2):
|
||||
base_plugin_ref = QuantumManager.get_plugin()
|
||||
n = base_plugin_ref.get_network(context, id)
|
||||
tenant_id = n['tenant_id']
|
||||
vlan_id = odb.get_vlan(id)
|
||||
vlan_id = self._get_segmentation_id(id)
|
||||
output = []
|
||||
args = [tenant_id, id, {const.VLANID:vlan_id},
|
||||
{const.CONTEXT:context},
|
||||
|
@ -22,11 +22,13 @@ from quantum.common import config
|
||||
from quantum.common.test_lib import test_config
|
||||
from quantum import context
|
||||
from quantum.db import api as db
|
||||
from quantum.db import l3_db
|
||||
from quantum.extensions import _quotav2_model as quotav2_model
|
||||
from quantum.manager import QuantumManager
|
||||
from quantum.plugins.cisco.common import cisco_constants as const
|
||||
from quantum.plugins.cisco.db import network_db_v2
|
||||
from quantum.plugins.cisco.db import network_models_v2
|
||||
from quantum.plugins.openvswitch import ovs_models_v2
|
||||
from quantum.openstack.common import cfg
|
||||
from quantum.tests.unit import test_db_plugin
|
||||
from quantum.wsgi import JSONDeserializer
|
||||
@ -39,38 +41,13 @@ class CiscoNetworkPluginV2TestCase(test_db_plugin.QuantumDbPluginV2TestCase):
|
||||
_plugin_name = 'quantum.plugins.cisco.network_plugin.PluginV2'
|
||||
|
||||
def setUp(self):
|
||||
super(CiscoNetworkPluginV2TestCase, self).setUp()
|
||||
db._ENGINE = None
|
||||
db._MAKER = None
|
||||
QuantumManager._instance = None
|
||||
# Update the plugin
|
||||
cfg.CONF.set_override('core_plugin', self._plugin_name)
|
||||
|
||||
def new_init():
|
||||
db.configure_db({'sql_connection': 'sqlite://',
|
||||
'base': network_models_v2.model_base.BASEV2})
|
||||
|
||||
with mock.patch.object(network_db_v2,
|
||||
'initialize', new=new_init):
|
||||
self.api = APIRouter()
|
||||
|
||||
def _is_native_bulk_supported():
|
||||
plugin_obj = QuantumManager.get_plugin()
|
||||
native_bulk_attr_name = ("_%s__native_bulk_support"
|
||||
% plugin_obj.__class__.__name__)
|
||||
return getattr(plugin_obj, native_bulk_attr_name, False)
|
||||
|
||||
self._skip_native_bulk = not _is_native_bulk_supported()
|
||||
|
||||
LOG.debug("%s.%s.%s done" % (__name__, self.__class__.__name__,
|
||||
inspect.stack()[0][3]))
|
||||
|
||||
def tearDown(self):
|
||||
db.clear_db(network_models_v2.model_base.BASEV2)
|
||||
db._ENGINE = None
|
||||
db._MAKER = None
|
||||
|
||||
cfg.CONF.reset()
|
||||
super(CiscoNetworkPluginV2TestCase, self).setUp(self._plugin_name)
|
||||
|
||||
def _get_plugin_ref(self):
|
||||
plugin_obj = QuantumManager.get_plugin()
|
||||
|
Loading…
x
Reference in New Issue
Block a user