From 0e11f9eaf2d5de501ef2618491ab29c89cee3cfe Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Thu, 28 Mar 2019 22:19:32 +0100 Subject: [PATCH 1/2] New Resource: `azurerm_api_management_openid_connect_provider` --- azurerm/config.go | 5 + azurerm/provider.go | 1 + ..._api_management_openid_connect_provider.go | 170 ++++++++++++++ ...management_openid_connect_provider_test.go | 220 ++++++++++++++++++ website/azurerm.erb | 4 + ...ment_openid_connect_provider.html.markdown | 78 +++++++ 6 files changed, 478 insertions(+) create mode 100644 azurerm/resource_arm_api_management_openid_connect_provider.go create mode 100644 azurerm/resource_arm_api_management_openid_connect_provider_test.go create mode 100644 website/docs/r/api_management_openid_connect_provider.html.markdown diff --git a/azurerm/config.go b/azurerm/config.go index 7290835938eb..8ee54f2d05e4 100644 --- a/azurerm/config.go +++ b/azurerm/config.go @@ -132,6 +132,7 @@ type ArmClient struct { apiManagementGroupClient apimanagement.GroupClient apiManagementGroupUsersClient apimanagement.GroupUserClient apiManagementLoggerClient apimanagement.LoggerClient + apiManagementOpenIdConnectClient apimanagement.OpenIDConnectProviderClient apiManagementProductsClient apimanagement.ProductClient apiManagementProductApisClient apimanagement.ProductAPIClient apiManagementProductGroupsClient apimanagement.ProductGroupClient @@ -523,6 +524,10 @@ func (c *ArmClient) registerApiManagementServiceClients(endpoint, subscriptionId c.configureClient(&serviceClient.Client, auth) c.apiManagementServiceClient = serviceClient + openIdConnectClient := apimanagement.NewOpenIDConnectProviderClientWithBaseURI(endpoint, subscriptionId) + c.configureClient(&openIdConnectClient.Client, auth) + c.apiManagementOpenIdConnectClient = openIdConnectClient + productsClient := apimanagement.NewProductClientWithBaseURI(endpoint, subscriptionId) c.configureClient(&productsClient.Client, auth) c.apiManagementProductsClient = productsClient diff --git a/azurerm/provider.go b/azurerm/provider.go index 3fabae6b9f04..4fb294934626 100644 --- a/azurerm/provider.go +++ b/azurerm/provider.go @@ -174,6 +174,7 @@ func Provider() terraform.ResourceProvider { "azurerm_api_management_group": resourceArmApiManagementGroup(), "azurerm_api_management_group_user": resourceArmApiManagementGroupUser(), "azurerm_api_management_logger": resourceArmApiManagementLogger(), + "azurerm_api_management_openid_connect_provider": resourceArmApiManagementOpenIDConnectProvider(), "azurerm_api_management_product": resourceArmApiManagementProduct(), "azurerm_api_management_product_api": resourceArmApiManagementProductApi(), "azurerm_api_management_product_group": resourceArmApiManagementProductGroup(), diff --git a/azurerm/resource_arm_api_management_openid_connect_provider.go b/azurerm/resource_arm_api_management_openid_connect_provider.go new file mode 100644 index 000000000000..80967d3dd1a7 --- /dev/null +++ b/azurerm/resource_arm_api_management_openid_connect_provider.go @@ -0,0 +1,170 @@ +package azurerm + +import ( + "fmt" + "log" + + "github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2018-01-01/apimanagement" + "github.com/hashicorp/terraform/helper/schema" + "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/helpers/validate" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils" +) + +func resourceArmApiManagementOpenIDConnectProvider() *schema.Resource { + return &schema.Resource{ + Create: resourceArmApiManagementOpenIDConnectProviderCreateUpdate, + Read: resourceArmApiManagementOpenIDConnectProviderRead, + Update: resourceArmApiManagementOpenIDConnectProviderCreateUpdate, + Delete: resourceArmApiManagementOpenIDConnectProviderDelete, + + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + + Schema: map[string]*schema.Schema{ + "name": azure.SchemaApiManagementChildName(), + + "resource_group_name": resourceGroupNameSchema(), + + "api_management_name": azure.SchemaApiManagementName(), + + "client_id": { + Type: schema.TypeString, + Required: true, + Sensitive: true, + ValidateFunc: validate.NoEmptyStrings, + }, + + "client_secret": { + Type: schema.TypeString, + Required: true, + Sensitive: true, + ValidateFunc: validate.NoEmptyStrings, + }, + + "display_name": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validate.NoEmptyStrings, + }, + + "metadata_endpoint": { + Type: schema.TypeString, + Required: true, + ValidateFunc: validate.NoEmptyStrings, + }, + + "description": { + Type: schema.TypeString, + Optional: true, + }, + }, + } +} + +func resourceArmApiManagementOpenIDConnectProviderCreateUpdate(d *schema.ResourceData, meta interface{}) error { + client := meta.(*ArmClient).apiManagementOpenIdConnectClient + ctx := meta.(*ArmClient).StopContext + + name := d.Get("name").(string) + resourceGroup := d.Get("resource_group_name").(string) + serviceName := d.Get("api_management_name").(string) + + if requireResourcesToBeImported && d.IsNewResource() { + existing, err := client.Get(ctx, resourceGroup, serviceName, name) + if err != nil { + if !utils.ResponseWasNotFound(existing.Response) { + return fmt.Errorf("Error checking for presence of existing OpenID Connect Provider %q (API Management Service %q / Resource Group %q): %s", name, serviceName, resourceGroup, err) + } + } + + if existing.ID != nil && *existing.ID != "" { + return tf.ImportAsExistsError("azurerm_api_management_openid_connect_provider", *existing.ID) + } + } + + parameters := apimanagement.OpenidConnectProviderContract{ + OpenidConnectProviderContractProperties: &apimanagement.OpenidConnectProviderContractProperties{ + ClientID: utils.String(d.Get("client_id").(string)), + ClientSecret: utils.String(d.Get("client_secret").(string)), + Description: utils.String(d.Get("description").(string)), + DisplayName: utils.String(d.Get("display_name").(string)), + MetadataEndpoint: utils.String(d.Get("metadata_endpoint").(string)), + }, + } + + if _, err := client.CreateOrUpdate(ctx, resourceGroup, serviceName, name, parameters, ""); err != nil { + return fmt.Errorf("Error creating OpenID Connect Provider %q (Resource Group %q / API Management Service %q): %+v", name, resourceGroup, serviceName, err) + } + + resp, err := client.Get(ctx, resourceGroup, serviceName, name) + if err != nil { + return fmt.Errorf("Error retrieving OpenID Connect Provider %q (Resource Group %q / API Management Service %q): %+v", name, resourceGroup, serviceName, err) + } + if resp.ID == nil { + return fmt.Errorf("Cannot read OpenID Connect Provider %q (Resource Group %q / API Management Service %q) ID", name, resourceGroup, serviceName) + } + d.SetId(*resp.ID) + + return resourceArmApiManagementOpenIDConnectProviderRead(d, meta) +} + +func resourceArmApiManagementOpenIDConnectProviderRead(d *schema.ResourceData, meta interface{}) error { + client := meta.(*ArmClient).apiManagementOpenIdConnectClient + ctx := meta.(*ArmClient).StopContext + + id, err := parseAzureResourceID(d.Id()) + if err != nil { + return err + } + resourceGroup := id.ResourceGroup + serviceName := id.Path["service"] + name := id.Path["openidConnectProviders"] + + resp, err := client.Get(ctx, resourceGroup, serviceName, name) + if err != nil { + if utils.ResponseWasNotFound(resp.Response) { + log.Printf("[INFO] OpenID Connect Provider %q (API Management Service %q / Resource Group %q) was not found - removing from state", name, serviceName, resourceGroup) + d.SetId("") + return nil + } + return fmt.Errorf("Error reading OpenID Connect Provider %q (API Management Service %q / Resource Group %q): %+v", name, serviceName, resourceGroup, err) + } + + d.Set("name", resp.Name) + d.Set("resource_group_name", resourceGroup) + d.Set("api_management_name", serviceName) + + if props := resp.OpenidConnectProviderContractProperties; props != nil { + d.Set("client_id", props.ClientID) + d.Set("client_secret", props.ClientSecret) + d.Set("description", props.Description) + d.Set("display_name", props.DisplayName) + d.Set("metadata_endpoint", props.MetadataEndpoint) + } + + return nil +} + +func resourceArmApiManagementOpenIDConnectProviderDelete(d *schema.ResourceData, meta interface{}) error { + client := meta.(*ArmClient).apiManagementOpenIdConnectClient + ctx := meta.(*ArmClient).StopContext + + id, err := parseAzureResourceID(d.Id()) + if err != nil { + return err + } + resourceGroup := id.ResourceGroup + serviceName := id.Path["service"] + name := id.Path["openidConnectProviders"] + + if resp, err := client.Delete(ctx, resourceGroup, serviceName, name, ""); err != nil { + if !utils.ResponseWasNotFound(resp) { + return fmt.Errorf("Error deleting OpenID Connect Provider %q (Resource Group %q / API Management Service %q): %+v", name, resourceGroup, serviceName, err) + } + } + + return nil +} diff --git a/azurerm/resource_arm_api_management_openid_connect_provider_test.go b/azurerm/resource_arm_api_management_openid_connect_provider_test.go new file mode 100644 index 000000000000..e77a252f57a4 --- /dev/null +++ b/azurerm/resource_arm_api_management_openid_connect_provider_test.go @@ -0,0 +1,220 @@ +package azurerm + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform/helper/resource" + "github.com/hashicorp/terraform/terraform" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/tf" + "github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils" +) + +func TestAccAzureRMApiManagementOpenIDConnectProvider_basic(t *testing.T) { + resourceName := "azurerm_api_management_openid_connect_provider.test" + ri := tf.AccRandTimeInt() + location := testLocation() + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testCheckAzureRMApiManagementOpenIDConnectProviderDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAzureRMApiManagementOpenIDConnectProvider_basic(ri, location), + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMApiManagementOpenIDConnectProviderExists(resourceName), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func TestAccAzureRMApiManagementOpenIDConnectProvider_requiresImport(t *testing.T) { + if !requireResourcesToBeImported { + t.Skip("Skipping since resources aren't required to be imported") + return + } + + resourceName := "azurerm_api_management_openid_connect_provider.test" + ri := tf.AccRandTimeInt() + location := testLocation() + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testCheckAzureRMApiManagementOpenIDConnectProviderDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAzureRMApiManagementOpenIDConnectProvider_basic(ri, location), + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMApiManagementOpenIDConnectProviderExists(resourceName), + ), + }, + { + Config: testAccAzureRMApiManagementOpenIDConnectProvider_requiresImport(ri, location), + ExpectError: testRequiresImportError("azurerm_api_management_openid_connect_provider"), + }, + }, + }) +} + +func TestAccAzureRMApiManagementOpenIDConnectProvider_update(t *testing.T) { + resourceName := "azurerm_api_management_openid_connect_provider.test" + ri := tf.AccRandTimeInt() + location := testLocation() + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testCheckAzureRMApiManagementOpenIDConnectProviderDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAzureRMApiManagementOpenIDConnectProvider_basic(ri, location), + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMApiManagementOpenIDConnectProviderExists(resourceName), + ), + }, + { + Config: testAccAzureRMApiManagementOpenIDConnectProvider_complete(ri, location), + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMApiManagementOpenIDConnectProviderExists(resourceName), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func testCheckAzureRMApiManagementOpenIDConnectProviderExists(resourceName string) resource.TestCheckFunc { + return func(s *terraform.State) error { + rs, ok := s.RootModule().Resources[resourceName] + if !ok { + return fmt.Errorf("API Management OpenID Connect Provider not found: %s", resourceName) + } + + name := rs.Primary.Attributes["name"] + resourceGroup := rs.Primary.Attributes["resource_group_name"] + serviceName := rs.Primary.Attributes["api_management_name"] + + client := testAccProvider.Meta().(*ArmClient).apiManagementOpenIdConnectClient + ctx := testAccProvider.Meta().(*ArmClient).StopContext + + if resp, err := client.Get(ctx, resourceGroup, serviceName, name); err != nil { + if utils.ResponseWasNotFound(resp.Response) { + return fmt.Errorf("Bad: OpenID Connect Provider %q (Resource Group %q / API Management Service %q) does not exist", name, resourceGroup, serviceName) + } + return fmt.Errorf("Bad: Get on apiManagementOpenIdConnectClient: %+v", err) + } + + return nil + } +} + +func testCheckAzureRMApiManagementOpenIDConnectProviderDestroy(s *terraform.State) error { + client := testAccProvider.Meta().(*ArmClient).apiManagementOpenIdConnectClient + ctx := testAccProvider.Meta().(*ArmClient).StopContext + + for _, rs := range s.RootModule().Resources { + if rs.Type != "azurerm_api_management_openid_connect_provider" { + continue + } + + name := rs.Primary.Attributes["name"] + resourceGroup := rs.Primary.Attributes["resource_group_name"] + serviceName := rs.Primary.Attributes["api_management_name"] + + if resp, err := client.Get(ctx, resourceGroup, serviceName, name); err != nil { + if !utils.ResponseWasNotFound(resp.Response) { + return fmt.Errorf("Bad: Get on apiManagementOpenIdConnectClient: %+v", err) + } + } + + return nil + } + + return nil +} + +func testAccAzureRMApiManagementOpenIDConnectProvider_basic(rInt int, location string) string { + template := testAccAzureRMApiManagementOpenIDConnectProvider_template(rInt, location) + return fmt.Sprintf(` +%s + +resource "azurerm_api_management_openid_connect_provider" "test" { + name = "acctest-%d" + api_management_name = "${azurerm_api_management.test.name}" + resource_group_name = "${azurerm_resource_group.test.name}" + client_id = "00001111-2222-3333-%d" + client_secret = "%d-cwdavsxbacsaxZX-%d" + display_name = "Initial Name" + metadata_endpoint = "https://azacctest.hashicorptest.com/example/foo" +} +`, template, rInt, rInt, rInt, rInt) +} + +func testAccAzureRMApiManagementOpenIDConnectProvider_requiresImport(rInt int, location string) string { + template := testAccAzureRMApiManagementOpenIDConnectProvider_basic(rInt, location) + return fmt.Sprintf(` +%s + +resource "azurerm_api_management_openid_connect_provider" "import" { + name = "${azurerm_api_management_openid_connect_provider.test.name}" + api_management_name = "${azurerm_api_management_openid_connect_provider.test.api_management_name}" + resource_group_name = "${azurerm_api_management_openid_connect_provider.test.resource_group_name}" + client_id = "${azurerm_api_management_openid_connect_provider.test.client_id}" + client_secret = "${azurerm_api_management_openid_connect_provider.test.client_secret}" + display_name = "${azurerm_api_management_openid_connect_provider.test.display_name}" + metadata_endpoint = "${azurerm_api_management_openid_connect_provider.test.metadata_endpoint}" +} +`, template) +} + +func testAccAzureRMApiManagementOpenIDConnectProvider_complete(rInt int, location string) string { + template := testAccAzureRMApiManagementOpenIDConnectProvider_template(rInt, location) + return fmt.Sprintf(` +%s + +resource "azurerm_api_management_openid_connect_provider" "test" { + name = "acctest-%d" + api_management_name = "${azurerm_api_management.test.name}" + resource_group_name = "${azurerm_resource_group.test.name}" + client_id = "00001111-3333-2222-%d" + client_secret = "%d-423egvwdcsjx-%d" + display_name = "Updated Name" + description = "Example description" + metadata_endpoint = "https://azacctest.hashicorptest.com/example/updated" +} +`, template, rInt, rInt, rInt, rInt) +} + +func testAccAzureRMApiManagementOpenIDConnectProvider_template(rInt int, location string) string { + return fmt.Sprintf(` +resource "azurerm_resource_group" "test" { + name = "acctestRG-%d" + location = "%s" +} + +resource "azurerm_api_management" "test" { + name = "acctestAM-%d" + location = "${azurerm_resource_group.test.location}" + resource_group_name = "${azurerm_resource_group.test.name}" + publisher_name = "pub1" + publisher_email = "pub1@email.com" + + sku { + name = "Developer" + capacity = 1 + } +} +`, rInt, location, rInt) +} diff --git a/website/azurerm.erb b/website/azurerm.erb index 8bcdf81e52d2..0b8d0bce0da4 100644 --- a/website/azurerm.erb +++ b/website/azurerm.erb @@ -358,6 +358,10 @@ azurerm_api_management_logger + > + azurerm_api_management_openid_connect_provider + + > azurerm_api_management_product diff --git a/website/docs/r/api_management_openid_connect_provider.html.markdown b/website/docs/r/api_management_openid_connect_provider.html.markdown new file mode 100644 index 000000000000..edce139ba05c --- /dev/null +++ b/website/docs/r/api_management_openid_connect_provider.html.markdown @@ -0,0 +1,78 @@ +--- +layout: "azurerm" +page_title: "Azure Resource Manager: azurerm_api_management_openid_connect_provider" +sidebar_current: "docs-azurerm-resource-api-management-openid-connect-provider" +description: |- + Manages an OpenID Connect Provider within a API Management Service. +--- + +# azurerm_api_management_openid_connect_provider + +Manages an OpenID Connect Provider within a API Management Service. + +## Example Usage + +```hcl +resource "azurerm_resource_group" "test" { + name = "example-resources" + location = "West Europe" +} + +resource "azurerm_api_management" "test" { + name = "example-apim" + location = "${azurerm_resource_group.test.location}" + resource_group_name = "${azurerm_resource_group.test.name}" + publisher_name = "My Company" + publisher_email = "company@terraform.io" + + sku { + name = "Developer" + capacity = 1 + } +} + +resource "azurerm_api_management_openid_connect_provider" "test" { + name = "example-provider" + api_management_name = "${azurerm_api_management.test.name}" + resource_group_name = "${azurerm_resource_group.test.name}" + client_id = "00001111-2222-3333-4444-555566667777" + display_name = "Example Provider" + metadata_endpoint = "https://example.com/example" +} +``` + +## Argument Reference + +The following arguments are supported: + +* `name` - (Required) the Name of the OpenID Connect Provider which should be created within the API Management Service. Changing this forces a new resource to be created. + +* `api_management_name` - (Required) The name of the API Management Service in which this OpenID Connect Provider should be created. Changing this forces a new resource to be created. + +* `resource_group_name` - (Required) The name of the Resource Group where the API Management Service exists. Changing this forces a new resource to be created. + +* `client_id` - (Required) The Client ID used for the Client Application. + +* `client_secret` - (Required) The Client Secret used for the Client Application. + +* `display_name` - (Required) A user-friendly name for this OpenID Connect Provider. + +* `metadata_endpoint` - (Required) The URI of the Metadata endpoint. + +--- + +* `description` - (Optional) A description of this OpenID Connect Provider. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `id` - The ID of the API Management OpenID Connect Provider. + +## Import + +API Management OpenID Connect Providers can be imported using the `resource id`, e.g. + +```shell +terraform import azurerm_api_management_openid_connect_provider.test /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.ApiManagement/service/instance1/openidConnectProviders/provider1 +``` From 600ff8837c93a706fb3199eafb9b073212609725 Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Thu, 28 Mar 2019 22:28:30 +0100 Subject: [PATCH 2/2] r/api_management_logger: supporting requires import --- azurerm/resource_arm_api_management_logger.go | 17 ++++++- ...resource_arm_api_management_logger_test.go | 51 +++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/azurerm/resource_arm_api_management_logger.go b/azurerm/resource_arm_api_management_logger.go index 7d556d8edf5f..85e5954478c1 100644 --- a/azurerm/resource_arm_api_management_logger.go +++ b/azurerm/resource_arm_api_management_logger.go @@ -7,6 +7,7 @@ import ( "github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2018-01-01/apimanagement" "github.com/hashicorp/terraform/helper/schema" "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/helpers/validate" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils" ) @@ -100,6 +101,19 @@ func resourceArmApiManagementLoggerCreate(d *schema.ResourceData, meta interface return fmt.Errorf("Either `eventhub` or `application_insights` is required") } + if requireResourcesToBeImported && d.IsNewResource() { + existing, err := client.Get(ctx, resourceGroup, serviceName, name) + if err != nil { + if !utils.ResponseWasNotFound(existing.Response) { + return fmt.Errorf("Error checking for presence of existing Logger %q (API Management Service %q / Resource Group %q): %s", name, serviceName, resourceGroup, err) + } + } + + if existing.ID != nil && *existing.ID != "" { + return tf.ImportAsExistsError("azurerm_api_management_logger", *existing.ID) + } + } + parameters := apimanagement.LoggerContract{ LoggerContractProperties: &apimanagement.LoggerContractProperties{ IsBuffered: utils.Bool(d.Get("buffered").(bool)), @@ -207,8 +221,9 @@ func resourceArmApiManagementLoggerDelete(d *schema.ResourceData, meta interface id, err := parseAzureResourceID(d.Id()) if err != nil { - return fmt.Errorf("Error parsing API Management Logger ID %q: %+v", d.Id(), err) + return err } + resourceGroup := id.ResourceGroup serviceName := id.Path["service"] name := id.Path["loggers"] diff --git a/azurerm/resource_arm_api_management_logger_test.go b/azurerm/resource_arm_api_management_logger_test.go index b41ec978832e..3c1b3e18787b 100644 --- a/azurerm/resource_arm_api_management_logger_test.go +++ b/azurerm/resource_arm_api_management_logger_test.go @@ -40,6 +40,39 @@ func TestAccAzureRMApiManagementLogger_basicEventHub(t *testing.T) { }) } +func TestAccAzureRMApiManagementLogger_requiresImport(t *testing.T) { + if !requireResourcesToBeImported { + t.Skip("Skipping since resources aren't required to be imported") + return + } + + resourceName := "azurerm_api_management_logger.test" + ri := tf.AccRandTimeInt() + location := testLocation() + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testCheckAzureRMApiManagementLoggerDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAzureRMApiManagementLogger_basicEventHub(ri, location), + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMApiManagementLoggerExists(resourceName), + resource.TestCheckResourceAttr(resourceName, "buffered", "true"), + resource.TestCheckResourceAttr(resourceName, "eventhub.#", "1"), + resource.TestCheckResourceAttrSet(resourceName, "eventhub.0.name"), + resource.TestCheckResourceAttrSet(resourceName, "eventhub.0.connection_string"), + ), + }, + { + Config: testAccAzureRMApiManagementLogger_requiresImport(ri, location), + ExpectError: testRequiresImportError("azurerm_api_management_logger"), + }, + }, + }) +} + func TestAccAzureRMApiManagementLogger_basicApplicationInsights(t *testing.T) { resourceName := "azurerm_api_management_logger.test" ri := tf.AccRandTimeInt() @@ -279,6 +312,24 @@ resource "azurerm_api_management_logger" "test" { `, rInt, location, rInt, rInt, rInt, rInt) } +func testAccAzureRMApiManagementLogger_requiresImport(rInt int, location string) string { + template := testAccAzureRMApiManagementLogger_basicEventHub(rInt, location) + return fmt.Sprintf(` +%s + +resource "azurerm_api_management_logger" "import" { + name = "${azurerm_api_management_logger.test.name}" + api_management_name = "${azurerm_api_management_logger.test.api_management_name}" + resource_group_name = "${azurerm_api_management_logger.test.resource_group_name}" + + eventhub { + name = "${azurerm_eventhub.test.name}" + connection_string = "${azurerm_eventhub_namespace.test.default_primary_connection_string}" + } +} +`, template) +} + func testAccAzureRMApiManagementLogger_basicApplicationInsights(rInt int, location string) string { return fmt.Sprintf(` resource "azurerm_resource_group" "test" {