Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

provider: upgrade API Management to 2019-12-01 #6479

Merged
merged 12 commits into from Apr 22, 2020
2 changes: 1 addition & 1 deletion azurerm/helpers/azure/api_management.go
Expand Up @@ -4,7 +4,7 @@ import (
"fmt"
"strings"

"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2018-01-01/apimanagement"
"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2019-12-01/apimanagement"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/validate"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils"
Expand Down
10 changes: 5 additions & 5 deletions azurerm/internal/services/apimanagement/client/client.go
@@ -1,7 +1,7 @@
package client

import (
"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2018-01-01/apimanagement"
"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2019-12-01/apimanagement"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/common"
)

Expand All @@ -26,7 +26,7 @@ type Client struct {
ProductApisClient *apimanagement.ProductAPIClient
ProductGroupsClient *apimanagement.ProductGroupClient
ProductPoliciesClient *apimanagement.ProductPolicyClient
PropertyClient *apimanagement.PropertyClient
NamedValueClient *apimanagement.NamedValueClient
katbyte marked this conversation as resolved.
Show resolved Hide resolved
ServiceClient *apimanagement.ServiceClient
SignInClient *apimanagement.SignInSettingsClient
SignUpClient *apimanagement.SignUpSettingsClient
Expand Down Expand Up @@ -95,8 +95,8 @@ func NewClient(o *common.ClientOptions) *Client {
productPoliciesClient := apimanagement.NewProductPolicyClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&productPoliciesClient.Client, o.ResourceManagerAuthorizer)

propertyClient := apimanagement.NewPropertyClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&propertyClient.Client, o.ResourceManagerAuthorizer)
namedValueClient := apimanagement.NewNamedValueClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
katbyte marked this conversation as resolved.
Show resolved Hide resolved
o.ConfigureClient(&namedValueClient.Client, o.ResourceManagerAuthorizer)

serviceClient := apimanagement.NewServiceClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&serviceClient.Client, o.ResourceManagerAuthorizer)
Expand Down Expand Up @@ -134,7 +134,7 @@ func NewClient(o *common.ClientOptions) *Client {
ProductApisClient: &productApisClient,
ProductGroupsClient: &productGroupsClient,
ProductPoliciesClient: &productPoliciesClient,
PropertyClient: &propertyClient,
NamedValueClient: &namedValueClient,
katbyte marked this conversation as resolved.
Show resolved Hide resolved
ServiceClient: &serviceClient,
SignInClient: &signInClient,
SignUpClient: &signUpClient,
Expand Down
Expand Up @@ -5,7 +5,7 @@ import (
"strings"
"time"

"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2018-01-01/apimanagement"
"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2019-12-01/apimanagement"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients"
Expand Down Expand Up @@ -225,20 +225,20 @@ func flattenDataSourceApiManagementHostnameConfigurations(input *[]apimanagement
}

switch strings.ToLower(string(config.Type)) {
case strings.ToLower(string(apimanagement.Proxy)):
case strings.ToLower(string(apimanagement.HostnameTypeProxy)):
// only set SSL binding for proxy types
if config.DefaultSslBinding != nil {
output["default_ssl_binding"] = *config.DefaultSslBinding
}
proxyResults = append(proxyResults, output)

case strings.ToLower(string(apimanagement.Management)):
case strings.ToLower(string(apimanagement.HostnameTypeManagement)):
managementResults = append(managementResults, output)

case strings.ToLower(string(apimanagement.Portal)):
case strings.ToLower(string(apimanagement.HostnameTypePortal)):
portalResults = append(portalResults, output)

case strings.ToLower(string(apimanagement.Scm)):
case strings.ToLower(string(apimanagement.HostnameTypeScm)):
scmResults = append(scmResults, output)
}
}
Expand Down
Expand Up @@ -4,7 +4,7 @@ import (
"fmt"
"time"

"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2018-01-01/apimanagement"
"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2019-12-01/apimanagement"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
Expand Down
Expand Up @@ -4,7 +4,7 @@ import (
"fmt"
"time"

"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2018-01-01/apimanagement"
"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2019-12-01/apimanagement"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients"
Expand Down
Expand Up @@ -7,7 +7,8 @@ import (
"strings"
"time"

"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2018-01-01/apimanagement"
"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2019-12-01/apimanagement"
"github.com/hashicorp/go-azure-helpers/response"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
Expand Down Expand Up @@ -466,14 +467,14 @@ func resourceArmApiManagementServiceCreateUpdate(d *schema.ResourceData, meta in
signInSettingsRaw := d.Get("sign_in").([]interface{})
signInSettings := expandApiManagementSignInSettings(signInSettingsRaw)
signInClient := meta.(*clients.Client).ApiManagement.SignInClient
if _, err := signInClient.CreateOrUpdate(ctx, resourceGroup, name, signInSettings); err != nil {
if _, err := signInClient.CreateOrUpdate(ctx, resourceGroup, name, signInSettings, ""); err != nil {
return fmt.Errorf("Error setting Sign In settings for API Management Service %q (Resource Group %q): %+v", name, resourceGroup, err)
}

signUpSettingsRaw := d.Get("sign_up").([]interface{})
signUpSettings := expandApiManagementSignUpSettings(signUpSettingsRaw)
signUpClient := meta.(*clients.Client).ApiManagement.SignUpClient
if _, err := signUpClient.CreateOrUpdate(ctx, resourceGroup, name, signUpSettings); err != nil {
if _, err := signUpClient.CreateOrUpdate(ctx, resourceGroup, name, signUpSettings, ""); err != nil {
return fmt.Errorf("Error setting Sign Up settings for API Management Service %q (Resource Group %q): %+v", name, resourceGroup, err)
}

Expand All @@ -494,7 +495,7 @@ func resourceArmApiManagementServiceCreateUpdate(d *schema.ResourceData, meta in

// then add the new one, if it exists
if policy != nil {
if _, err := policyClient.CreateOrUpdate(ctx, resourceGroup, name, *policy); err != nil {
if _, err := policyClient.CreateOrUpdate(ctx, resourceGroup, name, *policy, ""); err != nil {
return fmt.Errorf("Error setting Policies for API Management Service %q (Resource Group %q): %+v", name, resourceGroup, err)
}
}
Expand Down Expand Up @@ -540,7 +541,7 @@ func resourceArmApiManagementServiceRead(d *schema.ResourceData, meta interface{
}

policyClient := meta.(*clients.Client).ApiManagement.PolicyClient
policy, err := policyClient.Get(ctx, resourceGroup, name)
policy, err := policyClient.Get(ctx, resourceGroup, name, apimanagement.PolicyExportFormatXML)
if err != nil {
if !utils.ResponseWasNotFound(policy.Response) {
return fmt.Errorf("Error retrieving Policy for API Management Service %q (Resource Group %q): %+v", name, resourceGroup, err)
Expand Down Expand Up @@ -620,10 +621,14 @@ func resourceArmApiManagementServiceDelete(d *schema.ResourceData, meta interfac
name := id.Path["service"]

log.Printf("[DEBUG] Deleting API Management Service %q (Resource Grouo %q)", name, resourceGroup)
resp, err := client.Delete(ctx, resourceGroup, name)
future, err := client.Delete(ctx, resourceGroup, name)
if err != nil {
if !utils.ResponseWasNotFound(resp) {
return fmt.Errorf("Error deleting API Management Service %q (Resource Group %q): %+v", name, resourceGroup, err)
return fmt.Errorf("deleting API Management Service %q (Resource Group %q): %+v", name, resourceGroup, err)
katbyte marked this conversation as resolved.
Show resolved Hide resolved
}

if err = future.WaitForCompletionRef(ctx, client.Client); err != nil {
if !response.WasNotFound(future.Response()) {
return fmt.Errorf("waiting for deletion of API Management Service %q (Resource Group %q): %+v", name, resourceGroup, err)
katbyte marked this conversation as resolved.
Show resolved Hide resolved
}
}

Expand All @@ -640,21 +645,21 @@ func expandAzureRmApiManagementHostnameConfigurations(d *schema.ResourceData) *[
managementVs := hostnameV["management"].([]interface{})
for _, managementV := range managementVs {
v := managementV.(map[string]interface{})
output := expandApiManagementCommonHostnameConfiguration(v, apimanagement.Management)
output := expandApiManagementCommonHostnameConfiguration(v, apimanagement.HostnameTypeManagement)
results = append(results, output)
}

portalVs := hostnameV["portal"].([]interface{})
for _, portalV := range portalVs {
v := portalV.(map[string]interface{})
output := expandApiManagementCommonHostnameConfiguration(v, apimanagement.Portal)
output := expandApiManagementCommonHostnameConfiguration(v, apimanagement.HostnameTypePortal)
results = append(results, output)
}

proxyVs := hostnameV["proxy"].([]interface{})
for _, proxyV := range proxyVs {
v := proxyV.(map[string]interface{})
output := expandApiManagementCommonHostnameConfiguration(v, apimanagement.Proxy)
output := expandApiManagementCommonHostnameConfiguration(v, apimanagement.HostnameTypeProxy)
if value, ok := v["default_ssl_binding"]; ok {
output.DefaultSslBinding = utils.Bool(value.(bool))
}
Expand All @@ -664,7 +669,7 @@ func expandAzureRmApiManagementHostnameConfigurations(d *schema.ResourceData) *[
scmVs := hostnameV["scm"].([]interface{})
for _, scmV := range scmVs {
v := scmV.(map[string]interface{})
output := expandApiManagementCommonHostnameConfiguration(v, apimanagement.Scm)
output := expandApiManagementCommonHostnameConfiguration(v, apimanagement.HostnameTypeScm)
results = append(results, output)
}
}
Expand Down Expand Up @@ -740,20 +745,20 @@ func flattenApiManagementHostnameConfigurations(input *[]apimanagement.HostnameC
}

switch strings.ToLower(string(config.Type)) {
case strings.ToLower(string(apimanagement.Proxy)):
case strings.ToLower(string(apimanagement.HostnameTypeProxy)):
// only set SSL binding for proxy types
if config.DefaultSslBinding != nil {
output["default_ssl_binding"] = *config.DefaultSslBinding
}
proxyResults = append(proxyResults, output)

case strings.ToLower(string(apimanagement.Management)):
case strings.ToLower(string(apimanagement.HostnameTypeManagement)):
managementResults = append(managementResults, output)

case strings.ToLower(string(apimanagement.Portal)):
case strings.ToLower(string(apimanagement.HostnameTypePortal)):
portalResults = append(portalResults, output)

case strings.ToLower(string(apimanagement.Scm)):
case strings.ToLower(string(apimanagement.HostnameTypeScm)):
scmResults = append(scmResults, output)
}
}
Expand Down Expand Up @@ -848,7 +853,7 @@ func expandAzureRmApiManagementIdentity(d *schema.ResourceData) *apimanagement.S
v := vs[0].(map[string]interface{})
identityType := v["type"].(string)
return &apimanagement.ServiceIdentity{
Type: utils.String(identityType),
Type: apimanagement.ApimIdentityType(identityType),
}
}

Expand All @@ -859,9 +864,7 @@ func flattenAzureRmApiManagementMachineIdentity(identity *apimanagement.ServiceI

result := make(map[string]interface{})

if identity.Type != nil {
result["type"] = *identity.Type
}
result["type"] = string(identity.Type)

if identity.PrincipalID != nil {
result["principal_id"] = identity.PrincipalID.String()
Expand Down Expand Up @@ -1151,17 +1154,17 @@ func expandApiManagementPolicies(input []interface{}) (*apimanagement.PolicyCont
if xmlContent != "" {
return &apimanagement.PolicyContract{
PolicyContractProperties: &apimanagement.PolicyContractProperties{
ContentFormat: apimanagement.XML,
PolicyContent: utils.String(xmlContent),
Format: apimanagement.XML,
Value: utils.String(xmlContent),
},
}, nil
}

if xmlLink != "" {
return &apimanagement.PolicyContract{
PolicyContractProperties: &apimanagement.PolicyContractProperties{
ContentFormat: apimanagement.XMLLink,
PolicyContent: utils.String(xmlLink),
Format: apimanagement.XMLLink,
Value: utils.String(xmlLink),
},
}, nil
}
Expand All @@ -1172,8 +1175,8 @@ func expandApiManagementPolicies(input []interface{}) (*apimanagement.PolicyCont
func flattenApiManagementPolicies(d *schema.ResourceData, input apimanagement.PolicyContract) []interface{} {
xmlContent := ""
if props := input.PolicyContractProperties; props != nil {
if props.PolicyContent != nil {
xmlContent = *props.PolicyContent
if props.Value != nil {
xmlContent = *props.Value
}
}

Expand Down
Expand Up @@ -6,7 +6,7 @@ import (
"strings"
"time"

"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2018-01-01/apimanagement"
"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2019-12-01/apimanagement"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
Expand Down Expand Up @@ -246,12 +246,12 @@ func resourceArmApiManagementApiCreateUpdate(d *schema.ResourceData, meta interf
log.Printf("[DEBUG] Importing API Management API %q of type %q", name, contentFormat)
apiParams := apimanagement.APICreateOrUpdateParameter{
APICreateOrUpdateProperties: &apimanagement.APICreateOrUpdateProperties{
APIType: apiType,
SoapAPIType: soapApiType,
ContentFormat: apimanagement.ContentFormat(contentFormat),
ContentValue: utils.String(contentValue),
Path: utils.String(path),
APIVersion: utils.String(version),
APIType: apiType,
SoapAPIType: soapApiType,
Format: apimanagement.ContentFormat(contentFormat),
Value: utils.String(contentValue),
Path: utils.String(path),
APIVersion: utils.String(version),
},
}
wsdlSelectorVs := importV["wsdl_selector"].([]interface{})
Expand Down
Expand Up @@ -5,7 +5,7 @@ import (
"log"
"time"

"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2018-01-01/apimanagement"
"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2019-12-01/apimanagement"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/tf"
Expand Down
Expand Up @@ -5,7 +5,7 @@ import (
"log"
"time"

"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2018-01-01/apimanagement"
"github.com/Azure/azure-sdk-for-go/services/apimanagement/mgmt/2019-12-01/apimanagement"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/suppress"
Expand Down Expand Up @@ -70,7 +70,7 @@ func resourceArmApiManagementAPIOperationPolicyCreateUpdate(d *schema.ResourceDa
operationID := d.Get("operation_id").(string)

if features.ShouldResourcesBeImported() && d.IsNewResource() {
existing, err := client.Get(ctx, resourceGroup, serviceName, apiName, operationID)
existing, err := client.Get(ctx, resourceGroup, serviceName, apiName, operationID, apimanagement.PolicyExportFormatXML)
if err != nil {
if !utils.ResponseWasNotFound(existing.Response) {
return fmt.Errorf("Error checking for presence of existing API Operation Policy (API Management Service %q / API %q / Operation %q / Resource Group %q): %s", serviceName, apiName, operationID, resourceGroup, err)
Expand All @@ -89,15 +89,15 @@ func resourceArmApiManagementAPIOperationPolicyCreateUpdate(d *schema.ResourceDa

if xmlContent != "" {
parameters.PolicyContractProperties = &apimanagement.PolicyContractProperties{
ContentFormat: apimanagement.XML,
PolicyContent: utils.String(xmlContent),
Format: apimanagement.XML,
Value: utils.String(xmlContent),
}
}

if xmlLink != "" {
parameters.PolicyContractProperties = &apimanagement.PolicyContractProperties{
ContentFormat: apimanagement.XMLLink,
PolicyContent: utils.String(xmlLink),
Format: apimanagement.XMLLink,
Value: utils.String(xmlLink),
}
}

Expand All @@ -109,7 +109,7 @@ func resourceArmApiManagementAPIOperationPolicyCreateUpdate(d *schema.ResourceDa
return fmt.Errorf("Error creating or updating API Operation Policy (Resource Group %q / API Management Service %q / API %q / Operation %q): %+v", resourceGroup, serviceName, apiName, operationID, err)
}

resp, err := client.Get(ctx, resourceGroup, serviceName, apiName, operationID)
resp, err := client.Get(ctx, resourceGroup, serviceName, apiName, operationID, apimanagement.PolicyExportFormatXML)
if err != nil {
return fmt.Errorf("Error retrieving API Operation Policy (Resource Group %q / API Management Service %q / API %q / Operation %q): %+v", resourceGroup, serviceName, apiName, operationID, err)
}
Expand All @@ -135,7 +135,7 @@ func resourceArmApiManagementAPIOperationPolicyRead(d *schema.ResourceData, meta
apiName := id.Path["apis"]
operationID := id.Path["operations"]

resp, err := client.Get(ctx, resourceGroup, serviceName, apiName, operationID)
resp, err := client.Get(ctx, resourceGroup, serviceName, apiName, operationID, apimanagement.PolicyExportFormatXML)
if err != nil {
if utils.ResponseWasNotFound(resp.Response) {
log.Printf("[DEBUG] API Operation Policy (Resource Group %q / API Management Service %q / API %q / Operation %q) was not found - removing from state!", resourceGroup, serviceName, apiName, operationID)
Expand All @@ -154,7 +154,7 @@ func resourceArmApiManagementAPIOperationPolicyRead(d *schema.ResourceData, meta
if properties := resp.PolicyContractProperties; properties != nil {
// when you submit an `xml_link` to the API, the API downloads this link and stores it as `xml_content`
// as such there is no way to set `xml_link` and we'll let Terraform handle it
d.Set("xml_content", properties.PolicyContent)
d.Set("xml_content", properties.Value)
}

return nil
Expand Down