Esempio n. 1
0
    def create(self, request):
        """ Creates a new service

        Args:
            request (HttpRequest): The incoming request
        Returns:
             response (Response)
        """
        service_serializer = ServiceSerializer()
        params = request.POST.dict()
        response = APIResponse()
        pending_task = service_serializer.create(validated_data=params,
                                                 request=request)

        if isinstance(pending_task, Form):
            status = 400
            response.data["success"] = "false"
            response.data["message"] = pending_task.errors
        else:
            status = 202
            response.data["success"] = pending_task is not None
            response.data["pending_task_id"] = pending_task.id
            response.data[
                "status_url"] = HTTP_OR_SSL + HOST_NAME + "/api/pending-tasks/?task_id=" + pending_task.id

        response = Response(data=response.data, status=status)
        return response
Esempio n. 2
0
    def active_state(self, request, pk=None):
        """ Activates a service via remote access

        Args:
            request: The incoming request
            pk: The service id
        Returns:
             Response
        """
        user = user_helper.get_user(request)
        parameter_name = "active"
        new_status = request.POST.dict().get(parameter_name, None)
        new_status = utils.resolve_boolean_attribute_val(new_status)

        response = APIResponse()
        if new_status is None or not isinstance(new_status, bool):
            response.data["msg"] = PARAMETER_ERROR.format(parameter_name)
            return Response(data=response.data, status=500)

        try:
            md = Metadata.objects.get(service__id=pk)

            response.data["oldStatus"] = md.is_active

            md.is_active = new_status
            md.save()
            response.data["newStatus"] = md.is_active
            response.data["success"] = True
            return Response(data=response.data, status=200)
        except ObjectDoesNotExist:
            response.data["msg"] = SERVICE_NOT_FOUND
            return Response(data=response.data, status=404)
Esempio n. 3
0
    def create(self, request):
        """ Creates a new service

        Args:
            request (HttpRequest): The incoming request
        Returns:
             response (Response)
        """
        service_serializer = ServiceSerializer()
        params = request.POST.dict()
        pending_task = service_serializer.create(validated_data=params,
                                                 request=request)

        response = APIResponse()
        response.data["success"] = pending_task is not None
        response.data["pending_task_id"] = pending_task.id
        if pending_task:
            status = 200
        else:
            status = 500
        response = Response(data=response.data, status=status)
        return response
Esempio n. 4
0
    def retrieve(self, request, pk=None):
        """ Returns a single PendingTask record information

        Args:
            request (HttpRequet): The incoming request
            pk (int): The primary_key (id) of the PendingTask
        Returns:
             response (Response): Contains the json serialized information about the pending task
        """
        response = APIResponse()
        try:
            tmp = PendingTask.objects.get(id=pk)
            celery_task = AsyncResult(tmp.task_id)
            progress = float(celery_task.info.get("current", -1))
            serializer = PendingTaskSerializer(tmp)

            response.data.update(serializer.data)
            response.data["progress"] = progress
            response.data["success"] = True
        except ObjectDoesNotExist:
            response.data["msg"] = RESOURCE_NOT_FOUND
        return Response(data=response.data)
Esempio n. 5
0
    def destroy(self, request, pk=None):
        """ Deletes a service which is identified by its metadata record's primary_key pk

        Args:
            request (HttpRequest): The incoming request
            pk (int): The primary key (id)
        Returns:
             Response
        """
        # Use the already existing internal deleting of services
        response = APIResponse()
        try:
            md = Metadata.objects.get(id=pk)
            md.delete()
            response.data["success"] = True
            response.data["msg"] = SERVICE_REMOVED
        except ObjectDoesNotExist:
            response.data["success"] = False
            response.data["msg"] = RESOURCE_NOT_FOUND
        return Response(data=response.data)