terraform/builtin/providers/openstack/config.go

84 lines
1.9 KiB
Go
Raw Normal View History

2014-10-29 22:52:36 +01:00
package openstack
import (
"crypto/tls"
"net/http"
2014-10-29 22:52:36 +01:00
"github.com/rackspace/gophercloud"
"github.com/rackspace/gophercloud/openstack"
)
type Config struct {
Username string
2015-01-26 05:00:57 +01:00
UserID string
2014-10-29 22:52:36 +01:00
Password string
2015-01-26 05:00:57 +01:00
APIKey string
2014-10-29 22:52:36 +01:00
IdentityEndpoint string
2015-01-26 05:00:57 +01:00
TenantID string
2015-01-10 23:02:19 +01:00
TenantName string
2015-01-26 05:00:57 +01:00
DomainID string
DomainName string
Insecure bool
2014-10-29 22:52:36 +01:00
2015-01-26 05:00:57 +01:00
osClient *gophercloud.ProviderClient
2014-10-29 22:52:36 +01:00
}
func (c *Config) loadAndValidate() error {
ao := gophercloud.AuthOptions{
2015-01-10 23:02:19 +01:00
Username: c.Username,
2015-01-26 05:00:57 +01:00
UserID: c.UserID,
2015-01-10 23:02:19 +01:00
Password: c.Password,
2015-01-26 05:00:57 +01:00
APIKey: c.APIKey,
2014-10-29 22:52:36 +01:00
IdentityEndpoint: c.IdentityEndpoint,
2015-01-26 05:00:57 +01:00
TenantID: c.TenantID,
2015-01-10 23:02:19 +01:00
TenantName: c.TenantName,
2015-01-26 05:00:57 +01:00
DomainID: c.DomainID,
DomainName: c.DomainName,
2014-10-29 22:52:36 +01:00
}
client, err := openstack.NewClient(ao.IdentityEndpoint)
if err != nil {
return err
}
if c.Insecure {
// Configure custom TLS settings.
config := &tls.Config{InsecureSkipVerify: true}
transport := &http.Transport{TLSClientConfig: config}
client.HTTPClient.Transport = transport
}
err = openstack.Authenticate(client, ao)
2014-10-29 22:52:36 +01:00
if err != nil {
return err
}
2015-01-26 05:00:57 +01:00
c.osClient = client
2014-10-29 22:52:36 +01:00
return nil
}
2015-01-31 22:33:54 +01:00
2015-02-01 08:34:37 +01:00
func (c *Config) blockStorageV1Client(region string) (*gophercloud.ServiceClient, error) {
return openstack.NewBlockStorageV1(c.osClient, gophercloud.EndpointOpts{
Region: region,
})
}
2015-01-31 22:33:54 +01:00
func (c *Config) computeV2Client(region string) (*gophercloud.ServiceClient, error) {
return openstack.NewComputeV2(c.osClient, gophercloud.EndpointOpts{
Region: region,
})
}
func (c *Config) networkingV2Client(region string) (*gophercloud.ServiceClient, error) {
return openstack.NewNetworkV2(c.osClient, gophercloud.EndpointOpts{
Region: region,
})
}
2015-02-01 04:51:50 +01:00
func (c *Config) objectStorageV1Client(region string) (*gophercloud.ServiceClient, error) {
return openstack.NewObjectStorageV1(c.osClient, gophercloud.EndpointOpts{
Region: region,
})
}