Пример #1
0
    def update(self, request, project_id, cluster_id, namespace, name):
        slz = serializers.ServiceMonitorUpdateSLZ(data=request.data)
        slz.is_valid(raise_exception=True)
        data = slz.validated_data

        client = self._get_client(request, project_id, cluster_id)
        result = client.get_service_monitor(namespace, name)
        if result.get("status") == "Failure":
            message = _("更新Metrics:{}失败, [命名空间:{}], {}").format(name, namespace, result.get("message", ""))
            self._activity_log(project_id, request.user.username, name, message, False)
            raise error_codes.APIError(result.get("message", ""))

        spec = self._merge_spec(result, data)

        # 更新会合并selector,所有是先删除, 再创建
        result = client.delete_service_monitor(namespace, name)
        if result.get("status") == "Failure":
            message = _("更新Metrics:{}失败, [命名空间:{}], {}").format(name, namespace, result.get("message", ""))
            self._activity_log(project_id, request.user.username, name, message, False)
            raise error_codes.APIError(result.get("message", ""))

        result = client.create_service_monitor(namespace, spec)
        if result.get("status") == "Failure":
            message = _("更新Metrics:{}失败, [命名空间:{}], {}").format(name, namespace, result.get("message", ""))
            self._activity_log(project_id, request.user.username, name, message, False)
            raise error_codes.APIError(result.get("message", ""))

        message = _("更新Metrics:{}成功, [命名空间:{}]").format(name, namespace)
        self._activity_log(project_id, request.user.username, name, message, True)
        return Response(result)
Пример #2
0
    def update(self, request, project_id, cluster_id, namespace, name):
        access_token = request.user.token.access_token

        slz = serializers.ServiceMonitorUpdateSLZ(data=request.data)
        slz.is_valid(raise_exception=True)
        data = slz.validated_data

        client = k8s.K8SClient(access_token, project_id, cluster_id, env=None)
        result = client.get_service_monitor(namespace, name)
        if result.get("status") == "Failure":
            raise error_codes.APIError(result.get("message", ""))

        spec = self.merge_spec(result, data)
        result = client.update_service_monitor(namespace, name, spec)
        return Response(result)