def get(self, request, project): if not features.has("organizations:metrics", project.organization, actor=request.user): return Response(status=404) metrics = DATA_SOURCE.get_metrics(project) return Response(metrics, status=200)
def get(self, request, project, metric_name): if not features.has("organizations:metrics", project.organization, actor=request.user): return Response(status=404) try: metric = DATA_SOURCE.get_single_metric(project, metric_name) except InvalidParams: raise ResourceDoesNotExist(detail=f"metric '{metric_name}'") return Response(metric, status=200)
def get(self, request, project): if not features.has("organizations:metrics", project.organization, actor=request.user): return Response(status=404) try: query = QueryDefinition(request.GET, allow_minute_resolution=False) data = DATA_SOURCE.get_series(query) except (InvalidField, InvalidParams) as exc: raise (ParseError(detail=str(exc))) return Response(data, status=200)
def get(self, request, project): if not features.has("organizations:metrics", project.organization, actor=request.user): return Response(status=404) metric_names = request.GET.getlist("metric") or None if not features.has("organizations:metrics", project.organization, actor=request.user): return Response(status=404) try: tag_names = DATA_SOURCE.get_tag_names(project, metric_names) except InvalidParams as exc: raise (ParseError(detail=str(exc))) return Response(tag_names, status=200)
def get(self, request, project, tag_name): if not features.has("organizations:metrics", project.organization, actor=request.user): return Response(status=404) metric_names = request.GET.getlist("metric") or None try: tag_values = DATA_SOURCE.get_tag_values(project, tag_name, metric_names) except InvalidParams as exc: msg = str(exc) # TODO: Use separate error type once we have real data if "Unknown tag" in msg: raise ResourceDoesNotExist(f"tag '{tag_name}'") else: raise ParseError(msg) return Response(tag_values, status=200)