mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
fix(region): add huawei credit amount check
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user