dont fail on memory check if cpu and disk checks fail
parent
1d94fa911a
commit
b0afc85327
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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})
|
||||
|
|
Loading…
Reference in New Issue