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  }