Skip to content

Commit 35df546

Browse files
committed
Remove default entity from base and add get_all_entities
1 parent 8232af1 commit 35df546

32 files changed

+193
-121
lines changed

bin/mocks/mock-subscriptions

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#!/usr/bin/env python
22
import argparse
33
import random
4-
from datetime import timedelta
54

6-
from snuba.datasets.entities.factory import get_entity_name
5+
from snuba.datasets.entities.entity_key import EntityKey
6+
from snuba.datasets.entities.factory import get_entity
77
from snuba.datasets.entity_subscriptions.factory import get_entity_subscription
88
from snuba.datasets.factory import get_dataset
99
from snuba.redis import redis_client
@@ -31,12 +31,21 @@ parser.add_argument(
3131
choices=["events"],
3232
default="events",
3333
)
34+
parser.add_argument(
35+
"--entity",
36+
type=str,
37+
help="Entity for subscriptions",
38+
dest="entity",
39+
choices=["events"],
40+
default="events",
41+
)
3442
parsed = parser.parse_args()
3543

3644
dataset_name = parsed.dataset
3745
dataset = get_dataset(dataset_name)
38-
entity = dataset.get_default_entity()
39-
entity_key = get_entity_name(entity)
46+
entity_str = parsed.entity
47+
entity_key = EntityKey(entity_str)
48+
entity = get_entity(entity_key)
4049
storage = entity.get_writable_storage()
4150
assert storage is not None
4251
stream_loader = storage.get_table_writer().get_stream_loader()
@@ -52,8 +61,8 @@ for _ in range(parsed.number):
5261
subscription_data = SubscriptionData(
5362
query=f"MATCH ({entity_key.value}) SELECT count() AS count WHERE project_id = {project_id}",
5463
project_id=project_id,
55-
time_window=timedelta(minutes=1),
56-
resolution=timedelta(minutes=1),
64+
time_window_sec=60,
65+
resolution_sec=60,
5766
entity_subscription=entity_subscription,
5867
)
5968

snuba/datasets/cdc/groupassignee.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1+
from typing import Sequence
2+
13
from snuba.datasets.dataset import Dataset
24
from snuba.datasets.entities.entity_key import EntityKey
5+
from snuba.datasets.entities.factory import get_entity
6+
from snuba.datasets.entity import Entity
37

48

59
class GroupAssigneeDataset(Dataset):
@@ -11,5 +15,7 @@ class GroupAssigneeDataset(Dataset):
1115
there is no issue in fixing the name.
1216
"""
1317

14-
def __init__(self) -> None:
15-
super().__init__(default_entity=EntityKey.GROUPASSIGNEE)
18+
def get_all_entities(self) -> Sequence[Entity]:
19+
return [
20+
get_entity(EntityKey.GROUPASSIGNEE),
21+
]
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1+
from typing import Sequence
2+
13
from snuba.datasets.dataset import Dataset
24
from snuba.datasets.entities.entity_key import EntityKey
5+
from snuba.datasets.entities.factory import get_entity
6+
from snuba.datasets.entity import Entity
37

48

59
class GroupedMessageDataset(Dataset):
6-
def __init__(self) -> None:
7-
super().__init__(default_entity=EntityKey.GROUPEDMESSAGE)
10+
def get_all_entities(self) -> Sequence[Entity]:
11+
return [
12+
get_entity(EntityKey.GROUPEDMESSAGE),
13+
]

snuba/datasets/configuration/dataset_builder.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ def build_dataset_from_config(config_file_path: str) -> PluggableDataset:
1212
config = load_configuration_data(config_file_path, DATASET_VALIDATION_SCHEMAS)
1313
return PluggableDataset(
1414
name=config["name"],
15-
is_experimental=bool(config["is_experimental"]),
16-
default_entity=EntityKey(config["entities"]["default"]),
1715
all_entities=[EntityKey(key) for key in config["entities"]["all"]],
16+
is_experimental=bool(config["is_experimental"]),
1817
)

snuba/datasets/configuration/generic_metrics/dataset.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,4 @@ name: generic_metrics
55
is_experimental: false
66

77
entities:
8-
default: generic_metrics_sets
98
all: [generic_metrics_sets, generic_metrics_distributions]

snuba/datasets/configuration/json_schema.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,9 +228,13 @@ def make_column_schema(
228228
"is_experimental": {"type": "boolean"},
229229
"entities": {
230230
"type": "object",
231-
"properties": {"default": TYPE_STRING, "all": TYPE_STRING_ARRAY},
231+
"properties": {"all": TYPE_STRING_ARRAY},
232+
"required": ["all"],
232233
},
233234
},
235+
"required": [
236+
"entities",
237+
],
234238
}
235239

236240
V1_ENTITY_SUBSCIPTION_SCHEMA = {

snuba/datasets/dataset.py

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from __future__ import annotations
22

3+
from abc import abstractmethod
34
from typing import Sequence
45

5-
from snuba.datasets.entities.entity_key import EntityKey
66
from snuba.datasets.entities.factory import get_entity
77
from snuba.datasets.entity import Entity
88
from snuba.datasets.plans.query_plan import QueryRunner
@@ -40,9 +40,6 @@ class Dataset:
4040
manipulate the lower layer objects.
4141
"""
4242

