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)
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())
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))
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())