Exemple #1
0
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}
Exemple #2
0
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) 
Exemple #3
0
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)
Exemple #4
0
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}