From d5954374cd182c398d929b88e325e8720eea9e7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Wed, 8 Aug 2018 19:47:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=98=BE=E7=A4=BAdisk=20json?= =?UTF-8?q?=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/guestdisks.go | 24 ++++++++++++++++++++++++ pkg/compute/models/guests.go | 31 +++++++++++++++++++++---------- 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/pkg/compute/models/guestdisks.go b/pkg/compute/models/guestdisks.go index 87a305a6af..19d33f19dc 100644 --- a/pkg/compute/models/guestdisks.go +++ b/pkg/compute/models/guestdisks.go @@ -147,6 +147,30 @@ func (self *SGuestdisk) GetJsonDescAtHost(host *SHost) jsonutils.JSONObject { return desc } +func (self *SGuestdisk) GetDetailedJson() *jsonutils.JSONDict { + desc := jsonutils.NewDict() + disk := self.GetDisk() + var fs string + if len(disk.GetTemplateId()) > 0 { + fs = "root" + } else if len(disk.GetFsFormat()) > 0 { + fs = disk.GetFsFormat() + } else { + fs = "none" + } + storage := disk.GetStorage() + desc.Add(jsonutils.NewString(fs), "fs") + desc.Add(jsonutils.NewInt(int64(self.Index)), "index") + desc.Add(jsonutils.NewString(fmt.Sprintf("%dM", disk.DiskSize)), "index") + desc.Add(jsonutils.NewString(disk.DiskFormat), "disk_format") + desc.Add(jsonutils.NewString(self.Driver), "driver") + desc.Add(jsonutils.NewString(self.CacheMode), "cache_mode") + desc.Add(jsonutils.NewString(self.AioMode), "aio_mode") + desc.Add(jsonutils.NewString(storage.MediumType), "medium_type") + desc.Add(jsonutils.NewString(storage.StorageType), "storage_type") + return desc +} + func (self *SGuestdisk) GetDetailedString() string { disk := self.GetDisk() var fs string diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index d9d1fabaf1..1130c72738 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -11,16 +11,7 @@ import ( "github.com/yunionio/jsonutils" "github.com/yunionio/log" - "github.com/yunionio/onecloud/pkg/mcclient" - "github.com/yunionio/onecloud/pkg/mcclient/auth" - "github.com/yunionio/onecloud/pkg/httperrors" - "github.com/yunionio/onecloud/pkg/cloudcommon/db" - "github.com/yunionio/onecloud/pkg/cloudcommon/db/lockman" - "github.com/yunionio/onecloud/pkg/cloudcommon/db/quotas" - "github.com/yunionio/onecloud/pkg/cloudcommon/db/taskman" - "github.com/yunionio/onecloud/pkg/cloudcommon/notifyclient" - "github.com/yunionio/onecloud/pkg/cloudprovider" - "github.com/yunionio/onecloud/pkg/compute/options" + "github.com/yunionio/pkg/tristate" "github.com/yunionio/pkg/util/compare" "github.com/yunionio/pkg/util/fileutils" @@ -30,6 +21,17 @@ import ( "github.com/yunionio/pkg/util/timeutils" "github.com/yunionio/pkg/utils" "github.com/yunionio/sqlchemy" + + "github.com/yunionio/onecloud/pkg/cloudcommon/db" + "github.com/yunionio/onecloud/pkg/cloudcommon/db/lockman" + "github.com/yunionio/onecloud/pkg/cloudcommon/db/quotas" + "github.com/yunionio/onecloud/pkg/cloudcommon/db/taskman" + "github.com/yunionio/onecloud/pkg/cloudcommon/notifyclient" + "github.com/yunionio/onecloud/pkg/cloudprovider" + "github.com/yunionio/onecloud/pkg/compute/options" + "github.com/yunionio/onecloud/pkg/httperrors" + "github.com/yunionio/onecloud/pkg/mcclient" + "github.com/yunionio/onecloud/pkg/mcclient/auth" ) const ( @@ -870,6 +872,7 @@ func (self *SGuest) GetExtraDetails(ctx context.Context, userCred mcclient.Token extra := self.SVirtualResourceBase.GetExtraDetails(ctx, userCred, query) extra.Add(jsonutils.NewString(self.getNetworksDetails()), "networks") extra.Add(jsonutils.NewString(self.getDisksDetails()), "disks") + extra.Add(self.getDisksInfoDetails(), "disks_info") extra.Add(jsonutils.NewInt(int64(self.getDiskSize())), "disk") cdrom := self.getCdrom() if cdrom != nil { @@ -918,6 +921,14 @@ func (self *SGuest) getDisksDetails() string { return buf.String() } +func (self *SGuest) getDisksInfoDetails() *jsonutils.JSONArray { + details := jsonutils.NewArray() + for _, disk := range self.GetDisks() { + details.Add(disk.GetDetailedJson()) + } + return details +} + func (self *SGuest) getIsolatedDeviceDetails() string { var buf bytes.Buffer for _, dev := range self.GetIsolatedDevices() {