Enable deletion of backup metadata using backup_uuid

Change-Id: I2aa578fd18fe7cdcc0e0aa325d97829337a1e7f0
This commit is contained in:
Memo Garcia 2017-03-06 15:16:17 +00:00
parent 875efa3a32
commit 4740857c47
1 changed files with 31 additions and 0 deletions

View File

@ -153,6 +153,37 @@ class BackupTypeManager(TypeManager):
query_filter = {"filter": {"bool": {"must": base_filter}}}
return {'query': {'filtered': query_filter}}
@staticmethod
def get_search_query_for_deletion(user_id, doc_id, search=None):
search = search or {}
base_filter = TypeManager.get_base_search_filter(user_id, search)
if doc_id is not None:
base_filter.append({"term": {"backup_uuid": doc_id}})
query_filter = {"filter": {"bool": {"must": base_filter}}}
return {'query': {'filtered': query_filter}}
def delete(self, user_id, doc_id):
query_dsl = self.get_search_query_for_deletion(user_id, doc_id)
try:
results = es_helpers.scan(self.es, index=self.index,
doc_type=self.doc_type, query=query_dsl)
except Exception as e:
raise freezer_api_exc.StorageEngineError(
message=_i18n._('Scan operation failed: %s') % e)
id = None
for res in results:
id = res.get('_source')['backup_uuid']
if not doc_id == id:
continue
try:
self.es.delete(index=self.index, doc_type=self.doc_type,
id=res.get('_id'))
self.es.indices.refresh(index=self.index)
except Exception as e:
raise freezer_api_exc.StorageEngineError(
message=_i18n._('Delete operation failed: %s') % e)
return id
class ClientTypeManager(TypeManager):
def __init__(self, es, doc_type, index='freezer'):