Merge "Fix for failing network operations in Cisco plugin"
This commit is contained in:
commit
5ba0f9c4e4
@ -1,6 +1,7 @@
|
|||||||
[PLUGINS]
|
[PLUGINS]
|
||||||
#ucs_plugin=quantum.plugins.cisco.ucs.cisco_ucs_plugin_v2.UCSVICPlugin
|
#ucs_plugin=quantum.plugins.cisco.ucs.cisco_ucs_plugin_v2.UCSVICPlugin
|
||||||
#nexus_plugin=quantum.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin
|
#nexus_plugin=quantum.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin
|
||||||
|
vswitch_plugin=quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
|
||||||
|
|
||||||
[INVENTORY]
|
[INVENTORY]
|
||||||
#ucs_plugin=quantum.plugins.cisco.ucs.cisco_ucs_inventory_v2.UCSInventory
|
#ucs_plugin=quantum.plugins.cisco.ucs.cisco_ucs_inventory_v2.UCSInventory
|
||||||
|
@ -13,8 +13,8 @@ max_port_profiles=65568
|
|||||||
max_networks=65568
|
max_networks=65568
|
||||||
|
|
||||||
[MODEL]
|
[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]
|
[SEGMENTATION]
|
||||||
manager_class=quantum.plugins.cisco.segmentation.l2network_vlan_mgr_v2.L2NetworkVLANMgr
|
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 nexus_models_v2
|
||||||
from quantum.plugins.cisco.db import ucs_models_v2
|
from quantum.plugins.cisco.db import ucs_models_v2
|
||||||
from quantum.plugins.cisco import l2network_plugin_configuration as conf
|
from quantum.plugins.cisco import l2network_plugin_configuration as conf
|
||||||
|
from quantum.plugins.openvswitch import ovs_models_v2
|
||||||
|
|
||||||
|
|
||||||
def initialize():
|
def initialize():
|
||||||
@ -525,3 +526,14 @@ def update_credential(tenant_id, credential_id,
|
|||||||
except exc.NoResultFound:
|
except exc.NoResultFound:
|
||||||
raise c_exc.CredentialNotFound(credential_id=credential_id,
|
raise c_exc.CredentialNotFound(credential_id=credential_id,
|
||||||
tenant_id=tenant_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:
|
else:
|
||||||
return func(*args)
|
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):
|
def create_network(self, context, network):
|
||||||
"""
|
"""
|
||||||
Perform this operation in the context of the configured device
|
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,
|
ovs_output = self._invoke_plugin_per_device(const.VSWITCH_PLUGIN,
|
||||||
self._func_name(),
|
self._func_name(),
|
||||||
args)
|
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_name = conf.VLAN_NAME_PREFIX + str(vlan_id)
|
||||||
vlan_ids = odb.get_vlans()
|
vlan_ids = cdb.get_ovs_vlans()
|
||||||
vlanids = ''
|
vlanids = ''
|
||||||
for v_id in vlan_ids:
|
for v_id in vlan_ids:
|
||||||
vlanids = str(v_id[0]) + ',' + vlanids
|
vlanids = str(v_id) + ',' + vlanids
|
||||||
vlanids = vlanids.strip(',')
|
vlanids = vlanids.strip(',')
|
||||||
args = [ovs_output[0]['tenant_id'], ovs_output[0]['name'],
|
args = [ovs_output[0]['tenant_id'], ovs_output[0]['name'],
|
||||||
ovs_output[0]['id'], vlan_name, vlan_id,
|
ovs_output[0]['id'], vlan_name, vlan_id,
|
||||||
@ -202,7 +206,7 @@ class VirtualPhysicalSwitchModelV2(quantum_plugin_base_v2.QuantumPluginBaseV2):
|
|||||||
args = [context, networks]
|
args = [context, networks]
|
||||||
ovs_output = self._plugins[
|
ovs_output = self._plugins[
|
||||||
const.VSWITCH_PLUGIN].create_network_bulk(context, networks)
|
const.VSWITCH_PLUGIN].create_network_bulk(context, networks)
|
||||||
vlan_ids = odb.get_vlans()
|
vlan_ids = cdb.get_ovs_vlans()
|
||||||
vlanids = ''
|
vlanids = ''
|
||||||
for v_id in vlan_ids:
|
for v_id in vlan_ids:
|
||||||
vlanids = str(v_id[0]) + ',' + vlanids
|
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)
|
LOG.debug("ovs_output: %s\n " % ovs_output)
|
||||||
ovs_networks = ovs_output
|
ovs_networks = ovs_output
|
||||||
for ovs_network in ovs_networks:
|
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)
|
vlan_name = conf.VLAN_NAME_PREFIX + str(vlan_id)
|
||||||
args = [ovs_network['tenant_id'], ovs_network['name'],
|
args = [ovs_network['tenant_id'], ovs_network['name'],
|
||||||
ovs_network['id'], vlan_name, vlan_id,
|
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,
|
ovs_output = self._invoke_plugin_per_device(const.VSWITCH_PLUGIN,
|
||||||
self._func_name(),
|
self._func_name(),
|
||||||
args)
|
args)
|
||||||
vlan_id = odb.get_vlan(ovs_output[0]['id'])
|
vlan_id = self._get_segmentation_id(ovs_output[0]['id'])
|
||||||
vlan_ids = ','.join(str(vlan[0]) for vlan in odb.get_vlans())
|
vlan_ids = ','.join(str(vlan[0]) for vlan in cdb.get_ovs_vlans())
|
||||||
args = [ovs_output[0]['tenant_id'], id, {'vlan_id': vlan_id},
|
args = [ovs_output[0]['tenant_id'], id, {'vlan_id': vlan_id},
|
||||||
{'net_admin_state': ovs_output[0]['admin_state_up']},
|
{'net_admin_state': ovs_output[0]['admin_state_up']},
|
||||||
{'vlan_ids': vlan_ids}]
|
{'vlan_ids': vlan_ids}]
|
||||||
@ -251,7 +255,7 @@ class VirtualPhysicalSwitchModelV2(quantum_plugin_base_v2.QuantumPluginBaseV2):
|
|||||||
base_plugin_ref = QuantumManager.get_plugin()
|
base_plugin_ref = QuantumManager.get_plugin()
|
||||||
n = base_plugin_ref.get_network(context, id)
|
n = base_plugin_ref.get_network(context, id)
|
||||||
tenant_id = n['tenant_id']
|
tenant_id = n['tenant_id']
|
||||||
vlan_id = odb.get_vlan(id)
|
vlan_id = self._get_segmentation_id(id)
|
||||||
output = []
|
output = []
|
||||||
args = [tenant_id, id, {const.VLANID:vlan_id},
|
args = [tenant_id, id, {const.VLANID:vlan_id},
|
||||||
{const.CONTEXT:context},
|
{const.CONTEXT:context},
|
||||||
|
@ -22,11 +22,13 @@ from quantum.common import config
|
|||||||
from quantum.common.test_lib import test_config
|
from quantum.common.test_lib import test_config
|
||||||
from quantum import context
|
from quantum import context
|
||||||
from quantum.db import api as db
|
from quantum.db import api as db
|
||||||
|
from quantum.db import l3_db
|
||||||
from quantum.extensions import _quotav2_model as quotav2_model
|
from quantum.extensions import _quotav2_model as quotav2_model
|
||||||
from quantum.manager import QuantumManager
|
from quantum.manager import QuantumManager
|
||||||
from quantum.plugins.cisco.common import cisco_constants as const
|
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_db_v2
|
||||||
from quantum.plugins.cisco.db import network_models_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.openstack.common import cfg
|
||||||
from quantum.tests.unit import test_db_plugin
|
from quantum.tests.unit import test_db_plugin
|
||||||
from quantum.wsgi import JSONDeserializer
|
from quantum.wsgi import JSONDeserializer
|
||||||
@ -39,38 +41,13 @@ class CiscoNetworkPluginV2TestCase(test_db_plugin.QuantumDbPluginV2TestCase):
|
|||||||
_plugin_name = 'quantum.plugins.cisco.network_plugin.PluginV2'
|
_plugin_name = 'quantum.plugins.cisco.network_plugin.PluginV2'
|
||||||
|
|
||||||
def setUp(self):
|
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():
|
def new_init():
|
||||||
db.configure_db({'sql_connection': 'sqlite://',
|
db.configure_db({'sql_connection': 'sqlite://',
|
||||||
'base': network_models_v2.model_base.BASEV2})
|
'base': network_models_v2.model_base.BASEV2})
|
||||||
|
|
||||||
with mock.patch.object(network_db_v2,
|
with mock.patch.object(network_db_v2,
|
||||||
'initialize', new=new_init):
|
'initialize', new=new_init):
|
||||||
self.api = APIRouter()
|
super(CiscoNetworkPluginV2TestCase, self).setUp(self._plugin_name)
|
||||||
|
|
||||||
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()
|
|
||||||
|
|
||||||
def _get_plugin_ref(self):
|
def _get_plugin_ref(self):
|
||||||
plugin_obj = QuantumManager.get_plugin()
|
plugin_obj = QuantumManager.get_plugin()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user