blob: 5e50676fe2b3766dba52dc69e23c93f7198e9a29 [file] [log] [blame]
// +build acceptance
package v2
import (
"errors"
"os"
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/acceptance/tools"
"github.com/gophercloud/gophercloud/rackspace"
)
func newClient() (*gophercloud.ServiceClient, error) {
// Obtain credentials from the environment.
options, err := rackspace.AuthOptionsFromEnv()
if err != nil {
return nil, err
}
options = tools.OnlyRS(options)
region := os.Getenv("RS_REGION")
if options.Username == "" {
return nil, errors.New("Please provide a Rackspace username as RS_USERNAME.")
}
if options.APIKey == "" {
return nil, errors.New("Please provide a Rackspace API key as RS_API_KEY.")
}
if region == "" {
return nil, errors.New("Please provide a Rackspace region as RS_REGION.")
}
client, err := rackspace.AuthenticatedClient(options)
if err != nil {
return nil, err
}
return rackspace.NewComputeV2(client, gophercloud.EndpointOpts{
Region: region,
})
}
type serverOpts struct {
imageID string
flavorID string
}
func optionsFromEnv() (*serverOpts, error) {
options := &serverOpts{
imageID: os.Getenv("RS_IMAGE_ID"),
flavorID: os.Getenv("RS_FLAVOR_ID"),
}
if options.imageID == "" {
return nil, errors.New("Please provide a valid Rackspace image ID as RS_IMAGE_ID")
}
if options.flavorID == "" {
return nil, errors.New("Please provide a valid Rackspace flavor ID as RS_FLAVOR_ID")
}
return options, nil
}