From 75f7188bc6fc3d09db17155ccdca383daa36605a Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Fri, 16 Jul 2021 10:53:16 +0800 Subject: [PATCH] fix(region): sync auzre subscription health status --- pkg/cloudprovider/subaccount.go | 1 - pkg/multicloud/azure/azure.go | 3 +-- pkg/multicloud/azure/subscription.go | 13 ++++++++++++- pkg/multicloud/ctyun/ctyun.go | 1 - pkg/multicloud/huawei/huawei.go | 1 - 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/pkg/cloudprovider/subaccount.go b/pkg/cloudprovider/subaccount.go index 3d28f91ed3..f203de698d 100644 --- a/pkg/cloudprovider/subaccount.go +++ b/pkg/cloudprovider/subaccount.go @@ -16,7 +16,6 @@ package cloudprovider type SSubAccount struct { Name string - State string Account string HealthStatus string // 云端服务健康状态。例如欠费、项目冻结都属于不健康状态。 } diff --git a/pkg/multicloud/azure/azure.go b/pkg/multicloud/azure/azure.go index 20b05aa267..0977f8c04d 100644 --- a/pkg/multicloud/azure/azure.go +++ b/pkg/multicloud/azure/azure.go @@ -793,9 +793,8 @@ func (self *SAzureClient) GetSubAccounts() (subAccounts []cloudprovider.SSubAcco subAccounts = make([]cloudprovider.SSubAccount, len(self.subscriptions)) for i, subscription := range self.subscriptions { subAccounts[i].Account = fmt.Sprintf("%s/%s", self.tenantId, subscription.SubscriptionId) - subAccounts[i].State = subscription.State subAccounts[i].Name = subscription.DisplayName - subAccounts[i].HealthStatus = api.CLOUD_PROVIDER_HEALTH_NORMAL + subAccounts[i].HealthStatus = subscription.GetHealthStatus() } return subAccounts, nil } diff --git a/pkg/multicloud/azure/subscription.go b/pkg/multicloud/azure/subscription.go index bb92999bbf..c5521ac945 100644 --- a/pkg/multicloud/azure/subscription.go +++ b/pkg/multicloud/azure/subscription.go @@ -14,7 +14,11 @@ package azure -import "net/url" +import ( + "net/url" + + api "yunion.io/x/onecloud/pkg/apis/compute" +) type SSubscription struct { SubscriptionId string `json:"subscriptionId"` @@ -22,6 +26,13 @@ type SSubscription struct { DisplayName string `json:"displayName"` } +func (self *SSubscription) GetHealthStatus() string { + if self.State == "Enabled" { + return api.CLOUD_PROVIDER_HEALTH_NORMAL + } + return api.CLOUD_PROVIDER_HEALTH_SUSPENDED +} + func (self *SAzureClient) ListSubscriptions() ([]SSubscription, error) { result := []SSubscription{} err := self.list("subscriptions", url.Values{}, &result) diff --git a/pkg/multicloud/ctyun/ctyun.go b/pkg/multicloud/ctyun/ctyun.go index 1a3a477ac5..c9690d9206 100644 --- a/pkg/multicloud/ctyun/ctyun.go +++ b/pkg/multicloud/ctyun/ctyun.go @@ -277,7 +277,6 @@ func (self *SCtyunClient) GetSubAccounts() ([]cloudprovider.SSubAccount, error) s := cloudprovider.SSubAccount{ Name: fmt.Sprintf("%s-%s", self.cpcfg.Name, iregion.GetId()), - State: api.CLOUD_PROVIDER_CONNECTED, Account: fmt.Sprintf("%s/%s", self.accessKey, iregion.GetId()), HealthStatus: api.CLOUD_PROVIDER_HEALTH_NORMAL, } diff --git a/pkg/multicloud/huawei/huawei.go b/pkg/multicloud/huawei/huawei.go index 23cc17a375..ad7f2f950a 100644 --- a/pkg/multicloud/huawei/huawei.go +++ b/pkg/multicloud/huawei/huawei.go @@ -333,7 +333,6 @@ func (self *SHuaweiClient) GetSubAccounts() ([]cloudprovider.SSubAccount, error) } s := cloudprovider.SSubAccount{ Name: fmt.Sprintf("%s-%s", self.cpcfg.Name, project.Name), - State: api.CLOUD_PROVIDER_CONNECTED, Account: fmt.Sprintf("%s/%s", self.accessKey, project.ID), HealthStatus: project.GetHealthStatus(), }