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
This commit is contained in:
parent
cb64e3a19f
commit
4bb3c92917
|
@ -266,6 +266,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:
|
||||
|
|
|
@ -1309,7 +1309,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,
|
||||
|
@ -1419,7 +1419,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