From 0f4729ae506f18f66ea730f8cedc011da38525e0 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Thu, 13 Dec 2018 12:35:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=EF=BC=9A=E8=8E=B7=E5=8F=96pr?= =?UTF-8?q?ovider/region=20ext=20id/zone=20ext=20id=E4=B8=8D=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E8=AE=BF=E9=97=AEcloud=20provider=20driver=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E9=AB=98=E8=AE=BF=E9=97=AE=E6=95=88=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/managedresource.go | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/pkg/compute/models/managedresource.go b/pkg/compute/models/managedresource.go index 98412d47ac..78eeabba83 100644 --- a/pkg/compute/models/managedresource.go +++ b/pkg/compute/models/managedresource.go @@ -6,6 +6,7 @@ import ( "yunion.io/x/onecloud/pkg/appctx" "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/cloudprovider" + "strings" ) type SManagedResourceBase struct { @@ -82,6 +83,15 @@ type SCloudProviderInfo struct { ZoneExtId string `json:",omitempty"` } +func fetchExternalId(extId string) string { + pos := strings.LastIndexByte(extId, '/') + if pos > 0 { + return extId[pos+1:] + } else { + return extId + } +} + func MakeCloudProviderInfo(region *SCloudregion, zone *SZone, provider *SCloudprovider) SCloudProviderInfo { info := SCloudProviderInfo{} @@ -111,22 +121,12 @@ func MakeCloudProviderInfo(region *SCloudregion, zone *SZone, provider *SCloudpr info.Account = account.GetName() info.AccountId = account.GetId() - driver, err := provider.GetDriver() + info.Provider = provider.Provider - if err == nil { - info.Provider = driver.GetId() - - if region != nil { - iregion, err := driver.GetIRegionById(region.ExternalId) - if err == nil { - info.RegionExtId = iregion.GetId() - if zone != nil { - izone, err := iregion.GetIZoneById(zone.ExternalId) - if err == nil { - info.ZoneExtId = izone.GetId() - } - } - } + if region != nil { + info.RegionExtId = fetchExternalId(region.ExternalId) + if zone != nil { + info.ZoneExtId = fetchExternalId(zone.ExternalId) } } }