mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-10-29 17:58:36 +08:00
Merge pull request #3999 from tb365/bugfix/tb-bugfix-120201
Bugfix/tb bugfix 120201
This commit is contained in:
@@ -686,6 +686,11 @@ func (manager *SCloudregionManager) ListItemFilter(ctx context.Context, q *sqlch
|
||||
case DBInstanceManager.KeywordPlural():
|
||||
skusSQ := DBInstanceSkuManager.Query("cloudregion_id").Equals("status", api.DBINSTANCE_SKU_AVAILABLE).IsTrue("enabled").SubQuery()
|
||||
q = q.In("id", skusSQ)
|
||||
case ElasticcacheManager.KeywordPlural():
|
||||
q2 := ElasticcacheSkuManager.Query("cloudregion_id")
|
||||
statusFilter := sqlchemy.OR(sqlchemy.Equals(q2.Field("prepaid_status"), api.SkuStatusAvailable), sqlchemy.Equals(q2.Field("postpaid_status"), api.SkuStatusAvailable))
|
||||
skusSQ := q2.Filter(statusFilter).SubQuery()
|
||||
q = q.In("id", skusSQ)
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
||||
@@ -239,7 +239,13 @@ func (self *SSkuResourcesMeta) _get(url string) ([]jsonutils.JSONObject, error)
|
||||
return nil, fmt.Errorf("SkuResourcesMeta.get invalid url %s.expected has prefix 'http'", url)
|
||||
}
|
||||
|
||||
resp, err := http.Get(url)
|
||||
req, err := http.NewRequest(http.MethodGet, url, nil)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("SkuResourcesMeta.get.NewRequest %s", err)
|
||||
}
|
||||
|
||||
client := &http.Client{}
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("SkuResourcesMeta.get.Get %s", err)
|
||||
}
|
||||
@@ -247,18 +253,18 @@ func (self *SSkuResourcesMeta) _get(url string) ([]jsonutils.JSONObject, error)
|
||||
defer resp.Body.Close()
|
||||
content, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("SkuResourcesMeta.get.Read %s", err)
|
||||
return nil, fmt.Errorf("SkuResourcesMeta.get.ReadAll %s", err)
|
||||
}
|
||||
|
||||
contentJson, err := jsonutils.Parse(content)
|
||||
jsonContent, err := jsonutils.Parse(content)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("SkuResourcesMeta.get.Parse %s", err)
|
||||
}
|
||||
|
||||
ret := []jsonutils.JSONObject{}
|
||||
err = contentJson.Unmarshal(&ret)
|
||||
var ret []jsonutils.JSONObject
|
||||
err = jsonContent.Unmarshal(&ret)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("SkuResourcesMeta.get.Unmarshal(%s) %s", contentJson.String(), err)
|
||||
return nil, fmt.Errorf("SkuResourcesMeta.get.Unmarshal %s", err)
|
||||
}
|
||||
|
||||
return ret, nil
|
||||
|
||||
@@ -90,6 +90,7 @@ type VolumeImageMetadata struct {
|
||||
type SDisk struct {
|
||||
storage *SStorage
|
||||
multicloud.SDisk
|
||||
details *SResourceDetail
|
||||
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
@@ -189,12 +190,27 @@ func (self *SDisk) GetMetadata() *jsonutils.JSONDict {
|
||||
return data
|
||||
}
|
||||
|
||||
func (self *SDisk) getResourceDetails() *SResourceDetail {
|
||||
if self.details != nil {
|
||||
return self.details
|
||||
}
|
||||
|
||||
res, err := self.storage.zone.region.GetOrderResourceDetail(self.GetId())
|
||||
if err != nil {
|
||||
log.Debugln(err)
|
||||
return nil
|
||||
}
|
||||
|
||||
self.details = &res
|
||||
return self.details
|
||||
}
|
||||
|
||||
func (self *SDisk) GetBillingType() string {
|
||||
// https://support.huaweicloud.com/api-evs/zh-cn_topic_0020235170.html
|
||||
if self.Metadata.Billing == "1" {
|
||||
details := self.getResourceDetails()
|
||||
if details == nil {
|
||||
return billing_api.BILLING_TYPE_POSTPAID
|
||||
} else {
|
||||
return billing_api.BILLING_TYPE_PREPAID // ?
|
||||
return billing_api.BILLING_TYPE_PREPAID
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,13 +220,9 @@ func (self *SDisk) GetCreatedAt() time.Time {
|
||||
|
||||
func (self *SDisk) GetExpiredAt() time.Time {
|
||||
var expiredTime time.Time
|
||||
if self.Metadata.Billing == "1" {
|
||||
res, err := self.storage.zone.region.GetOrderResourceDetail(self.GetId())
|
||||
if err != nil {
|
||||
log.Debugln(err)
|
||||
}
|
||||
|
||||
expiredTime = res.ExpireTime
|
||||
details := self.getResourceDetails()
|
||||
if details != nil {
|
||||
expiredTime = details.ExpireTime
|
||||
}
|
||||
|
||||
return expiredTime
|
||||
|
||||
Reference in New Issue
Block a user