// NewDBV1 creates a ServiceClient that may be used to access the v1 DB service. func NewDBV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { eo.ApplyDefaults("database") url, err := client.EndpointLocator(eo) if err != nil { return nil, err } return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil }
// NewRackConnectV3 creates a ServiceClient that may be used to access the v3 RackConnect service. func NewRackConnectV3(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { eo.ApplyDefaults("rax:rackconnect") url, err := client.EndpointLocator(eo) if err != nil { return nil, err } return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil }
// NewNetworkV2 creates a ServiceClient that may be used with the v2 network package. func NewNetworkV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { eo.ApplyDefaults("network") url, err := client.EndpointLocator(eo) if err != nil { return nil, err } return &gophercloud.ServiceClient{ ProviderClient: client, Endpoint: url, ResourceBase: url + "v2.0/", }, nil }
func v2auth(client *gophercloud.ProviderClient, endpoint string, options gophercloud.AuthOptions) error { v2Client := NewIdentityV2(client) if endpoint != "" { v2Client.Endpoint = endpoint } result := tokens2.Create(v2Client, tokens2.AuthOptions{AuthOptions: options}) token, err := result.ExtractToken() if err != nil { return err } catalog, err := result.ExtractServiceCatalog() if err != nil { return err } if options.AllowReauth { client.ReauthFunc = func() error { client.TokenID = "" return AuthenticateV2(client, options) } } client.TokenID = token.ID client.EndpointLocator = func(opts gophercloud.EndpointOpts) (string, error) { return V2EndpointURL(catalog, opts) } return nil }
func v3auth(client *gophercloud.ProviderClient, endpoint string, options gophercloud.AuthOptions) error { // Override the generated service endpoint with the one returned by the version endpoint. v3Client := NewIdentityV3(client) if endpoint != "" { v3Client.Endpoint = endpoint } var scope *tokens3.Scope if options.TenantID != "" { scope = &tokens3.Scope{ ProjectID: options.TenantID, } options.TenantID = "" options.TenantName = "" } else { if options.TenantName != "" { scope = &tokens3.Scope{ ProjectName: options.TenantName, DomainID: options.DomainID, DomainName: options.DomainName, } options.TenantName = "" } } result := tokens3.Create(v3Client, options, scope) token, err := result.ExtractToken() if err != nil { return err } catalog, err := result.ExtractServiceCatalog() if err != nil { return err } client.TokenID = token.ID if options.AllowReauth { client.ReauthFunc = func() error { return AuthenticateV3(client, options) } } client.EndpointLocator = func(opts gophercloud.EndpointOpts) (string, error) { return V3EndpointURL(catalog, opts) } return nil }