diff options
-rw-r--r-- | nova/db/sqlalchemy/api.py | 157 |
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) |