From c46f274ff6d507a603588ed7f6e6109debdfc925 Mon Sep 17 00:00:00 2001 From: ioito Date: Sat, 7 Sep 2019 13:37:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=81=BF=E5=85=8D=E9=87=8D=E8=A3=85?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E5=90=8E=E5=90=8C=E6=AD=A5=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=A3=81=E7=9B=98=E7=B1=BB=E5=9E=8B=E9=83=BD?= =?UTF-8?q?=E4=B8=BA=E7=B3=BB=E7=BB=9F=E7=9B=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/multicloud/esxi/virtualmachine.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkg/multicloud/esxi/virtualmachine.go b/pkg/multicloud/esxi/virtualmachine.go index b5c2953c15..dd5c2ae6e8 100644 --- a/pkg/multicloud/esxi/virtualmachine.go +++ b/pkg/multicloud/esxi/virtualmachine.go @@ -18,6 +18,7 @@ import ( "context" "fmt" "reflect" + "sort" "strings" "time" @@ -54,6 +55,17 @@ type SVirtualMachine struct { guestIps map[string]string } +type byDiskType []SVirtualDisk + +func (d byDiskType) Len() int { return len(d) } +func (d byDiskType) Swap(i, j int) { d[i], d[j] = d[j], d[i] } +func (d byDiskType) Less(i, j int) bool { + if d[i].GetDiskType() == api.DISK_TYPE_SYS || d[j].GetDiskType() == api.DISK_TYPE_DATA { + return true + } + return false +} + func NewVirtualMachine(manager *SESXiClient, vm *mo.VirtualMachine, dc *SDatacenter) *SVirtualMachine { svm := &SVirtualMachine{SManagedObject: newManagedObject(manager, vm, dc)} svm.fetchHardwareInfo() @@ -216,6 +228,7 @@ func (self *SVirtualMachine) getIHost() cloudprovider.ICloudHost { func (self *SVirtualMachine) GetIDisks() ([]cloudprovider.ICloudDisk, error) { idisks := make([]cloudprovider.ICloudDisk, len(self.vdisks)) + sort.Sort(byDiskType(self.vdisks)) for i := 0; i < len(self.vdisks); i += 1 { idisks[i] = &(self.vdisks[i]) }