From 77d4b477bf739700b95934bc85624bb2ece83c4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Mon, 3 Sep 2018 17:51:13 +0800 Subject: [PATCH] =?UTF-8?q?storage-list=E6=98=BE=E7=A4=BA=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/storages.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pkg/compute/models/storages.go b/pkg/compute/models/storages.go index 3797e8a33e..313797ab1d 100644 --- a/pkg/compute/models/storages.go +++ b/pkg/compute/models/storages.go @@ -101,6 +101,30 @@ func (manager *SStorageManager) AllowListItems(ctx context.Context, userCred mcc return true } +func (self *SStorage) getMoreDetails(extra *jsonutils.JSONDict) *jsonutils.JSONDict { + used := self.GetUsedCapacity(tristate.True) + waste := self.GetUsedCapacity(tristate.False) + vcapa := float32(self.GetCapacity()) * self.GetOvercommitBound() + extra.Add(jsonutils.NewInt(int64(used)), "used_capacity") + extra.Add(jsonutils.NewInt(int64(waste)), "waste_capacity") + extra.Add(jsonutils.NewFloat(float64(vcapa)), "virtual_capacity") + extra.Add(jsonutils.NewFloat(float64(vcapa-float32(used)-float32(waste))), "free_capacity") + if self.GetCapacity() > 0 { + value := float64(used * 1.0 / self.GetCapacity()) + value = float64(int(value*100+0.5) / 100.0) + extra.Add(jsonutils.NewFloat(value), "commit_rate") + } else { + extra.Add(jsonutils.NewFloat(0.0), "commit_rate") + } + extra.Add(jsonutils.NewFloat(float64(self.GetOvercommitBound())), "commit_bound") + return extra +} + +func (self *SStorage) GetCustomizeColumns(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) *jsonutils.JSONDict { + extra := self.SEnabledStatusStandaloneResourceBase.GetCustomizeColumns(ctx, userCred, query) + return self.getMoreDetails(extra) +} + func (self *SStorage) GetUsedCapacity(isReady tristate.TriState) int { disks := DiskManager.Query().SubQuery() q := disks.Query(sqlchemy.SUM("sum", disks.Field("disk_size"))).Equals("storage_id", self.Id)