43-
def __init__(self, *, default_entity: EntityKey) -> None:
44-
self.__default_entity = default_entity
45-
4643
def is_experimental(self) -> bool:
4744
"""Marks the dataset as experimental. Healthchecks failing on this
4845
dataset:
@@ -52,15 +49,9 @@ def is_experimental(self) -> bool:
5249
"""
5350
return False
5451

55-
# TODO: Remove once entity selection moves to Sentry
56-
def select_entity(self, query: Query) -> EntityKey:
57-
return self.__default_entity
58-
59-
def get_default_entity(self) -> Entity:
60-
return get_entity(self.__default_entity)
61-
52+
@abstractmethod
6253
def get_all_entities(self) -> Sequence[Entity]:
63-
return [self.get_default_entity()]
54+
return []
6455

6556
def get_query_pipeline_builder(self) -> DatasetQueryPipelineBuilder:
6657
return DatasetQueryPipelineBuilder()

snuba/datasets/discover.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
import logging
2+
from typing import Sequence
23

34
from snuba import environment
45
from snuba.clickhouse.columns import ColumnSet
56
from snuba.datasets.dataset import Dataset
67
from snuba.datasets.entities.discover import EVENTS_COLUMNS, TRANSACTIONS_COLUMNS
78
from snuba.datasets.entities.entity_key import EntityKey
9+
from snuba.datasets.entities.factory import get_entity
10+
from snuba.datasets.entity import Entity
811
from snuba.query.conditions import (
912
BINARY_OPERATORS,
1013
ConditionFunctions,
@@ -26,9 +29,6 @@
2629

2730

2831
class DiscoverDataset(Dataset):
29-
def __init__(self) -> None:
30-
super().__init__(default_entity=EntityKey.DISCOVER)
31-
3232
# XXX: This is temporary code that will eventually need to be ported to Sentry
3333
# since SnQL will require an entity to always be specified by the user.
3434
def select_entity(self, query: Query) -> EntityKey:
@@ -40,6 +40,11 @@ def select_entity(self, query: Query) -> EntityKey:
4040

4141
return selected_entity
4242

43+
def get_all_entities(self) -> Sequence[Entity]:
44+
return [
45+
get_entity(EntityKey.DISCOVER),
46+
]
47+
4348

4449
metrics = MetricsWrapper(environment.metrics, "api.discover")
4550
logger = logging.getLogger(__name__)

snuba/datasets/events.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1+
from typing import Sequence
2+
13
from snuba.datasets.dataset import Dataset
24
from snuba.datasets.entities.entity_key import EntityKey
5+
from snuba.datasets.entities.factory import get_entity
6+
from snuba.datasets.entity import Entity
37

48

59
class EventsDataset(Dataset):
6-
def __init__(self) -> None:
7-
super().__init__(default_entity=EntityKey.EVENTS)
10+
def get_all_entities(self) -> Sequence[Entity]:
11+
return [
12+
get_entity(EntityKey.EVENTS),
13+
]

snuba/datasets/functions.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
1+
from typing import Sequence
2+
13
from snuba.datasets.dataset import Dataset
24
from snuba.datasets.entities.entity_key import EntityKey
5+
from snuba.datasets.entities.factory import get_entity
6+
from snuba.datasets.entity import Entity
37

48

59
class FunctionsDataset(Dataset):
6-
def __init__(self) -> None:
7-
super().__init__(default_entity=EntityKey.FUNCTIONS)
8-
910
@classmethod
1011
def is_experimental(cls) -> bool:
1112
return True
13+
14+
def get_all_entities(self) -> Sequence[Entity]:
15+
return [
16+
get_entity(EntityKey.FUNCTIONS),
17+
]

0 commit comments

Comments
 (0)