terraform/vendor/github.com/hashicorp/go-azure-helpers/authentication/azure_cli_profile_populatio...

82 lines
2.1 KiB
Go

package authentication
import (
"fmt"
"strings"
"github.com/Azure/go-autorest/autorest/azure/cli"
)
func (a *azureCLIProfile) populateSubscriptionID() error {
subscriptionId, err := a.findDefaultSubscriptionId()
if err != nil {
return err
}
a.subscriptionId = subscriptionId
return nil
}
func (a *azureCLIProfile) populateTenantID() error {
subscription, err := a.findSubscription(a.subscriptionId)
if err != nil {
return err
}
a.tenantId = subscription.TenantID
return nil
}
func (a *azureCLIProfile) populateClientId() error {
// we can now pull out the ClientID and the Access Token to use from the Access Token
tokensPath, err := cli.AccessTokensPath()
if err != nil {
return fmt.Errorf("Error loading the Tokens Path from the Azure CLI: %+v", err)
}
tokens, err := cli.LoadTokens(tokensPath)
if err != nil {
return fmt.Errorf("No Authorization Tokens were found - please ensure the Azure CLI is installed and then log-in with `az login`.")
}
validToken, err := findValidAccessTokenForTenant(tokens, a.tenantId)
if err != nil {
return fmt.Errorf("No Authorization Tokens were found - please re-authenticate using `az login`.")
}
token := *validToken
a.clientId = token.ClientID
return nil
}
func (a *azureCLIProfile) populateEnvironment() error {
subscription, err := a.findSubscription(a.subscriptionId)
if err != nil {
return err
}
a.environment = normalizeEnvironmentName(subscription.EnvironmentName)
return nil
}
func (a azureCLIProfile) findDefaultSubscriptionId() (string, error) {
for _, subscription := range a.profile.Subscriptions {
if subscription.IsDefault {
return subscription.ID, nil
}
}
return "", fmt.Errorf("No Subscription was Marked as Default in the Azure Profile.")
}
func (a azureCLIProfile) findSubscription(subscriptionId string) (*cli.Subscription, error) {
for _, subscription := range a.profile.Subscriptions {
if strings.EqualFold(subscription.ID, subscriptionId) {
return &subscription, nil
}
}
return nil, fmt.Errorf("Subscription %q was not found in your Azure CLI credentials. Please verify it exists in `az account list`.", subscriptionId)
}