// freeMemOrSwap is an abstraction of FreeMemory and FreeSwap, which measures // if the desired resource has a quantity free above the amount specified func freeMemOrSwap(input string, swapOrMem string) (int, string, error) { amount, units, err := chkutil.SeparateByteUnits(input) if err != nil { log.WithFields(log.Fields{ "err": err.Error(), }).Fatal("Couldn't separate string into a scalar and units") } var actualAmount int switch strings.ToLower(swapOrMem) { case "memory": actualAmount, err = memstatus.FreeMemory(units) case "swap": actualAmount, err = memstatus.FreeSwap(units) default: log.Fatalf("Invalid option passed to freeMemoOrSwap: %s", swapOrMem) } if err != nil { return 1, "", err } else if actualAmount > amount { return errutil.Success() } msg := "Free " + swapOrMem + " lower than defined threshold" actualString := fmt.Sprint(actualAmount) + units return errutil.GenericError(msg, input, []string{actualString}) }
func (chk MemoryUsage) Status() (int, string, error) { actualPercentUsed, err := memstatus.FreeMemory("percent") if err != nil { return 1, "", err } if actualPercentUsed < int(chk.maxPercentUsed) { return errutil.Success() } msg := "Memory usage above defined maximum" slc := []string{fmt.Sprint(actualPercentUsed)} return errutil.GenericError(msg, fmt.Sprint(chk.maxPercentUsed), slc) }