Skip to content

Commit 442b581

Browse files
authored
fix synapse endpoint not available issue in other cloud (#9100)
1 parent d708c94 commit 442b581

File tree

4 files changed

+36
-10
lines changed

4 files changed

+36
-10
lines changed

azurerm/internal/clients/builder.go

+11-3
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ package clients
33
import (
44
"context"
55
"fmt"
6+
"log"
67
"strings"
78

9+
"github.com/Azure/go-autorest/autorest"
10+
"github.com/Azure/go-autorest/autorest/azure"
811
"github.com/hashicorp/go-azure-helpers/authentication"
912
"github.com/hashicorp/go-azure-helpers/sender"
1013
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/common"
@@ -98,9 +101,14 @@ func Build(ctx context.Context, builder ClientBuilder) (*Client, error) {
98101
}
99102

100103
// Synapse Endpoints
101-
synapseAuth, err := builder.AuthConfig.GetAuthorizationToken(sender, oauthConfig, env.ResourceIdentifiers.Synapse)
102-
if err != nil {
103-
return nil, err
104+
var synapseAuth autorest.Authorizer = nil
105+
if env.ResourceIdentifiers.Synapse != azure.NotAvailable {
106+
synapseAuth, err = builder.AuthConfig.GetAuthorizationToken(sender, oauthConfig, env.ResourceIdentifiers.Synapse)
107+
if err != nil {
108+
return nil, err
109+
}
110+
} else {
111+
log.Printf("[DEBUG] Skipping building the Synapse Authorizer since this is not supported in the current Azure Environment")
104112
}
105113

106114
// Key Vault Endpoints

azurerm/internal/services/synapse/client/client.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,12 @@ func NewClient(o *common.ClientOptions) *Client {
5252
}
5353
}
5454

55-
func (client Client) AccessControlClient(workspaceName, synapseEndpointSuffix string) *accesscontrol.BaseClient {
55+
func (client Client) AccessControlClient(workspaceName, synapseEndpointSuffix string) (*accesscontrol.BaseClient, error) {
56+
if client.synapseAuthorizer == nil {
57+
return nil, fmt.Errorf("Synapse is not supported in this Azure Environment")
58+
}
5659
endpoint := fmt.Sprintf("https://%s.%s", workspaceName, synapseEndpointSuffix)
5760
accessControlClient := accesscontrol.New(endpoint)
5861
accessControlClient.Client.Authorizer = client.synapseAuthorizer
59-
return &accessControlClient
62+
return &accessControlClient, nil
6063
}

azurerm/internal/services/synapse/synapse_role_assignment_resource.go

+12-3
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,10 @@ func resourceArmSynapseRoleAssignmentCreate(d *schema.ResourceData, meta interfa
7878
principalID := d.Get("principal_id").(string)
7979
roleName := d.Get("role_name").(string)
8080

81-
client := synapseClient.AccessControlClient(workspaceId.Name, environment.SynapseEndpointSuffix)
81+
client, err := synapseClient.AccessControlClient(workspaceId.Name, environment.SynapseEndpointSuffix)
82+
if err != nil {
83+
return err
84+
}
8285
roleId, err := getRoleIdByName(ctx, client, roleName)
8386
if err != nil {
8487
return err
@@ -128,7 +131,10 @@ func resourceArmSynapseRoleAssignmentRead(d *schema.ResourceData, meta interface
128131
return err
129132
}
130133

131-
client := synapseClient.AccessControlClient(id.Workspace.Name, environment.SynapseEndpointSuffix)
134+
client, err := synapseClient.AccessControlClient(id.Workspace.Name, environment.SynapseEndpointSuffix)
135+
if err != nil {
136+
return err
137+
}
132138
resp, err := client.GetRoleAssignmentByID(ctx, id.Id)
133139
if err != nil {
134140
if utils.ResponseWasNotFound(resp.Response) {
@@ -163,7 +169,10 @@ func resourceArmSynapseRoleAssignmentDelete(d *schema.ResourceData, meta interfa
163169
return err
164170
}
165171

166-
client := synapseClient.AccessControlClient(id.Workspace.Name, environment.SynapseEndpointSuffix)
172+
client, err := synapseClient.AccessControlClient(id.Workspace.Name, environment.SynapseEndpointSuffix)
173+
if err != nil {
174+
return err
175+
}
167176
if _, err := client.DeleteRoleAssignmentByID(ctx, id.Id); err != nil {
168177
return fmt.Errorf("deleting Synapse RoleAssignment %q (workspace %q): %+v", id, id.Workspace.Name, err)
169178
}

azurerm/internal/services/synapse/tests/synapse_role_assignment_resource_test.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,10 @@ func testCheckAzureRMSynapseRoleAssignmentExists(resourceName string) resource.T
6161
if err != nil {
6262
return err
6363
}
64-
client := synapseClient.AccessControlClient(id.Workspace.Name, environment.SynapseEndpointSuffix)
64+
client, err := synapseClient.AccessControlClient(id.Workspace.Name, environment.SynapseEndpointSuffix)
65+
if err != nil {
66+
return err
67+
}
6568
if resp, err := client.GetRoleAssignmentByID(ctx, id.Id); err != nil {
6669
if !utils.ResponseWasNotFound(resp.Response) {
6770
return fmt.Errorf("bad: Synapse role assignment %q does not exist", id.Id)
@@ -93,7 +96,10 @@ func testCheckAzureRMSynapseRoleAssignmentDestroy(s *terraform.State) error {
9396
return nil
9497
}
9598

96-
client := synapseClient.AccessControlClient(id.Workspace.Name, environment.SynapseEndpointSuffix)
99+
client, err := synapseClient.AccessControlClient(id.Workspace.Name, environment.SynapseEndpointSuffix)
100+
if err != nil {
101+
return err
102+
}
97103
resp, err := client.GetRoleAssignmentByID(ctx, id.Id)
98104
if err != nil {
99105
if !utils.ResponseWasNotFound(resp.Response) {

0 commit comments

Comments
 (0)