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.