github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/auth_env.go (about) 1 package openstack 2 3 import ( 4 "github.com/opentelekomcloud/gophertelekomcloud" 5 ) 6 7 /* 8 AuthOptionsFromEnv fills out an identity.AuthOptions structure with the 9 settings found on the various OpenStack OS_* environment variables. 10 11 The following variables provide sources of truth: OS_AUTH_URL, OS_USERNAME, 12 OS_PASSWORD, OS_TENANT_ID, and OS_TENANT_NAME. 13 14 Of these, OS_USERNAME, OS_PASSWORD, and OS_AUTH_URL must have settings, 15 or an error will result. OS_TENANT_ID, OS_TENANT_NAME, OS_PROJECT_ID, and 16 OS_PROJECT_NAME are optional. 17 18 OS_TENANT_ID and OS_TENANT_NAME are mutually exclusive to OS_PROJECT_ID and 19 OS_PROJECT_NAME. If OS_PROJECT_ID and OS_PROJECT_NAME are set, they will 20 still be referred as "tenant" in Gophercloud. 21 22 To use this function, first set the OS_* environment variables (for example, 23 by sourcing an `openrc` file), then: 24 25 opts, err := openstack.AuthOptionsFromEnv() 26 provider, err := openstack.AuthenticatedClient(opts) 27 */ 28 func AuthOptionsFromEnv(envs ...*Env) (golangsdk.AuthOptions, error) { 29 e := NewEnv(defaultPrefix) 30 if len(envs) > 0 { 31 e = envs[0] 32 } 33 34 ao := golangsdk.AuthOptions{ 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", "USER_DOMAIN_ID", "PROJECT_DOMAIN_ID"), 40 DomainName: e.GetEnv("DOMAIN_NAME", "USER_DOMAIN_NAME", "PROJECT_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"), 47 Passcode: e.GetEnv("PASSCODE"), 48 } 49 return ao, nil 50 }