diff --git a/builder/openstack/access_config.go b/builder/openstack/access_config.go index 489e43bea..82fcee185 100644 --- a/builder/openstack/access_config.go +++ b/builder/openstack/access_config.go @@ -11,6 +11,7 @@ import ( type AccessConfig struct { Username string `mapstructure:"username"` Password string `mapstructure:"password"` + Project string `mapstructure:"project"` Provider string `mapstructure:"provider"` RawRegion string `mapstructure:"region"` } @@ -20,6 +21,7 @@ type AccessConfig struct { func (c *AccessConfig) Auth() (gophercloud.AccessProvider, error) { username := c.Username password := c.Password + project := c.Project provider := c.Provider if username == "" { @@ -28,6 +30,9 @@ func (c *AccessConfig) Auth() (gophercloud.AccessProvider, error) { if password == "" { password = os.Getenv("SDK_PASSWORD") } + if project == "" { + project = os.Getenv("SDK_PROJECT") + } if provider == "" { provider = os.Getenv("SDK_PROVIDER") } @@ -38,6 +43,10 @@ func (c *AccessConfig) Auth() (gophercloud.AccessProvider, error) { AllowReauth: true, } + if project != "" { + authoptions.TenantName = project + } + return gophercloud.Authenticate(provider, authoptions) }