68 lines
1.6 KiB
Go
68 lines
1.6 KiB
Go
package openstack
|
|
|
|
import (
|
|
"github.com/rackspace/gophercloud"
|
|
"github.com/rackspace/gophercloud/openstack"
|
|
)
|
|
|
|
type Config struct {
|
|
Username string
|
|
UserID string
|
|
Password string
|
|
APIKey string
|
|
IdentityEndpoint string
|
|
TenantID string
|
|
TenantName string
|
|
DomainID string
|
|
DomainName string
|
|
|
|
osClient *gophercloud.ProviderClient
|
|
}
|
|
|
|
func (c *Config) loadAndValidate() error {
|
|
ao := gophercloud.AuthOptions{
|
|
Username: c.Username,
|
|
UserID: c.UserID,
|
|
Password: c.Password,
|
|
APIKey: c.APIKey,
|
|
IdentityEndpoint: c.IdentityEndpoint,
|
|
TenantID: c.TenantID,
|
|
TenantName: c.TenantName,
|
|
DomainID: c.DomainID,
|
|
DomainName: c.DomainName,
|
|
}
|
|
|
|
client, err := openstack.AuthenticatedClient(ao)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
c.osClient = client
|
|
|
|
return nil
|
|
}
|
|
|
|
func (c *Config) blockStorageV1Client(region string) (*gophercloud.ServiceClient, error) {
|
|
return openstack.NewBlockStorageV1(c.osClient, gophercloud.EndpointOpts{
|
|
Region: region,
|
|
})
|
|
}
|
|
|
|
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,
|
|
})
|
|
}
|
|
|
|
func (c *Config) objectStorageV1Client(region string) (*gophercloud.ServiceClient, error) {
|
|
return openstack.NewObjectStorageV1(c.osClient, gophercloud.EndpointOpts{
|
|
Region: region,
|
|
})
|
|
}
|