diff --git a/physical/swift.go b/physical/swift.go index b3940c69d252..0ed4fe61cf6a 100644 --- a/physical/swift.go +++ b/physical/swift.go @@ -58,17 +58,36 @@ func newSwiftBackend(conf map[string]string, logger log.Logger) (Backend, error) return nil, fmt.Errorf("missing container") } } - tenant := os.Getenv("OS_TENANT_NAME") - if tenant == "" { - tenant = conf["tenant"] + project := os.Getenv("OS_PROJECT_NAME") + if project == "" { + project = conf["project"] + + if project == "" { + // Check for KeyStone naming prior to V3 + project := os.Getenv("OS_TENANT_NAME") + if project == "" { + project = conf["tenant"] + } + } + } + + domain := os.Getenv("OS_USER_DOMAIN_NAME") + if domain == "" { + domain = conf["domain"] + } + projectDomain := os.Getenv("OS_PROJECT_DOMAIN_NAME") + if projectDomain == "" { + projectDomain = conf["project-domain"] } c := swift.Connection{ - UserName: username, - ApiKey: password, - AuthUrl: authUrl, - Tenant: tenant, - Transport: cleanhttp.DefaultPooledTransport(), + Domain: domain, + UserName: username, + ApiKey: password, + AuthUrl: authUrl, + Tenant: project, + TenantDomain: projectDomain, + Transport: cleanhttp.DefaultPooledTransport(), } err := c.Authenticate() diff --git a/physical/swift_test.go b/physical/swift_test.go index e56acaee2519..2da37f043e1d 100644 --- a/physical/swift_test.go +++ b/physical/swift_test.go @@ -21,17 +21,21 @@ func TestSwiftBackend(t *testing.T) { username := os.Getenv("OS_USERNAME") password := os.Getenv("OS_PASSWORD") authUrl := os.Getenv("OS_AUTH_URL") - tenant := os.Getenv("OS_TENANT_NAME") + project := os.Getenv("OS_PROJECT_NAME") + domain := os.Getenv("OS_USER_DOMAIN_NAME") + projectDomain := os.Getenv("OS_PROJECT_DOMAIN_NAME") ts := time.Now().UnixNano() container := fmt.Sprintf("vault-test-%d", ts) cleaner := swift.Connection{ - UserName: username, - ApiKey: password, - AuthUrl: authUrl, - Tenant: tenant, - Transport: cleanhttp.DefaultPooledTransport(), + Domain: domain, + UserName: username, + ApiKey: password, + AuthUrl: authUrl, + Tenant: project, + TenantDomain: projectDomain, + Transport: cleanhttp.DefaultPooledTransport(), } err := cleaner.Authenticate() @@ -63,11 +67,13 @@ func TestSwiftBackend(t *testing.T) { logger := logformat.NewVaultLogger(log.LevelTrace) b, err := NewBackend("swift", logger, map[string]string{ - "username": username, - "password": password, - "container": container, - "auth_url": authUrl, - "tenant": tenant, + "username": username, + "password": password, + "container": container, + "auth_url": authUrl, + "project": project, + "domain": domain, + "project-domain": projectDomain, }) if err != nil { t.Fatalf("err: %s", err)