From 4bd651a802feeda464715c7abdce3af0fab0a0a1 Mon Sep 17 00:00:00 2001 From: "Baodong (Robert) Li" Date: Tue, 19 Mar 2013 10:06:03 -0700 Subject: [PATCH] Load all the necessary database tables when running cisco plugin In Cisco plugin, Remove redundant/unnecessary calls to configure_db(). Make sure that all the database models are loaded before calling configure_db() fixes bug #1155121 Change-Id: I27d5dda512140f0553b311b35678c82f729fa854 --- quantum/plugins/cisco/db/network_db_v2.py | 5 ----- quantum/plugins/cisco/db/nexus_db_v2.py | 5 ----- quantum/plugins/cisco/models/virt_phy_sw_v2.py | 16 ++++++++++++---- quantum/plugins/cisco/network_plugin.py | 1 - .../plugins/cisco/nexus/cisco_nexus_plugin_v2.py | 2 -- quantum/tests/unit/cisco/test_network_plugin.py | 7 +------ 6 files changed, 13 insertions(+), 23 deletions(-) diff --git a/quantum/plugins/cisco/db/network_db_v2.py b/quantum/plugins/cisco/db/network_db_v2.py index d69c60988..5c91aabfe 100644 --- a/quantum/plugins/cisco/db/network_db_v2.py +++ b/quantum/plugins/cisco/db/network_db_v2.py @@ -31,11 +31,6 @@ from quantum.plugins.openvswitch import ovs_models_v2 LOG = logging.getLogger(__name__) -def initialize(): - """Establish database connection and load models""" - db.configure_db() - - def create_vlanids(): """Prepopulates the vlan_bindings table""" LOG.debug(_("create_vlanids() called")) diff --git a/quantum/plugins/cisco/db/nexus_db_v2.py b/quantum/plugins/cisco/db/nexus_db_v2.py index 3dc5d0bd2..0f9512048 100644 --- a/quantum/plugins/cisco/db/nexus_db_v2.py +++ b/quantum/plugins/cisco/db/nexus_db_v2.py @@ -29,11 +29,6 @@ from quantum.plugins.cisco.db import nexus_models_v2 LOG = logging.getLogger(__name__) -def initialize(): - """Establish database connection and load models""" - db.configure_db() - - def get_all_nexusport_bindings(): """Lists all the nexusport bindings""" LOG.debug(_("get_all_nexusport_bindings() called")) diff --git a/quantum/plugins/cisco/models/virt_phy_sw_v2.py b/quantum/plugins/cisco/models/virt_phy_sw_v2.py index 0387b261a..fd084b746 100644 --- a/quantum/plugins/cisco/models/virt_phy_sw_v2.py +++ b/quantum/plugins/cisco/models/virt_phy_sw_v2.py @@ -35,6 +35,7 @@ from quantum.plugins.cisco.db import network_db_v2 as cdb from quantum.plugins.cisco import l2network_plugin_configuration as conf from quantum.plugins.openvswitch import ovs_db_v2 as odb from quantum import quantum_plugin_base_v2 +from quantum.db import api as db_api LOG = logging.getLogger(__name__) @@ -64,8 +65,6 @@ class VirtualPhysicalSwitchModelV2(quantum_plugin_base_v2.QuantumPluginBaseV2): configured, and load the inventories those device plugins for which the inventory is configured """ - cdb.initialize() - cred.Store.initialize() for key in conf.PLUGINS[const.PLUGINS].keys(): plugin_obj = conf.PLUGINS[const.PLUGINS][key] self._plugins[key] = importutils.import_object(plugin_obj) @@ -77,12 +76,21 @@ class VirtualPhysicalSwitchModelV2(quantum_plugin_base_v2.QuantumPluginBaseV2): LOG.debug(_("Loaded device inventory %s\n"), conf.PLUGINS[const.INVENTORY][key]) - if hasattr(self._plugins[const.VSWITCH_PLUGIN], - "supported_extension_aliases"): + if ((const.VSWITCH_PLUGIN in self._plugins) and + hasattr(self._plugins[const.VSWITCH_PLUGIN], + "supported_extension_aliases")): self.supported_extension_aliases.extend( self._plugins[const.VSWITCH_PLUGIN]. supported_extension_aliases) + # At this point, all the database models should have been loaded. It's + # possible that configure_db() may have been called by one of the + # plugins loaded in above. Otherwise, this call is to make sure that + # the database is initialized + db_api.configure_db() + + # Initialize credential store after database initialization + cred.Store.initialize() LOG.debug(_("%(module)s.%(name)s init done"), {'module': __name__, 'name': self.__class__.__name__}) diff --git a/quantum/plugins/cisco/network_plugin.py b/quantum/plugins/cisco/network_plugin.py index 123b314d9..270136cfc 100644 --- a/quantum/plugins/cisco/network_plugin.py +++ b/quantum/plugins/cisco/network_plugin.py @@ -66,7 +66,6 @@ class PluginV2(db_base_plugin_v2.QuantumDbPluginV2): self.supported_extension_aliases.extend( self._model.supported_extension_aliases) - super(PluginV2, self).__init__() LOG.debug(_("Plugin initialization complete")) def __getattribute__(self, name): diff --git a/quantum/plugins/cisco/nexus/cisco_nexus_plugin_v2.py b/quantum/plugins/cisco/nexus/cisco_nexus_plugin_v2.py index 232bad945..5138c65cf 100644 --- a/quantum/plugins/cisco/nexus/cisco_nexus_plugin_v2.py +++ b/quantum/plugins/cisco/nexus/cisco_nexus_plugin_v2.py @@ -50,8 +50,6 @@ class NexusPlugin(L2DevicePluginBase): """ Extracts the configuration parameters from the configuration file """ - # Initialize the nxos db - nxos_db.initialize() self._client = importutils.import_object(conf.NEXUS_DRIVER) LOG.debug(_("Loaded driver %s"), conf.NEXUS_DRIVER) self._nexus_switches = conf.NEXUS_DETAILS diff --git a/quantum/tests/unit/cisco/test_network_plugin.py b/quantum/tests/unit/cisco/test_network_plugin.py index d79a6293a..4fbec2095 100644 --- a/quantum/tests/unit/cisco/test_network_plugin.py +++ b/quantum/tests/unit/cisco/test_network_plugin.py @@ -32,12 +32,7 @@ class CiscoNetworkPluginV2TestCase(test_db_plugin.QuantumDbPluginV2TestCase): _plugin_name = 'quantum.plugins.cisco.network_plugin.PluginV2' def setUp(self): - def new_init(): - db.configure_db() - - with mock.patch.object(network_db_v2, - 'initialize', new=new_init): - super(CiscoNetworkPluginV2TestCase, self).setUp(self._plugin_name) + super(CiscoNetworkPluginV2TestCase, self).setUp(self._plugin_name) self.port_create_status = 'DOWN' def _get_plugin_ref(self): -- 2.45.2