11package openstack
22
33import (
4- "os"
5-
6- golangsdk "github.com/opentelekomcloud/gophertelekomcloud"
4+ "github.com/opentelekomcloud/gophertelekomcloud"
75)
86
9- var nilOptions = golangsdk.AuthOptions {}
10-
117/*
128AuthOptionsFromEnv fills out an identity.AuthOptions structure with the
139settings found on the various OpenStack OS_* environment variables.
@@ -29,51 +25,25 @@ by sourcing an `openrc` file), then:
2925 opts, err := openstack.AuthOptionsFromEnv()
3026 provider, err := openstack.AuthenticatedClient(opts)
3127*/
32- func AuthOptionsFromEnv () (golangsdk.AuthOptions , error ) {
33- authURL := os .Getenv ("OS_AUTH_URL" )
34- username := os .Getenv ("OS_USERNAME" )
35- userID := os .Getenv ("OS_USERID" )
36- password := os .Getenv ("OS_PASSWORD" )
37- tenantID := os .Getenv ("OS_TENANT_ID" )
38- tenantName := os .Getenv ("OS_TENANT_NAME" )
39- domainID := os .Getenv ("OS_DOMAIN_ID" )
40- domainName := os .Getenv ("OS_DOMAIN_NAME" )
41-
42- // If OS_PROJECT_ID is set, overwrite tenantID with the value.
43- if v := os .Getenv ("OS_PROJECT_ID" ); v != "" {
44- tenantID = v
45- }
46-
47- // If OS_PROJECT_NAME is set, overwrite tenantName with the value.
48- if v := os .Getenv ("OS_PROJECT_NAME" ); v != "" {
49- tenantName = v
50- }
51-
52- if authURL == "" {
53- err := golangsdk.ErrMissingInput {Argument : "authURL" }
54- return nilOptions , err
55- }
56-
57- if username == "" && userID == "" {
58- err := golangsdk.ErrMissingInput {Argument : "username" }
59- return nilOptions , err
60- }
61-
62- if password == "" {
63- err := golangsdk.ErrMissingInput {Argument : "password" }
64- return nilOptions , err
28+ func AuthOptionsFromEnv (envs ... * env ) (golangsdk.AuthOptions , error ) {
29+ e := NewEnv (defaultPrefix )
30+ if len (envs ) > 0 {
31+ e = envs [0 ]
6532 }
6633
6734 ao := golangsdk.AuthOptions {
68- IdentityEndpoint : authURL ,
69- UserID : userID ,
70- Username : username ,
71- Password : password ,
72- TenantID : tenantID ,
73- TenantName : tenantName ,
74- DomainID : domainID ,
75- DomainName : domainName ,
35+ IdentityEndpoint : e .GetEnv ("AUTH_URL" ),
36+ Username : e .GetEnv ("USERNAME" ),
37+ UserID : e .GetEnv ("USERID" , "USER_ID" ),
38+ Password : e .GetEnv ("PASSWORD" ),
39+ DomainID : e .GetEnv ("DOMAIN_ID" ),
40+ DomainName : e .GetEnv ("DOMAIN_NAME" ),
41+ TenantID : e .GetEnv ("PROJECT_ID" , "TENANT_ID" ),
42+ TenantName : e .GetEnv ("PROJECT_NAME" , "TENANT_NAME" ),
43+ TokenID : e .GetEnv ("TOKEN" , "TOKEN_ID" ),
44+ AgencyName : e .GetEnv ("AGENCY_NAME" , "TARGET_AGENCY_NAME" ),
45+ AgencyDomainName : e .GetEnv ("AGENCY_DOMAIN_NAME" , "TARGET_DOMAIN_NAME" ),
46+ DelegatedProject : e .GetEnv ("DELEGATED_PROJECT" , "TARGET_DOMAIN_NAME" ),
7647 }
77-
7848 return ao , nil
7949}
0 commit comments