Check for existence instead of fetching the whole net object
There is no need to fetch the whole net object
(which leads to several heavy DB requests according
to OSProfiler stats) when only need to check net existence
This speeds up port creation up to 15%
Closes-Bug: #1917866
Change-Id: I75db7c713a17a0f1b1b5aecc6eec93e636a71827
(cherry picked from commit 4bb3c92917
)
This commit is contained in:
parent
e36f722305
commit
29e36009bb
|
@ -254,6 +254,11 @@ class DbBasePluginCommon(object):
|
|||
raise exceptions.NetworkNotFound(net_id=id)
|
||||
return network
|
||||
|
||||
def _network_exists(self, context, network_id):
|
||||
query = model_query.query_with_hooks(
|
||||
context, models_v2.Network, field='id')
|
||||
return query.filter(models_v2.Network.id == network_id).first()
|
||||
|
||||
def _get_subnet_object(self, context, id):
|
||||
subnet = subnet_obj.Subnet.get_object(context, id=id)
|
||||
if not subnet:
|
||||
|
|
|
@ -1311,7 +1311,7 @@ class NeutronDbPluginV2(db_base_plugin_common.DbBasePluginCommon,
|
|||
if not validators.is_attr_set(network_id):
|
||||
msg = _("network_id must be specified.")
|
||||
raise exc.InvalidInput(error_message=msg)
|
||||
if not network_obj.Network.objects_exist(context, id=network_id):
|
||||
if not self._network_exists(context, network_id):
|
||||
raise exc.NetworkNotFound(net_id=network_id)
|
||||
|
||||
subnetpool = subnetpool_obj.SubnetPool.get_object(context,
|
||||
|
@ -1421,7 +1421,8 @@ class NeutronDbPluginV2(db_base_plugin_common.DbBasePluginCommon,
|
|||
port_data['mac_address'] = p.get('mac_address')
|
||||
with db_api.CONTEXT_WRITER.using(context):
|
||||
# Ensure that the network exists.
|
||||
self._get_network(context, network_id)
|
||||
if not self._network_exists(context, network_id):
|
||||
raise exc.NetworkNotFound(net_id=network_id)
|
||||
|
||||
# Create the port
|
||||
db_port = self._create_db_port_obj(context, port_data)
|
||||
|
|
Loading…
Reference in New Issue