Bump cAdvisor (and dependencies) godeps version
This commit is contained in:
44
vendor/github.com/google/cadvisor/fs/fs.go
generated
vendored
44
vendor/github.com/google/cadvisor/fs/fs.go
generated
vendored
@@ -33,6 +33,8 @@ import (
|
||||
|
||||
"github.com/docker/docker/pkg/mount"
|
||||
"github.com/golang/glog"
|
||||
"github.com/google/cadvisor/devicemapper"
|
||||
dockerutil "github.com/google/cadvisor/utils/docker"
|
||||
zfs "github.com/mistifyio/go-zfs"
|
||||
)
|
||||
|
||||
@@ -56,8 +58,8 @@ type RealFsInfo struct {
|
||||
// Map from label to block device path.
|
||||
// Labels are intent-specific tags that are auto-detected.
|
||||
labels map[string]string
|
||||
|
||||
dmsetup dmsetupClient
|
||||
// devicemapper client
|
||||
dmsetup devicemapper.DmsetupClient
|
||||
}
|
||||
|
||||
type Context struct {
|
||||
@@ -80,13 +82,9 @@ func NewFsInfo(context Context) (FsInfo, error) {
|
||||
fsInfo := &RealFsInfo{
|
||||
partitions: make(map[string]partition, 0),
|
||||
labels: make(map[string]string, 0),
|
||||
dmsetup: &defaultDmsetupClient{},
|
||||
dmsetup: devicemapper.NewDmsetupClient(),
|
||||
}
|
||||
|
||||
fsInfo.addSystemRootLabel(mounts)
|
||||
fsInfo.addDockerImagesLabel(context, mounts)
|
||||
fsInfo.addRktImagesLabel(context, mounts)
|
||||
|
||||
supportedFsType := map[string]bool{
|
||||
// all ext systems are checked through prefix.
|
||||
"btrfs": true,
|
||||
@@ -113,7 +111,13 @@ func NewFsInfo(context Context) (FsInfo, error) {
|
||||
}
|
||||
}
|
||||
|
||||
fsInfo.addRktImagesLabel(context, mounts)
|
||||
// need to call this before the log line below printing out the partitions, as this function may
|
||||
// add a "partition" for devicemapper to fsInfo.partitions
|
||||
fsInfo.addDockerImagesLabel(context, mounts)
|
||||
|
||||
glog.Infof("Filesystem partitions: %+v", fsInfo.partitions)
|
||||
fsInfo.addSystemRootLabel(mounts)
|
||||
return fsInfo, nil
|
||||
}
|
||||
|
||||
@@ -126,7 +130,7 @@ func (self *RealFsInfo) getDockerDeviceMapperInfo(context DockerContext) (string
|
||||
return "", nil, nil
|
||||
}
|
||||
|
||||
dataLoopFile := context.DriverStatus["Data loop file"]
|
||||
dataLoopFile := context.DriverStatus[dockerutil.DriverStatusDataLoopFile]
|
||||
if len(dataLoopFile) > 0 {
|
||||
return "", nil, nil
|
||||
}
|
||||
@@ -274,6 +278,7 @@ func (self *RealFsInfo) GetFsInfoForPath(mountSet map[string]struct{}) ([]Fs, er
|
||||
switch partition.fsType {
|
||||
case DeviceMapper.String():
|
||||
fs.Capacity, fs.Free, fs.Available, err = getDMStats(device, partition.blockSize)
|
||||
glog.V(5).Infof("got devicemapper fs capacity stats: capacity: %v free: %v available: %v:", fs.Capacity, fs.Free, fs.Available)
|
||||
fs.Type = DeviceMapper
|
||||
case ZFS.String():
|
||||
fs.Capacity, fs.Free, fs.Available, err = getZfstats(device)
|
||||
@@ -434,30 +439,15 @@ func getVfsStats(path string) (total uint64, free uint64, avail uint64, inodes u
|
||||
return total, free, avail, inodes, inodesFree, nil
|
||||
}
|
||||
|
||||
// dmsetupClient knows to to interact with dmsetup to retrieve information about devicemapper.
|
||||
type dmsetupClient interface {
|
||||
table(poolName string) ([]byte, error)
|
||||
//TODO add status(poolName string) ([]byte, error) and use it in getDMStats so we can unit test
|
||||
}
|
||||
|
||||
// defaultDmsetupClient implements the standard behavior for interacting with dmsetup.
|
||||
type defaultDmsetupClient struct{}
|
||||
|
||||
var _ dmsetupClient = &defaultDmsetupClient{}
|
||||
|
||||
func (*defaultDmsetupClient) table(poolName string) ([]byte, error) {
|
||||
return exec.Command("dmsetup", "table", poolName).Output()
|
||||
}
|
||||
|
||||
// Devicemapper thin provisioning is detailed at
|
||||
// https://www.kernel.org/doc/Documentation/device-mapper/thin-provisioning.txt
|
||||
func dockerDMDevice(driverStatus map[string]string, dmsetup dmsetupClient) (string, uint, uint, uint, error) {
|
||||
poolName, ok := driverStatus["Pool Name"]
|
||||
func dockerDMDevice(driverStatus map[string]string, dmsetup devicemapper.DmsetupClient) (string, uint, uint, uint, error) {
|
||||
poolName, ok := driverStatus[dockerutil.DriverStatusPoolName]
|
||||
if !ok || len(poolName) == 0 {
|
||||
return "", 0, 0, 0, fmt.Errorf("Could not get dm pool name")
|
||||
}
|
||||
|
||||
out, err := dmsetup.table(poolName)
|
||||
out, err := dmsetup.Table(poolName)
|
||||
if err != nil {
|
||||
return "", 0, 0, 0, err
|
||||
}
|
||||
@@ -470,6 +460,8 @@ func dockerDMDevice(driverStatus map[string]string, dmsetup dmsetupClient) (stri
|
||||
return poolName, major, minor, dataBlkSize, nil
|
||||
}
|
||||
|
||||
// parseDMTable parses a single line of `dmsetup table` output and returns the
|
||||
// major device, minor device, block size, and an error.
|
||||
func parseDMTable(dmTable string) (uint, uint, uint, error) {
|
||||
dmTable = strings.Replace(dmTable, ":", " ", -1)
|
||||
dmFields := strings.Fields(dmTable)
|
||||
|
Reference in New Issue
Block a user