diff --git a/pkg/compute/models/cloudproviders.go b/pkg/compute/models/cloudproviders.go index e16557b2d7..333d192535 100644 --- a/pkg/compute/models/cloudproviders.go +++ b/pkg/compute/models/cloudproviders.go @@ -1541,7 +1541,7 @@ func (provider *SCloudprovider) prepareCloudproviderRegions(ctx context.Context, return []SCloudproviderregion{*cpr}, nil } iregions := driver.GetIRegions() - externalIdPrefix := strings.TrimSuffix(driver.GetCloudRegionExternalIdPrefix(), "/") + externalIdPrefix := driver.GetCloudRegionExternalIdPrefix() _, _, cprs, result := CloudregionManager.SyncRegions(ctx, userCred, provider, externalIdPrefix, iregions) if result.IsError() { log.Errorf("syncRegion fail %s", result.Result()) diff --git a/pkg/compute/models/cloudregions.go b/pkg/compute/models/cloudregions.go index 38bccbeb54..9fc3c844b6 100644 --- a/pkg/compute/models/cloudregions.go +++ b/pkg/compute/models/cloudregions.go @@ -17,6 +17,7 @@ package models import ( "context" "database/sql" + "strings" "time" "yunion.io/x/cloudmux/pkg/cloudprovider" @@ -471,11 +472,12 @@ func (self *SCloudregion) GetServerSkus() ([]SServerSku, error) { } func (self *SCloudprovider) GetRegionByExternalIdPrefix(prefix string) ([]SCloudregion, error) { + prefix = strings.TrimSuffix(prefix, "/") regions := make([]SCloudregion, 0) q := CloudregionManager.Query() q = q.Filter( sqlchemy.OR( - sqlchemy.Startswith(q.Field("external_id"), prefix), + sqlchemy.Startswith(q.Field("external_id"), prefix+"/"), sqlchemy.Equals(q.Field("external_id"), prefix), ), )