@@ -13,14 +13,15 @@ var nilOptions = gophercloud.AuthOptions{}
13
13
// environment variables, respectively, remain undefined. See the AuthOptions() function for more details.
14
14
var (
15
15
ErrNoAuthURL = fmt .Errorf ("Environment variable OS_AUTH_URL needs to be set." )
16
- ErrNoUsername = fmt .Errorf ("Environment variable OS_USERNAME needs to be set." )
17
- ErrNoPassword = fmt .Errorf ("Environment variable OS_PASSWORD needs to be set." )
16
+ ErrNoUsername = fmt .Errorf ("Environment variable OS_USERNAME, OS_USERID, or OS_TOKEN needs to be set." )
17
+ ErrNoPassword = fmt .Errorf ("Environment variable OS_PASSWORD or OS_TOKEN needs to be set." )
18
18
)
19
19
20
- // AuthOptions fills out an identity.AuthOptions structure with the settings found on the various OpenStack
21
- // OS_* environment variables. The following variables provide sources of truth: OS_AUTH_URL, OS_USERNAME,
22
- // OS_PASSWORD, OS_TENANT_ID, and OS_TENANT_NAME. Of these, OS_USERNAME, OS_PASSWORD, and OS_AUTH_URL must
23
- // have settings, or an error will result. OS_TENANT_ID and OS_TENANT_NAME are optional.
20
+ // AuthOptionsFromEnv fills out an AuthOptions structure from the environment
21
+ // variables: OS_AUTH_URL, OS_USERNAME, OS_USERID, OS_PASSWORD, OS_TENANT_ID,
22
+ // OS_TENANT_NAME, OS_DOMAIN_ID, OS_DOMAIN_NAME, OS_TOKEN. It checks that
23
+ // (1) OS_AUTH_URL is set, (2) OS_USERNAME, OS_USERID, or OS_TOKEN is set,
24
+ // (3) OS_PASSWORD or OS_TOKEN is set.
24
25
func AuthOptionsFromEnv () (gophercloud.AuthOptions , error ) {
25
26
authURL := os .Getenv ("OS_AUTH_URL" )
26
27
username := os .Getenv ("OS_USERNAME" )
@@ -30,16 +31,17 @@ func AuthOptionsFromEnv() (gophercloud.AuthOptions, error) {
30
31
tenantName := os .Getenv ("OS_TENANT_NAME" )
31
32
domainID := os .Getenv ("OS_DOMAIN_ID" )
32
33
domainName := os .Getenv ("OS_DOMAIN_NAME" )
34
+ tokenID := os .Getenv ("OS_TOKEN" )
33
35
34
36
if authURL == "" {
35
37
return nilOptions , ErrNoAuthURL
36
38
}
37
39
38
- if username == "" && userID == "" {
40
+ if username == "" && userID == "" && tokenID == "" {
39
41
return nilOptions , ErrNoUsername
40
42
}
41
43
42
- if password == "" {
44
+ if password == "" && tokenID == "" {
43
45
return nilOptions , ErrNoPassword
44
46
}
45
47
@@ -52,6 +54,7 @@ func AuthOptionsFromEnv() (gophercloud.AuthOptions, error) {
52
54
TenantName : tenantName ,
53
55
DomainID : domainID ,
54
56
DomainName : domainName ,
57
+ TokenID : tokenID ,
55
58
}
56
59
57
60
return ao , nil
0 commit comments