Skip to content

Commit

Permalink
implement use case id/key compatibility in org_metrics
Browse files Browse the repository at this point in the history
  • Loading branch information
john-z-yang committed Jun 28, 2023
1 parent 38da146 commit 3e2179c
Show file tree
Hide file tree
Showing 7 changed files with 92 additions and 92 deletions.
4 changes: 2 additions & 2 deletions src/sentry/api/endpoints/organization_measurements_meta.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from sentry.api.bases import NoProjects, OrganizationEventsEndpointBase
from sentry.models import Organization
from sentry.search.events.constants import METRIC_FUNCTION_LIST_BY_TYPE
from sentry.sentry_metrics.configuration import UseCaseKey
from sentry.sentry_metrics.use_case_id_registry import UseCaseID
from sentry.snuba.metrics.datasource import get_custom_measurements


Expand All @@ -24,7 +24,7 @@ def get(self, request: Request, organization: Organization) -> Response:
organization_id=organization.id,
start=params["start"],
end=params["end"],
use_case_id=UseCaseKey.PERFORMANCE,
use_case_id=UseCaseID.TRANSACTIONS,
)

with start_span(op="transform", description="metric meta"):
Expand Down
10 changes: 5 additions & 5 deletions src/sentry/api/endpoints/organization_metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from sentry.api.exceptions import ResourceDoesNotExist
from sentry.api.paginator import GenericOffsetPaginator
from sentry.api.utils import InvalidParams
from sentry.sentry_metrics.configuration import UseCaseKey
from sentry.sentry_metrics.use_case_id_registry import UseCaseID
from sentry.snuba.metrics import (
QueryDefinition,
get_metrics,
Expand All @@ -21,17 +21,17 @@
from sentry.utils.cursors import Cursor, CursorResult


def get_use_case_id(request: Request) -> UseCaseKey:
def get_use_case_id(request: Request) -> UseCaseID:
"""
Get useCase from query params and validate it against UseCaseKey enum type
Get useCase from query params and validate it against UseCaseID enum type
Raise a ParseError if the use_case parameter is invalid.
"""

try:
return UseCaseKey(request.GET.get("useCase", "release-health"))
return UseCaseID(request.GET.get("useCase", "sessions"))
except ValueError:
raise ParseError(
detail=f"Invalid useCase parameter. Please use one of: {[uc.value for uc in UseCaseKey]}"
detail=f"Invalid useCase parameter. Please use one of: {[uc.value for uc in UseCaseID]}"
)


Expand Down
28 changes: 14 additions & 14 deletions src/sentry/snuba/metrics/datasource.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
from sentry.api.utils import InvalidParams
from sentry.models import Project
from sentry.sentry_metrics import indexer
from sentry.sentry_metrics.configuration import UseCaseKey
from sentry.sentry_metrics.use_case_id_registry import UseCaseID
from sentry.sentry_metrics.utils import (
MetricIndexNotFound,
resolve_tag_key,
Expand Down Expand Up @@ -87,7 +87,7 @@ def _get_metrics_for_entity(
def get_available_derived_metrics(
projects: Sequence[Project],
supported_metric_ids_in_entities: Dict[MetricType, Sequence[int]],
use_case_id: UseCaseKey,
use_case_id: UseCaseID,
) -> Set[str]:
"""
Function that takes as input a dictionary of the available ids in each entity, and in turn
Expand Down Expand Up @@ -135,7 +135,7 @@ def get_available_derived_metrics(
return found_derived_metrics.intersection(public_derived_metrics)


def get_metrics(projects: Sequence[Project], use_case_id: UseCaseKey) -> Sequence[MetricMeta]:
def get_metrics(projects: Sequence[Project], use_case_id: UseCaseID) -> Sequence[MetricMeta]:
ENTITY_TO_DATASET = {
"sessions": {
"c": "metrics_counters",
Expand Down Expand Up @@ -179,7 +179,7 @@ def get_custom_measurements(
organization_id: int,
start: Optional[datetime] = None,
end: Optional[datetime] = None,
use_case_id: UseCaseKey = UseCaseKey.PERFORMANCE,
use_case_id: UseCaseID = UseCaseID.TRANSACTIONS,
) -> Sequence[MetricMeta]:
assert project_ids

Expand Down Expand Up @@ -212,7 +212,7 @@ def get_custom_measurements(


def _get_metrics_filter_ids(
projects: Sequence[Project], metric_mris: Sequence[str], use_case_id: UseCaseKey
projects: Sequence[Project], metric_mris: Sequence[str], use_case_id: UseCaseID
) -> Set[int]:
"""
Returns a set of metric_ids that map to input metric names and raises an exception if
Expand Down Expand Up @@ -251,7 +251,7 @@ def _validate_requested_derived_metrics_in_input_metrics(
projects: Sequence[Project],
metric_mris: Sequence[str],
supported_metric_ids_in_entities: Dict[MetricType, Sequence[int]],
use_case_id: UseCaseKey,
use_case_id: UseCaseID,
) -> None:
"""
Function that takes metric_mris list and a mapping of entity to its metric ids, and ensures
Expand Down Expand Up @@ -280,7 +280,7 @@ def _fetch_tags_or_values_for_metrics(
metric_names: Optional[Sequence[str]],
referrer: str,
column: str,
use_case_id: UseCaseKey,
use_case_id: UseCaseID,
) -> Tuple[Union[Sequence[Tag], Sequence[TagValue]], Optional[str]]:

assert len({p.organization_id for p in projects}) == 1
Expand All @@ -295,7 +295,7 @@ def _fetch_tags_or_values_for_mri(
metric_mris: Optional[Sequence[str]],
referrer: str,
column: str,
use_case_id: UseCaseKey,
use_case_id: UseCaseID,
) -> Tuple[Union[Sequence[Tag], Sequence[TagValue]], Optional[str]]:
"""
Function that takes as input projects, metric_mris, and a column, and based on the column
Expand Down Expand Up @@ -333,7 +333,7 @@ def _fetch_tags_or_values_for_mri(
release_health_metric_types = ("counter", "set", "distribution")
performance_metric_types = ("generic_counter", "generic_set", "generic_distribution")

if use_case_id == UseCaseKey.RELEASE_HEALTH:
if use_case_id == UseCaseID.SESSIONS:
metric_types = release_health_metric_types
else:
metric_types = performance_metric_types
Expand Down Expand Up @@ -426,7 +426,7 @@ def _fetch_tags_or_values_for_mri(


def get_single_metric_info(
projects: Sequence[Project], metric_name: str, use_case_id: UseCaseKey
projects: Sequence[Project], metric_name: str, use_case_id: UseCaseID
) -> MetricMetaWithTagKeys:
assert projects

Expand Down Expand Up @@ -462,7 +462,7 @@ def get_single_metric_info(


def get_tags(
projects: Sequence[Project], metrics: Optional[Sequence[str]], use_case_id: UseCaseKey
projects: Sequence[Project], metrics: Optional[Sequence[str]], use_case_id: UseCaseID
) -> Sequence[Tag]:
"""Get all metric tags for the given projects and metric_names"""
assert projects
Expand Down Expand Up @@ -493,7 +493,7 @@ def get_tag_values(
projects: Sequence[Project],
tag_name: str,
metric_names: Optional[Sequence[str]],
use_case_id: UseCaseKey,
use_case_id: UseCaseID,
) -> Sequence[TagValue]:
"""Get all known values for a specific tag"""
assert projects
Expand Down Expand Up @@ -552,7 +552,7 @@ class GroupLimitFilters:


def _get_group_limit_filters(
metrics_query: MetricsQuery, results: List[Mapping[str, int]], use_case_id: UseCaseKey
metrics_query: MetricsQuery, results: List[Mapping[str, int]], use_case_id: UseCaseID
) -> Optional[GroupLimitFilters]:
if not metrics_query.groupby or not results:
return None
Expand Down Expand Up @@ -682,7 +682,7 @@ def _prune_extra_groups(results: dict, filters: GroupLimitFilters) -> None:
def get_series(
projects: Sequence[Project],
metrics_query: MetricsQuery,
use_case_id: UseCaseKey,
use_case_id: UseCaseID,
include_meta: bool = False,
tenant_ids: dict[str, Any] | None = None,
) -> dict:
Expand Down
Loading

0 comments on commit 3e2179c

Please sign in to comment.