Skip to content

Commit

Permalink
provider/azurerm: Fix panic if no creds supplied
Browse files Browse the repository at this point in the history
Using EnvDefaultFunc with a default of empty string causes the
validation which would ordinarily be performed by `Required: true` in
the schema to not have any effect. Instead validate the configuration
used to produce the ARM client before attempting to use it during
provider configuration.
  • Loading branch information
jen20 committed Jan 29, 2016
1 parent 5420266 commit f8a40ff
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions builtin/providers/azurerm/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"strings"

"github.com/Azure/azure-sdk-for-go/Godeps/_workspace/src/github.com/Azure/go-autorest/autorest"
"github.com/hashicorp/go-multierror"
"github.com/hashicorp/terraform/helper/mutexkv"
"github.com/hashicorp/terraform/helper/schema"
"github.com/hashicorp/terraform/terraform"
Expand Down Expand Up @@ -75,6 +76,25 @@ type Config struct {
TenantID string
}

func (c Config) validate() error {
var err *multierror.Error

if c.SubscriptionID == "" {
err = multierror.Append(err, fmt.Errorf("Subscription ID must be configured for the AzureRM provider"))
}
if c.ClientID == "" {
err = multierror.Append(err, fmt.Errorf("Client ID must be configured for the AzureRM provider"))
}
if c.ClientSecret == "" {
err = multierror.Append(err, fmt.Errorf("Client Secret must be configured for the AzureRM provider"))
}
if c.TenantID == "" {
err = multierror.Append(err, fmt.Errorf("Tenant ID must be configured for the AzureRM provider"))
}

return err.ErrorOrNil()
}

func providerConfigure(d *schema.ResourceData) (interface{}, error) {
config := Config{
SubscriptionID: d.Get("subscription_id").(string),
Expand All @@ -83,6 +103,10 @@ func providerConfigure(d *schema.ResourceData) (interface{}, error) {
TenantID: d.Get("tenant_id").(string),
}

if err := config.validate(); err != nil {
return nil, err
}

client, err := config.getArmClient()
if err != nil {
return nil, err
Expand Down

0 comments on commit f8a40ff

Please sign in to comment.