Documentation ¶
Overview ¶
Package clientconfig provides convenient functions for creating Enterprise Cloud clients. It is based on the Python os-client-config library.
Example to Create a Provider Client From clouds.yaml
opts := &clientconfig.ClientOpts{ Name: "hawaii", } pClient, err := clientconfig.AuthenticatedClient(opts) if err != nil { panic(err) }
Example to Manually Create a Provider Client
opts := &clientconfig.ClientOpts{ AuthInfo: &clientconfig.AuthInfo{ AuthURL: "https://hi.example.com:5000/v3", Username: "jdoe", Password: "password", ProjectName: "Some Project", DomainName: "default", }, } pClient, err := clientconfig.AuthenticatedClient(opts) if err != nil { panic(err) }
Example to Create a Service Client from clouds.yaml
opts := &clientconfig.ClientOpts{ Name: "hawaii", } computeClient, err := clientconfig.NewServiceClient("compute", opts) if err != nil { panic(err) }
Index ¶
- func AuthOptions(opts *ClientOpts) (*eclcloud.AuthOptions, error)
- func AuthenticatedClient(opts *ClientOpts) (*eclcloud.ProviderClient, error)
- func LoadCloudsYAML() (map[string]Cloud, error)
- func LoadPublicCloudsYAML() (map[string]Cloud, error)
- func LoadSecureCloudsYAML() (map[string]Cloud, error)
- func NewServiceClient(service string, opts *ClientOpts) (*eclcloud.ServiceClient, error)
- type AuthInfo
- type AuthType
- type ClientOpts
- type Cloud
- type Clouds
- type PublicClouds
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AuthOptions ¶
func AuthOptions(opts *ClientOpts) (*eclcloud.AuthOptions, error)
AuthOptions creates a eclcloud.AuthOptions structure with the settings found in a specific cloud entry of a clouds.yaml file or based on authentication settings given in ClientOpts.
This attempts to be a single point of entry for all Enterprise Cloud authentication.
func AuthenticatedClient ¶
func AuthenticatedClient(opts *ClientOpts) (*eclcloud.ProviderClient, error)
AuthenticatedClient is a convenience function to get a new provider client based on a clouds.yaml entry.
func LoadCloudsYAML ¶
LoadCloudsYAML will load a clouds.yaml file and return the full config.
func LoadPublicCloudsYAML ¶
LoadPublicCloudsYAML will load a public-clouds.yaml file and return the full config.
func LoadSecureCloudsYAML ¶
LoadSecureCloudsYAML will load a secure.yaml file and return the full config.
func NewServiceClient ¶
func NewServiceClient(service string, opts *ClientOpts) (*eclcloud.ServiceClient, error)
NewServiceClient is a convenience function to get a new service client.
Types ¶
type AuthInfo ¶
type AuthInfo struct { // AuthURL is the keystone/identity endpoint URL. AuthURL string `yaml:"auth_url"` // Token is a pre-generated authentication token. Token string `yaml:"token"` // Username is the username of the user. Username string `yaml:"username"` // UserID is the unique ID of a user. UserID string `yaml:"user_id"` // Password is the password of the user. Password string `yaml:"password"` // ProjectName is the common/human-readable name of a project. // Users can be scoped to a project. // ProjectName on its own is not enough to ensure a unique scope. It must // also be combined with either a ProjectDomainName or ProjectDomainID. // ProjectName cannot be combined with ProjectID in a scope. ProjectName string `yaml:"project_name"` // ProjectID is the unique ID of a project. // It can be used to scope a user to a specific project. ProjectID string `yaml:"project_id"` // UserDomainName is the name of the domain where a user resides. // It is used to identify the source domain of a user. UserDomainName string `yaml:"user_domain_name"` // UserDomainID is the unique ID of the domain where a user resides. // It is used to identify the source domain of a user. UserDomainID string `yaml:"user_domain_id"` // ProjectDomainName is the name of the domain where a project resides. // It is used to identify the source domain of a project. // ProjectDomainName can be used in addition to a ProjectName when scoping // a user to a specific project. ProjectDomainName string `yaml:"project_domain_name"` // ProjectDomainID is the name of the domain where a project resides. // It is used to identify the source domain of a project. // ProjectDomainID can be used in addition to a ProjectName when scoping // a user to a specific project. ProjectDomainID string `yaml:"project_domain_id"` // DomainName is the name of a domain which can be used to identify the // source domain of either a user or a project. // If UserDomainName and ProjectDomainName are not specified, then DomainName // is used as a default choice. // It can also be used be used to specify a domain-only scope. DomainName string `yaml:"domain_name"` // DomainID is the unique ID of a domain which can be used to identify the // source domain of eitehr a user or a project. // If UserDomainID and ProjectDomainID are not specified, then DomainID is // used as a default choice. // It can also be used be used to specify a domain-only scope. DomainID string `yaml:"domain_id"` // DefaultDomain is the domain ID to fall back on if no other domain has // been specified and a domain is required for scope. DefaultDomain string `yaml:"default_domain"` }
AuthInfo represents the auth section of a cloud entry or auth options entered explicitly in ClientOpts.
type AuthType ¶
type AuthType string
AuthType respresents a valid method of authentication.
const ( // AuthPassword defines an unknown version of the password AuthPassword AuthType = "password" // AuthToken defined an unknown version of the token AuthToken AuthType = "token" // AuthV2Password defines version 2 of the password AuthV2Password AuthType = "v2password" // AuthV2Token defines version 2 of the token AuthV2Token AuthType = "v2token" // AuthV3Password defines version 3 of the password AuthV3Password AuthType = "v3password" // AuthV3Token defines version 3 of the token AuthV3Token AuthType = "v3token" )
type ClientOpts ¶
type ClientOpts struct { // Cloud is the cloud entry in clouds.yaml to use. Cloud string // EnvPrefix allows a custom environment variable prefix to be used. EnvPrefix string // AuthType specifies the type of authentication to use. // By default, this is "password". AuthType AuthType // AuthInfo defines the authentication information needed to // authenticate to a cloud when clouds.yaml isn't used. AuthInfo *AuthInfo // RegionName is the region to create a Service Client in. // This will override a region in clouds.yaml or can be used // when authenticating directly with AuthInfo. RegionName string }
ClientOpts represents options to customize the way a client is configured.
type Cloud ¶
type Cloud struct { Cloud string `yaml:"cloud"` Profile string `yaml:"profile"` AuthInfo *AuthInfo `yaml:"auth"` AuthType AuthType `yaml:"auth_type"` RegionName string `yaml:"region_name"` Regions []interface{} `yaml:"regions"` // API Version overrides. IdentityAPIVersion string `yaml:"identity_api_version"` VolumeAPIVersion string `yaml:"volume_api_version"` // Verify whether or not SSL API requests should be verified. Verify *bool `yaml:"verify"` // CACertFile a path to a CA Cert bundle that can be used as part of // verifying SSL API requests. CACertFile string `yaml:"cacert"` // ClientCertFile a path to a client certificate to use as part of the SSL // transaction. ClientCertFile string `yaml:"cert"` // ClientKeyFile a path to a client key to use as part of the SSL // transaction. ClientKeyFile string `yaml:"key"` }
Cloud represents an entry in a clouds.yaml/public-clouds.yaml/secure.yaml file.
func GetCloudFromYAML ¶
func GetCloudFromYAML(opts *ClientOpts) (*Cloud, error)
GetCloudFromYAML will return a cloud entry from a clouds.yaml file.
type PublicClouds ¶
PublicClouds represents a collection of PublicCloud entries in clouds-public.yaml file.