fix(region): add huawei credit amount check

This commit is contained in:
Qu Xuan
2021-01-28 16:19:07 +08:00
parent dbf219bcca
commit 86bd47d3fd
2 changed files with 17 additions and 17 deletions
+16 -16
View File
@@ -418,7 +418,9 @@ func (self *SHuaweiClient) GetIStorageById(id string) (cloudprovider.ICloudStora
// 总账户余额
type SAccountBalance struct {
AvailableAmount float64
AvailableAmount float64
CreditAmount float64
DesignatedAmount float64
}
// 账户余额
@@ -428,8 +430,8 @@ type SBalance struct {
Currency string `json:"currency"`
AccountID string `json:"account_id"`
AccountType int64 `json:"account_type"`
DesignatedAmount *int64 `json:"designated_amount,omitempty"`
CreditAmount *int64 `json:"credit_amount,omitempty"`
DesignatedAmount float64 `json:"designated_amount,omitempty"`
CreditAmount float64 `json:"credit_amount,omitempty"`
MeasureUnit int64 `json:"measure_unit"`
}
@@ -440,35 +442,33 @@ func (self *SHuaweiClient) QueryAccountBalance() (*SAccountBalance, error) {
return nil, err
}
amount := float64(0)
result := &SAccountBalance{}
for _, domain := range domains {
v, err := self.queryDomainBalance(domain.ID)
balances, err := self.queryDomainBalances(domain.ID)
if err != nil {
return nil, err
}
amount += v
for _, balance := range balances {
result.AvailableAmount += balance.Amount
result.CreditAmount += balance.CreditAmount
result.DesignatedAmount += balance.DesignatedAmount
}
}
return &SAccountBalance{AvailableAmount: amount}, nil
return result, nil
}
// https://support.huaweicloud.com/api-bpconsole/zh-cn_topic_0075213309.html
func (self *SHuaweiClient) queryDomainBalance(domainId string) (float64, error) {
func (self *SHuaweiClient) queryDomainBalances(domainId string) ([]SBalance, error) {
huawei, _ := self.newGeneralAPIClient()
huawei.Balances.SetDomainId(domainId)
balances := make([]SBalance, 0)
err := doListAll(huawei.Balances.List, nil, &balances)
if err != nil {
return 0, err
return nil, err
}
amount := float64(0)
for _, balance := range balances {
amount += balance.Amount
}
return amount, nil
return balances, nil
}
func (self *SHuaweiClient) GetVersion() string {
+1 -1
View File
@@ -199,7 +199,7 @@ func (self *SHuaweiProvider) GetBalance() (float64, string, error) {
return 0.0, api.CLOUD_PROVIDER_HEALTH_UNKNOWN, err
}
status := api.CLOUD_PROVIDER_HEALTH_NORMAL
if balance.AvailableAmount <= 0.0 {
if balance.AvailableAmount <= 0.0 && balance.CreditAmount <= 0.0 {
status = api.CLOUD_PROVIDER_HEALTH_ARREARS
}
return balance.AvailableAmount, status, nil