From 69500b6943a3264122cab5dee539c059f21a506f Mon Sep 17 00:00:00 2001 From: Marc Abramowitz Date: Fri, 15 Aug 2014 00:32:53 -0700 Subject: [PATCH 1/2] OpenStack builder: Make region not required Perhaps "region" is required when using a public provider like Rackspace? It's not required for my private cloud from Metacloud. I suspect a lot of private clouds have only a single region and thus don't need "region" to be specified. --- builder/openstack/access_config.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/builder/openstack/access_config.go b/builder/openstack/access_config.go index 475b859d7..25affa8c1 100644 --- a/builder/openstack/access_config.go +++ b/builder/openstack/access_config.go @@ -115,10 +115,6 @@ func (c *AccessConfig) Prepare(t *packer.ConfigTemplate) []error { } } - if c.Region() == "" { - errs = append(errs, fmt.Errorf("region must be specified")) - } - if len(errs) > 0 { return errs } From 9bd33d1e0b94e93ccb2f2ece8b29c09c9c68e5b2 Mon Sep 17 00:00:00 2001 From: Marc Abramowitz Date: Fri, 15 Aug 2014 11:19:04 -0700 Subject: [PATCH 2/2] Make region required for rackspace but not other providers Update test to make it pass. --- builder/openstack/access_config.go | 6 ++++++ builder/openstack/access_config_test.go | 11 ++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/builder/openstack/access_config.go b/builder/openstack/access_config.go index 25affa8c1..45e256bb6 100644 --- a/builder/openstack/access_config.go +++ b/builder/openstack/access_config.go @@ -115,6 +115,12 @@ func (c *AccessConfig) Prepare(t *packer.ConfigTemplate) []error { } } + if strings.HasPrefix(c.Provider, "rackspace") { + if c.Region() == "" { + errs = append(errs, fmt.Errorf("region must be specified when using rackspace")) + } + } + if len(errs) > 0 { return errs } diff --git a/builder/openstack/access_config_test.go b/builder/openstack/access_config_test.go index 7a9e5201e..5c92216e3 100644 --- a/builder/openstack/access_config_test.go +++ b/builder/openstack/access_config_test.go @@ -8,13 +8,22 @@ func testAccessConfig() *AccessConfig { return &AccessConfig{} } -func TestAccessConfigPrepare_NoRegion(t *testing.T) { +func TestAccessConfigPrepare_NoRegion_Rackspace(t *testing.T) { c := testAccessConfig() + c.Provider = "rackspace-us" if err := c.Prepare(nil); err == nil { t.Fatalf("shouldn't have err: %s", err) } } +func TestAccessConfigPrepare_NoRegion_PrivateCloud(t *testing.T) { + c := testAccessConfig() + c.Provider = "http://some-keystone-server:5000/v2.0" + if err := c.Prepare(nil); err != nil { + t.Fatalf("shouldn't have err: %s", err) + } +} + func TestAccessConfigPrepare_Region(t *testing.T) { dfw := "DFW" c := testAccessConfig()