Merge pull request #3999 from tb365/bugfix/tb-bugfix-120201

Bugfix/tb bugfix 120201
This commit is contained in:
yunion-ci-robot
2019-12-04 15:15:33 +08:00
committed by GitHub
3 changed files with 39 additions and 16 deletions
+5
View File
@@ -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
}
+12 -6
View File
@@ -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
+22 -10
View File
@@ -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