Skip to content

Commit

Permalink
[email protected] [email protected] azure-sdk-for-go@v32 (#103)
Browse files Browse the repository at this point in the history
  • Loading branch information
katbyte authored Aug 27, 2019
1 parent c5ece24 commit 23b4d42
Show file tree
Hide file tree
Showing 229 changed files with 3,260 additions and 18,175 deletions.
90 changes: 27 additions & 63 deletions azurestack/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@ package azurestack
import (
"context"
"fmt"
"log"
"net/http"
"net/http/httputil"
"os"
"sync"
"time"
Expand All @@ -18,9 +15,9 @@ import (
"github.com/Azure/azure-sdk-for-go/services/graphrbac/1.6/graphrbac"
mainStorage "github.com/Azure/azure-sdk-for-go/storage"
"github.com/Azure/go-autorest/autorest"
"github.com/Azure/go-autorest/autorest/adal"
"github.com/Azure/go-autorest/autorest/azure"
"github.com/hashicorp/go-azure-helpers/authentication"
"github.com/hashicorp/go-azure-helpers/sender"
"github.com/hashicorp/terraform/terraform"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils"
)
Expand All @@ -40,11 +37,6 @@ type ArmClient struct {
// Authentication
servicePrincipalsClient graphrbac.ServicePrincipalsClient

// Compute
availSetClient compute.AvailabilitySetsClient
diskClient compute.DisksClient
vmExtensionClient compute.VirtualMachineExtensionsClient

// DNS
dnsClient dns.RecordSetsClient
zonesClient dns.ZonesClient
Expand All @@ -60,59 +52,36 @@ type ArmClient struct {
providersClient resources.ProvidersClient
resourcesClient resources.Client

resourceGroupsClient resources.GroupsClient
deploymentsClient resources.DeploymentsClient

// Compute
availSetClient compute.AvailabilitySetsClient
diskClient compute.DisksClient
vmExtensionClient compute.VirtualMachineExtensionsClient
vmClient compute.VirtualMachinesClient
vmImageClient compute.VirtualMachineImagesClient
vmScaleSetClient compute.VirtualMachineScaleSetsClient
storageServiceClient storage.AccountsClient

// Network
vnetClient network.VirtualNetworksClient
secGroupClient network.SecurityGroupsClient
publicIPClient network.PublicIPAddressesClient
subnetClient network.SubnetsClient
loadBalancerClient network.LoadBalancersClient
routesClient network.RoutesClient
routeTablesClient network.RouteTablesClient

resourceGroupsClient resources.GroupsClient
deploymentsClient resources.DeploymentsClient
}

func (c *ArmClient) configureClient(client *autorest.Client, auth autorest.Authorizer) {
setUserAgent(client)
client.Authorizer = auth
client.Sender = autorest.CreateSender(withRequestLogging())
client.Sender = sender.BuildSender("AzureStack")
client.SkipResourceProviderRegistration = c.skipProviderRegistration
client.PollingDuration = 60 * time.Minute
}

func withRequestLogging() autorest.SendDecorator {
return func(s autorest.Sender) autorest.Sender {
return autorest.SenderFunc(func(r *http.Request) (*http.Response, error) {
// dump request to wire format
if dump, err := httputil.DumpRequestOut(r, true); err == nil {
log.Printf("[DEBUG] azurestack Request: \n%s\n", dump)
} else {
// fallback to basic message
log.Printf("[DEBUG] azurestack Request: %s to %s\n", r.Method, r.URL)
}

resp, err := s.Do(r)
if resp != nil {
// dump response to wire format
if dump, err := httputil.DumpResponse(resp, true); err == nil {
log.Printf("[DEBUG] azurestack Response for %s: \n%s\n", r.URL, dump)
} else {
// fallback to basic message
log.Printf("[DEBUG] azurestack Response: %s for %s\n", resp.Status, r.URL)
}
} else {
log.Printf("[DEBUG] Request to %s completed with no response", r.URL)
}
return resp, err
})
}
}

func setUserAgent(client *autorest.Client) {
tfVersion := fmt.Sprintf("HashiCorp-Terraform-v%s", terraform.VersionString())

Expand All @@ -131,56 +100,51 @@ func setUserAgent(client *autorest.Client) {

// getArmClient is a helper method which returns a fully instantiated
// *ArmClient based on the Config's current settings.
func getArmClient(c *authentication.Config, skipProviderRegistration bool) (*ArmClient, error) {
env, err := authentication.LoadEnvironmentFromUrl(c.CustomResourceManagerEndpoint)
func getArmClient(authCfg *authentication.Config, skipProviderRegistration bool) (*ArmClient, error) {
env, err := authentication.LoadEnvironmentFromUrl(authCfg.CustomResourceManagerEndpoint)
if err != nil {
return nil, err
}

// client declarations:
client := ArmClient{
clientId: c.ClientID,
tenantId: c.TenantID,
subscriptionId: c.SubscriptionID,
clientId: authCfg.ClientID,
tenantId: authCfg.TenantID,
subscriptionId: authCfg.SubscriptionID,
environment: *env,
usingServicePrincipal: c.AuthenticatedAsAServicePrincipal,
usingServicePrincipal: authCfg.AuthenticatedAsAServicePrincipal,
skipProviderRegistration: skipProviderRegistration,
}

oauthConfig, err := adal.NewOAuthConfig(env.ActiveDirectoryEndpoint, c.TenantID)
oauth, err := authCfg.BuildOAuthConfig(env.ActiveDirectoryEndpoint)
if err != nil {
return nil, err
}

// OAuthConfigForTenant returns a pointer, which can be nil.
if oauthConfig == nil {
return nil, fmt.Errorf("Unable to configure OAuthConfig for tenant %s", c.TenantID)
}

sender := autorest.CreateSender(withRequestLogging())
sender := sender.BuildSender("AzureStack")

// Resource Manager endpoints
endpoint := env.ResourceManagerEndpoint

// Instead of the same endpoint use token audience to get the correct token.
auth, err := c.GetAuthorizationToken(oauthConfig, env.TokenAudience)
auth, err := authCfg.GetAuthorizationToken(sender, oauth, env.TokenAudience)
if err != nil {
return nil, err
}

// Graph Endpoints
graphEndpoint := env.GraphEndpoint
graphAuth, err := c.GetAuthorizationToken(oauthConfig, graphEndpoint)
graphAuth, err := authCfg.GetAuthorizationToken(sender, oauth, graphEndpoint)
if err != nil {
return nil, err
}

client.registerAuthentication(graphEndpoint, c.TenantID, graphAuth, sender)
client.registerComputeClients(endpoint, c.SubscriptionID, auth)
client.registerDNSClients(endpoint, c.SubscriptionID, auth)
client.registerNetworkingClients(endpoint, c.SubscriptionID, auth)
client.registerResourcesClients(endpoint, c.SubscriptionID, auth)
client.registerStorageClients(endpoint, c.SubscriptionID, auth)
client.registerAuthentication(graphEndpoint, client.tenantId, graphAuth, sender)
client.registerComputeClients(endpoint, client.subscriptionId, auth)
client.registerDNSClients(endpoint, client.subscriptionId, auth)
client.registerNetworkingClients(endpoint, client.subscriptionId, auth)
client.registerResourcesClients(endpoint, client.subscriptionId, auth)
client.registerStorageClients(endpoint, client.subscriptionId, auth)

return &client, nil
}
Expand Down Expand Up @@ -364,7 +328,7 @@ func (armClient *ArmClient) getBlobStorageClientForStorageAccount(ctx context.Co
}

storageClient, err := mainStorage.NewClient(storageAccountName, key, armClient.environment.StorageEndpointSuffix,
mainStorage.DefaultAPIVersion, true)
"2016-05-31", true)
if err != nil {
return nil, true, fmt.Errorf("Error creating storage client for storage account %q: %s", storageAccountName, err)
}
Expand Down
2 changes: 1 addition & 1 deletion azurestack/resource_arm_resource_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ func resourceArmResourceGroupDelete(d *schema.ResourceData, meta interface{}) er
return fmt.Errorf("Error deleting Resource Group %q: %+v", name, err)
}

err = deleteFuture.WaitForCompletion(ctx, client.Client)
err = deleteFuture.WaitForCompletionRef(ctx, client.Client)
if err != nil {
if response.WasNotFound(deleteFuture.Response()) {
return nil
Expand Down
2 changes: 1 addition & 1 deletion azurestack/resource_arm_resource_group_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ func testCheckAzureStackResourceGroupDisappears(name string) resource.TestCheckF
return fmt.Errorf("Failed deleting Resource Group %q: %+v", resourceGroup, err)
}

err = deleteFuture.WaitForCompletion(ctx, client.Client)
err = deleteFuture.WaitForCompletionRef(ctx, client.Client)
if err != nil {
return fmt.Errorf("Failed long polling for the deletion of Resource Group %q: %+v", resourceGroup, err)
}
Expand Down
2 changes: 1 addition & 1 deletion azurestack/resource_arm_virtual_machine_scale_set.go
Original file line number Diff line number Diff line change
Expand Up @@ -712,7 +712,7 @@ func resourceArmVirtualMachineScaleSetCreate(d *schema.ResourceData, meta interf
return err
}

if err = future.WaitForCompletion(ctx, client.Client); err != nil {
if err = future.WaitForCompletionRef(ctx, client.Client); err != nil {
return fmt.Errorf("Error Creating/Updating Virtual Machine Scale Set %s (resource group %s) ID: %+v", name, resGroup, err)
}

Expand Down
4 changes: 2 additions & 2 deletions azurestack/resource_arm_virtual_machine_scale_set_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -735,7 +735,7 @@ func testCheckAzureStackVirtualMachineScaleSetDisappears(name string) resource.T
return fmt.Errorf("Bad: Delete on vmScaleSetClient: %+v", err)
}

err = future.WaitForCompletion(ctx, client.Client)
err = future.WaitForCompletionRef(ctx, client.Client)
if err != nil {
return fmt.Errorf("Bad: Delete on vmScaleSetClient: %+v", err)
}
Expand Down Expand Up @@ -3897,7 +3897,7 @@ func testGeneralizeVMImage(resourceGroup string, vmName string, userName string,
return fmt.Errorf("Bad: Deallocating error %+v", err)
}

err = future.WaitForCompletion(ctx, vmClient.Client)
err = future.WaitForCompletionRef(ctx, vmClient.Client)
if err != nil {
return fmt.Errorf("Bad: Deallocating error %+v", err)
}
Expand Down
12 changes: 8 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,21 @@ module github.com/terraform-providers/terraform-provider-azurestack
go 1.12

require (
contrib.go.opencensus.io/exporter/ocagent v0.5.0 // indirect
github.com/Azure/azure-sdk-for-go v30.0.0+incompatible
github.com/Azure/go-autorest v11.7.0+incompatible
github.com/Azure/azure-sdk-for-go v32.5.0+incompatible
github.com/Azure/go-autorest v13.0.0+incompatible // indirect
github.com/Azure/go-autorest/autorest v0.9.0
github.com/Azure/go-autorest/autorest/adal v0.6.0
github.com/davecgh/go-spew v1.1.1
github.com/dnaeon/go-vcr v1.0.1 // indirect
github.com/golang/protobuf v1.3.1 // indirect
github.com/hashicorp/errwrap v1.0.0
github.com/hashicorp/go-azure-helpers v0.3.2
github.com/hashicorp/go-azure-helpers v0.7.0
github.com/hashicorp/go-hclog v0.8.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 // indirect
github.com/hashicorp/terraform v0.12.6
github.com/terraform-providers/terraform-provider-azurerm v1.15.0
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4
google.golang.org/api v0.4.0 // indirect
google.golang.org/grpc v1.20.1 // indirect
)
Loading

0 comments on commit 23b4d42

Please sign in to comment.