diff --git a/pkg/compute/models/guestdisks.go b/pkg/compute/models/guestdisks.go index 342866e56d..47db6f4456 100644 --- a/pkg/compute/models/guestdisks.go +++ b/pkg/compute/models/guestdisks.go @@ -170,6 +170,25 @@ func (self *SGuestdisk) GetJsonDescAtHost(host *SHost) jsonutils.JSONObject { return desc } +func (self *SGuestdisk) GetDetailedJson() *jsonutils.JSONDict { + desc := jsonutils.NewDict() + disk := self.GetDisk() + storage := disk.GetStorage() + if fs := disk.GetFsFormat(); len(fs) > 0 { + desc.Add(jsonutils.NewString(fs), "fs") + } + desc.Add(jsonutils.NewString(disk.DiskType), "disk_type") + desc.Add(jsonutils.NewInt(int64(self.Index)), "index") + desc.Add(jsonutils.NewInt(int64(disk.DiskSize)), "size") + 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 69831e6a21..584026baa9 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -872,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 { @@ -922,6 +923,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() {