mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
89 lines
2.2 KiB
Go
89 lines
2.2 KiB
Go
package provider
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"yunion.io/x/jsonutils"
|
|
|
|
"yunion.io/x/onecloud/pkg/cloudprovider"
|
|
"yunion.io/x/onecloud/pkg/util/openstack"
|
|
)
|
|
|
|
type SOpenStackProviderFactory struct {
|
|
// providerTable map[string]*SOpenStackProvider
|
|
}
|
|
|
|
func (self *SOpenStackProviderFactory) GetId() string {
|
|
return openstack.CLOUD_PROVIDER_OPENSTACK
|
|
}
|
|
|
|
func (self *SOpenStackProviderFactory) ValidateChangeBandwidth(instanceId string, bandwidth int64) error {
|
|
return nil
|
|
}
|
|
|
|
func (self *SOpenStackProviderFactory) GetProvider(providerId, providerName, url, account, password string) (cloudprovider.ICloudProvider, error) {
|
|
accountInfo := strings.Split(account, "/")
|
|
username, project := accountInfo[0], ""
|
|
if len(accountInfo) > 1 {
|
|
project = accountInfo[1]
|
|
}
|
|
client, err := openstack.NewOpenStackClient(providerId, providerName, url, username, password, project)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &SOpenStackProvider{client: client}, nil
|
|
}
|
|
|
|
func init() {
|
|
factory := SOpenStackProviderFactory{}
|
|
cloudprovider.RegisterFactory(&factory)
|
|
}
|
|
|
|
type SOpenStackProvider struct {
|
|
client *openstack.SOpenStackClient
|
|
}
|
|
|
|
func (self *SOpenStackProvider) IsPublicCloud() bool {
|
|
return false
|
|
}
|
|
|
|
func (self *SOpenStackProvider) GetVersion() string {
|
|
return ""
|
|
}
|
|
|
|
func (self *SOpenStackProvider) IsOnPremiseInfrastructure() bool {
|
|
return false
|
|
}
|
|
|
|
func (self *SOpenStackProvider) GetId() string {
|
|
return openstack.CLOUD_PROVIDER_OPENSTACK
|
|
}
|
|
|
|
func (self *SOpenStackProvider) GetName() string {
|
|
return openstack.CLOUD_PROVIDER_OPENSTACK
|
|
}
|
|
|
|
func (self *SOpenStackProvider) GetSysInfo() (jsonutils.JSONObject, error) {
|
|
return jsonutils.NewDict(), nil
|
|
}
|
|
|
|
func (self *SOpenStackProvider) GetSubAccounts() ([]cloudprovider.SSubAccount, error) {
|
|
return self.client.GetSubAccounts()
|
|
}
|
|
|
|
func (self *SOpenStackProvider) GetIRegions() []cloudprovider.ICloudRegion {
|
|
return self.client.GetIRegions()
|
|
}
|
|
|
|
func (self *SOpenStackProvider) GetIRegionById(extId string) (cloudprovider.ICloudRegion, error) {
|
|
return self.client.GetIRegionById(extId)
|
|
}
|
|
|
|
func (self *SOpenStackProvider) GetBalance() (float64, error) {
|
|
return 0.0, nil
|
|
}
|
|
|
|
func (self *SOpenStackProvider) GetOnPremiseIRegion() (cloudprovider.ICloudRegion, error) {
|
|
return nil, cloudprovider.ErrNotImplemented
|
|
}
|