38 lines
684 B
Go
38 lines
684 B
Go
|
package common
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"os"
|
||
|
|
||
|
sigar "github.com/cloudfoundry/gosigar"
|
||
|
)
|
||
|
|
||
|
func AvailableMem(desired uint64) error {
|
||
|
free := freeMem()
|
||
|
if desired > free {
|
||
|
return fmt.Errorf("RAM - Requested - %dMB - Available %dMB", desired, free)
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func freeMem() uint64 {
|
||
|
mem := sigar.Mem{}
|
||
|
mem.Get()
|
||
|
return (mem.Free / 1024 / 1024)
|
||
|
}
|
||
|
|
||
|
func AvailableDisk(desired uint64) error {
|
||
|
free := freeDisk()
|
||
|
if desired > free {
|
||
|
return fmt.Errorf("Disk - Requested - %dMB - Available %dMB", desired, free)
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func freeDisk() uint64 {
|
||
|
disk := sigar.FileSystemUsage{}
|
||
|
workingDirectory, _ := os.Getwd()
|
||
|
disk.Get(workingDirectory)
|
||
|
return (disk.Avail / 1024)
|
||
|
}
|