From 5065aff1586474ee841693590861ea1dcc12e1f9 Mon Sep 17 00:00:00 2001 From: Armon Dadgar Date: Wed, 23 Jul 2014 15:13:36 -0400 Subject: [PATCH] provider/aws: Improve validation of configs --- builtin/providers/aws/resource_provider.go | 29 +++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/builtin/providers/aws/resource_provider.go b/builtin/providers/aws/resource_provider.go index dda9cc4c0..92a7b544c 100644 --- a/builtin/providers/aws/resource_provider.go +++ b/builtin/providers/aws/resource_provider.go @@ -2,6 +2,7 @@ package aws import ( "log" + "os" "github.com/hashicorp/terraform/helper/config" "github.com/hashicorp/terraform/helper/multierror" @@ -26,14 +27,30 @@ type ResourceProvider struct { } func (p *ResourceProvider) Validate(c *terraform.ResourceConfig) ([]string, []error) { - v := &config.Validator{ - Optional: []string{ - "access_key", - "secret_key", - "region", - }, + type param struct { + env string + key string + } + params := []param{ + {"AWS_REGION", "region"}, + {"AWS_ACCESS_KEY", "access_key"}, + {"AWS_SECRET_KEY", "secret_key"}, } + var optional []string + var required []string + for _, p := range params { + if v := os.Getenv(p.env); v != "" { + optional = append(optional, p.key) + } else { + required = append(required, p.key) + } + } + + v := &config.Validator{ + Required: required, + Optional: optional, + } return v.Validate(c) }