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