Browse Source

ref(hc): Removing deprecated mixin (#55367)

Zach Collins 1 year ago
parent
commit
44017d5659

+ 0 - 1
pyproject.toml

@@ -562,7 +562,6 @@ module = [
     "sentry.models.artifactbundle",
     "sentry.models.auditlogentry",
     "sentry.models.integrations.external_issue",
-    "sentry.models.integrations.organization_integrity_backfill_mixin",
     "sentry.models.integrations.sentry_app",
     "sentry.models.integrations.sentry_app_installation",
     "sentry.models.notificationsetting",

+ 0 - 26
src/sentry/models/integrations/organization_integrity_backfill_mixin.py

@@ -1,26 +0,0 @@
-# Mixin intended to be attached to Model classes that belong to an opposing silo.
-# Allows looking up and storing the organization_id and integration_id of an external
-# OrganizationIntegration, and powers backfill associated with each.
-from __future__ import annotations
-
-from typing import Any
-
-
-class OrganizationIntegrityBackfillMixin:
-    organization_integration_id: Any
-    organization_id: Any
-    integration_id: Any
-
-    def save(self, *args, **kwds) -> None:
-        from sentry.services.hybrid_cloud.integration import integration_service
-
-        if self.organization_id is None or self.integration_id is None:
-            # Find the original org integration instance, backfill in the identifiers.
-            org_integrations = integration_service.get_organization_integrations(
-                org_integration_ids=[self.organization_integration_id],
-            )
-            assert org_integrations, "Could not find org integration!"
-            org_integration = org_integrations[0]
-            self.organization_id = org_integration.organization_id
-            self.integration_id = org_integration.integration_id
-        super().save(*args, **kwds)

+ 1 - 4
src/sentry/models/integrations/repository_project_path_config.py

@@ -9,13 +9,10 @@ from sentry.db.models import (
     region_silo_only_model,
 )
 from sentry.db.models.fields.hybrid_cloud_foreign_key import HybridCloudForeignKey
-from sentry.models.integrations.organization_integrity_backfill_mixin import (
-    OrganizationIntegrityBackfillMixin,
-)
 
 
 @region_silo_only_model
-class RepositoryProjectPathConfig(OrganizationIntegrityBackfillMixin, DefaultFieldsModel):
+class RepositoryProjectPathConfig(DefaultFieldsModel):
     __relocation_scope__ = RelocationScope.Excluded
 
     repository = FlexibleForeignKey("sentry.Repository")

+ 2 - 0
src/sentry/tasks/derive_code_mappings.py

@@ -219,6 +219,8 @@ def set_project_codemappings(
             defaults={
                 "repository": repository,
                 "organization_integration_id": organization_integration.id,
+                "integration_id": organization_integration.integration_id,
+                "organization_id": organization_integration.organization_id,
                 "source_root": code_mapping.source_path,
                 "default_branch": code_mapping.repo.branch,
                 "automatically_generated": True,

+ 2 - 0
src/sentry/testutils/factories.py

@@ -641,6 +641,8 @@ class Factories:
             project=project,
             repository=repo,
             organization_integration_id=organization_integration.id,
+            integration_id=organization_integration.integration_id,
+            organization_id=organization_integration.organization_id,
             **kwargs,
         )
 

+ 5 - 3
tests/sentry/api/endpoints/test_organization_code_mapping_details.py

@@ -38,9 +38,11 @@ class OrganizationCodeMappingDetailsTest(APITestCase):
             name="example", organization_id=self.org.id, integration_id=self.integration.id
         )
         self.config = RepositoryProjectPathConfig.objects.create(
-            repository_id=str(self.repo.id),
-            project_id=str(self.project.id),
-            organization_integration_id=str(self.org_integration.id),
+            repository_id=self.repo.id,
+            project_id=self.project.id,
+            organization_integration_id=self.org_integration.id,
+            integration_id=self.org_integration.integration_id,
+            organization_id=self.org_integration.organization_id,
             stack_root="/stack/root",
             source_root="/source/root",
             default_branch="master",

+ 2 - 0
tests/sentry/api/endpoints/test_organization_derive_code_mappings.py

@@ -150,6 +150,8 @@ class OrganizationDeriveCodeMappingsTest(APITestCase):
             default_branch="master",
             repository=self.repo,
             organization_integration_id=self.organization_integration.id,
+            organization_id=self.organization_integration.organization_id,
+            integration_id=self.organization_integration.integration_id,
         )
 
         config_data = {

+ 2 - 0
tests/sentry/deletions/test_repository.py

@@ -69,6 +69,8 @@ class DeleteRepositoryTest(TransactionTestCase, HybridCloudTestMixin):
             source_root="src/packages/store",
             default_branch="main",
             organization_integration_id=org_integration.id,
+            integration_id=org_integration.integration_id,
+            organization_id=org_integration.organization_id,
         )
         code_owner = ProjectCodeOwners.objects.create(
             project=project,

+ 2 - 0
tests/sentry/tasks/test_derive_code_mappings.py

@@ -441,6 +441,8 @@ class TestPythonDeriveCodeMappings(BaseDeriveCodeMappings):
             source_root="src/sentry/models",
             repository=repository,
             organization_integration_id=organization_integration.id,
+            integration_id=organization_integration.integration_id,
+            organization_id=organization_integration.organization_id,
         )
 
         assert RepositoryProjectPathConfig.objects.filter(project_id=self.project.id).exists()