From ebb1c15eb6cb40b714da5cfb7fb12956a38e98bf Mon Sep 17 00:00:00 2001 From: Raj Joshi Date: Mon, 12 May 2025 11:53:31 -0700 Subject: [PATCH 1/2] :wrench: chore: use integration provider slug when defining integration keys --- src/sentry/integrations/discord/integration.py | 3 ++- src/sentry/integrations/github/integration.py | 3 ++- src/sentry/integrations/github_enterprise/integration.py | 5 +++-- src/sentry/integrations/jira/integration.py | 3 ++- src/sentry/integrations/jira_server/integration.py | 4 ++-- src/sentry/integrations/msteams/integration.py | 3 ++- src/sentry/integrations/opsgenie/integration.py | 3 ++- src/sentry/integrations/pagerduty/integration.py | 3 ++- src/sentry/integrations/slack/integration.py | 3 ++- src/sentry/integrations/vsts/integration.py | 3 ++- 10 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/sentry/integrations/discord/integration.py b/src/sentry/integrations/discord/integration.py index 3f616a4e52597f..4cfaef610fb3e9 100644 --- a/src/sentry/integrations/discord/integration.py +++ b/src/sentry/integrations/discord/integration.py @@ -22,6 +22,7 @@ from sentry.integrations.discord.client import DiscordClient from sentry.integrations.discord.types import DiscordPermissions from sentry.integrations.models.integration import Integration +from sentry.integrations.types import IntegrationProviderSlug from sentry.organizations.services.organization.model import RpcOrganization from sentry.pipeline.base import Pipeline from sentry.pipeline.views.base import PipelineView @@ -117,7 +118,7 @@ def uninstall(self) -> None: class DiscordIntegrationProvider(IntegrationProvider): - key = "discord" + key = IntegrationProviderSlug.DISCORD name = "Discord" metadata = metadata integration_cls = DiscordIntegration diff --git a/src/sentry/integrations/github/integration.py b/src/sentry/integrations/github/integration.py index 0251710b71559b..1ef0397ba35190 100644 --- a/src/sentry/integrations/github/integration.py +++ b/src/sentry/integrations/github/integration.py @@ -48,6 +48,7 @@ from sentry.integrations.source_code_management.repo_trees import RepoTreesIntegration from sentry.integrations.source_code_management.repository import RepositoryIntegration from sentry.integrations.tasks.migrate_repo import migrate_repo +from sentry.integrations.types import IntegrationProviderSlug from sentry.integrations.utils.metrics import ( IntegrationPipelineViewEvent, IntegrationPipelineViewType, @@ -638,7 +639,7 @@ def format_issue_table( class GitHubIntegrationProvider(IntegrationProvider): - key = "github" + key = IntegrationProviderSlug.GITHUB name = "GitHub" metadata = metadata integration_cls: type[IntegrationInstallation] = GitHubIntegration diff --git a/src/sentry/integrations/github_enterprise/integration.py b/src/sentry/integrations/github_enterprise/integration.py index f39f795c342ef7..9ca56405e438f7 100644 --- a/src/sentry/integrations/github_enterprise/integration.py +++ b/src/sentry/integrations/github_enterprise/integration.py @@ -26,6 +26,7 @@ from sentry.integrations.services.repository.model import RpcRepository from sentry.integrations.source_code_management.commit_context import CommitContextIntegration from sentry.integrations.source_code_management.repository import RepositoryIntegration +from sentry.integrations.types import IntegrationProviderSlug from sentry.models.repository import Repository from sentry.organizations.services.organization.model import RpcOrganization from sentry.pipeline import NestedPipelineView, Pipeline, PipelineView @@ -155,7 +156,7 @@ class GitHubEnterpriseIntegration( @property def integration_name(self) -> str: - return "github_enterprise" + return IntegrationProviderSlug.GITHUB_ENTERPRISE def get_client(self): if not self.org_integration: @@ -371,7 +372,7 @@ def dispatch(self, request: HttpRequest, pipeline: Pipeline) -> HttpResponseBase class GitHubEnterpriseIntegrationProvider(GitHubIntegrationProvider): - key = "github_enterprise" + key = IntegrationProviderSlug.GITHUB_ENTERPRISE name = "GitHub Enterprise" metadata = metadata integration_cls = GitHubEnterpriseIntegration diff --git a/src/sentry/integrations/jira/integration.py b/src/sentry/integrations/jira/integration.py index a967f523b4d400..bd53a48fbeeb04 100644 --- a/src/sentry/integrations/jira/integration.py +++ b/src/sentry/integrations/jira/integration.py @@ -28,6 +28,7 @@ from sentry.integrations.models.external_issue import ExternalIssue from sentry.integrations.models.integration_external_project import IntegrationExternalProject from sentry.integrations.services.integration import integration_service +from sentry.integrations.types import IntegrationProviderSlug from sentry.issues.grouptype import GroupCategory from sentry.issues.issue_occurrence import IssueOccurrence from sentry.models.group import Group @@ -1106,7 +1107,7 @@ def parse_jira_issue_metadata( class JiraIntegrationProvider(IntegrationProvider): - key = "jira" + key = IntegrationProviderSlug.JIRA name = "Jira" metadata = metadata integration_cls = JiraIntegration diff --git a/src/sentry/integrations/jira_server/integration.py b/src/sentry/integrations/jira_server/integration.py index cf341f7d65164d..63543e44458595 100644 --- a/src/sentry/integrations/jira_server/integration.py +++ b/src/sentry/integrations/jira_server/integration.py @@ -34,7 +34,7 @@ from sentry.integrations.models.external_issue import ExternalIssue from sentry.integrations.models.integration_external_project import IntegrationExternalProject from sentry.integrations.services.integration import integration_service -from sentry.integrations.types import ExternalProviders +from sentry.integrations.types import ExternalProviders, IntegrationProviderSlug from sentry.models.group import Group from sentry.organizations.services.organization.service import organization_service from sentry.pipeline import Pipeline, PipelineView @@ -1372,7 +1372,7 @@ def migrate_issues(self): class JiraServerIntegrationProvider(IntegrationProvider): - key = "jira_server" + key = IntegrationProviderSlug.JIRA_SERVER name = "Jira Server" metadata = metadata integration_cls = JiraServerIntegration diff --git a/src/sentry/integrations/msteams/integration.py b/src/sentry/integrations/msteams/integration.py index 6358a151f5f76a..ea935df8dda687 100644 --- a/src/sentry/integrations/msteams/integration.py +++ b/src/sentry/integrations/msteams/integration.py @@ -18,6 +18,7 @@ IntegrationProvider, ) from sentry.integrations.models.integration import Integration +from sentry.integrations.types import IntegrationProviderSlug from sentry.organizations.services.organization.model import RpcOrganization from sentry.pipeline import Pipeline, PipelineView @@ -79,7 +80,7 @@ def get_client(self) -> MsTeamsClient: class MsTeamsIntegrationProvider(IntegrationProvider): - key = "msteams" + key = IntegrationProviderSlug.MSTEAMS name = "Microsoft Teams" can_add = False metadata = metadata diff --git a/src/sentry/integrations/opsgenie/integration.py b/src/sentry/integrations/opsgenie/integration.py index edc59b2dec3b9e..5f77758e5cac9a 100644 --- a/src/sentry/integrations/opsgenie/integration.py +++ b/src/sentry/integrations/opsgenie/integration.py @@ -24,6 +24,7 @@ from sentry.integrations.on_call.metrics import OnCallIntegrationsHaltReason, OnCallInteractionType from sentry.integrations.opsgenie.metrics import record_event from sentry.integrations.opsgenie.tasks import migrate_opsgenie_plugin +from sentry.integrations.types import IntegrationProviderSlug from sentry.organizations.services.organization.model import RpcOrganization from sentry.pipeline import Pipeline, PipelineView from sentry.shared_integrations.exceptions import ( @@ -231,7 +232,7 @@ def schedule_migrate_opsgenie_plugin(self): class OpsgenieIntegrationProvider(IntegrationProvider): - key = "opsgenie" + key = IntegrationProviderSlug.OPSGENIE name = "Opsgenie" metadata = metadata integration_cls = OpsgenieIntegration diff --git a/src/sentry/integrations/pagerduty/integration.py b/src/sentry/integrations/pagerduty/integration.py index 3a8dc1e0953577..da1c94ed6ddd4b 100644 --- a/src/sentry/integrations/pagerduty/integration.py +++ b/src/sentry/integrations/pagerduty/integration.py @@ -24,6 +24,7 @@ from sentry.integrations.models.organization_integration import OrganizationIntegration from sentry.integrations.on_call.metrics import OnCallInteractionType from sentry.integrations.pagerduty.metrics import record_event +from sentry.integrations.types import IntegrationProviderSlug from sentry.organizations.services.organization.model import RpcOrganization from sentry.pipeline import Pipeline, PipelineView from sentry.shared_integrations.exceptions import IntegrationError @@ -167,7 +168,7 @@ def services(self) -> list[PagerDutyServiceDict]: class PagerDutyIntegrationProvider(IntegrationProvider): - key = "pagerduty" + key = IntegrationProviderSlug.PAGERDUTY name = "PagerDuty" metadata = metadata features = frozenset([IntegrationFeatures.ALERT_RULE, IntegrationFeatures.INCIDENT_MANAGEMENT]) diff --git a/src/sentry/integrations/slack/integration.py b/src/sentry/integrations/slack/integration.py index 0c10f8a8b07554..70113dd6ebd397 100644 --- a/src/sentry/integrations/slack/integration.py +++ b/src/sentry/integrations/slack/integration.py @@ -26,6 +26,7 @@ ) from sentry.integrations.slack.sdk_client import SlackSdkClient from sentry.integrations.slack.tasks.link_slack_user_identities import link_slack_user_identities +from sentry.integrations.types import IntegrationProviderSlug from sentry.organizations.services.organization.model import RpcOrganization from sentry.pipeline import NestedPipelineView from sentry.pipeline.views.base import PipelineView @@ -100,7 +101,7 @@ def send_message(self, channel_id: str, message: str) -> None: class SlackIntegrationProvider(IntegrationProvider): - key = "slack" + key = IntegrationProviderSlug.SLACK name = "Slack" metadata = metadata features = frozenset([IntegrationFeatures.CHAT_UNFURL, IntegrationFeatures.ALERT_RULE]) diff --git a/src/sentry/integrations/vsts/integration.py b/src/sentry/integrations/vsts/integration.py index c39dc715774986..3ee2fbd457390b 100644 --- a/src/sentry/integrations/vsts/integration.py +++ b/src/sentry/integrations/vsts/integration.py @@ -33,6 +33,7 @@ from sentry.integrations.services.repository import RpcRepository, repository_service from sentry.integrations.source_code_management.repository import RepositoryIntegration from sentry.integrations.tasks.migrate_repo import migrate_repo +from sentry.integrations.types import IntegrationProviderSlug from sentry.integrations.utils.metrics import ( IntegrationPipelineHaltReason, IntegrationPipelineViewEvent, @@ -398,7 +399,7 @@ def default_project(self) -> str | None: class VstsIntegrationProvider(IntegrationProvider): - key = "vsts" + key = IntegrationProviderSlug.AZURE_DEVOPS name = "Azure DevOps" metadata = metadata api_version = "4.1" From bda501df0fca7adfb0237213f588189f98155b00 Mon Sep 17 00:00:00 2001 From: Raj Joshi Date: Tue, 20 May 2025 16:28:06 -0700 Subject: [PATCH 2/2] :bug: fix: use .value --- src/sentry/integrations/discord/integration.py | 2 +- src/sentry/integrations/github/integration.py | 2 +- src/sentry/integrations/github_enterprise/integration.py | 4 ++-- src/sentry/integrations/jira/integration.py | 2 +- src/sentry/integrations/jira_server/integration.py | 2 +- src/sentry/integrations/msteams/integration.py | 2 +- src/sentry/integrations/opsgenie/integration.py | 2 +- src/sentry/integrations/pagerduty/integration.py | 2 +- src/sentry/integrations/slack/integration.py | 2 +- src/sentry/integrations/vsts/integration.py | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/sentry/integrations/discord/integration.py b/src/sentry/integrations/discord/integration.py index 4cfaef610fb3e9..31470b5f1b0a1b 100644 --- a/src/sentry/integrations/discord/integration.py +++ b/src/sentry/integrations/discord/integration.py @@ -118,7 +118,7 @@ def uninstall(self) -> None: class DiscordIntegrationProvider(IntegrationProvider): - key = IntegrationProviderSlug.DISCORD + key = IntegrationProviderSlug.DISCORD.value name = "Discord" metadata = metadata integration_cls = DiscordIntegration diff --git a/src/sentry/integrations/github/integration.py b/src/sentry/integrations/github/integration.py index 1ef0397ba35190..994207d6813dd3 100644 --- a/src/sentry/integrations/github/integration.py +++ b/src/sentry/integrations/github/integration.py @@ -639,7 +639,7 @@ def format_issue_table( class GitHubIntegrationProvider(IntegrationProvider): - key = IntegrationProviderSlug.GITHUB + key = IntegrationProviderSlug.GITHUB.value name = "GitHub" metadata = metadata integration_cls: type[IntegrationInstallation] = GitHubIntegration diff --git a/src/sentry/integrations/github_enterprise/integration.py b/src/sentry/integrations/github_enterprise/integration.py index 9ca56405e438f7..3f0db1455a6f4c 100644 --- a/src/sentry/integrations/github_enterprise/integration.py +++ b/src/sentry/integrations/github_enterprise/integration.py @@ -156,7 +156,7 @@ class GitHubEnterpriseIntegration( @property def integration_name(self) -> str: - return IntegrationProviderSlug.GITHUB_ENTERPRISE + return IntegrationProviderSlug.GITHUB_ENTERPRISE.value def get_client(self): if not self.org_integration: @@ -372,7 +372,7 @@ def dispatch(self, request: HttpRequest, pipeline: Pipeline) -> HttpResponseBase class GitHubEnterpriseIntegrationProvider(GitHubIntegrationProvider): - key = IntegrationProviderSlug.GITHUB_ENTERPRISE + key = IntegrationProviderSlug.GITHUB_ENTERPRISE.value name = "GitHub Enterprise" metadata = metadata integration_cls = GitHubEnterpriseIntegration diff --git a/src/sentry/integrations/jira/integration.py b/src/sentry/integrations/jira/integration.py index bd53a48fbeeb04..d71f45b2cd2273 100644 --- a/src/sentry/integrations/jira/integration.py +++ b/src/sentry/integrations/jira/integration.py @@ -1107,7 +1107,7 @@ def parse_jira_issue_metadata( class JiraIntegrationProvider(IntegrationProvider): - key = IntegrationProviderSlug.JIRA + key = IntegrationProviderSlug.JIRA.value name = "Jira" metadata = metadata integration_cls = JiraIntegration diff --git a/src/sentry/integrations/jira_server/integration.py b/src/sentry/integrations/jira_server/integration.py index 63543e44458595..3201e7d552ded3 100644 --- a/src/sentry/integrations/jira_server/integration.py +++ b/src/sentry/integrations/jira_server/integration.py @@ -1372,7 +1372,7 @@ def migrate_issues(self): class JiraServerIntegrationProvider(IntegrationProvider): - key = IntegrationProviderSlug.JIRA_SERVER + key = IntegrationProviderSlug.JIRA_SERVER.value name = "Jira Server" metadata = metadata integration_cls = JiraServerIntegration diff --git a/src/sentry/integrations/msteams/integration.py b/src/sentry/integrations/msteams/integration.py index ea935df8dda687..938d7daa7e4653 100644 --- a/src/sentry/integrations/msteams/integration.py +++ b/src/sentry/integrations/msteams/integration.py @@ -80,7 +80,7 @@ def get_client(self) -> MsTeamsClient: class MsTeamsIntegrationProvider(IntegrationProvider): - key = IntegrationProviderSlug.MSTEAMS + key = IntegrationProviderSlug.MSTEAMS.value name = "Microsoft Teams" can_add = False metadata = metadata diff --git a/src/sentry/integrations/opsgenie/integration.py b/src/sentry/integrations/opsgenie/integration.py index 5f77758e5cac9a..f13043c442faec 100644 --- a/src/sentry/integrations/opsgenie/integration.py +++ b/src/sentry/integrations/opsgenie/integration.py @@ -232,7 +232,7 @@ def schedule_migrate_opsgenie_plugin(self): class OpsgenieIntegrationProvider(IntegrationProvider): - key = IntegrationProviderSlug.OPSGENIE + key = IntegrationProviderSlug.OPSGENIE.value name = "Opsgenie" metadata = metadata integration_cls = OpsgenieIntegration diff --git a/src/sentry/integrations/pagerduty/integration.py b/src/sentry/integrations/pagerduty/integration.py index da1c94ed6ddd4b..09c360ba7e505f 100644 --- a/src/sentry/integrations/pagerduty/integration.py +++ b/src/sentry/integrations/pagerduty/integration.py @@ -168,7 +168,7 @@ def services(self) -> list[PagerDutyServiceDict]: class PagerDutyIntegrationProvider(IntegrationProvider): - key = IntegrationProviderSlug.PAGERDUTY + key = IntegrationProviderSlug.PAGERDUTY.value name = "PagerDuty" metadata = metadata features = frozenset([IntegrationFeatures.ALERT_RULE, IntegrationFeatures.INCIDENT_MANAGEMENT]) diff --git a/src/sentry/integrations/slack/integration.py b/src/sentry/integrations/slack/integration.py index 70113dd6ebd397..4019d27f588255 100644 --- a/src/sentry/integrations/slack/integration.py +++ b/src/sentry/integrations/slack/integration.py @@ -101,7 +101,7 @@ def send_message(self, channel_id: str, message: str) -> None: class SlackIntegrationProvider(IntegrationProvider): - key = IntegrationProviderSlug.SLACK + key = IntegrationProviderSlug.SLACK.value name = "Slack" metadata = metadata features = frozenset([IntegrationFeatures.CHAT_UNFURL, IntegrationFeatures.ALERT_RULE]) diff --git a/src/sentry/integrations/vsts/integration.py b/src/sentry/integrations/vsts/integration.py index 3ee2fbd457390b..2322ad7d741ba4 100644 --- a/src/sentry/integrations/vsts/integration.py +++ b/src/sentry/integrations/vsts/integration.py @@ -399,7 +399,7 @@ def default_project(self) -> str | None: class VstsIntegrationProvider(IntegrationProvider): - key = IntegrationProviderSlug.AZURE_DEVOPS + key = IntegrationProviderSlug.AZURE_DEVOPS.value name = "Azure DevOps" metadata = metadata api_version = "4.1"