diff --git a/src/sentry/api/serializers/models/plugin.py b/src/sentry/api/serializers/models/plugin.py index eae0d293327ea8..1b5c2f0e1dc132 100644 --- a/src/sentry/api/serializers/models/plugin.py +++ b/src/sentry/api/serializers/models/plugin.py @@ -125,7 +125,7 @@ def get_attrs(self, item_list, user, **kwargs): "config": [ serialize_field(self.project, item, c) for c in item.get_config( - project=self.project, user=user, add_additial_fields=True + project=self.project, user=user, add_additional_fields=True ) ] } diff --git a/src/sentry/plugins/bases/issue2.py b/src/sentry/plugins/bases/issue2.py index c2d41901aebaf7..0a037dd0c67dfa 100644 --- a/src/sentry/plugins/bases/issue2.py +++ b/src/sentry/plugins/bases/issue2.py @@ -390,9 +390,11 @@ def plugin_issues(self, request: Request, group, plugin_issues, **kwargs) -> Non item.update(PluginSerializer(group.project).serialize(self, None, request.user)) plugin_issues.append(item) - def get_config(self, *args, **kwargs): + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): # TODO(dcramer): update existing plugins to just use get_config - return self.get_configure_plugin_fields(*args, **kwargs) + return self.get_configure_plugin_fields( + project=project, user=user, initial=initial, add_additional_fields=add_additional_fields + ) def check_config_and_auth(self, request: Request, group): has_auth_configured = self.has_auth_configured() diff --git a/src/sentry/plugins/config.py b/src/sentry/plugins/config.py index 7349f4b41ae8c5..fa3b09b1bf8414 100644 --- a/src/sentry/plugins/config.py +++ b/src/sentry/plugins/config.py @@ -97,7 +97,7 @@ def get_metadata(self): """ return {} - def get_config(self, project, **kwargs): + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): form = self.project_conf_form if not form: return [] diff --git a/src/sentry/plugins/sentry_webhooks/plugin.py b/src/sentry/plugins/sentry_webhooks/plugin.py index ec53004eb55076..6612488b88f7f7 100644 --- a/src/sentry/plugins/sentry_webhooks/plugin.py +++ b/src/sentry/plugins/sentry_webhooks/plugin.py @@ -85,7 +85,7 @@ class WebHooksPlugin(notify.NotificationPlugin): def is_configured(self, project, **kwargs): return bool(self.get_option("urls", project)) - def get_config(self, project, **kwargs): + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): return [ { "name": "urls", diff --git a/src/sentry_plugins/amazon_sqs/plugin.py b/src/sentry_plugins/amazon_sqs/plugin.py index f97e6bad2496a7..4624869f5dddfc 100644 --- a/src/sentry_plugins/amazon_sqs/plugin.py +++ b/src/sentry_plugins/amazon_sqs/plugin.py @@ -61,7 +61,7 @@ class AmazonSQSPlugin(CorePluginMixin, DataForwardingPlugin): ) ] - def get_config(self, project, **kwargs): + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): return [ { "name": "queue_url", diff --git a/src/sentry_plugins/asana/plugin.py b/src/sentry_plugins/asana/plugin.py index 847760a0a3d284..5a24882e89fcb2 100644 --- a/src/sentry_plugins/asana/plugin.py +++ b/src/sentry_plugins/asana/plugin.py @@ -192,8 +192,7 @@ def validate_config(self, project, config, actor): raise PluginError("Non-numeric workspace value") return config - def get_config(self, *args, **kwargs): - user = kwargs["user"] + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): try: client = self.get_client(user) except PluginIdentityRequired as e: @@ -208,7 +207,7 @@ def get_config(self, *args, **kwargs): raise PluginIdentityRequired(ERR_BEARER_EXPIRED) raise workspace_choices = self.get_workspace_choices(workspaces) - workspace = self.get_option("workspace", kwargs["project"]) + workspace = self.get_option("workspace", project) # check to make sure the current user has access to the workspace helptext = None if workspace and not self.has_workspace_access(workspace, workspace_choices): diff --git a/src/sentry_plugins/heroku/plugin.py b/src/sentry_plugins/heroku/plugin.py index b24fc4d85fd982..df05ebf79c5872 100644 --- a/src/sentry_plugins/heroku/plugin.py +++ b/src/sentry_plugins/heroku/plugin.py @@ -168,7 +168,7 @@ def has_project_conf(self): def get_conf_key(self): return "heroku" - def get_config(self, project, **kwargs): + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): repo_list = list(Repository.objects.filter(organization_id=project.organization_id)) if not ProjectOption.objects.get_value(project=project, key="heroku:repository"): choices = [("", "select a repo")] diff --git a/src/sentry_plugins/pagerduty/plugin.py b/src/sentry_plugins/pagerduty/plugin.py index 6b2ac9dbe4f8a4..a73d5d8412fc0f 100644 --- a/src/sentry_plugins/pagerduty/plugin.py +++ b/src/sentry_plugins/pagerduty/plugin.py @@ -41,8 +41,8 @@ def error_message_from_json(self, data): def is_configured(self, project, **kwargs): return bool(self.get_option("service_key", project)) - def get_config(self, **kwargs): - service_key = self.get_option("service_key", kwargs["project"]) + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): + service_key = self.get_option("service_key", project) secret_field = get_secret_field_config( service_key, "PagerDuty's Sentry service Integration Key", include_prefix=True ) diff --git a/src/sentry_plugins/pushover/plugin.py b/src/sentry_plugins/pushover/plugin.py index 64a87842499b8f..a329296ffb64a4 100644 --- a/src/sentry_plugins/pushover/plugin.py +++ b/src/sentry_plugins/pushover/plugin.py @@ -38,9 +38,9 @@ class PushoverPlugin(CorePluginMixin, NotifyPlugin): def is_configured(self, project): return all(self.get_option(key, project) for key in ("userkey", "apikey")) - def get_config(self, **kwargs): - userkey = self.get_option("userkey", kwargs["project"]) - apikey = self.get_option("apikey", kwargs["project"]) + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): + userkey = self.get_option("userkey", project) + apikey = self.get_option("apikey", project) userkey_field = get_secret_field_config( userkey, "Your user key. See https://pushover.net/", include_prefix=True diff --git a/src/sentry_plugins/redmine/plugin.py b/src/sentry_plugins/redmine/plugin.py index 5081f852cb0ff5..798b07f850b93d 100644 --- a/src/sentry_plugins/redmine/plugin.py +++ b/src/sentry_plugins/redmine/plugin.py @@ -180,10 +180,10 @@ def build_initial(self, initial_args, project): initial[field] = value return initial - def get_config(self, project, **kwargs): + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): self.client_errors = [] self.fields = self.build_config() - initial_args = kwargs.get("initial") or {} + initial_args = initial or {} initial = self.build_initial(initial_args, project) has_credentials = all(initial.get(k) for k in ("host", "key")) diff --git a/src/sentry_plugins/segment/plugin.py b/src/sentry_plugins/segment/plugin.py index ec1da707f906e0..050ad82a6a322b 100644 --- a/src/sentry_plugins/segment/plugin.py +++ b/src/sentry_plugins/segment/plugin.py @@ -30,7 +30,7 @@ class SegmentPlugin(CorePluginMixin, DataForwardingPlugin): ) ] - def get_config(self, project, **kwargs): + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): return [ get_secret_field_config( name="write_key", diff --git a/src/sentry_plugins/sessionstack/plugin.py b/src/sentry_plugins/sessionstack/plugin.py index 6b00a3062d7783..d38b36f6e6f36b 100644 --- a/src/sentry_plugins/sessionstack/plugin.py +++ b/src/sentry_plugins/sessionstack/plugin.py @@ -93,7 +93,7 @@ def validate_config(self, project, config, actor=None): return config - def get_config(self, project, **kwargs): + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): account_email = self.get_option("account_email", project) api_token = self.get_option("api_token", project) website_id = self.get_option("website_id", project) diff --git a/src/sentry_plugins/slack/plugin.py b/src/sentry_plugins/slack/plugin.py index 0f342ced675b50..6ed47d025d600c 100644 --- a/src/sentry_plugins/slack/plugin.py +++ b/src/sentry_plugins/slack/plugin.py @@ -45,7 +45,7 @@ class SlackPlugin(CorePluginMixin, notify.NotificationPlugin): def is_configured(self, project): return bool(self.get_option("webhook", project)) - def get_config(self, project, **kwargs): + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): return [ { "name": "webhook", diff --git a/src/sentry_plugins/splunk/plugin.py b/src/sentry_plugins/splunk/plugin.py index 9194d449b9985f..61b0b0fd7e9900 100644 --- a/src/sentry_plugins/splunk/plugin.py +++ b/src/sentry_plugins/splunk/plugin.py @@ -68,7 +68,7 @@ def get_rate_limit(self): def get_client(self): return SplunkApiClient(self.project_instance, self.project_token) - def get_config(self, project, **kwargs): + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): return [ { "name": "instance", diff --git a/src/sentry_plugins/trello/plugin.py b/src/sentry_plugins/trello/plugin.py index b8dd0f1d911e53..2c73713d52ecf1 100644 --- a/src/sentry_plugins/trello/plugin.py +++ b/src/sentry_plugins/trello/plugin.py @@ -49,14 +49,14 @@ class TrelloPlugin(CorePluginMixin, IssuePlugin2): ), ] - def get_config(self, project, **kwargs): + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): """ Return the configuration of the plugin. Pull the value out of our the arguments to this function or from the DB """ def get_value(field): - initial_values = kwargs.get("initial", {}) + initial_values = initial or {} return initial_values.get(field) or self.get_option(field, project) token_config: dict[str, object] = { @@ -87,7 +87,7 @@ def get_value(field): config = [key_config, token_config] org_value = get_value("organization") - include_org = kwargs.get("add_additial_fields", org_value) + include_org = add_additional_fields or org_value if api_key and token_val and include_org: trello_client = TrelloApiClient(api_key, token_val) try: diff --git a/src/sentry_plugins/victorops/plugin.py b/src/sentry_plugins/victorops/plugin.py index 3f93e1233e1d2f..f7cc0276e87b8d 100644 --- a/src/sentry_plugins/victorops/plugin.py +++ b/src/sentry_plugins/victorops/plugin.py @@ -46,12 +46,12 @@ class VictorOpsPlugin(CorePluginMixin, NotifyPlugin): def is_configured(self, project, **kwargs): return bool(self.get_option("api_key", project)) - def get_config(self, **kwargs): + def get_config(self, project, user=None, initial=None, add_additional_fields: bool = False): return [ get_secret_field_config( name="api_key", label="API Key", - secret=self.get_option("api_key", kwargs["project"]), + secret=self.get_option("api_key", project), help_text="VictorOps's Sentry API Key", include_prefix=True, ), diff --git a/tests/sentry_plugins/trello/test_plugin.py b/tests/sentry_plugins/trello/test_plugin.py index 650a41b88a1c96..5420a79c0f5b46 100644 --- a/tests/sentry_plugins/trello/test_plugin.py +++ b/tests/sentry_plugins/trello/test_plugin.py @@ -93,7 +93,7 @@ def test_get_config_include_additional(self): "https://api.trello.com/1/members/me/organizations", json=[{"name": "team 1", "id": "2d8e"}, {"name": "team 2", "id": "d0cc"}], ) - out = self.plugin.get_config(self.project, add_additial_fields=True) + out = self.plugin.get_config(self.project, add_additional_fields=True) assert out == [ { "default": "39g",