From 71ee5d8519b71faf66302a95f396943c3598727f Mon Sep 17 00:00:00 2001 From: TangBin Date: Wed, 28 Apr 2021 16:42:25 +0800 Subject: [PATCH 1/2] feat(region): cloudregion add disk capability api --- pkg/compute/models/capabilities.go | 9 +++++++++ pkg/compute/models/cloudregions.go | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/pkg/compute/models/capabilities.go b/pkg/compute/models/capabilities.go index 9588d780c1..41f6d079fd 100644 --- a/pkg/compute/models/capabilities.go +++ b/pkg/compute/models/capabilities.go @@ -88,6 +88,15 @@ type SCapabilities struct { InstanceCapabilities []cloudprovider.SInstanceCapability } +func GetDiskCapabilities(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, region *SCloudregion, zone *SZone) (SCapabilities, error) { + capa := SCapabilities{} + s1, d1, s2, s3, d2, d3 := getStorageTypes(region, zone, "") + capa.StorageTypes, capa.DataStorageTypes = s1, d1 + capa.StorageTypes2, capa.StorageTypes3 = s2, s3 + capa.DataStorageTypes2, capa.DataStorageTypes3 = d2, d3 + return capa, nil +} + func GetCapabilities(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, region *SCloudregion, zone *SZone) (SCapabilities, error) { capa := SCapabilities{} var ownerId mcclient.IIdentityProvider diff --git a/pkg/compute/models/cloudregions.go b/pkg/compute/models/cloudregions.go index d0b0eaa3aa..4dbdb456e1 100644 --- a/pkg/compute/models/cloudregions.go +++ b/pkg/compute/models/cloudregions.go @@ -924,6 +924,18 @@ func (self *SCloudregion) GetDetailsCapability(ctx context.Context, userCred mcc return jsonutils.Marshal(&capa), nil } +func (self *SCloudregion) AllowGetDetailsDiskCapability(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool { + return true +} + +func (self *SCloudregion) GetDetailsDiskCapability(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) (jsonutils.JSONObject, error) { + capa, err := GetDiskCapabilities(ctx, userCred, query, self, nil) + if err != nil { + return nil, err + } + return jsonutils.Marshal(&capa), nil +} + func (self *SCloudregion) GetNetworkCount() (int, error) { return getNetworkCount(nil, rbacutils.ScopeSystem, self, nil) } From 22cc784a48588a04cee2195845d70f7a54ca4170 Mon Sep 17 00:00:00 2001 From: TangBin Date: Wed, 28 Apr 2021 18:09:09 +0800 Subject: [PATCH 2/2] feat(region): add zone disk capability api --- pkg/compute/models/capabilities.go | 2 ++ pkg/compute/models/zones.go | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/pkg/compute/models/capabilities.go b/pkg/compute/models/capabilities.go index 41f6d079fd..e2d2a65e1f 100644 --- a/pkg/compute/models/capabilities.go +++ b/pkg/compute/models/capabilities.go @@ -94,6 +94,8 @@ func GetDiskCapabilities(ctx context.Context, userCred mcclient.TokenCredential, capa.StorageTypes, capa.DataStorageTypes = s1, d1 capa.StorageTypes2, capa.StorageTypes3 = s2, s3 capa.DataStorageTypes2, capa.DataStorageTypes3 = d2, d3 + capa.MinDataDiskCount = getMinDataDiskCount(region, zone) + capa.MaxDataDiskCount = getMaxDataDiskCount(region, zone) return capa, nil } diff --git a/pkg/compute/models/zones.go b/pkg/compute/models/zones.go index e3e36ffbba..a1a91d390b 100644 --- a/pkg/compute/models/zones.go +++ b/pkg/compute/models/zones.go @@ -674,6 +674,18 @@ func (self *SZone) GetDetailsCapability(ctx context.Context, userCred mcclient.T return jsonutils.Marshal(&capa), nil } +func (self *SZone) AllowGetDetailsDiskCapability(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool { + return true +} + +func (self *SZone) GetDetailsDiskCapability(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) (jsonutils.JSONObject, error) { + capa, err := GetDiskCapabilities(ctx, userCred, query, nil, self) + if err != nil { + return nil, err + } + return jsonutils.Marshal(&capa), nil +} + func (self *SZone) isManaged() bool { region := self.GetRegion() if region != nil && len(region.ExternalId) == 0 {