mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-10-24 23:41:52 +08:00
fix(region): compatible aliyun fin oss
This commit is contained in:
@@ -61,6 +61,19 @@ const (
|
||||
ALIYUN_ALIDNS_API_VERSION = "2015-01-09"
|
||||
)
|
||||
|
||||
var (
|
||||
// https://help.aliyun.com/document_detail/31837.html?spm=a2c4g.11186623.2.18.675f2b8cu8CN5K#concept-zt4-cvy-5db
|
||||
OSS_FINANCE_REGION_MAP = map[string]string{
|
||||
"cn-hzfinance": "cn-hangzhou",
|
||||
"cn-shanghai-finance-1-pub": "cn-shanghai-finance-1",
|
||||
"cn-szfinance": "cn-shenzhen-finance-1",
|
||||
|
||||
"cn-hzjbp": "cn-hangzhou",
|
||||
"cn-shanghai-finance-1": "cn-shanghai-finance-1",
|
||||
"cn-shenzhen-finance-1": "cn-shenzhen-finance-1",
|
||||
}
|
||||
)
|
||||
|
||||
type AliyunClientConfig struct {
|
||||
cpcfg cloudprovider.ProviderConfig
|
||||
cloudEnv string // 服务区域 InternationalCloud | FinanceCloud
|
||||
@@ -318,6 +331,10 @@ func (client *SAliyunClient) getOssClient(regionId string) (*oss.Client, error)
|
||||
}
|
||||
|
||||
func (self *SAliyunClient) getRegionByRegionId(id string) (cloudprovider.ICloudRegion, error) {
|
||||
_id, ok := OSS_FINANCE_REGION_MAP[id]
|
||||
if ok {
|
||||
id = _id
|
||||
}
|
||||
for i := 0; i < len(self.iregions); i += 1 {
|
||||
if self.iregions[i].GetId() == id {
|
||||
return self.iregions[i], nil
|
||||
|
||||
@@ -86,7 +86,7 @@ func (b *SBucket) GetStorageClass() string {
|
||||
}
|
||||
|
||||
func (b *SBucket) GetAccessUrls() []cloudprovider.SBucketAccessUrl {
|
||||
return []cloudprovider.SBucketAccessUrl{
|
||||
ret := []cloudprovider.SBucketAccessUrl{
|
||||
{
|
||||
Url: fmt.Sprintf("%s.%s", b.Name, b.region.getOSSExternalDomain()),
|
||||
Description: "ExtranetEndpoint",
|
||||
@@ -97,6 +97,31 @@ func (b *SBucket) GetAccessUrls() []cloudprovider.SBucketAccessUrl {
|
||||
Description: "IntranetEndpoint",
|
||||
},
|
||||
}
|
||||
|
||||
osscli, err := b.region.GetOssClient()
|
||||
if err != nil {
|
||||
return ret
|
||||
}
|
||||
info, err := osscli.GetBucketInfo(b.Name)
|
||||
if err != nil {
|
||||
return ret
|
||||
}
|
||||
ret = []cloudprovider.SBucketAccessUrl{}
|
||||
if len(info.BucketInfo.ExtranetEndpoint) > 0 {
|
||||
ret = append(ret, cloudprovider.SBucketAccessUrl{
|
||||
Url: info.BucketInfo.ExtranetEndpoint,
|
||||
Description: "ExtranetEndpoint",
|
||||
Primary: true,
|
||||
})
|
||||
}
|
||||
if len(info.BucketInfo.IntranetEndpoint) > 0 {
|
||||
ret = append(ret, cloudprovider.SBucketAccessUrl{
|
||||
Url: info.BucketInfo.IntranetEndpoint,
|
||||
Description: "IntranetEndpoint",
|
||||
Primary: true,
|
||||
})
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func (b *SBucket) GetStats() cloudprovider.SBucketStats {
|
||||
|
||||
@@ -91,9 +91,23 @@ func (self *SRegion) getOSSInternalDomain() string {
|
||||
return getOSSInternalDomain(self.RegionId)
|
||||
}
|
||||
|
||||
func (self *SRegion) getRegionId() string {
|
||||
if self.client.cloudEnv == ALIYUN_FINANCE_CLOUDENV {
|
||||
switch self.RegionId {
|
||||
case "cn-hangzhou":
|
||||
return "cn-hzfinance"
|
||||
case "cn-shanghai-finance-1":
|
||||
return "cn-shanghai-finance-1-pub"
|
||||
case "cn-shenzhen-finance-1":
|
||||
return "cn-szfinance"
|
||||
}
|
||||
}
|
||||
return self.RegionId
|
||||
}
|
||||
|
||||
func (self *SRegion) GetOssClient() (*oss.Client, error) {
|
||||
if self.ossClient == nil {
|
||||
cli, err := self.client.getOssClient(self.RegionId)
|
||||
cli, err := self.client.getOssClient(self.getRegionId())
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "self.client.getOssClient")
|
||||
}
|
||||
@@ -990,9 +1004,7 @@ func (region *SRegion) GetIBuckets() ([]cloudprovider.ICloudBucket, error) {
|
||||
}
|
||||
ret := make([]cloudprovider.ICloudBucket, 0)
|
||||
for i := range iBuckets {
|
||||
loc := iBuckets[i].GetLocation()
|
||||
// remove oss- prefix
|
||||
if loc[4:] != region.GetId() {
|
||||
if iBuckets[i].GetIRegion().GetId() != region.GetId() {
|
||||
continue
|
||||
}
|
||||
ret = append(ret, iBuckets[i])
|
||||
|
||||
Reference in New Issue
Block a user