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  }