From 2262cb01234941a9bd83affe920bfc8df3a5febf Mon Sep 17 00:00:00 2001 From: Rain Date: Fri, 21 Feb 2020 15:03:08 +0800 Subject: [PATCH] fix: Storage filter not work for Esxi 1. SESXiGuestDriver.DoScheduleStorageFilter should return true. 2. ESXi's SHost.GetStorageSizeMB should return the capacity of all the storage belonging to it. --- pkg/compute/guestdrivers/esxi.go | 2 ++ pkg/multicloud/esxi/host.go | 14 +++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/pkg/compute/guestdrivers/esxi.go b/pkg/compute/guestdrivers/esxi.go index 7ca419a5e9..eef2a8d7a3 100644 --- a/pkg/compute/guestdrivers/esxi.go +++ b/pkg/compute/guestdrivers/esxi.go @@ -54,6 +54,8 @@ func (self *SESXiGuestDriver) DoScheduleMemoryFilter() bool { return true } func (self *SESXiGuestDriver) DoScheduleSKUFilter() bool { return false } +func (self *SESXiGuestDriver) DoScheduleStorageFilter() bool { return true } + func (self *SESXiGuestDriver) GetHypervisor() string { return api.HYPERVISOR_ESXI } diff --git a/pkg/multicloud/esxi/host.go b/pkg/multicloud/esxi/host.go index c48f921649..af753d8aaf 100644 --- a/pkg/multicloud/esxi/host.go +++ b/pkg/multicloud/esxi/host.go @@ -565,12 +565,16 @@ func (self *SHost) getStorages() []*SHostStorageAdapterInfo { } func (self *SHost) GetStorageSizeMB() int { - size := 0 - storages := self.GetStorageInfo() - for i := 0; i < len(storages); i += 1 { - size += storages[i].Size + storages, err := self.GetIStorages() + if err != nil { + log.Errorf("SHost.GetStorageSizeMB: SHost.GetIStorages: %s", err) + return 0 } - return size + var size int64 + for _, stor := range storages { + size += stor.GetCapacityMB() + } + return int(size) } func (self *SHost) GetStorageType() string {