discovery/azure/azure.go
func createAzureClient(cfg SDConfig) (azureClient, error) {
	env, err := azure.EnvironmentFromName(cfg.Environment)
	if err != nil {
		return azureClient{}, err
	}

	activeDirectoryEndpoint := env.ActiveDirectoryEndpoint
	resourceManagerEndpoint := env.ResourceManagerEndpoint

	var c azureClient

	var spt *adal.ServicePrincipalToken

	switch cfg.AuthenticationMethod {
	case authMethodManagedIdentity:
		msiEndpoint, err := adal.GetMSIVMEndpoint()
		if err != nil {
			return azureClient{}, err
		}

		spt, err = adal.NewServicePrincipalTokenFromMSI(msiEndpoint, resourceManagerEndpoint)
		if err != nil {
			return azureClient{}, err
		}
	case authMethodOAuth:
		oauthConfig, err := adal.NewOAuthConfig(activeDirectoryEndpoint, cfg.TenantID)
		if err != nil {
			return azureClient{}, err
		}

		spt, err = adal.NewServicePrincipalToken(*oauthConfig, cfg.ClientID, string(cfg.ClientSecret), resourceManagerEndpoint)
		if err != nil {
			return azureClient{}, err
		}
	}

	bearerAuthorizer := autorest.NewBearerAuthorizer(spt)

	c.vm = compute.NewVirtualMachinesClientWithBaseURI(resourceManagerEndpoint, cfg.SubscriptionID)
	c.vm.Authorizer = bearerAuthorizer

	c.nic = network.NewInterfacesClientWithBaseURI(resourceManagerEndpoint, cfg.SubscriptionID)
	c.nic.Authorizer = bearerAuthorizer

	c.vmss = compute.NewVirtualMachineScaleSetsClientWithBaseURI(resourceManagerEndpoint, cfg.SubscriptionID)
	c.vmss.Authorizer = bearerAuthorizer

	c.vmssvm = compute.NewVirtualMachineScaleSetVMsClientWithBaseURI(resourceManagerEndpoint, cfg.SubscriptionID)
	c.vmssvm.Authorizer = bearerAuthorizer

	return c, nil
}
func createAzureClient(cfg SDConfig) (azureClient, error) {
	env, err := azure.EnvironmentFromName(cfg.Environment)
	if err != nil {
		return azureClient{}, err
	}

	activeDirectoryEndpoint := env.ActiveDirectoryEndpoint
	resourceManagerEndpoint := env.ResourceManagerEndpoint

	var c azureClient

	var spt *adal.ServicePrincipalToken

	switch cfg.AuthenticationMethod {
	case authMethodManagedIdentity:
		msiEndpoint, err := adal.GetMSIVMEndpoint()
		if err != nil {
			return azureClient{}, err
		}

		spt, err = adal.NewServicePrincipalTokenFromMSI(msiEndpoint, resourceManagerEndpoint)
		if err != nil {
			return azureClient{}, err
		}
	case authMethodOAuth:
		oauthConfig, err := adal.NewOAuthConfig(activeDirectoryEndpoint, cfg.TenantID)
		if err != nil {
			return azureClient{}, err
		}

		spt, err = adal.NewServicePrincipalToken(*oauthConfig, cfg.ClientID, string(cfg.ClientSecret), resourceManagerEndpoint)
		if err != nil {
			return azureClient{}, err
		}
	}

	bearerAuthorizer := autorest.NewBearerAuthorizer(spt)

	c.vm = compute.NewVirtualMachinesClientWithBaseURI(resourceManagerEndpoint, cfg.SubscriptionID)
	c.vm.Authorizer = bearerAuthorizer

	c.nic = network.NewInterfacesClientWithBaseURI(resourceManagerEndpoint, cfg.SubscriptionID)
	c.nic.Authorizer = bearerAuthorizer

	c.vmss = compute.NewVirtualMachineScaleSetsClientWithBaseURI(resourceManagerEndpoint, cfg.SubscriptionID)
	c.vmss.Authorizer = bearerAuthorizer

	c.vmssvm = compute.NewVirtualMachineScaleSetVMsClientWithBaseURI(resourceManagerEndpoint, cfg.SubscriptionID)
	c.vmssvm.Authorizer = bearerAuthorizer

	return c, nil
}
func createAzureClient ( cfg SDConfig ) ( azureClient , error ) { env , err := azure . EnvironmentFromName ( cfg . Environment ) if err != nil { return azureClient { } , err } activeDirectoryEndpoint := env . ActiveDirectoryEndpoint resourceManagerEndpoint := env . ResourceManagerEndpoint var c azureClient var spt * adal . ServicePrincipalToken switch cfg . AuthenticationMethod { case authMethodManagedIdentity : msiEndpoint , err := adal . GetMSIVMEndpoint ( ) if err != nil { return azureClient { } , err } spt , err = adal . NewServicePrincipalTokenFromMSI ( msiEndpoint , resourceManagerEndpoint ) if err != nil { return azureClient { } , err } case authMethodOAuth : oauthConfig , err := adal . NewOAuthConfig ( activeDirectoryEndpoint , cfg . TenantID ) if err != nil { return azureClient { } , err } spt , err = adal . NewServicePrincipalToken ( * oauthConfig , cfg . ClientID , string ( cfg . ClientSecret ) , resourceManagerEndpoint ) if err != nil { return azureClient { } , err } } bearerAuthorizer := autorest . NewBearerAuthorizer ( spt ) c . vm = compute . NewVirtualMachinesClientWithBaseURI ( resourceManagerEndpoint , cfg . SubscriptionID ) c . vm . Authorizer = bearerAuthorizer c . nic = network . NewInterfacesClientWithBaseURI ( resourceManagerEndpoint , cfg . SubscriptionID ) c . nic . Authorizer = bearerAuthorizer c . vmss = compute . NewVirtualMachineScaleSetsClientWithBaseURI ( resourceManagerEndpoint , cfg . SubscriptionID ) c . vmss . Authorizer = bearerAuthorizer c . vmssvm = compute . NewVirtualMachineScaleSetVMsClientWithBaseURI ( resourceManagerEndpoint , cfg . SubscriptionID ) c . vmssvm . Authorizer = bearerAuthorizer return c , nil }
// createAzureClient is a helper function for creating an Azure compute client to ARM.
createAzureClient is a helper function for creating an Azure compute client to ARM .