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  }