allow multiple template deletion

Implements: blueprint crud-templates
Change-Id: Icdafe86137b1b2087d7348779cd3fee3d97dfd8f
This commit is contained in:
Idan Hefetz 2018-01-23 07:31:56 +00:00
parent 8883c3f03b
commit 49bcbb1f4f

View File

@ -181,20 +181,23 @@ class TemplateController(RootRestController):
}
@staticmethod
def _delete(uuid):
def _delete(uuids):
try:
storage = pecan.request.storage
templates = storage.templates.query(uuid=uuid)
if type(uuids) != list:
uuids = [uuids]
storage = pecan.request.storage.templates
templates = [t for _id in uuids for t in storage.query(uuid=_id)
if t.status != TStatus.DELETED]
if not templates:
raise VitrageError('template does not exists')
elif templates[0].status == TStatus.DELETED:
raise VitrageError('template is deleted')
elif templates[0].status == TStatus.ERROR:
storage.templates.update(uuid, "status", TStatus.DELETED)
elif templates[0].status == TStatus.ACTIVE:
storage.templates.update(uuid, "status", TStatus.DELETING)
pecan.request.client.call(pecan.request.context,
'delete_template')
raise VitrageError('Template not found')
for t in templates:
if t.status == TStatus.ERROR:
storage.update(t.uuid, "status", TStatus.DELETED)
else:
storage.update(t.uuid, "status", TStatus.DELETING)
pecan.request.client.call(pecan.request.context,
'delete_template')
except Exception as e:
LOG.exception('failed to delete template file %s ', e)
abort(404, str(e))