From b0afc85327ba13bf91d428dbf1da9fabdbc9934d Mon Sep 17 00:00:00 2001 From: Medya Gh Date: Tue, 11 Aug 2020 10:05:54 -0700 Subject: [PATCH] dont fail on memory check if cpu and disk checks fail --- cmd/minikube/cmd/start.go | 18 ++++++++++----- cmd/minikube/cmd/start_flags.go | 6 ++--- pkg/minikube/machine/info.go | 39 ++++++++++++++------------------- pkg/minikube/machine/start.go | 2 +- 4 files changed, 33 insertions(+), 32 deletions(-) diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 3ea8a10e65..0ac6265bb7 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -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) } diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go index 5472d691a5..d3c4f2c1f5 100644 --- a/cmd/minikube/cmd/start_flags.go +++ b/cmd/minikube/cmd/start_flags.go @@ -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)) diff --git a/pkg/minikube/machine/info.go b/pkg/minikube/machine/info.go index 834aaa4860..7799d513da 100644 --- a/pkg/minikube/machine/info.go +++ b/pkg/minikube/machine/info.go @@ -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 diff --git a/pkg/minikube/machine/start.go b/pkg/minikube/machine/start.go index afeaa3f071..167bf382a0 100644 --- a/pkg/minikube/machine/start.go +++ b/pkg/minikube/machine/start.go @@ -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})