Skip to content

Commit

Permalink
servicebus - switch to go-azure-sdk (#17628)
Browse files Browse the repository at this point in the history
* switch to go-azure-sdk

* lint

* remove unused parsers and validators

* remove references to old parse functions

* vendor

* import ordering

* fix casing of error message in test case
  • Loading branch information
stephybun authored Jul 18, 2022
1 parent 4502d2a commit 1ca5c10
Show file tree
Hide file tree
Showing 264 changed files with 12,593 additions and 15,423 deletions.
59 changes: 41 additions & 18 deletions internal/services/servicebus/client/client.go
Original file line number Diff line number Diff line change
@@ -1,44 +1,67 @@
package client

import (
"github.com/Azure/azure-sdk-for-go/services/preview/servicebus/mgmt/2021-06-01-preview/servicebus"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/disasterrecoveryconfigs"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/namespaces"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/namespacesauthorizationrule"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/queues"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/queuesauthorizationrule"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/rules"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/subscriptions"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/topics"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/topicsauthorizationrule"
"github.com/hashicorp/terraform-provider-azurerm/internal/common"
)

type Client struct {
QueuesClient *servicebus.QueuesClient
DisasterRecoveryConfigsClient *servicebus.DisasterRecoveryConfigsClient
NamespacesClient *servicebus.NamespacesClient
TopicsClient *servicebus.TopicsClient
SubscriptionsClient *servicebus.SubscriptionsClient
SubscriptionRulesClient *servicebus.RulesClient
DisasterRecoveryConfigsClient *disasterrecoveryconfigs.DisasterRecoveryConfigsClient
NamespacesAuthClient *namespacesauthorizationrule.NamespacesAuthorizationRuleClient
NamespacesClient *namespaces.NamespacesClient
QueuesAuthClient *queuesauthorizationrule.QueuesAuthorizationRuleClient
QueuesClient *queues.QueuesClient
SubscriptionsClient *subscriptions.SubscriptionsClient
SubscriptionRulesClient *rules.RulesClient
TopicsAuthClient *topicsauthorizationrule.TopicsAuthorizationRuleClient
TopicsClient *topics.TopicsClient
}

func NewClient(o *common.ClientOptions) *Client {
QueuesClient := servicebus.NewQueuesClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&QueuesClient.Client, o.ResourceManagerAuthorizer)

DisasterRecoveryConfigsClient := servicebus.NewDisasterRecoveryConfigsClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
DisasterRecoveryConfigsClient := disasterrecoveryconfigs.NewDisasterRecoveryConfigsClientWithBaseURI(o.ResourceManagerEndpoint)
o.ConfigureClient(&DisasterRecoveryConfigsClient.Client, o.ResourceManagerAuthorizer)

NamespacesClient := servicebus.NewNamespacesClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
NamespacesAuthClient := namespacesauthorizationrule.NewNamespacesAuthorizationRuleClientWithBaseURI(o.ResourceManagerEndpoint)
o.ConfigureClient(&NamespacesAuthClient.Client, o.ResourceManagerAuthorizer)

NamespacesClient := namespaces.NewNamespacesClientWithBaseURI(o.ResourceManagerEndpoint)
o.ConfigureClient(&NamespacesClient.Client, o.ResourceManagerAuthorizer)

TopicsClient := servicebus.NewTopicsClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&TopicsClient.Client, o.ResourceManagerAuthorizer)
QueuesAuthClient := queuesauthorizationrule.NewQueuesAuthorizationRuleClientWithBaseURI(o.ResourceManagerEndpoint)
o.ConfigureClient(&QueuesAuthClient.Client, o.ResourceManagerAuthorizer)

SubscriptionsClient := servicebus.NewSubscriptionsClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
QueuesClient := queues.NewQueuesClientWithBaseURI(o.ResourceManagerEndpoint)
o.ConfigureClient(&QueuesClient.Client, o.ResourceManagerAuthorizer)

SubscriptionsClient := subscriptions.NewSubscriptionsClientWithBaseURI(o.ResourceManagerEndpoint)
o.ConfigureClient(&SubscriptionsClient.Client, o.ResourceManagerAuthorizer)

SubscriptionRulesClient := servicebus.NewRulesClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
SubscriptionRulesClient := rules.NewRulesClientWithBaseURI(o.ResourceManagerEndpoint)
o.ConfigureClient(&SubscriptionRulesClient.Client, o.ResourceManagerAuthorizer)

