From 96cc8a4aee493b9d080a586740286b6f9ffd71f3 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 8 Aug 2013 14:29:46 -0700 Subject: [PATCH] builder/amazon/common: access config uses template processing --- builder/amazon/common/access_config.go | 33 +++++++++++++++++++-- builder/amazon/common/access_config_test.go | 6 ++-- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/builder/amazon/common/access_config.go b/builder/amazon/common/access_config.go index e78c15fad..48d7a090f 100644 --- a/builder/amazon/common/access_config.go +++ b/builder/amazon/common/access_config.go @@ -3,6 +3,7 @@ package common import ( "fmt" "github.com/mitchellh/goamz/aws" + "github.com/mitchellh/packer/common" "strings" "unicode" ) @@ -36,12 +37,40 @@ func (c *AccessConfig) Region() (aws.Region, error) { return aws.Regions[region], nil } -func (c *AccessConfig) Prepare() []error { +func (c *AccessConfig) Prepare(t *common.Template) []error { + if t == nil { + var err error + t, err = common.NewTemplate() + if err != nil { + return []error{err} + } + } + + templates := map[string]*string{ + "access_key": &c.AccessKey, + "secret_key": &c.SecretKey, + "region": &c.RawRegion, + } + + errs := make([]error, 0) + for n, ptr := range templates { + var err error + *ptr, err = t.Process(*ptr, nil) + if err != nil { + errs = append( + errs, fmt.Errorf("Error processing %s: %s", n, err)) + } + } + if c.RawRegion != "" { if _, ok := aws.Regions[c.RawRegion]; !ok { - return []error{fmt.Errorf("Unknown region: %s", c.RawRegion)} + errs = append(errs, fmt.Errorf("Unknown region: %s", c.RawRegion)) } } + if len(errs) > 0 { + return errs + } + return nil } diff --git a/builder/amazon/common/access_config_test.go b/builder/amazon/common/access_config_test.go index cfb9e07f1..dd20e9af9 100644 --- a/builder/amazon/common/access_config_test.go +++ b/builder/amazon/common/access_config_test.go @@ -11,17 +11,17 @@ func testAccessConfig() *AccessConfig { func TestAccessConfigPrepare_Region(t *testing.T) { c := testAccessConfig() c.RawRegion = "" - if err := c.Prepare(); err != nil { + if err := c.Prepare(nil); err != nil { t.Fatalf("shouldn't have err: %s", err) } c.RawRegion = "us-east-12" - if err := c.Prepare(); err == nil { + if err := c.Prepare(nil); err == nil { t.Fatal("should have error") } c.RawRegion = "us-east-1" - if err := c.Prepare(); err != nil { + if err := c.Prepare(nil); err != nil { t.Fatalf("shouldn't have err: %s", err) } }