summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Pavlovic <boris@pavlovic.me>2012-12-19 15:06:17 +0400
committerBoris Pavlovic <boris@pavlovic.me>2012-12-22 02:12:54 +0400
commit6d38a6145e4ded084d72714549d7f9b613c6936c (patch)
treed1bc37826c7d3563bcf7ba06ada889f4e0f4a48a
parenteda851676d14956c03616e5b2cb856acdc8edbef (diff)
downloadnova-6d38a6145e4ded084d72714549d7f9b613c6936c.tar.gz
nova-6d38a6145e4ded084d72714549d7f9b613c6936c.tar.xz
nova-6d38a6145e4ded084d72714549d7f9b613c6936c.zip
Using query.soft_delete() method insead of soft deleting by hand
Change all occurences of: query.update({ deleted:True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) to: query.soft_delete() Make instance_type_access_remove() with 2 db requests instead of 3 Make agent_build_destroy() with 1 db request instead of 2 Fix bug in aggregate_delete() added missing transaction make it with 2 db requests instead of 3 Make aggregate_metadata_delete() with 1 db request instead of 2 Make aggregate_host_delete() with 1 db request instead of 2 blueprint db-session-cleanup Change-Id: I23a85c48474126743c5d02f642baf6047358aae8
-rw-r--r--nova/db/sqlalchemy/api.py157
1 files changed, 51 insertions, 106 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 1638283e1..5eade320f 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -713,9 +713,7 @@ def floating_ip_bulk_destroy(context, ips):
for ip_block in _ip_range_splitter(ips):
model_query(context, models.FloatingIp).\
filter(models.FloatingIp.address.in_(ip_block)).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow()},
- synchronize_session='fetch')
+ soft_delete(synchronize_session='fetch')
@require_context
@@ -1465,22 +1463,16 @@ def instance_destroy(context, instance_uuid, constraint=None):
filter_by(uuid=instance_uuid)
if constraint is not None:
query = constraint.apply(models.Instance, query)
- count = query.update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ count = query.soft_delete()
if count == 0:
raise exception.ConstraintNotMet()
session.query(models.SecurityGroupInstanceAssociation).\
filter_by(instance_uuid=instance_uuid).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
session.query(models.InstanceInfoCache).\
filter_by(instance_uuid=instance_uuid).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
return instance_ref
@@ -1918,9 +1910,7 @@ def instance_remove_security_group(context, instance_uuid, security_group_id):
model_query(context, models.SecurityGroupInstanceAssociation).\
filter_by(instance_uuid=instance_uuid).\
filter_by(security_group_id=security_group_id).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
###################
@@ -1974,9 +1964,7 @@ def instance_info_cache_delete(context, instance_uuid):
"""
model_query(context, models.InstanceInfoCache).\
filter_by(instance_uuid=instance_uuid).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
###################
@@ -2129,9 +2117,7 @@ def network_delete_safe(context, network_id):
session.query(models.FixedIp).\
filter_by(network_id=network_id).\
filter_by(deleted=False).\
- update({'deleted': True,
- 'updated_at': literal_column('updated_at'),
- 'deleted_at': timeutils.utcnow()})
+ soft_delete()
session.delete(network_ref)
@@ -3001,9 +2987,7 @@ def block_device_mapping_update_or_create(context, values):
filter_by(virtual_name=virtual_name).\
filter(models.BlockDeviceMapping.device_name !=
values['device_name']).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
@require_context
@@ -3019,9 +3003,7 @@ def block_device_mapping_destroy(context, bdm_id):
with session.begin():
session.query(models.BlockDeviceMapping).\
filter_by(id=bdm_id).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
@require_context
@@ -3032,9 +3014,7 @@ def block_device_mapping_destroy_by_instance_and_volume(context, instance_uuid,
_block_device_mapping_get_query(context, session=session).\
filter_by(instance_uuid=instance_uuid).\
filter_by(volume_id=volume_id).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
@require_context
@@ -3045,9 +3025,7 @@ def block_device_mapping_destroy_by_instance_and_device(context, instance_uuid,
_block_device_mapping_get_query(context, session=session).\
filter_by(instance_uuid=instance_uuid).\
filter_by(device_name=device_name).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
###################
@@ -3213,25 +3191,16 @@ def security_group_destroy(context, security_group_id):
with session.begin():
session.query(models.SecurityGroup).\
filter_by(id=security_group_id).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
session.query(models.SecurityGroupInstanceAssociation).\
filter_by(security_group_id=security_group_id).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
session.query(models.SecurityGroupIngressRule).\
filter_by(group_id=security_group_id).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
-
+ soft_delete()
session.query(models.SecurityGroupIngressRule).\
filter_by(parent_group_id=security_group_id).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
@require_context
@@ -3330,9 +3299,7 @@ def provider_fw_rule_destroy(context, rule_id):
with session.begin():
session.query(models.ProviderFirewallRule).\
filter_by(id=rule_id).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
###################
@@ -3685,14 +3652,10 @@ def instance_type_destroy(context, name):
instance_type_id = instance_type_ref['id']
session.query(models.InstanceTypes).\
filter_by(id=instance_type_id).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
session.query(models.InstanceTypeExtraSpecs).\
filter_by(instance_type_id=instance_type_id).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
@require_context
@@ -3747,15 +3710,12 @@ def instance_type_access_remove(context, flavor_id, project_id):
instance_type_ref = instance_type_get_by_flavor_id(context, flavor_id,
session=session)
instance_type_id = instance_type_ref['id']
- access_ref = _instance_type_access_query(context, session=session).\
+ count = _instance_type_access_query(context, session=session).\
filter_by(instance_type_id=instance_type_id).\
- filter_by(project_id=project_id).first()
+ filter_by(project_id=project_id).\
+ soft_delete()
- if access_ref:
- access_ref.update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
- else:
+ if count == 0:
raise exception.FlavorAccessNotFound(flavor_id=flavor_id,
project_id=project_id)
@@ -3832,9 +3792,7 @@ def instance_metadata_get(context, instance_uuid, session=None):
def instance_metadata_delete(context, instance_uuid, key):
_instance_metadata_get_query(context, instance_uuid).\
filter_by(key=key).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ soft_delete()
@require_context
@@ -3998,15 +3956,12 @@ def agent_build_get_all(context, hypervisor=None):
def agent_build_destroy(context, agent_build_id):
session = get_session()
with session.begin():
- agent_build_ref = model_query(context, models.AgentBuild,
+ count = model_query(context, models.AgentBuild,
session=session, read_deleted="yes").\
filter_by(id=agent_build_id).\
- first()
- if not agent_build_ref:
+ soft_delete()
+ if count == 0:
raise exception.AgentBuildNotFound(id=agent_build_id)
- agent_build_ref.update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
@require_admin_context
@@ -4117,10 +4072,7 @@ def instance_type_extra_specs_delete(context, flavor_id, key):
_instance_type_extra_specs_get_query(
context, flavor_id).\
filter(models.InstanceTypeExtraSpecs.key == key).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')},
- synchronize_session=False)
+ soft_delete(synchronize_session=False)
@require_context
@@ -4383,24 +4335,22 @@ def aggregate_update(context, aggregate_id, values):
@require_admin_context
def aggregate_delete(context, aggregate_id):
- query = _aggregate_get_query(context,
- models.Aggregate,
- models.Aggregate.id,
- aggregate_id)
- if query.first():
- query.update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
- else:
- raise exception.AggregateNotFound(aggregate_id=aggregate_id)
+ session = get_session()
+ with session.begin():
+ count = _aggregate_get_query(context,
+ models.Aggregate,
+ models.Aggregate.id,
+ aggregate_id,
+ session=session).\
+ soft_delete()
+ if count == 0:
+ raise exception.AggregateNotFound(aggregate_id=aggregate_id)
- #Delete Metadata
- model_query(context,
- models.AggregateMetadata).\
- filter_by(aggregate_id=aggregate_id).\
- update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
+ #Delete Metadata
+ model_query(context,
+ models.AggregateMetadata, session=session).\
+ filter_by(aggregate_id=aggregate_id).\
+ soft_delete()
@require_admin_context
@@ -4421,16 +4371,13 @@ def aggregate_metadata_get(context, aggregate_id):
@require_admin_context
@require_aggregate_exists
def aggregate_metadata_delete(context, aggregate_id, key):
- query = _aggregate_get_query(context,
+ count = _aggregate_get_query(context,
models.AggregateMetadata,
models.AggregateMetadata.aggregate_id,
aggregate_id).\
- filter_by(key=key)
- if query.first():
- query.update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
- else:
+ filter_by(key=key).\
+ soft_delete()
+ if count == 0:
raise exception.AggregateMetadataNotFound(aggregate_id=aggregate_id,
metadata_key=key)
@@ -4498,15 +4445,13 @@ def aggregate_host_get_all(context, aggregate_id):
@require_admin_context
@require_aggregate_exists
def aggregate_host_delete(context, aggregate_id, host):
- query = _aggregate_get_query(context,
+ count = _aggregate_get_query(context,
models.AggregateHost,
models.AggregateHost.aggregate_id,
- aggregate_id).filter_by(host=host)
- if query.first():
- query.update({'deleted': True,
- 'deleted_at': timeutils.utcnow(),
- 'updated_at': literal_column('updated_at')})
- else:
+ aggregate_id).\
+ filter_by(host=host).\
+ soft_delete()
+ if count == 0:
raise exception.AggregateHostNotFound(aggregate_id=aggregate_id,
host=host)