TopicsAuthClient := topicsauthorizationrule.NewTopicsAuthorizationRuleClientWithBaseURI(o.ResourceManagerEndpoint)
o.ConfigureClient(&TopicsAuthClient.Client, o.ResourceManagerAuthorizer)

TopicsClient := topics.NewTopicsClientWithBaseURI(o.ResourceManagerEndpoint)
o.ConfigureClient(&TopicsClient.Client, o.ResourceManagerAuthorizer)

return &Client{
QueuesClient: &QueuesClient,
DisasterRecoveryConfigsClient: &DisasterRecoveryConfigsClient,
NamespacesAuthClient: &NamespacesAuthClient,
NamespacesClient: &NamespacesClient,
TopicsClient: &TopicsClient,
QueuesAuthClient: &QueuesAuthClient,
QueuesClient: &QueuesClient,
SubscriptionsClient: &SubscriptionsClient,
SubscriptionRulesClient: &SubscriptionRulesClient,
TopicsAuthClient: &TopicsAuthClient,
TopicsClient: &TopicsClient,
}
}
62 changes: 35 additions & 27 deletions internal/services/servicebus/internal.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,40 +7,42 @@ import (
"strings"
"time"

"github.com/Azure/azure-sdk-for-go/services/preview/servicebus/mgmt/2021-06-01-preview/servicebus"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/disasterrecoveryconfigs"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/namespaces"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/namespacesauthorizationrule"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
)

