From c780e66570cb7c4ca7e7ee9e33bf2e614f31f9b3 Mon Sep 17 00:00:00 2001 From: eric Date: Tue, 3 Dec 2019 16:57:56 +1100 Subject: [PATCH 1/2] Remove default key during project creation --- sentry/resource_sentry_project.go | 33 ++++++++++++++++++++++++++ sentry/resource_sentry_project_test.go | 33 ++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/sentry/resource_sentry_project.go b/sentry/resource_sentry_project.go index da65b6e9..c4425978 100644 --- a/sentry/resource_sentry_project.go +++ b/sentry/resource_sentry_project.go @@ -30,6 +30,12 @@ func resourceSentryProject() *schema.Resource { Required: true, Description: "The slug of the team to create the project for", }, + "remove_default_key": { + Type: schema.TypeBool, + Optional: true, + Description: "Whether to remove the default key", + Default: false, + }, "name": { Type: schema.TypeString, Required: true, @@ -114,7 +120,15 @@ func resourceSentryProjectCreate(d *schema.ResourceData, meta interface{}) error return err } + if d.Get("remove_default_key").(bool) { + err = removeDefaultKey(meta, org, proj.Slug) + if err != nil { + return err + } + } + d.SetId(proj.Slug) + return resourceSentryProjectRead(d, meta) } @@ -216,3 +230,22 @@ func resourceSentryProjectImporter(d *schema.ResourceData, meta interface{}) ([] return []*schema.ResourceData{d}, nil } + +func removeDefaultKey(meta interface{}, org, projSlug string) error { + client := meta.(*sentryclient.Client) + + keys, _, err := client.ProjectKeys.List(org, projSlug) + if err != nil { + return err + } + var defaultKeyId string + for _, key := range keys { + if key.Name == "Default" { + defaultKeyId = key.ID + break + } + } + + client.ProjectKeys.Delete(org, projSlug, defaultKeyId) + return nil +} diff --git a/sentry/resource_sentry_project_test.go b/sentry/resource_sentry_project_test.go index 3ffec137..56e85200 100644 --- a/sentry/resource_sentry_project_test.go +++ b/sentry/resource_sentry_project_test.go @@ -64,6 +64,10 @@ func TestAccSentryProject_basic(t *testing.T) { }), ), }, + { + Config: testAccSentryProjectRemoveKeyConfig, + Check: testAccCheckSentryKeyRemoved("sentry_project.test_project_remove"), + }, }, }) } @@ -114,6 +118,21 @@ func testAccCheckSentryProjectExists(n string, proj *sentryclient.Project) resou } } +func testAccCheckSentryKeyRemoved(n string) resource.TestCheckFunc { + return func(s *terraform.State) error { + rs := s.RootModule().Resources[n] + client := testAccProvider.Meta().(*sentryclient.Client) + keys, _, err := client.ProjectKeys.List(rs.Primary.Attributes["organization"], rs.Primary.ID) + if err != nil { + return err + } + if len(keys) != 0 { + return fmt.Errorf("Default key not removed") + } + return nil + } +} + type testAccSentryProjectExpectedAttributes struct { Name string Organization string @@ -174,3 +193,17 @@ var testAccSentryProjectConfig = fmt.Sprintf(` name = "Test project" } `, testOrganization, testOrganization) + +var testAccSentryProjectRemoveKeyConfig = fmt.Sprintf(` + resource "sentry_team" "test_team" { + organization = "%s" + name = "Test team" + } + + resource "sentry_project" "test_project_remove" { + organization = "%s" + team = "${sentry_team.test_team.id}" + name = "Test project" + remove_default_key = true + } +`, testOrganization, testOrganization) From 689b593461006c5a98c37cf32a3bf6909492e867 Mon Sep 17 00:00:00 2001 From: eric Date: Wed, 4 Dec 2019 11:54:57 +1100 Subject: [PATCH 2/2] ac --- sentry/resource_sentry_project.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sentry/resource_sentry_project.go b/sentry/resource_sentry_project.go index c4425978..a6689d32 100644 --- a/sentry/resource_sentry_project.go +++ b/sentry/resource_sentry_project.go @@ -121,7 +121,7 @@ func resourceSentryProjectCreate(d *schema.ResourceData, meta interface{}) error } if d.Get("remove_default_key").(bool) { - err = removeDefaultKey(meta, org, proj.Slug) + err = removeDefaultKey(client, org, proj.Slug) if err != nil { return err } @@ -231,9 +231,7 @@ func resourceSentryProjectImporter(d *schema.ResourceData, meta interface{}) ([] return []*schema.ResourceData{d}, nil } -func removeDefaultKey(meta interface{}, org, projSlug string) error { - client := meta.(*sentryclient.Client) - +func removeDefaultKey(client *sentryclient.Client, org, projSlug string) error { keys, _, err := client.ProjectKeys.List(org, projSlug) if err != nil { return err