github.com/tarrant/terraform@v0.3.8-0.20150402012457-f68c9eee638e/builtin/providers/openstack/config.go (about) 1 package openstack 2 3 import ( 4 "github.com/rackspace/gophercloud" 5 "github.com/rackspace/gophercloud/openstack" 6 ) 7 8 type Config struct { 9 Username string 10 UserID string 11 Password string 12 APIKey string 13 IdentityEndpoint string 14 TenantID string 15 TenantName string 16 DomainID string 17 DomainName string 18 19 osClient *gophercloud.ProviderClient 20 } 21 22 func (c *Config) loadAndValidate() error { 23 ao := gophercloud.AuthOptions{ 24 Username: c.Username, 25 UserID: c.UserID, 26 Password: c.Password, 27 APIKey: c.APIKey, 28 IdentityEndpoint: c.IdentityEndpoint, 29 TenantID: c.TenantID, 30 TenantName: c.TenantName, 31 DomainID: c.DomainID, 32 DomainName: c.DomainName, 33 } 34 35 client, err := openstack.AuthenticatedClient(ao) 36 if err != nil { 37 return err 38 } 39 40 c.osClient = client 41 42 return nil 43 } 44 45 func (c *Config) blockStorageV1Client(region string) (*gophercloud.ServiceClient, error) { 46 return openstack.NewBlockStorageV1(c.osClient, gophercloud.EndpointOpts{ 47 Region: region, 48 }) 49 } 50 51 func (c *Config) computeV2Client(region string) (*gophercloud.ServiceClient, error) { 52 return openstack.NewComputeV2(c.osClient, gophercloud.EndpointOpts{ 53 Region: region, 54 }) 55 } 56 57 func (c *Config) networkingV2Client(region string) (*gophercloud.ServiceClient, error) { 58 return openstack.NewNetworkV2(c.osClient, gophercloud.EndpointOpts{ 59 Region: region, 60 }) 61 } 62 63 func (c *Config) objectStorageV1Client(region string) (*gophercloud.ServiceClient, error) { 64 return openstack.NewObjectStorageV1(c.osClient, gophercloud.EndpointOpts{ 65 Region: region, 66 }) 67 }