dont fail on memory check if cpu and disk checks fail

pull/8959/head
Medya Gh 2020-08-11 10:05:54 -07:00
parent 1d94fa911a
commit b0afc85327
4 changed files with 33 additions and 32 deletions

View File

@ -764,18 +764,26 @@ func validateUser(drvName string) {
}
// memoryLimits returns the amount of memory allocated to the system and hypervisor , the return value is in MB
func memoryLimits(drvName string) (int, int, []error) {
info, err := machine.CachedHostInfo()
if err != nil {
return -1, -1, err
func memoryLimits(drvName string) (int, int, error) {
info, cpuErr, memErr, diskErr := machine.CachedHostInfo()
if cpuErr != nil {
glog.Warningf("could not get system cpu info while verifying memory limits, which might be okay: %v", cpuErr)
}
if diskErr != nil {
glog.Warningf("could not get system disk info while verifying memory limits, which might be okay: %v", diskErr)
}
if memErr != nil {
return -1, -1, memErr
}
sysLimit := int(info.Memory)
containerLimit := 0
if driver.IsKIC(drvName) {
s, err := oci.CachedDaemonInfo(drvName)
if err != nil {
return -1, -1, []error{err}
return -1, -1, err
}
containerLimit = int(s.TotalMemory / 1024 / 1024)
}

View File

@ -220,9 +220,9 @@ func generateClusterConfig(cmd *cobra.Command, existing *config.ClusterConfig, k
cc = updateExistingConfigFromFlags(cmd, existing)
} else {
glog.Info("no existing cluster config was found, will generate one from the flags ")
sysLimit, containerLimit, errs := memoryLimits(drvName)
if errs != nil {
glog.Warningf("Unable to query memory limits: %+v", errs)
sysLimit, containerLimit, err := memoryLimits(drvName)
if err != nil {
glog.Warningf("Unable to query memory limits: %+v", err)
}
mem := suggestMemoryAllocation(sysLimit, containerLimit, viper.GetInt(nodes))

View File

@ -22,7 +22,6 @@ import (
"github.com/docker/machine/libmachine/provision"
"github.com/golang/glog"
"github.com/pkg/errors"
"github.com/shirou/gopsutil/cpu"
"github.com/shirou/gopsutil/disk"
"github.com/shirou/gopsutil/mem"
@ -43,33 +42,27 @@ func megs(bytes uint64) int64 {
}
// CachedHostInfo returns system information such as memory,CPU, DiskSize
func CachedHostInfo() (*HostInfo, []error) {
var hostInfoErrs []error
i, err := cachedCPUInfo()
if err != nil {
glog.Warningf("Unable to get CPU info: %v", err)
hostInfoErrs = append(hostInfoErrs, errors.Wrap(err, "cpuInfo"))
func CachedHostInfo() (*HostInfo, error, error, error) {
var cpuErr, memErr, diskErr error
i, cpuErr := cachedCPUInfo()
if cpuErr != nil {
glog.Warningf("Unable to get CPU info: %v", cpuErr)
}
v, err := cachedSysMemLimit()
if err != nil {
glog.Warningf("Unable to get mem info: %v", err)
hostInfoErrs = append(hostInfoErrs, errors.Wrap(err, "memInfo"))
v, memErr := cachedSysMemLimit()
if memErr != nil {
glog.Warningf("Unable to get mem info: %v", memErr)
}
d, err := cachedDiskInfo()
if err != nil {
glog.Warningf("Unable to get disk info: %v", err)
hostInfoErrs = append(hostInfoErrs, errors.Wrap(err, "diskInfo"))
d, diskErr := cachedDiskInfo()
if diskErr != nil {
glog.Warningf("Unable to get disk info: %v", diskErr)
}
var info HostInfo
info.CPUs = len(i)
info.Memory = megs(v.Total)
info.DiskSize = megs(d.Total)
if len(hostInfoErrs) > 0 {
return &info, hostInfoErrs
}
return &info, nil
return &info, cpuErr, memErr, diskErr
}
// showLocalOsRelease shows systemd information about the current linux distribution, on the local host
@ -123,19 +116,19 @@ func cachedSysMemLimit() (*mem.VirtualMemoryStat, error) {
}
var cachedDisk *disk.UsageStat
var cachedDiskInfoeErr *error
var cachedDiskInfoErr *error
// cachedDiskInfo will return a cached disk usage info
func cachedDiskInfo() (disk.UsageStat, error) {
if cachedDisk == nil {
d, err := disk.Usage("/")
cachedDisk = d
cachedDiskInfoeErr = &err
cachedDiskInfoErr = &err
}
if cachedDiskInfoeErr == nil {
if cachedDiskInfoErr == nil {
return *cachedDisk, nil
}
return *cachedDisk, *cachedDiskInfoeErr
return *cachedDisk, *cachedDiskInfoErr
}
var cachedCPU *[]cpu.InfoStat

View File

@ -254,7 +254,7 @@ func acquireMachinesLock(name string) (mutex.Releaser, error) {
func showHostInfo(cfg config.ClusterConfig) {
machineType := driver.MachineType(cfg.Driver)
if driver.BareMetal(cfg.Driver) {
info, err := CachedHostInfo()
info, err := machine.CachedHostInfo()
if err == nil {
register.Reg.SetStep(register.RunningLocalhost)
out.T(out.StartingNone, "Running on localhost (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...", out.V{"number_of_cpus": info.CPUs, "memory_size": info.Memory, "disk_size": info.DiskSize})