@@ -9,33 +9,52 @@ import (
99 "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-06-01/resources"
1010 "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2021-04-01/storage"
1111
12+ "github.com/Azure/go-autorest/autorest"
1213 "github.com/Azure/go-autorest/autorest/azure/auth"
1314
1415 "terraform-provider-iterative/task/common"
1516 "terraform-provider-iterative/task/common/ssh"
1617)
1718
1819func New (ctx context.Context , cloud common.Cloud , tags map [string ]string ) (* Client , error ) {
19- settings , err := auth .GetSettingsFromEnvironment ()
20- if err != nil {
21- return nil , err
22- }
23-
24- subscription := settings .GetSubscriptionID ()
25- if subscription == "" {
26- return nil , errors .New ("subscription environment variable not found" )
27- }
28-
29- authorizer , err := settings .GetAuthorizer ()
30- if err != nil {
31- return nil , err
20+ var authorizer autorest.Authorizer
21+
22+ if azCredentials := cloud .Credentials .AZCredentials ; azCredentials != nil {
23+ au , err := auth .NewClientCredentialsConfig (
24+ azCredentials .ClientID ,
25+ azCredentials .ClientSecret ,
26+ azCredentials .TenantID ,
27+ ).Authorizer ()
28+ if err != nil {
29+ return nil , err
30+ }
31+ authorizer = au
32+ } else {
33+ settings , err := auth .GetSettingsFromEnvironment ()
34+ if err != nil {
35+ return nil , err
36+ }
37+ credentials , err := settings .GetClientCredentials ()
38+ if err != nil {
39+ return nil , err
40+ }
41+ authorizer , err = settings .GetAuthorizer ()
42+ if err != nil {
43+ return nil , err
44+ }
45+
46+ cloud .Credentials .AZCredentials = & common.AZCredentials {
47+ SubscriptionID : settings .GetSubscriptionID (),
48+ ClientID : credentials .ClientID ,
49+ ClientSecret : credentials .ClientSecret ,
50+ TenantID : credentials .TenantID ,
51+ }
3252 }
3353
3454 agent := "tpi"
3555
3656 c := & Client {
37- Cloud : cloud ,
38- Settings : settings ,
57+ Cloud : cloud ,
3958 }
4059
4160 for key , value := range tags {
@@ -54,75 +73,79 @@ func New(ctx context.Context, cloud common.Cloud, tags map[string]string) (*Clie
5473 region = val
5574 }
5675
76+ if cloud .Credentials .AZCredentials .SubscriptionID == "" {
77+ return nil , errors .New ("subscription environment variable not found" )
78+ }
79+
5780 c .Region = region
5881
59- c .Services .Groups = resources .NewGroupsClient (subscription )
82+ c .Services .Groups = resources .NewGroupsClient (cloud . Credentials . AZCredentials . SubscriptionID )
6083 c .Services .Groups .Authorizer = authorizer
6184 if err := c .Services .Groups .AddToUserAgent (agent ); err != nil {
6285 return nil , err
6386 }
6487
65- c .Services .SecurityGroups = network .NewSecurityGroupsClient (subscription )
88+ c .Services .SecurityGroups = network .NewSecurityGroupsClient (cloud . Credentials . AZCredentials . SubscriptionID )
6689 c .Services .SecurityGroups .Authorizer = authorizer
6790 if err := c .Services .SecurityGroups .AddToUserAgent (agent ); err != nil {
6891 return nil , err
6992 }
7093
71- c .Services .PublicIPPrefixes = network .NewPublicIPPrefixesClient (subscription )
94+ c .Services .PublicIPPrefixes = network .NewPublicIPPrefixesClient (cloud . Credentials . AZCredentials . SubscriptionID )
7295 c .Services .PublicIPPrefixes .Authorizer = authorizer
7396 if err := c .Services .PublicIPPrefixes .AddToUserAgent (agent ); err != nil {
7497 return nil , err
7598 }
7699
77- c .Services .PublicIPAddresses = network .NewPublicIPAddressesClient (subscription )
100+ c .Services .PublicIPAddresses = network .NewPublicIPAddressesClient (cloud . Credentials . AZCredentials . SubscriptionID )
78101 c .Services .PublicIPAddresses .Authorizer = authorizer
79102 if err := c .Services .PublicIPAddresses .AddToUserAgent (agent ); err != nil {
80103 return nil , err
81104 }
82105
83- c .Services .VirtualNetworks = network .NewVirtualNetworksClient (subscription )
106+ c .Services .VirtualNetworks = network .NewVirtualNetworksClient (cloud . Credentials . AZCredentials . SubscriptionID )
84107 c .Services .VirtualNetworks .Authorizer = authorizer
85108 if err := c .Services .VirtualNetworks .AddToUserAgent (agent ); err != nil {
86109 return nil , err
87110 }
88111
89- c .Services .Subnets = network .NewSubnetsClient (subscription )
112+ c .Services .Subnets = network .NewSubnetsClient (cloud . Credentials . AZCredentials . SubscriptionID )
90113 c .Services .Subnets .Authorizer = authorizer
91114 if err := c .Services .Subnets .AddToUserAgent (agent ); err != nil {
92115 return nil , err
93116 }
94117
95- c .Services .Interfaces = network .NewInterfacesClient (subscription )
118+ c .Services .Interfaces = network .NewInterfacesClient (cloud . Credentials . AZCredentials . SubscriptionID )
96119 c .Services .Interfaces .Authorizer = authorizer
97120 if err := c .Services .Interfaces .AddToUserAgent (agent ); err != nil {
98121 return nil , err
99122 }
100123
101- c .Services .VirtualMachines = compute .NewVirtualMachinesClient (subscription )
124+ c .Services .VirtualMachines = compute .NewVirtualMachinesClient (cloud . Credentials . AZCredentials . SubscriptionID )
102125 c .Services .VirtualMachines .Authorizer = authorizer
103126 if err := c .Services .VirtualMachines .AddToUserAgent (agent ); err != nil {
104127 return nil , err
105128 }
106129
107- c .Services .VirtualMachineScaleSets = compute .NewVirtualMachineScaleSetsClient (subscription )
130+ c .Services .VirtualMachineScaleSets = compute .NewVirtualMachineScaleSetsClient (cloud . Credentials . AZCredentials . SubscriptionID )
108131 c .Services .VirtualMachineScaleSets .Authorizer = authorizer
109132 if err := c .Services .VirtualMachineScaleSets .AddToUserAgent (agent ); err != nil {
110133 return nil , err
111134 }
112135
113- c .Services .VirtualMachineScaleSetVMs = compute .NewVirtualMachineScaleSetVMsClient (subscription )
136+ c .Services .VirtualMachineScaleSetVMs = compute .NewVirtualMachineScaleSetVMsClient (cloud . Credentials . AZCredentials . SubscriptionID )
114137 c .Services .VirtualMachineScaleSetVMs .Authorizer = authorizer
115138 if err := c .Services .VirtualMachineScaleSetVMs .AddToUserAgent (agent ); err != nil {
116139 return nil , err
117140 }
118141
119- c .Services .StorageAccounts = storage .NewAccountsClient (subscription )
142+ c .Services .StorageAccounts = storage .NewAccountsClient (cloud . Credentials . AZCredentials . SubscriptionID )
120143 c .Services .StorageAccounts .Authorizer = authorizer
121144 if err := c .Services .StorageAccounts .AddToUserAgent (agent ); err != nil {
122145 return nil , err
123146 }
124147
125- c .Services .BlobContainers = storage .NewBlobContainersClient (subscription )
148+ c .Services .BlobContainers = storage .NewBlobContainersClient (cloud . Credentials . AZCredentials . SubscriptionID )
126149 c .Services .BlobContainers .Authorizer = authorizer
127150 if err := c .Services .BlobContainers .AddToUserAgent (agent ); err != nil {
128151 return nil , err
@@ -153,10 +176,7 @@ type Client struct {
153176}
154177
155178func (c * Client ) GetKeyPair (ctx context.Context ) (* ssh.DeterministicSSHKeyPair , error ) {
156- credentials , err := c .Settings .GetClientCredentials ()
157- if err != nil {
158- return nil , err
159- }
179+ credentials := c .Cloud .Credentials .AZCredentials
160180
161181 if len (credentials .ClientSecret ) == 0 {
162182 return nil , errors .New ("unable to find client secret" )
0 commit comments