Пример #1
0
    def rollback_deployment(self, request, pk=None, format=None):
        """
        Return rollback target deployment of a group
        ---
        response_serializer: serializers.DeploymentSerializer
        parameters_strategy:
            form: replace
        parameters:
            - name: deployment
              description: >
                the rollback deployment id
              type: integer
              paramType: form
        """
        group = self.get_object()
        try:
            context = {'request': request}
            if request.method == 'GET':
                deployment = group.rollback_deployment
                context.update({'expand_package': True, 'expand_group': True})
            else:
                deployment_id = request.data.get('deployment')
                deployment = group.rollback(deployment_id)

            serializer = serializers.DeploymentSerializer(deployment,
                                                          context=context)
        except Exception as e:
            return Response(str(e), status=HTTP_400_BAD_REQUEST)
        else:
            return Response(serializer.data)
Пример #2
0
    def deployments(self, request, pk=None, format=None):
        """
        Return a list of deployments of a group
        ---
        response_serializer: serializers.DeploymentSerializer
        parameters:
            - name: created_from
              description: >
                filter in applications created from given date in date format
              type: date-time
              paramType: query
            - name: running
              description: >
                filter in deployments in running
                (not SUCCESS, FAILURE, or REVOKED) status
              type: boolean
              paramType: query
            - name: last_success
              description: >
                return only the last success deployment if set to True
              type: boolean
              paramType: query
            - name: deployment_status
              description: filter in deployments via its' status
              type: string
              paramType: query
        """
        @created_from()
        @running()
        @last_success_deployment()
        @status(param='deployment_status')
        def get_queryset(self, request):
            return group.merge_deploys.order_by('-created_at')

        group = self.get_object()
        queryset = get_queryset(self, request)
        serializer = serializers.DeploymentSerializer(
            queryset,
            many=True,
            context={
                'request': request,
                'expand_package': True,
                'rerollable_ids': group.rerollable_deployment_ids
            })

        return Response(serializer.get_paginated_data())
Пример #3
0
    def rollback_chain(self, request, pk=None):
        """
        Return a list of deployments in rollback chain (debug only)
        ---
        response_serializer: serializers.DeploymentSerializer
        omit_parameters:
            - query
        """
        deployment = self.get_object()
        queryset = deployment.rollback_deployments
        serializer = serializers.DeploymentSerializer(queryset,
                                                      many=True,
                                                      context={
                                                          'request': request,
                                                          'expand_package':
                                                          True
                                                      })

        fields = ('id', 'rop_id', 'flavor', 'status', 'package', 'parent',
                  'group', 'origin')
        return Response(serializer.get_paginated_data(fields=fields))
Пример #4
0
    def deployments(self, request, pk=None, format=None):
        """
        Return a list of deployments of an application
        ---
        response_serializer: serializers.DeploymentSerializer
        parameters:
            - name: created_from
              description: >
                filter in applications created from given date in date format
              type: date-time
              paramType: query
            - name: running
              description: >
                filter in deployments in running
                (not SUCCESS, FAILURE, or REVOKED) status
              type: boolean
              paramType: query
            - name: last_success
              description: >
                return only the last success deployment if set to True
              type: boolean
              paramType: query
            - name: deployment_status
              description: filter in deployments via its' status
              type: string
              paramType: query
            - name: group
              description: >
                filter in deployments belong to given id
              type: integer
              paramType: query
            - name: group_id
              description: >
                filter in deployments belong to given group_id (NOT primary key)
              type: integer
              paramType: query
            - name: package_id
              description: >
                filter in deployments with give package id
              type: integer
              paramType: query
        """
        @created_from()
        @running()
        @last_success_deployment()
        @status(param='deployment_status')
        @ids(param='group_id', field='group__group_id')
        @ids(param='package', field='package_id')
        def get_queryset(self, request, tars_group_id=None):
            deploy_qs = app.deployments

            if tars_group_id:
                deploy_qs = app.groups.get(pk=tars_group_id).merge_deploys

            return deploy_qs.order_by('-id')

        app = self.get_object()
        group_id = request.query_params.get('group_id')
        queryset = get_queryset(self, request, request.query_params.get('group'))


        rerollable_ids = app.rerollable_deployment_ids(group_id=group_id)

        serializer = serializers.DeploymentSerializer(
            queryset, many=True,
            context={'request': request,
                     'expand_package': True, 'expand_group': True,
                     'rerollable_ids': rerollable_ids})

        return Response(serializer.get_paginated_data())