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
af0335f7fa
commit
863a6d1f7c
|
@ -263,6 +263,11 @@ class DbBasePluginCommon(object):
|
|||
raise exceptions.SubnetNotFound(subnet_id=id)
|
||||
return subnet
|
||||
|
||||
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:
|
||||
|
|
|
@ -1323,7 +1323,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,
|
||||
|
@ -1433,7 +1433,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