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 // 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) { func memoryLimits(drvName string) (int, int, error) {
info, err := machine.CachedHostInfo() info, cpuErr, memErr, diskErr := machine.CachedHostInfo()
if err != nil { if cpuErr != nil {
return -1, -1, err 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) sysLimit := int(info.Memory)
containerLimit := 0 containerLimit := 0
if driver.IsKIC(drvName) { if driver.IsKIC(drvName) {
s, err := oci.CachedDaemonInfo(drvName) s, err := oci.CachedDaemonInfo(drvName)
if err != nil { if err != nil {
return -1, -1, []error{err} return -1, -1, err
} }
containerLimit = int(s.TotalMemory / 1024 / 1024) 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) cc = updateExistingConfigFromFlags(cmd, existing)
} else { } else {
glog.Info("no existing cluster config was found, will generate one from the flags ") glog.Info("no existing cluster config was found, will generate one from the flags ")
sysLimit, containerLimit, errs := memoryLimits(drvName) sysLimit, containerLimit, err := memoryLimits(drvName)
if errs != nil { if err != nil {
glog.Warningf("Unable to query memory limits: %+v", errs) glog.Warningf("Unable to query memory limits: %+v", err)
} }
mem := suggestMemoryAllocation(sysLimit, containerLimit, viper.GetInt(nodes)) mem := suggestMemoryAllocation(sysLimit, containerLimit, viper.GetInt(nodes))

View File

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

View File

@ -254,7 +254,7 @@ func acquireMachinesLock(name string) (mutex.Releaser, error) {
func showHostInfo(cfg config.ClusterConfig) { func showHostInfo(cfg config.ClusterConfig) {
machineType := driver.MachineType(cfg.Driver) machineType := driver.MachineType(cfg.Driver)
if driver.BareMetal(cfg.Driver) { if driver.BareMetal(cfg.Driver) {
info, err := CachedHostInfo() info, err := machine.CachedHostInfo()
if err == nil { if err == nil {
register.Reg.SetStep(register.RunningLocalhost) 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}) 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})