github.com/geofffranks/garden-linux@v0.0.0-20160715111146-26c893169cfa/sysinfo/provider.go (about) 1 package sysinfo 2 3 import "github.com/cloudfoundry/gosigar" 4 5 //go:generate counterfeiter -o fake_sysinfo/FakeProvider.go . Provider 6 7 type Provider interface { 8 TotalMemory() (uint64, error) 9 TotalDisk() (uint64, error) 10 } 11 12 type provider struct { 13 depotPath string 14 } 15 16 func NewProvider(depotPath string) Provider { 17 return &provider{ 18 depotPath: depotPath, 19 } 20 } 21 22 func (provider *provider) TotalMemory() (uint64, error) { 23 mem := sigar.Mem{} 24 25 err := mem.Get() 26 if err != nil { 27 return 0, err 28 } 29 30 return mem.Total, nil 31 } 32 33 func (provider *provider) TotalDisk() (uint64, error) { 34 disk := sigar.FileSystemUsage{} 35 36 err := disk.Get(provider.depotPath) 37 if err != nil { 38 return 0, err 39 } 40 41 return fromKBytesToBytes(disk.Total), nil 42 } 43 44 func fromKBytesToBytes(kbytes uint64) uint64 { 45 return kbytes * 1024 46 }