From 1eca0d998e99748307435481844393170ff5f6ea Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Mon, 25 May 2020 16:44:36 +0200 Subject: [PATCH 1/6] api_management: splitting the ID parsers --- .../{apimanagement.go => diagnostic_id.go} | 31 ------- ...nagement_test.go => diagnostic_id_test.go} | 83 ------------------ .../services/apimanagement/parse/logger_id.go | 36 ++++++++ .../apimanagement/parse/logger_id_test.go | 86 +++++++++++++++++++ 4 files changed, 122 insertions(+), 114 deletions(-) rename azurerm/internal/services/apimanagement/parse/{apimanagement.go => diagnostic_id.go} (55%) rename azurerm/internal/services/apimanagement/parse/{apimanagement_test.go => diagnostic_id_test.go} (50%) create mode 100644 azurerm/internal/services/apimanagement/parse/logger_id.go create mode 100644 azurerm/internal/services/apimanagement/parse/logger_id_test.go diff --git a/azurerm/internal/services/apimanagement/parse/apimanagement.go b/azurerm/internal/services/apimanagement/parse/diagnostic_id.go similarity index 55% rename from azurerm/internal/services/apimanagement/parse/apimanagement.go rename to azurerm/internal/services/apimanagement/parse/diagnostic_id.go index 048d60a45ec1..553489d3b997 100644 --- a/azurerm/internal/services/apimanagement/parse/apimanagement.go +++ b/azurerm/internal/services/apimanagement/parse/diagnostic_id.go @@ -6,37 +6,6 @@ import ( "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure" ) -type ApiManagementLoggerId struct { - ResourceGroup string - ServiceName string - Name string -} - -func ApiManagementLoggerID(input string) (*ApiManagementLoggerId, error) { - id, err := azure.ParseAzureResourceID(input) - if err != nil { - return nil, fmt.Errorf("parsing Api Management Logger ID %q: %+v", input, err) - } - - logger := ApiManagementLoggerId{ - ResourceGroup: id.ResourceGroup, - } - - if logger.ServiceName, err = id.PopSegment("service"); err != nil { - return nil, err - } - - if logger.Name, err = id.PopSegment("loggers"); err != nil { - return nil, err - } - - if err := id.ValidateNoEmptySegments(input); err != nil { - return nil, err - } - - return &logger, nil -} - type ApiManagementDiagnosticId struct { ResourceGroup string ServiceName string diff --git a/azurerm/internal/services/apimanagement/parse/apimanagement_test.go b/azurerm/internal/services/apimanagement/parse/diagnostic_id_test.go similarity index 50% rename from azurerm/internal/services/apimanagement/parse/apimanagement_test.go rename to azurerm/internal/services/apimanagement/parse/diagnostic_id_test.go index b60734df3c87..d18ba80b06fe 100644 --- a/azurerm/internal/services/apimanagement/parse/apimanagement_test.go +++ b/azurerm/internal/services/apimanagement/parse/diagnostic_id_test.go @@ -2,89 +2,6 @@ package parse import "testing" -func TestApiManagementLoggerID(t *testing.T) { - testData := []struct { - Name string - Input string - Expected *ApiManagementLoggerId - }{ - { - Name: "Empty", - Input: "", - Expected: nil, - }, - { - Name: "No Resource Groups Segment", - Input: "/subscriptions/00000000-0000-0000-0000-000000000000", - Expected: nil, - }, - { - Name: "No Resource Groups Value", - Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/", - Expected: nil, - }, - { - Name: "Resource Group ID", - Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foo/", - Expected: nil, - }, - { - Name: "Missing Service Name", - Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/", - Expected: nil, - }, - { - Name: "Missing Logger", - Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/service1", - Expected: nil, - }, - { - Name: "Missing Logger Value", - Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/service1/loggers", - Expected: nil, - }, - { - Name: "Logger ID", - Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/service1/loggers/logger1", - Expected: &ApiManagementLoggerId{ - Name: "logger1", - ServiceName: "service1", - ResourceGroup: "resGroup1", - }, - }, - { - Name: "Wrong Casing", - Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/service1/Loggers/logger1", - Expected: nil, - }, - } - - for _, v := range testData { - t.Logf("[DEBUG] Testing %q", v.Name) - - actual, err := ApiManagementLoggerID(v.Input) - if err != nil { - if v.Expected == nil { - continue - } - - t.Fatalf("Expected a value but got an error: %s", err) - } - - if actual.Name != v.Expected.Name { - t.Fatalf("Expected %q but got %q for Name", v.Expected.Name, actual.Name) - } - - if actual.ServiceName != v.Expected.ServiceName { - t.Fatalf("Expected %q but got %q for Service Name", v.Expected.Name, actual.Name) - } - - if actual.ResourceGroup != v.Expected.ResourceGroup { - t.Fatalf("Expected %q but got %q for Resource Group", v.Expected.ResourceGroup, actual.ResourceGroup) - } - } -} - func TestApiManagementDiagnosticID(t *testing.T) { testData := []struct { Name string diff --git a/azurerm/internal/services/apimanagement/parse/logger_id.go b/azurerm/internal/services/apimanagement/parse/logger_id.go new file mode 100644 index 000000000000..58f5b8648adf --- /dev/null +++ b/azurerm/internal/services/apimanagement/parse/logger_id.go @@ -0,0 +1,36 @@ +package parse + +import ( + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure" +) + +type ApiManagementLoggerId struct { + ResourceGroup string + ServiceName string + Name string +} + +func ApiManagementLoggerID(input string) (*ApiManagementLoggerId, error) { + id, err := azure.ParseAzureResourceID(input) + if err != nil { + return nil, err + } + + logger := ApiManagementLoggerId{ + ResourceGroup: id.ResourceGroup, + } + + if logger.ServiceName, err = id.PopSegment("service"); err != nil { + return nil, err + } + + if logger.Name, err = id.PopSegment("loggers"); err != nil { + return nil, err + } + + if err := id.ValidateNoEmptySegments(input); err != nil { + return nil, err + } + + return &logger, nil +} diff --git a/azurerm/internal/services/apimanagement/parse/logger_id_test.go b/azurerm/internal/services/apimanagement/parse/logger_id_test.go new file mode 100644 index 000000000000..bc01b629dcbb --- /dev/null +++ b/azurerm/internal/services/apimanagement/parse/logger_id_test.go @@ -0,0 +1,86 @@ +package parse + +import "testing" + +func TestApiManagementLoggerID(t *testing.T) { + testData := []struct { + Name string + Input string + Expected *ApiManagementLoggerId + }{ + { + Name: "Empty", + Input: "", + Expected: nil, + }, + { + Name: "No Resource Groups Segment", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000", + Expected: nil, + }, + { + Name: "No Resource Groups Value", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/", + Expected: nil, + }, + { + Name: "Resource Group ID", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foo/", + Expected: nil, + }, + { + Name: "Missing Service Name", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/", + Expected: nil, + }, + { + Name: "Missing Logger", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/service1", + Expected: nil, + }, + { + Name: "Missing Logger Value", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/service1/loggers", + Expected: nil, + }, + { + Name: "Logger ID", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/service1/loggers/logger1", + Expected: &ApiManagementLoggerId{ + Name: "logger1", + ServiceName: "service1", + ResourceGroup: "resGroup1", + }, + }, + { + Name: "Wrong Casing", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/service1/Loggers/logger1", + Expected: nil, + }, + } + + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Name) + + actual, err := ApiManagementLoggerID(v.Input) + if err != nil { + if v.Expected == nil { + continue + } + + t.Fatalf("Expected a value but got an error: %s", err) + } + + if actual.Name != v.Expected.Name { + t.Fatalf("Expected %q but got %q for Name", v.Expected.Name, actual.Name) + } + + if actual.ServiceName != v.Expected.ServiceName { + t.Fatalf("Expected %q but got %q for Service Name", v.Expected.Name, actual.Name) + } + + if actual.ResourceGroup != v.Expected.ResourceGroup { + t.Fatalf("Expected %q but got %q for Resource Group", v.Expected.ResourceGroup, actual.ResourceGroup) + } + } +} From c902e009845d767ddb00e2a3ce35c83160f433ed Mon Sep 17 00:00:00 2001 From: Jochen Richter Date: Fri, 22 May 2020 22:29:23 +0200 Subject: [PATCH 2/6] fixes #6609 --- .../apimanagement/api_management_api_version_set_resource.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go b/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go index 26254ca299b0..1cb2bea10e4a 100644 --- a/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go +++ b/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go @@ -172,7 +172,7 @@ func resourceArmApiManagementApiVersionSetRead(d *schema.ResourceData, meta inte } resourceGroup := id.ResourceGroup serviceName := id.Path["service"] - name := id.Path["api-version-sets"] + name := id.Path["apiVersionSets"] resp, err := client.Get(ctx, resourceGroup, serviceName, name) if err != nil { @@ -211,7 +211,7 @@ func resourceArmApiManagementApiVersionSetDelete(d *schema.ResourceData, meta in } resourceGroup := id.ResourceGroup serviceName := id.Path["service"] - name := id.Path["api-version-sets"] + name := id.Path["apiVersionSets"] if resp, err := client.Delete(ctx, resourceGroup, serviceName, name, ""); err != nil { if !utils.ResponseWasNotFound(resp) { From cb23749ab9a0a9de288ace621ac2066ce53fd58e Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Mon, 25 May 2020 16:49:52 +0200 Subject: [PATCH 3/6] r/api_version_set: adding a parser for the ID --- ...api_management_api_version_set_resource.go | 21 ++--- .../apimanagement/parse/api_version_set_id.go | 34 +++++++ .../parse/api_version_set_id_test.go | 91 +++++++++++++++++++ ...anagement_api_version_set_resource_test.go | 22 +++-- 4 files changed, 145 insertions(+), 23 deletions(-) create mode 100644 azurerm/internal/services/apimanagement/parse/api_version_set_id.go create mode 100644 azurerm/internal/services/apimanagement/parse/api_version_set_id_test.go diff --git a/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go b/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go index 1cb2bea10e4a..f023e6a81d49 100644 --- a/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go +++ b/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go @@ -11,6 +11,7 @@ import ( "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/tf" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/apimanagement/parse" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/timeouts" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils" ) @@ -166,15 +167,12 @@ func resourceArmApiManagementApiVersionSetRead(d *schema.ResourceData, meta inte ctx, cancel := timeouts.ForRead(meta.(*clients.Client).StopContext, d) defer cancel() - id, err := azure.ParseAzureResourceID(d.Id()) + id, err := parse.APIVersionSetID(d.Id()) if err != nil { return err } - resourceGroup := id.ResourceGroup - serviceName := id.Path["service"] - name := id.Path["apiVersionSets"] - resp, err := client.Get(ctx, resourceGroup, serviceName, name) + resp, err := client.Get(ctx, id.ResourceGroup, id.ServiceName, id.Name) if err != nil { if utils.ResponseWasNotFound(resp.Response) { log.Printf("[DEBUG] Api Version Set %q (Resource Group %q / Api Management Service %q) was not found - removing from state!", name, resourceGroup, serviceName) @@ -186,8 +184,8 @@ func resourceArmApiManagementApiVersionSetRead(d *schema.ResourceData, meta inte } d.Set("name", resp.Name) - d.Set("resource_group_name", resourceGroup) - d.Set("api_management_name", serviceName) + d.Set("resource_group_name", id.ResourceGroup) + d.Set("api_management_name", id.ServiceName) if props := resp.APIVersionSetContractProperties; props != nil { d.Set("description", props.Description) @@ -205,17 +203,14 @@ func resourceArmApiManagementApiVersionSetDelete(d *schema.ResourceData, meta in ctx, cancel := timeouts.ForDelete(meta.(*clients.Client).StopContext, d) defer cancel() - id, err := azure.ParseAzureResourceID(d.Id()) + id, err := parse.APIVersionSetID(d.Id()) if err != nil { return err } - resourceGroup := id.ResourceGroup - serviceName := id.Path["service"] - name := id.Path["apiVersionSets"] - if resp, err := client.Delete(ctx, resourceGroup, serviceName, name, ""); err != nil { + if resp, err := client.Delete(ctx, id.ResourceGroup, id.ServiceName, id.Name, ""); err != nil { if !utils.ResponseWasNotFound(resp) { - return fmt.Errorf("deleting Api Version Set %q (Resource Group %q / Api Management Service %q): %+v", name, resourceGroup, serviceName, err) + return fmt.Errorf("deleting Api Version Set %q (Resource Group %q / Api Management Service %q): %+v", id.Name, id.ResourceGroup, id.ServiceName, err) } } diff --git a/azurerm/internal/services/apimanagement/parse/api_version_set_id.go b/azurerm/internal/services/apimanagement/parse/api_version_set_id.go new file mode 100644 index 000000000000..4341ae7a29e0 --- /dev/null +++ b/azurerm/internal/services/apimanagement/parse/api_version_set_id.go @@ -0,0 +1,34 @@ +package parse + +import "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure" + +type ApiVersionSetId struct { + ResourceGroup string + ServiceName string + Name string +} + +func APIVersionSetID(input string) (*ApiVersionSetId, error) { + id, err := azure.ParseAzureResourceID(input) + if err != nil { + return nil, err + } + + logger := ApiVersionSetId{ + ResourceGroup: id.ResourceGroup, + } + + if logger.ServiceName, err = id.PopSegment("service"); err != nil { + return nil, err + } + + if logger.Name, err = id.PopSegment("apiVersionSets"); err != nil { + return nil, err + } + + if err := id.ValidateNoEmptySegments(input); err != nil { + return nil, err + } + + return &logger, nil +} diff --git a/azurerm/internal/services/apimanagement/parse/api_version_set_id_test.go b/azurerm/internal/services/apimanagement/parse/api_version_set_id_test.go new file mode 100644 index 000000000000..ec41e6e8fca0 --- /dev/null +++ b/azurerm/internal/services/apimanagement/parse/api_version_set_id_test.go @@ -0,0 +1,91 @@ +package parse + +import "testing" + +func TestApiVersionSetID(t *testing.T) { + testData := []struct { + Name string + Input string + Expected *ApiVersionSetId + }{ + { + Name: "Empty", + Input: "", + Expected: nil, + }, + { + Name: "No Resource Groups Segment", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000", + Expected: nil, + }, + { + Name: "No Resource Groups Value", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/", + Expected: nil, + }, + { + Name: "Resource Group ID", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/foo/", + Expected: nil, + }, + { + Name: "Missing Service Name", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/", + Expected: nil, + }, + { + Name: "Missing Diagnostic", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/service1", + Expected: nil, + }, + { + Name: "Missing Diagnostic Value", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/service1/apiVersionSets", + Expected: nil, + }, + { + Name: "Diagnostic ID", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/service1/apiVersionSets/set1", + Expected: &ApiVersionSetId{ + Name: "set1", + ServiceName: "service1", + ResourceGroup: "resGroup1", + }, + }, + { + Name: "Wrong Casing", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/service1/ApiVersionSets/set1", + Expected: nil, + }, + { + Name: "Legacy ID", + Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.ApiManagement/service/service1/api-version-sets/set1", + Expected: nil, + }, + } + + for _, v := range testData { + t.Logf("[DEBUG] Testing %q", v.Name) + + actual, err := APIVersionSetID(v.Input) + if err != nil { + if v.Expected == nil { + continue + } + + t.Fatalf("Expected a value but got an error: %s", err) + } + + if actual.Name != v.Expected.Name { + t.Fatalf("Expected %q but got %q for Name", v.Expected.Name, actual.Name) + } + + if actual.ServiceName != v.Expected.ServiceName { + t.Fatalf("Expected %q but got %q for Service Name", v.Expected.Name, actual.Name) + } + + if actual.ResourceGroup != v.Expected.ResourceGroup { + t.Fatalf("Expected %q but got %q for Resource Group", v.Expected.ResourceGroup, actual.ResourceGroup) + } + } +} diff --git a/azurerm/internal/services/apimanagement/tests/api_management_api_version_set_resource_test.go b/azurerm/internal/services/apimanagement/tests/api_management_api_version_set_resource_test.go index 0c11a0a92f86..9c318f48f2ec 100644 --- a/azurerm/internal/services/apimanagement/tests/api_management_api_version_set_resource_test.go +++ b/azurerm/internal/services/apimanagement/tests/api_management_api_version_set_resource_test.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/terraform" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/acceptance" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/apimanagement/parse" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils" ) @@ -125,12 +126,12 @@ func testCheckAzureRMApiManagementApiVersionSetDestroy(s *terraform.State) error continue } - name := rs.Primary.Attributes["name"] - resourceGroup := rs.Primary.Attributes["resource_group_name"] - serviceName := rs.Primary.Attributes["api_management_name"] - - resp, err := client.Get(ctx, resourceGroup, serviceName, name) + id, err := parse.APIVersionSetID(rs.Primary.ID) + if err != nil { + return err + } + resp, err := client.Get(ctx, id.ResourceGroup, id.ServiceName, id.Name) if err != nil { if !utils.ResponseWasNotFound(resp.Response) { return err @@ -152,14 +153,15 @@ func testCheckAzureRMApiManagementApiVersionSetExists(resourceName string) resou return fmt.Errorf("Not found: %s", resourceName) } - name := rs.Primary.Attributes["name"] - resourceGroup := rs.Primary.Attributes["resource_group_name"] - serviceName := rs.Primary.Attributes["api_management_name"] + id, err := parse.APIVersionSetID(rs.Primary.ID) + if err != nil { + return err + } - resp, err := client.Get(ctx, resourceGroup, serviceName, name) + resp, err := client.Get(ctx, id.ResourceGroup, id.ServiceName, id.Name) if err != nil { if utils.ResponseWasNotFound(resp.Response) { - return fmt.Errorf("Bad: Api Management Api Version Set %q (Resource Group %q / Api Management Service %q) does not exist", name, resourceGroup, serviceName) + return fmt.Errorf("Bad: Api Management Api Version Set %q (Resource Group %q / Api Management Service %q) does not exist", id.Name, id.ResourceGroup, id.ServiceName) } return fmt.Errorf("Bad: Get on apiManagementApiVersionSetClient: %+v", err) } From 5af225a595c2e67742f5f25ff317aa283accb137 Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Mon, 25 May 2020 16:55:30 +0200 Subject: [PATCH 4/6] r/api_management_api_version_set: adding a state migration covering the id --- ...api_management_api_version_set_resource.go | 10 ++++ .../migration/api_version_set.go | 57 +++++++++++++++++++ .../{management_property.go => property.go} | 0 3 files changed, 67 insertions(+) create mode 100644 azurerm/internal/services/apimanagement/migration/api_version_set.go rename azurerm/internal/services/apimanagement/migration/{management_property.go => property.go} (100%) diff --git a/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go b/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go index f023e6a81d49..c10ac6a07ef6 100644 --- a/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go +++ b/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go @@ -11,6 +11,7 @@ import ( "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/tf" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/apimanagement/migration" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/apimanagement/parse" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/timeouts" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils" @@ -33,6 +34,15 @@ func resourceArmApiManagementApiVersionSet() *schema.Resource { Delete: schema.DefaultTimeout(30 * time.Minute), }, + SchemaVersion: 1, + StateUpgraders: []schema.StateUpgrader{ + { + Type: migration.ApiVersionSetUpgradeV0Schema().CoreConfigSchema().ImpliedType(), + Upgrade: migration.ApiVersionSetUpgradeV0ToV1, + Version: 0, + }, + }, + Schema: map[string]*schema.Schema{ "name": azure.SchemaApiManagementChildName(), diff --git a/azurerm/internal/services/apimanagement/migration/api_version_set.go b/azurerm/internal/services/apimanagement/migration/api_version_set.go new file mode 100644 index 000000000000..bed9e794e830 --- /dev/null +++ b/azurerm/internal/services/apimanagement/migration/api_version_set.go @@ -0,0 +1,57 @@ +package migration + +import ( + "log" + "strings" + + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure" +) + +func ApiVersionSetUpgradeV0Schema() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{ + "name": azure.SchemaApiManagementChildName(), + + "resource_group_name": azure.SchemaResourceGroupName(), + + "api_management_name": azure.SchemaApiManagementName(), + + "display_name": { + Type: schema.TypeString, + Required: true, + }, + + "versioning_scheme": { + Type: schema.TypeString, + Required: true, + }, + + "description": { + Type: schema.TypeString, + Optional: true, + }, + + "version_header_name": { + Type: schema.TypeString, + Optional: true, + }, + + "version_query_name": { + Type: schema.TypeString, + Optional: true, + }, + }, + } +} + +func ApiVersionSetUpgradeV0ToV1(rawState map[string]interface{}, meta interface{}) (map[string]interface{}, error) { + oldId := rawState["id"].(string) + newId := strings.Replace(rawState["id"].(string), "/api-version-set/", "/apiVersionSets/", 1) + + log.Printf("[DEBUG] Updating ID from %q to %q", oldId, newId) + + rawState["id"] = newId + + return rawState, nil +} diff --git a/azurerm/internal/services/apimanagement/migration/management_property.go b/azurerm/internal/services/apimanagement/migration/property.go similarity index 100% rename from azurerm/internal/services/apimanagement/migration/management_property.go rename to azurerm/internal/services/apimanagement/migration/property.go From 8f2408bcfb1d463f01e17ebf6a76088d29e952ab Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Mon, 25 May 2020 16:56:23 +0200 Subject: [PATCH 5/6] r/api_management_api_version_set: updating the import docs --- website/docs/r/api_management_api_version_set.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/r/api_management_api_version_set.html.markdown b/website/docs/r/api_management_api_version_set.html.markdown index bc03de054fa7..f6cb2dcdd99a 100644 --- a/website/docs/r/api_management_api_version_set.html.markdown +++ b/website/docs/r/api_management_api_version_set.html.markdown @@ -84,5 +84,5 @@ The `timeouts` block allows you to specify [timeouts](https://www.terraform.io/d API Version Set can be imported using the `resource id`, e.g. ```shell -terraform import azurerm_api_management_api_version_set.example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-resources/providers/Microsoft.ApiManagement/service/example-apim/api-version-sets/example-apimp +terraform import azurerm_api_management_api_version_set.example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.ApiManagement/service/service1/apiVersionSets/set1 ``` From 247042ebf19909be37af8f80d607f06a2b5a9b9f Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Mon, 25 May 2020 18:08:34 +0200 Subject: [PATCH 6/6] fixing compilation --- .../apimanagement/api_management_api_version_set_resource.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go b/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go index c10ac6a07ef6..eb954513f25b 100644 --- a/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go +++ b/azurerm/internal/services/apimanagement/api_management_api_version_set_resource.go @@ -185,12 +185,12 @@ func resourceArmApiManagementApiVersionSetRead(d *schema.ResourceData, meta inte resp, err := client.Get(ctx, id.ResourceGroup, id.ServiceName, id.Name) if err != nil { if utils.ResponseWasNotFound(resp.Response) { - log.Printf("[DEBUG] Api Version Set %q (Resource Group %q / Api Management Service %q) was not found - removing from state!", name, resourceGroup, serviceName) + log.Printf("[DEBUG] Api Version Set %q (Resource Group %q / Api Management Service %q) was not found - removing from state!", id.Name, id.ResourceGroup, id.ServiceName) d.SetId("") return nil } - return fmt.Errorf("making Read request for Api Version Set %q (Resource Group %q / Api Management Service %q): %+v", name, resourceGroup, serviceName, err) + return fmt.Errorf("making Read request for Api Version Set %q (Resource Group %q / Api Management Service %q): %+v", id.Name, id.ResourceGroup, id.ServiceName, err) } d.Set("name", resp.Name)