Documentation
¶
Overview ¶
Package clientconfig provides convienent functions for creating OpenStack clients. It is based on the Python os-client-config library.
See https://docs.openstack.org/os-client-config/latest for details.
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) (*gophercloud.AuthOptions, error)
- func AuthenticatedClient(opts *ClientOpts) (*gophercloud.ProviderClient, error)
- func LoadYAML() (map[string]Cloud, error)
- func NewServiceClient(service string, opts *ClientOpts) (*gophercloud.ServiceClient, error)
- type AuthInfo
- type AuthType
- type ClientOpts
- type Cloud
- type Clouds
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AuthOptions ¶
func AuthOptions(opts *ClientOpts) (*gophercloud.AuthOptions, error)
AuthOptions creates a gophercloud.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 OpenStack authentication.
See http://docs.openstack.org/developer/os-client-config and https://github.com/openstack/os-client-config/blob/master/os_client_config/config.py.
func AuthenticatedClient ¶
func AuthenticatedClient(opts *ClientOpts) (*gophercloud.ProviderClient, error)
AuthenticatedClient is a convenience function to get a new provider client based on a clouds.yaml entry.
func NewServiceClient ¶
func NewServiceClient(service string, opts *ClientOpts) (*gophercloud.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"`
}
Auth represents the auth section of a cloud entry or auth options entered explicitly in ClientOpts.
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
}
ClientOpts represents options to customize the way a client is configured.
type Cloud ¶
type Cloud struct {
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"`
}
Cloud represents an entry in a clouds.yaml file.
func GetCloudFromYAML ¶
func GetCloudFromYAML(opts *ClientOpts) (*Cloud, error)
GetCloudFromYAML will return a cloud entry from a clouds.yaml file.
type Clouds ¶
Clouds represents a collection of Cloud entries in a clouds.yaml file. The format of clouds.yaml is documented at https://docs.openstack.org/os-client-config/latest/user/configuration.html.