Exemple #1
0
    def get(self, request, service, address=None, format=None):
        ''''
        Get the current shaping for an IP. If address is None, defaults to
        the client IP
        @return the current shaping applied or 404 if the IP is not being
        shaped
        '''
        device_serializer = DeviceSerializer(
            data=request.data,
            context={
                'request': request,
                'address': address
            },
        )
        if not device_serializer.is_valid():
            raise ParseError(detail=device_serializer.errors)

        dev = device_serializer.save()
        try:
            tc = service.getCurrentShaping(dev)
        except TrafficControlException as e:
            return Response(
                {'detail': e.message},
                status=status.HTTP_404_NOT_FOUND,
            )

        serializer = SettingSerializer(tc.settings)
        return Response(serializer.data, status=status.HTTP_200_OK)
Exemple #2
0
    def delete(self, request, service, address=None, format=None):
        '''
        Delete the shaping for an IP, if no IP is specified, default to the
        client IP
        '''
        device_serializer = DeviceSerializer(
            data=request.data,
            context={
                'request': request,
                'address': address
            },
        )
        if not device_serializer.is_valid():
            return Response(
                device_serializer.errors,
                status=status.HTTP_400_BAD_REQUEST,
            )

        device = device_serializer.save()

        try:
            tcrc = service.stopShaping(device)
        except TrafficControlException as e:
            return Response(e.message, status=status.HTTP_401_UNAUTHORIZED)

        result = {'result': tcrc.code, 'message': tcrc.message}
        if tcrc.code:
            raise ParseError(detail=result)
        return Response(status=status.HTTP_204_NO_CONTENT)
    def get(self, request, service, address=None, format=None):
        ''''
        Get the current shaping for an IP. If address is None, defaults to
        the client IP
        @return the current shaping applied or 404 if the IP is not being
        shaped
        '''
        device_serializer = DeviceSerializer(
            data=request.DATA,
            context={'request': request, 'address': address},
        )
        if not device_serializer.is_valid():
            raise ParseError(detail=device_serializer.errors)

        dev = device_serializer.save()
        try:
            tc = service.getCurrentShaping(dev)
        except TrafficControlException as e:
            return Response(
                {'detail': e.message},
                status=status.HTTP_404_NOT_FOUND,
            )

        serializer = SettingSerializer(tc.settings)
        return Response(
            serializer.data,
            status=status.HTTP_200_OK
        )
    def delete(self, request, service, address=None, format=None):
        '''
        Delete the shaping for an IP, if no IP is specified, default to the
        client IP
        '''
        device_serializer = DeviceSerializer(
            data=request.DATA,
            context={'request': request, 'address': address},
        )
        if not device_serializer.is_valid():
            return Response(
                device_serializer.errors,
                status=status.HTTP_400_BAD_REQUEST,
            )

        device = device_serializer.save()

        try:
            tcrc = service.stopShaping(device)
        except TrafficControlException as e:
            return Response(e.message, status=status.HTTP_401_UNAUTHORIZED)

        result = {'result': tcrc.code, 'message': tcrc.message}
        if tcrc.code:
            raise ParseError(detail=result)
        return Response(status=status.HTTP_204_NO_CONTENT)
Exemple #5
0
    def post(self, request, service, address=None, format=None):
        ''''
        Set shaping for an IP. If address is None, defaults to
        the client IP
        @return the profile that was set on success
        '''
        # data = JSONParser().parse(request)
        data = request.DATA
        print data
        setting_serializer = SettingSerializer(data=data)
        device_serializer = DeviceSerializer(
            data=data,
            context={
                'request': request,
                'address': address
            },
        )
        if not setting_serializer.is_valid():
            raise ParseError(detail=setting_serializer.errors)

        if not device_serializer.is_valid():
            raise ParseError(detail=device_serializer.errors)

        setting = setting_serializer.save()
        device = device_serializer.save()

        tc = TrafficControl(
            device=device,
            settings=setting,
            timeout=atc_api_settings.DEFAULT_TC_TIMEOUT,
        )

        try:
            tcrc = service.startShaping(tc)
        except TrafficControlException as e:
            return Response(e.message, status=status.HTTP_401_UNAUTHORIZED)
        result = {'result': tcrc.code, 'message': tcrc.message}
        if tcrc.code:
            raise ParseError(detail=result)

        return Response(setting_serializer.data,
                        status=status.HTTP_201_CREATED)
    def post(self, request, service, address=None, format=None):
        ''''
        Set shaping for an IP. If address is None, defaults to
        the client IP
        @return the profile that was set on success
        '''
        setting_serializer = SettingSerializer(data=request.DATA)
        device_serializer = DeviceSerializer(
            data=request.DATA,
            context={'request': request, 'address': address},
        )
        if not setting_serializer.is_valid():
            raise ParseError(detail=setting_serializer.errors)

        if not device_serializer.is_valid():
            raise ParseError(detail=device_serializer.errors)

        setting = setting_serializer.save()
        device = device_serializer.save()

        tc = TrafficControl(
            device=device,
            settings=setting,
            timeout=atc_api_settings.DEFAULT_TC_TIMEOUT,
        )

        try:
            tcrc = service.startShaping(tc)
        except TrafficControlException as e:
            return Response(e.message, status=status.HTTP_401_UNAUTHORIZED)
        result = {'result': tcrc.code, 'message': tcrc.message}
        if tcrc.code:
            raise ParseError(detail=result)

        return Response(
            setting_serializer.data,
            status=status.HTTP_201_CREATED
        )