github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/edge/pkg/edged/images/image_gc_manager.go (about) 1 package images 2 3 import ( 4 "syscall" 5 6 statsapi "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" 7 "k8s.io/kubernetes/pkg/kubelet/images" 8 9 "github.com/kubeedge/kubeedge/pkg/util" 10 ) 11 12 type imageGCManager struct { 13 imageGCPath string 14 } 15 16 func (i *imageGCManager) ImageFsStats() (*statsapi.FsStats, error) { 17 fs := syscall.Statfs_t{} 18 err := syscall.Statfs(i.imageGCPath, &fs) 19 if err != nil { 20 return nil, err 21 } 22 cap := fs.Blocks * uint64(fs.Bsize) 23 ava := fs.Bfree * uint64(fs.Bsize) 24 used := (fs.Blocks - fs.Bfree) * uint64(fs.Bsize) 25 return &statsapi.FsStats{ 26 CapacityBytes: &cap, 27 AvailableBytes: &ava, 28 UsedBytes: &used, 29 }, nil 30 } 31 32 //NewStatsProvider returns image status provider 33 func NewStatsProvider() images.StatsProvider { 34 return &imageGCManager{ 35 util.GetCurPath(), 36 } 37 }