From be1e60aa268bd96870722d0145fb565d36607ea1 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sat, 8 Jun 2013 17:54:18 -0700 Subject: [PATCH] builder/amazonebs: Validate region exists --- builder/amazonebs/builder.go | 3 +++ builder/amazonebs/builder_test.go | 14 +++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/builder/amazonebs/builder.go b/builder/amazonebs/builder.go index c0981bc79..b42fe487e 100644 --- a/builder/amazonebs/builder.go +++ b/builder/amazonebs/builder.go @@ -7,6 +7,7 @@ package amazonebs import ( "errors" + "fmt" "github.com/mitchellh/goamz/aws" "github.com/mitchellh/goamz/ec2" "github.com/mitchellh/mapstructure" @@ -70,6 +71,8 @@ func (b *Builder) Prepare(raw interface{}) (err error) { if b.config.Region == "" { errs = append(errs, errors.New("A region must be specified")) + } else if _, ok := aws.Regions[b.config.Region]; !ok { + errs = append(errs, fmt.Errorf("Unknown region: %s", b.config.Region)) } if b.config.SSHUsername == "" { diff --git a/builder/amazonebs/builder_test.go b/builder/amazonebs/builder_test.go index 0ec291ccd..475da8d89 100644 --- a/builder/amazonebs/builder_test.go +++ b/builder/amazonebs/builder_test.go @@ -11,7 +11,7 @@ func testConfig() map[string]interface{} { "secret_key": "bar", "source_ami": "foo", "instance_type": "foo", - "region": "foo", + "region": "us-east-1", "ssh_username": "root", } } @@ -89,13 +89,13 @@ func TestBuilderPrepare_Region(t *testing.T) { config := testConfig() // Test good - config["region"] = "foo" + config["region"] = "us-east-1" err := b.Prepare(config) if err != nil { t.Fatalf("should not have error: %s", err) } - if b.config.Region != "foo" { + if b.config.Region != "us-east-1" { t.Errorf("invalid: %s", b.config.Region) } @@ -106,6 +106,14 @@ func TestBuilderPrepare_Region(t *testing.T) { if err == nil { t.Fatal("should have error") } + + // Test invalid + config["region"] = "i-am-not-real" + b = Builder{} + err = b.Prepare(config) + if err == nil { + t.Fatal("should have error") + } } func TestBuilderPrepare_SecretKey(t *testing.T) {