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  }