From 1d641f8b169c225acef49adafe8f2a409913e46b Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Thu, 28 Jan 2021 15:56:58 +0800 Subject: [PATCH] fix(region): add aliyun credit amount check --- pkg/multicloud/aliyun/aliyun.go | 9 ++++----- pkg/multicloud/aliyun/business.go | 13 ++++--------- pkg/multicloud/aliyun/provider/provider.go | 10 ++++++---- pkg/multicloud/aliyun/shell/business.go | 8 ++++++-- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/pkg/multicloud/aliyun/aliyun.go b/pkg/multicloud/aliyun/aliyun.go index de93ede8b4..8c613b40df 100644 --- a/pkg/multicloud/aliyun/aliyun.go +++ b/pkg/multicloud/aliyun/aliyun.go @@ -205,19 +205,18 @@ func _jsonRequest(client *sdk.Client, domain string, version string, apiName str resp, err := processCommonRequest(client, req) if err != nil { - log.Errorf("request %s error %s with params %s", apiName, err, params) - return nil, err + return nil, errors.Wrapf(err, "processCommonRequest") } body, err := jsonutils.Parse(resp.GetHttpContentBytes()) if err != nil { - log.Errorf("parse json fail %s", err) - return nil, err + return nil, errors.Wrapf(err, "jsonutils.Parse") } //{"Code":"InvalidInstanceType.ValueNotSupported","HostId":"ecs.aliyuncs.com","Message":"The specified instanceType beyond the permitted range.","RequestId":"0042EE30-0EDF-48A7-A414-56229D4AD532"} //{"Code":"200","Message":"successful","PageNumber":1,"PageSize":50,"RequestId":"BB4C970C-0E23-48DC-A3B0-EB21FFC70A29","RouterTableList":{"RouterTableListType":[{"CreationTime":"2017-03-19T13:37:40Z","Description":"","ResourceGroupId":"rg-acfmwie3cqoobmi","RouteTableId":"vtb-j6c60lectdi80rk5xz43g","RouteTableName":"","RouteTableType":"System","RouterId":"vrt-j6c00qrol733dg36iq4qj","RouterType":"VRouter","VSwitchIds":{"VSwitchId":["vsw-j6c3gig5ub4fmi2veyrus"]},"VpcId":"vpc-j6c86z3sh8ufhgsxwme0q"}]},"Success":true,"TotalCount":1} + //{"Code":"Success","Data":{"CashCoupon":[]},"Message":"Successful!","RequestId":"87AD7E9A-3F8F-460F-9934-FFFE502325EE","Success":true} if body.Contains("Code") { code, _ := body.GetString("Code") - if len(code) > 0 && !utils.IsInStringArray(code, []string{"200"}) { + if len(code) > 0 && !utils.IsInStringArray(code, []string{"200", "Success"}) { return nil, fmt.Errorf(body.String()) } } diff --git a/pkg/multicloud/aliyun/business.go b/pkg/multicloud/aliyun/business.go index e25e0f55d4..daf68f4ede 100644 --- a/pkg/multicloud/aliyun/business.go +++ b/pkg/multicloud/aliyun/business.go @@ -87,14 +87,12 @@ func (self *SAliyunClient) QueryCashCoupons() ([]SCashCoupon, error) { params["EffectiveOrNot"] = "True" body, err := self.businessRequest("QueryCashCoupons", params) if err != nil { - log.Errorf("QueryCashCoupons fail %s", err) - return nil, err + return nil, errors.Wrapf(err, "QueryCashCoupons") } coupons := make([]SCashCoupon, 0) err = body.Unmarshal(&coupons, "Data", "CashCoupon") if err != nil { - log.Errorf("Unmarshal fail %s", err) - return nil, err + return nil, errors.Wrapf(err, "body.Unmarshal") } return coupons, nil } @@ -104,14 +102,12 @@ func (self *SAliyunClient) QueryPrepaidCards() ([]SPrepaidCard, error) { params["EffectiveOrNot"] = "True" body, err := self.businessRequest("QueryPrepaidCards", params) if err != nil { - log.Errorf("QueryPrepaidCards fail %s", err) - return nil, err + return nil, errors.Wrapf(err, "QueryPrepaidCards") } cards := make([]SPrepaidCard, 0) err = body.Unmarshal(&cards, "Data", "PrepaidCard") if err != nil { - log.Errorf("Unmarshal fail %s", err) - return nil, err + return nil, errors.Wrapf(err, "body.Unmarshal") } return cards, nil } @@ -123,7 +119,6 @@ func (self *SAliyunClient) SubscribeBillToOSS(bucket string) error { params["SubscribeType.1"] = "InstanceDetailForBillingPeriod" body, err := self.businessRequest("SubscribeBillToOSS", params) if err != nil { - log.Errorf("SubscribeBillToOSS fail %s", err) return errors.Wrap(err, "SubscribeBillToOSS") } log.Debugf("%s", body) diff --git a/pkg/multicloud/aliyun/provider/provider.go b/pkg/multicloud/aliyun/provider/provider.go index 9df4fa2892..ef1c4b6e5a 100644 --- a/pkg/multicloud/aliyun/provider/provider.go +++ b/pkg/multicloud/aliyun/provider/provider.go @@ -282,10 +282,12 @@ func (self *SAliyunProvider) GetBalance() (float64, string, error) { return 0.0, api.CLOUD_PROVIDER_HEALTH_UNKNOWN, err } status := api.CLOUD_PROVIDER_HEALTH_NORMAL - if balance.AvailableAmount <= 0 { - status = api.CLOUD_PROVIDER_HEALTH_ARREARS - } else if balance.AvailableAmount < 100 { - status = api.CLOUD_PROVIDER_HEALTH_INSUFFICIENT + if balance.CreditAmount+balance.MybankCreditAmount <= 0 { + if balance.AvailableAmount <= 0 { + status = api.CLOUD_PROVIDER_HEALTH_ARREARS + } else if balance.AvailableAmount < 100 { + status = api.CLOUD_PROVIDER_HEALTH_INSUFFICIENT + } } return balance.AvailableAmount, status, nil } diff --git a/pkg/multicloud/aliyun/shell/business.go b/pkg/multicloud/aliyun/shell/business.go index f5eb714ae3..c89edfbc40 100644 --- a/pkg/multicloud/aliyun/shell/business.go +++ b/pkg/multicloud/aliyun/shell/business.go @@ -33,13 +33,17 @@ func init() { if err != nil { return err } - printList(result2, len(result2), 0, 0, nil) + if len(result2) > 0 { + printList(result2, len(result2), 0, 0, nil) + } result3, err := cli.GetClient().QueryPrepaidCards() if err != nil { return err } - printList(result3, len(result3), 0, 0, nil) + if len(result3) > 0 { + printList(result3, len(result3), 0, 0, nil) + } return nil })