diff --git a/pkg/apis/compute/globalvpc.go b/pkg/apis/compute/globalvpc.go index 8c3d050b1c..093b597598 100644 --- a/pkg/apis/compute/globalvpc.go +++ b/pkg/apis/compute/globalvpc.go @@ -26,6 +26,9 @@ type GlobalVpcDetails struct { apis.EnabledStatusInfrasResourceBaseDetails SGlobalVpc + + // vpc数量 + VpcCount int `json:"vpc_count"` } type GlobalVpcResourceInfo struct { diff --git a/pkg/compute/models/globalvpcs.go b/pkg/compute/models/globalvpcs.go index 300fdd9ee0..148d0b142b 100644 --- a/pkg/compute/models/globalvpcs.go +++ b/pkg/compute/models/globalvpcs.go @@ -69,9 +69,13 @@ func (self *SGlobalVpc) ValidateDeleteCondition(ctx context.Context) error { return self.SEnabledStatusInfrasResourceBase.ValidateDeleteCondition(ctx) } +func (self *SGlobalVpc) GetVpcQuery() *sqlchemy.SQuery { + return VpcManager.Query().Equals("globalvpc_id", self.Id) +} + func (self *SGlobalVpc) GetVpcs() ([]SVpc, error) { vpcs := []SVpc{} - q := VpcManager.Query().Equals("globalvpc_id", self.Id) + q := self.GetVpcQuery() err := db.FetchModelObjects(VpcManager, q, &vpcs) if err != nil { return nil, err @@ -79,6 +83,10 @@ func (self *SGlobalVpc) GetVpcs() ([]SVpc, error) { return vpcs, nil } +func (self *SGlobalVpc) GetVpcCount() (int, error) { + return self.GetVpcQuery().CountWithError() +} + func (self *SGlobalVpc) GetExtraDetails(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, isList bool) (api.GlobalVpcDetails, error) { return api.GlobalVpcDetails{}, nil } @@ -97,6 +105,8 @@ func (manager *SGlobalVpcManager) FetchCustomizeColumns( rows[i] = api.GlobalVpcDetails{ EnabledStatusInfrasResourceBaseDetails: stdRows[i], } + gv := objs[i].(*SGlobalVpc) + rows[i].VpcCount, _ = gv.GetVpcCount() } return rows }