diff --git a/builder/openstack/access_config.go b/builder/openstack/access_config.go index 475b859d7..45e256bb6 100644 --- a/builder/openstack/access_config.go +++ b/builder/openstack/access_config.go @@ -115,8 +115,10 @@ func (c *AccessConfig) Prepare(t *packer.ConfigTemplate) []error { } } - if c.Region() == "" { - errs = append(errs, fmt.Errorf("region must be specified")) + 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 { 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()