github.com/shvar/terraform@v0.6.9-0.20151215234924-3365cd2231df/builtin/providers/azurerm/config.go (about) 1 package azurerm 2 3 import ( 4 "log" 5 "net/http" 6 7 "github.com/Azure/azure-sdk-for-go/Godeps/_workspace/src/github.com/Azure/go-autorest/autorest/azure" 8 "github.com/Azure/azure-sdk-for-go/arm/compute" 9 "github.com/Azure/azure-sdk-for-go/arm/network" 10 "github.com/Azure/azure-sdk-for-go/arm/resources" 11 "github.com/Azure/azure-sdk-for-go/arm/scheduler" 12 "github.com/Azure/azure-sdk-for-go/arm/storage" 13 "github.com/Azure/go-autorest/autorest" 14 ) 15 16 // ArmClient contains the handles to all the specific Azure Resource Manager 17 // resource classes' respective clients. 18 type ArmClient struct { 19 availSetClient compute.AvailabilitySetsClient 20 usageOpsClient compute.UsageOperationsClient 21 vmExtensionImageClient compute.VirtualMachineExtensionImagesClient 22 vmExtensionClient compute.VirtualMachineExtensionsClient 23 vmImageClient compute.VirtualMachineImagesClient 24 vmClient compute.VirtualMachinesClient 25 26 appGatewayClient network.ApplicationGatewaysClient 27 ifaceClient network.InterfacesClient 28 loadBalancerClient network.LoadBalancersClient 29 localNetConnClient network.LocalNetworkGatewaysClient 30 publicIPClient network.PublicIPAddressesClient 31 secGroupClient network.SecurityGroupsClient 32 secRuleClient network.SecurityRulesClient 33 subnetClient network.SubnetsClient 34 netUsageClient network.UsagesClient 35 vnetGatewayConnectionsClient network.VirtualNetworkGatewayConnectionsClient 36 vnetGatewayClient network.VirtualNetworkGatewaysClient 37 vnetClient network.VirtualNetworksClient 38 39 resourceGroupClient resources.GroupsClient 40 tagsClient resources.TagsClient 41 42 jobsClient scheduler.JobsClient 43 jobsCollectionsClient scheduler.JobCollectionsClient 44 45 storageServiceClient storage.AccountsClient 46 storageUsageClient storage.UsageOperationsClient 47 } 48 49 func withRequestLogging() autorest.SendDecorator { 50 return func(s autorest.Sender) autorest.Sender { 51 return autorest.SenderFunc(func(r *http.Request) (*http.Response, error) { 52 log.Printf("[DEBUG] Sending Azure RM Request %s to %s\n", r.Method, r.URL) 53 resp, err := s.Do(r) 54 log.Printf("[DEBUG] Received Azure RM Request status code %s for %s\n", resp.Status, r.URL) 55 return resp, err 56 }) 57 } 58 } 59 60 // getArmClient is a helper method which returns a fully instantiated 61 // *ArmClient based on the Config's current settings. 62 func (c *Config) getArmClient() (*ArmClient, error) { 63 spt, err := azure.NewServicePrincipalToken(c.ClientID, c.ClientSecret, c.TenantID, azure.AzureResourceManagerScope) 64 if err != nil { 65 return nil, err 66 } 67 68 // client declarations: 69 client := ArmClient{} 70 71 // NOTE: these declarations should be left separate for clarity should the 72 // clients be wished to be configured with custom Responders/PollingModess etc... 73 asc := compute.NewAvailabilitySetsClient(c.SubscriptionID) 74 asc.Authorizer = spt 75 asc.Sender = autorest.CreateSender(withRequestLogging()) 76 client.availSetClient = asc 77 78 uoc := compute.NewUsageOperationsClient(c.SubscriptionID) 79 uoc.Authorizer = spt 80 uoc.Sender = autorest.CreateSender(withRequestLogging()) 81 client.usageOpsClient = uoc 82 83 vmeic := compute.NewVirtualMachineExtensionImagesClient(c.SubscriptionID) 84 vmeic.Authorizer = spt 85 vmeic.Sender = autorest.CreateSender(withRequestLogging()) 86 client.vmExtensionImageClient = vmeic 87 88 vmec := compute.NewVirtualMachineExtensionsClient(c.SubscriptionID) 89 vmec.Authorizer = spt 90 vmec.Sender = autorest.CreateSender(withRequestLogging()) 91 client.vmExtensionClient = vmec 92 93 vmic := compute.NewVirtualMachineImagesClient(c.SubscriptionID) 94 vmic.Authorizer = spt 95 vmic.Sender = autorest.CreateSender(withRequestLogging()) 96 client.vmImageClient = vmic 97 98 vmc := compute.NewVirtualMachinesClient(c.SubscriptionID) 99 vmc.Authorizer = spt 100 vmc.Sender = autorest.CreateSender(withRequestLogging()) 101 client.vmClient = vmc 102 103 agc := network.NewApplicationGatewaysClient(c.SubscriptionID) 104 agc.Authorizer = spt 105 agc.Sender = autorest.CreateSender(withRequestLogging()) 106 client.appGatewayClient = agc 107 108 ifc := network.NewInterfacesClient(c.SubscriptionID) 109 ifc.Authorizer = spt 110 ifc.Sender = autorest.CreateSender(withRequestLogging()) 111 client.ifaceClient = ifc 112 113 lbc := network.NewLoadBalancersClient(c.SubscriptionID) 114 lbc.Authorizer = spt 115 lbc.Sender = autorest.CreateSender(withRequestLogging()) 116 client.loadBalancerClient = lbc 117 118 lgc := network.NewLocalNetworkGatewaysClient(c.SubscriptionID) 119 lgc.Authorizer = spt 120 lgc.Sender = autorest.CreateSender(withRequestLogging()) 121 client.localNetConnClient = lgc 122 123 pipc := network.NewPublicIPAddressesClient(c.SubscriptionID) 124 pipc.Authorizer = spt 125 pipc.Sender = autorest.CreateSender(withRequestLogging()) 126 client.publicIPClient = pipc 127 128 sgc := network.NewSecurityGroupsClient(c.SubscriptionID) 129 sgc.Authorizer = spt 130 sgc.Sender = autorest.CreateSender(withRequestLogging()) 131 client.secGroupClient = sgc 132 133 src := network.NewSecurityRulesClient(c.SubscriptionID) 134 src.Authorizer = spt 135 src.Sender = autorest.CreateSender(withRequestLogging()) 136 client.secRuleClient = src 137 138 snc := network.NewSubnetsClient(c.SubscriptionID) 139 snc.Authorizer = spt 140 snc.Sender = autorest.CreateSender(withRequestLogging()) 141 client.subnetClient = snc 142 143 vgcc := network.NewVirtualNetworkGatewayConnectionsClient(c.SubscriptionID) 144 vgcc.Authorizer = spt 145 vgcc.Sender = autorest.CreateSender(withRequestLogging()) 146 client.vnetGatewayConnectionsClient = vgcc 147 148 vgc := network.NewVirtualNetworkGatewaysClient(c.SubscriptionID) 149 vgc.Authorizer = spt 150 vgc.Sender = autorest.CreateSender(withRequestLogging()) 151 client.vnetGatewayClient = vgc 152 153 vnc := network.NewVirtualNetworksClient(c.SubscriptionID) 154 vnc.Authorizer = spt 155 vnc.Sender = autorest.CreateSender(withRequestLogging()) 156 client.vnetClient = vnc 157 158 rgc := resources.NewGroupsClient(c.SubscriptionID) 159 rgc.Authorizer = spt 160 rgc.Sender = autorest.CreateSender(withRequestLogging()) 161 client.resourceGroupClient = rgc 162 163 tc := resources.NewTagsClient(c.SubscriptionID) 164 tc.Authorizer = spt 165 tc.Sender = autorest.CreateSender(withRequestLogging()) 166 client.tagsClient = tc 167 168 jc := scheduler.NewJobsClient(c.SubscriptionID) 169 jc.Authorizer = spt 170 jc.Sender = autorest.CreateSender(withRequestLogging()) 171 client.jobsClient = jc 172 173 jcc := scheduler.NewJobCollectionsClient(c.SubscriptionID) 174 jcc.Authorizer = spt 175 jcc.Sender = autorest.CreateSender(withRequestLogging()) 176 client.jobsCollectionsClient = jcc 177 178 ssc := storage.NewAccountsClient(c.SubscriptionID) 179 ssc.Authorizer = spt 180 ssc.Sender = autorest.CreateSender(withRequestLogging()) 181 client.storageServiceClient = ssc 182 183 suc := storage.NewUsageOperationsClient(c.SubscriptionID) 184 suc.Authorizer = spt 185 suc.Sender = autorest.CreateSender(withRequestLogging()) 186 client.storageUsageClient = suc 187 188 return &client, nil 189 }