From fa124c5ee48d42f22fa2a281747a86f59b65974d Mon Sep 17 00:00:00 2001 From: Lauren Date: Tue, 12 Mar 2024 17:45:50 -0500 Subject: [PATCH] refactor registry mod delete method (#1267) --- CHANGELOG.md | 3 ++ .../provider/resource_tfe_registry_module.go | 32 ++++++++++++++----- .../resource_tfe_registry_module_test.go | 1 + 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5aa3cd868..4813d6bd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ BUG FIXES: * `r/tfe_workspace`: Change the error message returned when a workspace cannot be safe-deleted to reflect that the error can happen when the latest state is still being processed @uturunku1 [1274](https://github.com/hashicorp/terraform-provider-tfe/pull/1274) +ENHANCEMENTS: +* `r/tfe_registry_module`: Update `Delete` method to call `DeleteByName` when `module_provider` is not present, and `DeleteProvider` when `module_provider` exists @laurenolivia[1267](https://github.com/hashicorp/terraform-provider-tfe/pull/1267) + ## v0.52.0 FEATURES: diff --git a/internal/provider/resource_tfe_registry_module.go b/internal/provider/resource_tfe_registry_module.go index e1e874763..8c85b64be 100644 --- a/internal/provider/resource_tfe_registry_module.go +++ b/internal/provider/resource_tfe_registry_module.go @@ -10,6 +10,7 @@ package provider import ( "context" + "errors" "fmt" "log" "strings" @@ -414,15 +415,30 @@ func resourceTFERegistryModuleRead(d *schema.ResourceData, meta interface{}) err func resourceTFERegistryModuleDelete(d *schema.ResourceData, meta interface{}) error { config := meta.(ConfiguredClient) - log.Printf("[DEBUG] Delete registry module: %s", d.Id()) - organization := d.Get("organization").(string) - name := d.Get("name").(string) - err := config.Client.RegistryModules.Delete(ctx, organization, name) - if err != nil { - if err == tfe.ErrResourceNotFound { - return nil + // Fields required to delete registry module by provider + // To delete by name, Provider field is not required + rModID := tfe.RegistryModuleID{ + Organization: d.Get("organization").(string), + Name: d.Get("name").(string), + Provider: d.Get("module_provider").(string), + Namespace: d.Get("namespace").(string), + RegistryName: tfe.RegistryName(d.Get("registry_name").(string)), + } + + if v, ok := d.GetOk("module_provider"); ok && v.(string) != "" { + log.Printf("[DEBUG] Delete registry module by provider: %s", d.Id()) + + err := config.Client.RegistryModules.DeleteProvider(ctx, rModID) + if err != nil && !errors.Is(err, tfe.ErrResourceNotFound) { + return fmt.Errorf("error deleting registry module provider: %w", err) + } + } else { + log.Printf("[DEBUG] Delete registry module by name: %s", d.Id()) + + err := config.Client.RegistryModules.DeleteByName(ctx, rModID) + if err != nil && !errors.Is(err, tfe.ErrResourceNotFound) { + return fmt.Errorf("Error deleting registry module %s: %w", d.Id(), err) } - return fmt.Errorf("Error deleting registry module %s: %w", d.Id(), err) } return nil diff --git a/internal/provider/resource_tfe_registry_module_test.go b/internal/provider/resource_tfe_registry_module_test.go index 6a1038f94..0a0d02515 100644 --- a/internal/provider/resource_tfe_registry_module_test.go +++ b/internal/provider/resource_tfe_registry_module_test.go @@ -803,6 +803,7 @@ func TestAccTFERegistryModule_invalidWithRegistryNameAndNoModuleProvider(t *test }, }) } + func testAccCheckTFERegistryModuleExists(n string, rmID tfe.RegistryModuleID, registryModule *tfe.RegistryModule) resource.TestCheckFunc { return func(s *terraform.State) error { config := testAccProvider.Meta().(ConfiguredClient)