func expandAuthorizationRuleRights(d *pluginsdk.ResourceData) *[]servicebus.AccessRights {
rights := make([]servicebus.AccessRights, 0)
func expandAuthorizationRuleRights(d *pluginsdk.ResourceData) *[]namespacesauthorizationrule.AccessRights {
rights := make([]namespacesauthorizationrule.AccessRights, 0)

if d.Get("listen").(bool) {
rights = append(rights, servicebus.AccessRightsListen)
rights = append(rights, namespacesauthorizationrule.AccessRightsListen)
}

if d.Get("send").(bool) {
rights = append(rights, servicebus.AccessRightsSend)
rights = append(rights, namespacesauthorizationrule.AccessRightsSend)
}

if d.Get("manage").(bool) {
rights = append(rights, servicebus.AccessRightsManage)
rights = append(rights, namespacesauthorizationrule.AccessRightsManage)
}

return &rights
}

func flattenAuthorizationRuleRights(rights *[]servicebus.AccessRights) (listen, send, manage bool) {
func flattenAuthorizationRuleRights(rights *[]namespacesauthorizationrule.AccessRights) (listen, send, manage bool) {
// zero (initial) value for a bool in go is false

if rights != nil {
for _, right := range *rights {
switch right {
case servicebus.AccessRightsListen:
case namespacesauthorizationrule.AccessRightsListen:
listen = true
case servicebus.AccessRightsSend:
case namespacesauthorizationrule.AccessRightsSend:
send = true
case servicebus.AccessRightsManage:
case namespacesauthorizationrule.AccessRightsManage:
manage = true
default:
log.Printf("[DEBUG] Unknown Authorization Rule Right '%s'", right)
Expand Down Expand Up @@ -116,45 +118,51 @@ func authorizationRuleCustomizeDiff(ctx context.Context, d *pluginsdk.ResourceDi
return nil
}

func waitForPairedNamespaceReplication(ctx context.Context, meta interface{}, resourceGroup, namespaceName string, timeout time.Duration) error {
func waitForPairedNamespaceReplication(ctx context.Context, meta interface{}, id namespaces.NamespaceId, timeout time.Duration) error {
namespaceClient := meta.(*clients.Client).ServiceBus.NamespacesClient
namespace, err := namespaceClient.Get(ctx, resourceGroup, namespaceName)
resp, err := namespaceClient.Get(ctx, id)

if !strings.EqualFold(string(namespace.Sku.Name), "Premium") {
return err
if model := resp.Model; model != nil {
if !strings.EqualFold(string(model.Sku.Name), "Premium") {
return err
}
}

disasterRecoveryClient := meta.(*clients.Client).ServiceBus.DisasterRecoveryConfigsClient
disasterRecoveryResponse, err := disasterRecoveryClient.List(ctx, resourceGroup, namespaceName)
if disasterRecoveryResponse.Values() == nil {
disasterRecoveryNamespaceId := disasterrecoveryconfigs.NewNamespaceID(id.SubscriptionId, id.ResourceGroupName, id.NamespaceName)
disasterRecoveryResponse, err := disasterRecoveryClient.List(ctx, disasterRecoveryNamespaceId)

if disasterRecoveryResponse.Model == nil {
return err
}

if len(disasterRecoveryResponse.Values()) != 1 {
if len(*disasterRecoveryResponse.Model) != 1 {
return err
}

aliasName := *disasterRecoveryResponse.Values()[0].Name
aliasName := (*disasterRecoveryResponse.Model)[0].Name

disasterRecoveryConfigId := disasterrecoveryconfigs.NewDisasterRecoveryConfigID(disasterRecoveryNamespaceId.SubscriptionId, disasterRecoveryNamespaceId.ResourceGroupName, disasterRecoveryNamespaceId.NamespaceName, *aliasName)

stateConf := &pluginsdk.StateChangeConf{
Pending: []string{string(servicebus.ProvisioningStateDRAccepted)},
Target: []string{string(servicebus.ProvisioningStateDRSucceeded)},
Pending: []string{string(disasterrecoveryconfigs.ProvisioningStateDRAccepted)},
Target: []string{string(disasterrecoveryconfigs.ProvisioningStateDRSucceeded)},
MinTimeout: 30 * time.Second,
Timeout: timeout,
Refresh: func() (interface{}, string, error) {
read, err := disasterRecoveryClient.Get(ctx, resourceGroup, namespaceName, aliasName)
resp, err := disasterRecoveryClient.Get(ctx, disasterRecoveryConfigId)
if err != nil {
return nil, "error", fmt.Errorf("wait read Service Bus Namespace Disaster Recovery Configs %q (Namespace %q / Resource Group %q): %v", aliasName, namespaceName, resourceGroup, err)
return nil, "error", fmt.Errorf("wait read for %s: %v", disasterRecoveryConfigId, err)
}

if props := read.ArmDisasterRecoveryProperties; props != nil {
if props.ProvisioningState == servicebus.ProvisioningStateDRFailed {
return read, "failed", fmt.Errorf("replication for Service Bus Namespace Disaster Recovery Configs %q (Namespace %q / Resource Group %q) failed", aliasName, namespaceName, resourceGroup)
if model := resp.Model; model != nil {
if *model.Properties.ProvisioningState == disasterrecoveryconfigs.ProvisioningStateDRFailed {
return resp, "failed", fmt.Errorf("replication for %s failed", disasterRecoveryConfigId)
}
return read, string(props.ProvisioningState), nil
return resp, string(*model.Properties.ProvisioningState), nil
}

return read, "nil", fmt.Errorf("waiting for replication error Service Bus Namespace Disaster Recovery Configs %q (Namespace %q / Resource Group %q): provisioning state is nil", aliasName, namespaceName, resourceGroup)
return resp, "nil", fmt.Errorf("waiting for replication error for %s: provisioning state is nil", disasterRecoveryConfigId)
},
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"context"
"strings"

"github.com/hashicorp/terraform-provider-azurerm/internal/services/servicebus/parse"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/namespaces"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
)

Expand Down Expand Up @@ -70,7 +70,7 @@ func (NamespaceNetworkRuleSetV0ToV1) UpgradeFunc() pluginsdk.StateUpgraderFunc {
oldId = strings.TrimSuffix(oldId, "/networkrulesets/default")
}

id, err := parse.NamespaceID(oldId)
id, err := namespaces.ParseNamespaceID(oldId)
if err != nil {
return nil, err
}
Expand Down
4 changes: 2 additions & 2 deletions internal/services/servicebus/migration/subscription.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package migration
import (
"context"

"github.com/hashicorp/terraform-provider-azurerm/internal/services/servicebus/parse"
"github.com/hashicorp/go-azure-sdk/resource-manager/servicebus/2021-06-01-preview/subscriptions"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
)

Expand Down Expand Up @@ -91,7 +91,7 @@ func (ServiceBusSubscriptionV0ToV1) UpgradeFunc() pluginsdk.StateUpgraderFunc {
return func(ctx context.Context, rawState map[string]interface{}, meta interface{}) (map[string]interface{}, error) {

oldId := rawState["id"].(string)
id, err := parse.SubscriptionID(oldId)
id, err := subscriptions.ParseSubscriptions2ID(oldId)
if err != nil {
return nil, err
}
Expand Down
69 changes: 0 additions & 69 deletions internal/services/servicebus/parse/namespace.go

This file was deleted.

75 changes: 0 additions & 75 deletions internal/services/servicebus/parse/namespace_authorization_rule.go

This file was deleted.

Loading

0 comments on commit 1ca5c10

Please sign in to comment.