From e914b035c146bb0ae87806e168422b9c1fef5d43 Mon Sep 17 00:00:00 2001 From: ioito Date: Tue, 25 Jan 2022 16:51:28 +0800 Subject: [PATCH] fix(region): nutanix disk type --- pkg/multicloud/nutanix/disk.go | 18 +++++++++++++++++- pkg/multicloud/nutanix/instance.go | 3 +++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/pkg/multicloud/nutanix/disk.go b/pkg/multicloud/nutanix/disk.go index 78a1dfc8cb..1733faf987 100644 --- a/pkg/multicloud/nutanix/disk.go +++ b/pkg/multicloud/nutanix/disk.go @@ -193,6 +193,8 @@ type SDisk struct { FlashModeEnabled string `json:"flash_mode_enabled"` DataSourceURL string `json:"data_source_url"` Stats DiskStats `json:"stats"` + + isSys bool } func (self *SDisk) GetName() string { @@ -239,9 +241,23 @@ func (self *SDisk) GetDriver() string { } func (self *SDisk) GetDiskType() string { - if strings.HasSuffix(self.DiskAddress, ".0") { + if self.isSys { return api.DISK_TYPE_SYS } + ins, err := self.storage.zone.region.GetInstance(self.AttachedVMUUID) + if err != nil { + return api.DISK_TYPE_DATA + } + for _, disk := range ins.VMDiskInfo { + if disk.IsCdrom { + continue + } + if disk.DiskAddress.VmdiskUUID == self.UUID { + return api.DISK_TYPE_SYS + } else { + return api.DISK_TYPE_DATA + } + } return api.DISK_TYPE_DATA } diff --git a/pkg/multicloud/nutanix/instance.go b/pkg/multicloud/nutanix/instance.go index ae44422fcd..09037f14d5 100644 --- a/pkg/multicloud/nutanix/instance.go +++ b/pkg/multicloud/nutanix/instance.go @@ -238,6 +238,7 @@ func (self *SInstance) GetIDisks() ([]cloudprovider.ICloudDisk, error) { cdroms = append(cdroms, disk.DiskAddress.VmdiskUUID) } } + isSys := true ret := []cloudprovider.ICloudDisk{} for i := range disks { if utils.IsInStringArray(disks[i].UUID, cdroms) { // skip cdrom disk @@ -248,7 +249,9 @@ func (self *SInstance) GetIDisks() ([]cloudprovider.ICloudDisk, error) { log.Errorf("can not found disk %s storage %s", disks[i].DiskAddress, disks[i].StorageContainerUUID) continue } + disks[i].isSys = isSys disks[i].storage = storage.(*SStorage) + isSys = false ret = append(ret, &disks[i]) } return ret, nil