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{
Cloud: "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 LoadCloudsYAML() (map[string]Cloud, error)
- func LoadPublicCloudsYAML() (map[string]Cloud, error)
- func LoadSecureCloudsYAML() (map[string]Cloud, error)
- func NewServiceClient(service string, opts *ClientOpts) (*gophercloud.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) (*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 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) (*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" json:"auth_url"`
// Token is a pre-generated authentication token.
Token string `yaml:"token" json:"token"`
// Username is the username of the user.
Username string `yaml:"username" json:"username"`
// UserID is the unique ID of a user.
UserID string `yaml:"user_id" json:"user_id"`
// Password is the password of the user.
Password string `yaml:"password" json:"password"`
// Application Credential ID to login with.
ApplicationCredentialID string `yaml:"application_credential_id" json:"application_credential_id"`
// Application Credential name to login with.
ApplicationCredentialName string `yaml:"application_credential_name" json:"application_credential_name"`
// Application Credential secret to login with.
ApplicationCredentialSecret string `yaml:"application_credential_secret" json:"application_credential_secret"`
// 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" json:"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" json:"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" json:"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" json:"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" json:"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" json:"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" json:"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" json:"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" json:"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" // AuthV3ApplicationCredential defines version 3 of the application credential AuthV3ApplicationCredential AuthType = "v3applicationcredential" )
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" json:"cloud"`
Profile string `yaml:"profile" json:"profile"`
AuthInfo *AuthInfo `yaml:"auth" json:"auth"`
AuthType AuthType `yaml:"auth_type" json:"auth_type"`
RegionName string `yaml:"region_name" json:"region_name"`
Regions []interface{} `yaml:"regions" json:"regions"`
// API Version overrides.
IdentityAPIVersion string `yaml:"identity_api_version" json:"identity_api_version"`
VolumeAPIVersion string `yaml:"volume_api_version" json:"volume_api_version"`
// Verify whether or not SSL API requests should be verified.
Verify *bool `yaml:"verify" json:"verify"`
// CACertFile a path to a CA Cert bundle that can be used as part of
// verifying SSL API requests.
CACertFile string `yaml:"cacert" json:"cacert"`
// ClientCertFile a path to a client certificate to use as part of the SSL
// transaction.
ClientCertFile string `yaml:"cert" json:"cert"`
// ClientKeyFile a path to a client key to use as part of the SSL
// transaction.
ClientKeyFile string `yaml:"key" json:"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 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.
type PublicClouds ¶
PublicClouds represents a collection of PublicCloud entries in clouds-public.yaml file. The format of the clouds-public.yml is documented at https://docs.openstack.org/python-openstackclient/latest/configuration/