Browse Source

chore(hybrid-cloud): Adding service layer, starting with project key (#40294)

First cut at a hybrid cloud service abstraction. No backing
implementation for now, but includes a test to be replaced with
`RegionClient` call. Extracted from
https://github.com/getsentry/sentry/pull/40214
Zach Collins 2 years ago
parent
commit
c1c0a777a4

+ 2 - 2
src/sentry/api/endpoints/api_application_details.py

@@ -4,7 +4,7 @@ from rest_framework.permissions import IsAuthenticated
 from rest_framework.request import Request
 from rest_framework.response import Response
 
-from sentry.api.base import Endpoint, SessionAuthentication, pending_silo_endpoint
+from sentry.api.base import Endpoint, SessionAuthentication, control_silo_endpoint
 from sentry.api.exceptions import ResourceDoesNotExist
 from sentry.api.serializers import serialize
 from sentry.api.serializers.rest_framework import ListField
@@ -30,7 +30,7 @@ class ApiApplicationSerializer(serializers.Serializer):
     )
 
 
-@pending_silo_endpoint
+@control_silo_endpoint
 class ApiApplicationDetailsEndpoint(Endpoint):
     authentication_classes = (SessionAuthentication,)
     permission_classes = (IsAuthenticated,)

+ 2 - 2
src/sentry/api/endpoints/integrations/sentry_apps/interaction.py

@@ -4,7 +4,7 @@ from rest_framework.request import Request
 from rest_framework.response import Response
 
 from sentry import tsdb
-from sentry.api.base import StatsMixin, pending_silo_endpoint
+from sentry.api.base import StatsMixin, region_silo_endpoint
 from sentry.api.bases import SentryAppBaseEndpoint, SentryAppStatsPermission
 from sentry.api.bases.sentryapps import COMPONENT_TYPES
 
@@ -17,7 +17,7 @@ def get_component_interaction_key(sentry_app, component_type):
     return f"{sentry_app.slug}:{component_type}"
 
 
-@pending_silo_endpoint
+@region_silo_endpoint
 class SentryAppInteractionEndpoint(SentryAppBaseEndpoint, StatsMixin):
     permission_classes = (SentryAppStatsPermission,)
 

+ 2 - 2
src/sentry/models/apiapplication.py

@@ -11,7 +11,7 @@ from sentry.db.models import (
     BoundedPositiveIntegerField,
     FlexibleForeignKey,
     Model,
-    region_silo_only_model,
+    control_silo_only_model,
     sane_repr,
 )
 
@@ -31,7 +31,7 @@ class ApiApplicationStatus:
     deletion_in_progress = 3
 
 
-@region_silo_only_model
+@control_silo_only_model
 class ApiApplication(Model):
     __include_in_export__ = True
 

+ 2 - 2
src/sentry/models/apikey.py

@@ -11,7 +11,7 @@ from sentry.db.models import (
     BoundedPositiveIntegerField,
     FlexibleForeignKey,
     Model,
-    control_silo_only_model,
+    region_silo_only_model,
     sane_repr,
 )
 
@@ -22,7 +22,7 @@ class ApiKeyStatus:
     INACTIVE = 1
 
 
-@control_silo_only_model
+@region_silo_only_model
 class ApiKey(Model):
     __include_in_export__ = True
 

+ 2 - 2
src/sentry/models/authenticator.py

@@ -16,7 +16,7 @@ from sentry.db.models import (
     BoundedAutoField,
     BoundedPositiveIntegerField,
     FlexibleForeignKey,
-    region_silo_only_model,
+    control_silo_only_model,
 )
 from sentry.db.models.fields.picklefield import PickledObjectField
 
@@ -112,7 +112,7 @@ class AuthenticatorManager(BaseManager):
         return {id: id in authenticators for id in user_ids}
 
 
-@region_silo_only_model
+@control_silo_only_model
 class Authenticator(BaseModel):
     __include_in_export__ = True
 

+ 2 - 2
src/sentry/models/authidentity.py

@@ -4,11 +4,11 @@ from django.conf import settings
 from django.db import models
 from django.utils import timezone
 
-from sentry.db.models import FlexibleForeignKey, Model, region_silo_only_model, sane_repr
+from sentry.db.models import FlexibleForeignKey, Model, control_silo_only_model, sane_repr
 from sentry.db.models.fields.jsonfield import JSONField
 
 
-@region_silo_only_model
+@control_silo_only_model
 class AuthIdentity(Model):
     __include_in_export__ = True
 

+ 3 - 3
src/sentry/models/authprovider.py

@@ -9,7 +9,7 @@ from sentry.db.models import (
     BoundedPositiveIntegerField,
     FlexibleForeignKey,
     Model,
-    region_silo_only_model,
+    control_silo_only_model,
     sane_repr,
 )
 from sentry.db.models.fields.jsonfield import JSONField
@@ -23,7 +23,7 @@ SCIM_INTERNAL_INTEGRATION_OVERVIEW = (
 )
 
 
-@region_silo_only_model
+@control_silo_only_model
 class AuthProviderDefaultTeams(Model):
     __include_in_export__ = False
 
@@ -36,7 +36,7 @@ class AuthProviderDefaultTeams(Model):
         unique_together = (("authprovider", "team"),)
 
 
-@region_silo_only_model
+@control_silo_only_model
 class AuthProvider(Model):
     __include_in_export__ = True
 

+ 2 - 2
src/sentry/models/avatars/user_avatar.py

@@ -1,11 +1,11 @@
 from django.db import models
 
-from sentry.db.models import BaseManager, FlexibleForeignKey, region_silo_only_model
+from sentry.db.models import BaseManager, FlexibleForeignKey, control_silo_only_model
 
 from . import AvatarBase
 
 
-@region_silo_only_model
+@control_silo_only_model
 class UserAvatar(AvatarBase):
     """
     A UserAvatar associates a User with their avatar photo File

+ 2 - 2
src/sentry/models/options/user_option.py

@@ -5,7 +5,7 @@ from typing import TYPE_CHECKING, Any, Mapping
 from django.conf import settings
 from django.db import models
 
-from sentry.db.models import FlexibleForeignKey, Model, region_silo_only_model, sane_repr
+from sentry.db.models import FlexibleForeignKey, Model, control_silo_only_model, sane_repr
 from sentry.db.models.fields import PickledObjectField
 from sentry.db.models.manager import OptionManager, Value
 
@@ -120,7 +120,7 @@ class UserOptionManager(OptionManager["User"]):
 
 # TODO(dcramer): the NULL UNIQUE constraint here isn't valid, and instead has to
 # be manually replaced in the database. We should restructure this model.
-@region_silo_only_model
+@control_silo_only_model
 class UserOption(Model):  # type: ignore
     """
     User options apply only to a user, and optionally a project OR an organization.

+ 2 - 2
src/sentry/models/scheduledeletion.py

@@ -6,7 +6,7 @@ from django.apps import apps
 from django.db import models
 from django.utils import timezone
 
-from sentry.db.models import BoundedBigIntegerField, JSONField, Model, region_silo_only_model
+from sentry.db.models import BoundedBigIntegerField, JSONField, Model, control_silo_only_model
 
 delete_logger = logging.getLogger("sentry.deletions.api")
 
@@ -19,7 +19,7 @@ def default_date_schedule():
     return timezone.now() + timedelta(days=30)
 
 
-@region_silo_only_model
+@control_silo_only_model
 class ScheduledDeletion(Model):
     __include_in_export__ = False
 

Some files were not shown because too many files changed in this diff