def backup_action(user, DATA): """ Backup action, delete, restore """ action, pk = DATA.get('action'), DATA.get('pk') if action not in ["delete", "restore"]: return {"OPERATION_STATUS": OPERATION_FAILED, "status": "un supported action [%s]" % action} try: backup = Backup.objects.get(pk=pk, user=user) Operation.log(backup, obj_name=backup.name, action=action, result=1) if action == "restore": if backup.instance: ins = Instance.objects.get(pk=backup.instance) if ins.status != INSTANCE_STATE_POWEROFF: return {"OPERATION_STATUS": OPERATION_FORBID, "status": backup.status} backup.mark_restore(DATA.get('item_id')) if action == "delete": backup.mark_delete() # celery call backup_action_task.delay(backup, action) return {"OPERATION_STATUS": OPERATION_SUCCESS, "status": backup.status} except Exception as ex: LOG.exception(ex) return {"OPERATION_STATUS": OPERATION_FAILED}
def backup_create_view(request): serializer = BackupSerializer(data=request.data, context={"request": request}) if serializer.is_valid(): backup = serializer.save() backup.create_items() Operation.log(backup, obj_name=backup.name, action="create", result=1) backup_action_task.delay(backup, "create") backup.status = BACKUP_STATE_BACKUPING backup.save() return Response({"OPERATION_STATUS": 1}, status=status.HTTP_201_CREATED) else: return Response({"OPERATION_STATUS": 0}, status=status.HTTP_400_BAD_REQUEST)
def backup_action(user, DATA): """ Backup action, delete, restore """ action, pk = DATA.get('action'), DATA.get('pk') if action not in ["delete", "restore"]: return { "OPERATION_STATUS": OPERATION_FAILED, "status": "un supported action [%s]" % action } try: backup = Backup.objects.get(pk=pk, user=user) Operation.log(backup, obj_name=backup.name, action=action, result=1) if action == "restore": if backup.instance: ins = Instance.objects.get(pk=backup.instance) if ins.status != INSTANCE_STATE_POWEROFF: return { "OPERATION_STATUS": OPERATION_FORBID, "status": backup.status } backup.mark_restore(DATA.get('item_id')) if action == "delete": backup.mark_delete() # celery call backup_action_task.delay(backup, action) return {"OPERATION_STATUS": OPERATION_SUCCESS, "status": backup.status} except Exception as ex: LOG.exception(ex) return {"OPERATION_STATUS": OPERATION_FAILED}