// AuthenticateForARM uses LoadCredentials to load user credentials and uses them to authenticate // and create a auth token that can be used by subsequent calls to ARM-based APIs. // // Note: Storing crendentials in a local file must be secured and not shared. It is used here // simply to reduce code in the examples, but it is not suggested as a best (or even good) // practice. func AuthenticateForARM() (client arm.Client, err error) { c, err := LoadCredentials() if err != nil { return } sid := c["subscriptionID"] tid := c["tenantID"] cid := c["clientID"] secret := c["clientSecret"] spt, err := azure.NewServicePrincipalToken(cid, secret, tid, azure.AzureResourceManagerScope) if err != nil { return } client = arm.NewClient(sid, spt) return }
func main() { name := "storage-account-name" c, err := helpers.LoadCredentials() if err != nil { log.Fatalf("Error: %v", err) } sid := c["subscriptionID"] tid := c["tenantID"] cid := c["clientID"] secret := c["clientSecret"] spt, err := azure.NewServicePrincipalToken(cid, secret, tid, azure.AzureResourceManagerScope) if err != nil { log.Fatalf("Error: %v", err) } arm := arm.NewClient(sid, spt) arm.RequestInspector = helpers.WithInspection() arm.ResponseInspector = helpers.ByInspecting() ac := arm.StorageAccounts() cna, err := ac.CheckNameAvailability( storage.AccountCheckNameAvailabilityParameters{ Name: to.StringPtr(name), Type: to.StringPtr("Microsoft.Storage/storageAccounts")}) if err != nil { log.Fatalf("Error: %v", err) } else { if to.Bool(cna.NameAvailable) { fmt.Printf("The name '%s' is available\n", name) } else { fmt.Printf("The name '%s' is unavailable because %s\n", name, to.String(cna.Message)) } } }