github.com/schwarzm/garden-linux@v0.0.0-20150507151835-33bca2147c47/old/system_info/provider.go (about) 1 package system_info 2 3 import ( 4 "github.com/cloudfoundry/gosigar" 5 ) 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 }