func authFromScratch(credsResult *CredentialsResult, serviceType string, urlType gophercloud.Availability, logger *logrus.Logger) (*gophercloud.ServiceClient, error) { logger.Info("Not using cache; Authenticating from scratch.\n") ao := credsResult.AuthOpts region := credsResult.Region pc, err := rackspace.AuthenticatedClient(*ao) if err != nil { switch err.(type) { case *tokens2.ErrNoPassword: return nil, errors.New("Please supply an API key.") } return nil, err } pc.HTTPClient = newHTTPClient() var sc *gophercloud.ServiceClient switch serviceType { case "compute": sc, err = rackspace.NewComputeV2(pc, gophercloud.EndpointOpts{ Region: region, Availability: urlType, }) break case "object-store": sc, err = rackspace.NewObjectStorageV1(pc, gophercloud.EndpointOpts{ Region: region, Availability: urlType, }) break case "blockstorage": sc, err = rackspace.NewBlockStorageV1(pc, gophercloud.EndpointOpts{ Region: region, Availability: urlType, }) break case "network": sc, err = rackspace.NewNetworkV2(pc, gophercloud.EndpointOpts{ Region: region, Availability: urlType, }) break } if err != nil { return nil, err } if sc == nil { return nil, fmt.Errorf("Unable to create service client: Unknown service type: %s\n", serviceType) } if sc.Endpoint == "/" { return nil, fmt.Errorf(strings.Join([]string{"You wanted to use service net for the %s request", "but the %s service doesn't have an internal URL.\n"}, " "), serviceType, serviceType) } logger.Debugf("Created %s service client: %+v", serviceType, sc) sc.UserAgent.Prepend(util.UserAgent) return sc, nil }
func authFromScratch(credsResult *CredentialsResult, serviceType string, logger *logrus.Logger) (*gophercloud.ServiceClient, error) { logger.Info("Not using cache; Authenticating from scratch.\n") ao := credsResult.AuthOpts region := credsResult.Region pc, err := rackspace.AuthenticatedClient(*ao) if err != nil { return nil, err } pc.HTTPClient = newHTTPClient() var sc *gophercloud.ServiceClient switch serviceType { case "compute": sc, err = rackspace.NewComputeV2(pc, gophercloud.EndpointOpts{ Region: region, }) break case "object-store": sc, err = rackspace.NewObjectStorageV1(pc, gophercloud.EndpointOpts{ Region: region, }) break case "blockstorage": sc, err = rackspace.NewBlockStorageV1(pc, gophercloud.EndpointOpts{ Region: region, }) break case "network": sc, err = rackspace.NewNetworkV2(pc, gophercloud.EndpointOpts{ Region: region, }) break } if err != nil { return nil, err } if sc == nil { return nil, fmt.Errorf("Unable to create service client: Unknown service type: %s\n", serviceType) } sc.UserAgent.Prepend(util.UserAgent) return sc, nil }