mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	kubelet/cadvisor: Refactor cadvisor disk stat/usage interfaces
This commit is contained in:
		@@ -330,7 +330,7 @@ func run(s *options.KubeletServer, kcfg *KubeletConfig) (err error) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if kcfg.CAdvisorInterface == nil {
 | 
						if kcfg.CAdvisorInterface == nil {
 | 
				
			||||||
		kcfg.CAdvisorInterface, err = cadvisor.New(s.CAdvisorPort)
 | 
							kcfg.CAdvisorInterface, err = cadvisor.New(s.CAdvisorPort, kcfg.ContainerRuntime)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,8 +28,8 @@ type MesosCadvisor struct {
 | 
				
			|||||||
	mem   uint64
 | 
						mem   uint64
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewMesosCadvisor(cores int, mem uint64, port uint) (*MesosCadvisor, error) {
 | 
					func NewMesosCadvisor(cores int, mem uint64, port uint, runtime string) (*MesosCadvisor, error) {
 | 
				
			||||||
	c, err := cadvisor.New(port)
 | 
						c, err := cadvisor.New(port, runtime)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -209,7 +209,7 @@ func (s *KubeletExecutorServer) runKubelet(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// create custom cAdvisor interface which return the resource values that Mesos reports
 | 
						// create custom cAdvisor interface which return the resource values that Mesos reports
 | 
				
			||||||
	ni := <-nodeInfos
 | 
						ni := <-nodeInfos
 | 
				
			||||||
	cAdvisorInterface, err := NewMesosCadvisor(ni.Cores, ni.Mem, s.CAdvisorPort)
 | 
						cAdvisorInterface, err := NewMesosCadvisor(ni.Cores, ni.Mem, s.CAdvisorPort, kcfg.ContainerRuntime)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,6 +39,7 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type cadvisorClient struct {
 | 
					type cadvisorClient struct {
 | 
				
			||||||
 | 
						runtime string
 | 
				
			||||||
	manager.Manager
 | 
						manager.Manager
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -60,7 +61,7 @@ func init() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Creates a cAdvisor and exports its API on the specified port if port > 0.
 | 
					// Creates a cAdvisor and exports its API on the specified port if port > 0.
 | 
				
			||||||
func New(port uint) (Interface, error) {
 | 
					func New(port uint, runtime string) (Interface, error) {
 | 
				
			||||||
	sysFs, err := sysfs.NewRealSysFs()
 | 
						sysFs, err := sysfs.NewRealSysFs()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
@@ -73,6 +74,7 @@ func New(port uint) (Interface, error) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cadvisorClient := &cadvisorClient{
 | 
						cadvisorClient := &cadvisorClient{
 | 
				
			||||||
 | 
							runtime: runtime,
 | 
				
			||||||
		Manager: m,
 | 
							Manager: m,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -163,8 +165,19 @@ func (cc *cadvisorClient) MachineInfo() (*cadvisorapi.MachineInfo, error) {
 | 
				
			|||||||
	return cc.GetMachineInfo()
 | 
						return cc.GetMachineInfo()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (cc *cadvisorClient) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
					func (cc *cadvisorClient) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
				
			||||||
	return cc.getFsInfo(cadvisorfs.LabelDockerImages)
 | 
						var label string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch cc.runtime {
 | 
				
			||||||
 | 
						case "docker":
 | 
				
			||||||
 | 
							label = cadvisorfs.LabelDockerImages
 | 
				
			||||||
 | 
						case "rkt":
 | 
				
			||||||
 | 
							label = cadvisorfs.LabelRktImages
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return cadvisorapiv2.FsInfo{}, fmt.Errorf("ImagesFsInfo: unknown runtime: %v", cc.runtime)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return cc.getFsInfo(label)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (cc *cadvisorClient) RootFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
					func (cc *cadvisorClient) RootFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,7 @@ type cadvisorUnsupported struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var _ Interface = new(cadvisorUnsupported)
 | 
					var _ Interface = new(cadvisorUnsupported)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func New(port uint) (Interface, error) {
 | 
					func New(port uint, runtime string) (Interface, error) {
 | 
				
			||||||
	return &cadvisorUnsupported{}, nil
 | 
						return &cadvisorUnsupported{}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -65,7 +65,7 @@ func (cu *cadvisorUnsupported) VersionInfo() (*cadvisorapi.VersionInfo, error) {
 | 
				
			|||||||
	return nil, unsupportedErr
 | 
						return nil, unsupportedErr
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (cu *cadvisorUnsupported) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
					func (cu *cadvisorUnsupported) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
				
			||||||
	return cadvisorapiv2.FsInfo{}, unsupportedErr
 | 
						return cadvisorapiv2.FsInfo{}, unsupportedErr
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -62,7 +62,7 @@ func (c *Fake) VersionInfo() (*cadvisorapi.VersionInfo, error) {
 | 
				
			|||||||
	return new(cadvisorapi.VersionInfo), nil
 | 
						return new(cadvisorapi.VersionInfo), nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *Fake) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
					func (c *Fake) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
				
			||||||
	return cadvisorapiv2.FsInfo{}, nil
 | 
						return cadvisorapiv2.FsInfo{}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -69,7 +69,7 @@ func (c *Mock) VersionInfo() (*cadvisorapi.VersionInfo, error) {
 | 
				
			|||||||
	return args.Get(0).(*cadvisorapi.VersionInfo), args.Error(1)
 | 
						return args.Get(0).(*cadvisorapi.VersionInfo), args.Error(1)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *Mock) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
					func (c *Mock) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
				
			||||||
	args := c.Called()
 | 
						args := c.Called()
 | 
				
			||||||
	return args.Get(0).(cadvisorapiv2.FsInfo), args.Error(1)
 | 
						return args.Get(0).(cadvisorapiv2.FsInfo), args.Error(1)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,7 +34,7 @@ type Interface interface {
 | 
				
			|||||||
	VersionInfo() (*cadvisorapi.VersionInfo, error)
 | 
						VersionInfo() (*cadvisorapi.VersionInfo, error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Returns usage information about the filesystem holding Docker images.
 | 
						// Returns usage information about the filesystem holding Docker images.
 | 
				
			||||||
	DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error)
 | 
						ImagesFsInfo() (cadvisorapiv2.FsInfo, error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Returns usage information about the root filesystem.
 | 
						// Returns usage information about the root filesystem.
 | 
				
			||||||
	RootFsInfo() (cadvisorapiv2.FsInfo, error)
 | 
						RootFsInfo() (cadvisorapiv2.FsInfo, error)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,7 +35,7 @@ const mb = 1024 * 1024
 | 
				
			|||||||
type diskSpaceManager interface {
 | 
					type diskSpaceManager interface {
 | 
				
			||||||
	// Checks the available disk space
 | 
						// Checks the available disk space
 | 
				
			||||||
	IsRootDiskSpaceAvailable() (bool, error)
 | 
						IsRootDiskSpaceAvailable() (bool, error)
 | 
				
			||||||
	IsDockerDiskSpaceAvailable() (bool, error)
 | 
						IsRuntimeDiskSpaceAvailable() (bool, error)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type DiskSpacePolicy struct {
 | 
					type DiskSpacePolicy struct {
 | 
				
			||||||
@@ -83,8 +83,8 @@ func (dm *realDiskSpaceManager) getFsInfo(fsType string, f func() (cadvisorapi.F
 | 
				
			|||||||
	return fsi, nil
 | 
						return fsi, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (dm *realDiskSpaceManager) IsDockerDiskSpaceAvailable() (bool, error) {
 | 
					func (dm *realDiskSpaceManager) IsRuntimeDiskSpaceAvailable() (bool, error) {
 | 
				
			||||||
	return dm.isSpaceAvailable("docker", dm.policy.DockerFreeDiskMB, dm.cadvisor.DockerImagesFsInfo)
 | 
						return dm.isSpaceAvailable("runtime", dm.policy.DockerFreeDiskMB, dm.cadvisor.ImagesFsInfo)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (dm *realDiskSpaceManager) IsRootDiskSpaceAvailable() (bool, error) {
 | 
					func (dm *realDiskSpaceManager) IsRootDiskSpaceAvailable() (bool, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,7 +61,7 @@ func TestSpaceAvailable(t *testing.T) {
 | 
				
			|||||||
	dm, err := newDiskSpaceManager(mockCadvisor, policy)
 | 
						dm, err := newDiskSpaceManager(mockCadvisor, policy)
 | 
				
			||||||
	assert.NoError(err)
 | 
						assert.NoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{
 | 
						mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{
 | 
				
			||||||
		Usage:     400 * mb,
 | 
							Usage:     400 * mb,
 | 
				
			||||||
		Capacity:  1000 * mb,
 | 
							Capacity:  1000 * mb,
 | 
				
			||||||
		Available: 600 * mb,
 | 
							Available: 600 * mb,
 | 
				
			||||||
@@ -71,7 +71,7 @@ func TestSpaceAvailable(t *testing.T) {
 | 
				
			|||||||
		Capacity: 10 * mb,
 | 
							Capacity: 10 * mb,
 | 
				
			||||||
	}, nil)
 | 
						}, nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ok, err := dm.IsDockerDiskSpaceAvailable()
 | 
						ok, err := dm.IsRuntimeDiskSpaceAvailable()
 | 
				
			||||||
	assert.NoError(err)
 | 
						assert.NoError(err)
 | 
				
			||||||
	assert.True(ok)
 | 
						assert.True(ok)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -80,31 +80,31 @@ func TestSpaceAvailable(t *testing.T) {
 | 
				
			|||||||
	assert.False(ok)
 | 
						assert.False(ok)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TestIsDockerDiskSpaceAvailableWithSpace verifies IsDockerDiskSpaceAvailable results when
 | 
					// TestIsRuntimeDiskSpaceAvailableWithSpace verifies IsRuntimeDiskSpaceAvailable results when
 | 
				
			||||||
// space is available.
 | 
					// space is available.
 | 
				
			||||||
func TestIsDockerDiskSpaceAvailableWithSpace(t *testing.T) {
 | 
					func TestIsRuntimeDiskSpaceAvailableWithSpace(t *testing.T) {
 | 
				
			||||||
	assert, policy, mockCadvisor := setUp(t)
 | 
						assert, policy, mockCadvisor := setUp(t)
 | 
				
			||||||
	dm, err := newDiskSpaceManager(mockCadvisor, policy)
 | 
						dm, err := newDiskSpaceManager(mockCadvisor, policy)
 | 
				
			||||||
	require.NoError(t, err)
 | 
						require.NoError(t, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 500MB available
 | 
						// 500MB available
 | 
				
			||||||
	mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{
 | 
						mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{
 | 
				
			||||||
		Usage:     9500 * mb,
 | 
							Usage:     9500 * mb,
 | 
				
			||||||
		Capacity:  10000 * mb,
 | 
							Capacity:  10000 * mb,
 | 
				
			||||||
		Available: 500 * mb,
 | 
							Available: 500 * mb,
 | 
				
			||||||
	}, nil)
 | 
						}, nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ok, err := dm.IsDockerDiskSpaceAvailable()
 | 
						ok, err := dm.IsRuntimeDiskSpaceAvailable()
 | 
				
			||||||
	assert.NoError(err)
 | 
						assert.NoError(err)
 | 
				
			||||||
	assert.True(ok)
 | 
						assert.True(ok)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TestIsDockerDiskSpaceAvailableWithoutSpace verifies IsDockerDiskSpaceAvailable results when
 | 
					// TestIsRuntimeDiskSpaceAvailableWithoutSpace verifies IsRuntimeDiskSpaceAvailable results when
 | 
				
			||||||
// space is not available.
 | 
					// space is not available.
 | 
				
			||||||
func TestIsDockerDiskSpaceAvailableWithoutSpace(t *testing.T) {
 | 
					func TestIsRuntimeDiskSpaceAvailableWithoutSpace(t *testing.T) {
 | 
				
			||||||
	// 1MB available
 | 
						// 1MB available
 | 
				
			||||||
	assert, policy, mockCadvisor := setUp(t)
 | 
						assert, policy, mockCadvisor := setUp(t)
 | 
				
			||||||
	mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{
 | 
						mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{
 | 
				
			||||||
		Usage:     999 * mb,
 | 
							Usage:     999 * mb,
 | 
				
			||||||
		Capacity:  1000 * mb,
 | 
							Capacity:  1000 * mb,
 | 
				
			||||||
		Available: 1 * mb,
 | 
							Available: 1 * mb,
 | 
				
			||||||
@@ -113,7 +113,7 @@ func TestIsDockerDiskSpaceAvailableWithoutSpace(t *testing.T) {
 | 
				
			|||||||
	dm, err := newDiskSpaceManager(mockCadvisor, policy)
 | 
						dm, err := newDiskSpaceManager(mockCadvisor, policy)
 | 
				
			||||||
	require.NoError(t, err)
 | 
						require.NoError(t, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ok, err := dm.IsDockerDiskSpaceAvailable()
 | 
						ok, err := dm.IsRuntimeDiskSpaceAvailable()
 | 
				
			||||||
	assert.NoError(err)
 | 
						assert.NoError(err)
 | 
				
			||||||
	assert.False(ok)
 | 
						assert.False(ok)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -164,7 +164,7 @@ func TestCache(t *testing.T) {
 | 
				
			|||||||
	dm, err := newDiskSpaceManager(mockCadvisor, policy)
 | 
						dm, err := newDiskSpaceManager(mockCadvisor, policy)
 | 
				
			||||||
	assert.NoError(err)
 | 
						assert.NoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{
 | 
						mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{
 | 
				
			||||||
		Usage:     400 * mb,
 | 
							Usage:     400 * mb,
 | 
				
			||||||
		Capacity:  1000 * mb,
 | 
							Capacity:  1000 * mb,
 | 
				
			||||||
		Available: 300 * mb,
 | 
							Available: 300 * mb,
 | 
				
			||||||
@@ -176,7 +176,7 @@ func TestCache(t *testing.T) {
 | 
				
			|||||||
	}, nil).Once()
 | 
						}, nil).Once()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Initial calls which should be recorded in mockCadvisor
 | 
						// Initial calls which should be recorded in mockCadvisor
 | 
				
			||||||
	ok, err := dm.IsDockerDiskSpaceAvailable()
 | 
						ok, err := dm.IsRuntimeDiskSpaceAvailable()
 | 
				
			||||||
	assert.NoError(err)
 | 
						assert.NoError(err)
 | 
				
			||||||
	assert.True(ok)
 | 
						assert.True(ok)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -188,7 +188,7 @@ func TestCache(t *testing.T) {
 | 
				
			|||||||
	cadvisorCallCount := len(mockCadvisor.Calls)
 | 
						cadvisorCallCount := len(mockCadvisor.Calls)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Checking for space again shouldn't need to mock as cache would serve it.
 | 
						// Checking for space again shouldn't need to mock as cache would serve it.
 | 
				
			||||||
	ok, err = dm.IsDockerDiskSpaceAvailable()
 | 
						ok, err = dm.IsRuntimeDiskSpaceAvailable()
 | 
				
			||||||
	assert.NoError(err)
 | 
						assert.NoError(err)
 | 
				
			||||||
	assert.True(ok)
 | 
						assert.True(ok)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -208,9 +208,9 @@ func TestFsInfoError(t *testing.T) {
 | 
				
			|||||||
	dm, err := newDiskSpaceManager(mockCadvisor, policy)
 | 
						dm, err := newDiskSpaceManager(mockCadvisor, policy)
 | 
				
			||||||
	assert.NoError(err)
 | 
						assert.NoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{}, fmt.Errorf("can't find fs"))
 | 
						mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{}, fmt.Errorf("can't find fs"))
 | 
				
			||||||
	mockCadvisor.On("RootFsInfo").Return(cadvisorapi.FsInfo{}, fmt.Errorf("EBUSY"))
 | 
						mockCadvisor.On("RootFsInfo").Return(cadvisorapi.FsInfo{}, fmt.Errorf("EBUSY"))
 | 
				
			||||||
	ok, err := dm.IsDockerDiskSpaceAvailable()
 | 
						ok, err := dm.IsRuntimeDiskSpaceAvailable()
 | 
				
			||||||
	assert.Error(err)
 | 
						assert.Error(err)
 | 
				
			||||||
	assert.True(ok)
 | 
						assert.True(ok)
 | 
				
			||||||
	ok, err = dm.IsRootDiskSpaceAvailable()
 | 
						ok, err = dm.IsRootDiskSpaceAvailable()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -209,7 +209,7 @@ func (im *realImageManager) detectImages(detectTime time.Time) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (im *realImageManager) GarbageCollect() error {
 | 
					func (im *realImageManager) GarbageCollect() error {
 | 
				
			||||||
	// Get disk usage on disk holding images.
 | 
						// Get disk usage on disk holding images.
 | 
				
			||||||
	fsInfo, err := im.cadvisor.DockerImagesFsInfo()
 | 
						fsInfo, err := im.cadvisor.ImagesFsInfo()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -373,7 +373,7 @@ func TestGarbageCollectBelowLowThreshold(t *testing.T) {
 | 
				
			|||||||
	manager, _, mockCadvisor := newRealImageManager(policy)
 | 
						manager, _, mockCadvisor := newRealImageManager(policy)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Expect 40% usage.
 | 
						// Expect 40% usage.
 | 
				
			||||||
	mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{
 | 
						mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{
 | 
				
			||||||
		Usage:    400,
 | 
							Usage:    400,
 | 
				
			||||||
		Capacity: 1000,
 | 
							Capacity: 1000,
 | 
				
			||||||
	}, nil)
 | 
						}, nil)
 | 
				
			||||||
@@ -388,7 +388,7 @@ func TestGarbageCollectCadvisorFailure(t *testing.T) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	manager, _, mockCadvisor := newRealImageManager(policy)
 | 
						manager, _, mockCadvisor := newRealImageManager(policy)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, fmt.Errorf("error"))
 | 
						mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, fmt.Errorf("error"))
 | 
				
			||||||
	assert.NotNil(t, manager.GarbageCollect())
 | 
						assert.NotNil(t, manager.GarbageCollect())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -400,7 +400,7 @@ func TestGarbageCollectBelowSuccess(t *testing.T) {
 | 
				
			|||||||
	manager, fakeRuntime, mockCadvisor := newRealImageManager(policy)
 | 
						manager, fakeRuntime, mockCadvisor := newRealImageManager(policy)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Expect 95% usage and most of it gets freed.
 | 
						// Expect 95% usage and most of it gets freed.
 | 
				
			||||||
	mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{
 | 
						mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{
 | 
				
			||||||
		Usage:    950,
 | 
							Usage:    950,
 | 
				
			||||||
		Capacity: 1000,
 | 
							Capacity: 1000,
 | 
				
			||||||
	}, nil)
 | 
						}, nil)
 | 
				
			||||||
@@ -419,7 +419,7 @@ func TestGarbageCollectNotEnoughFreed(t *testing.T) {
 | 
				
			|||||||
	manager, fakeRuntime, mockCadvisor := newRealImageManager(policy)
 | 
						manager, fakeRuntime, mockCadvisor := newRealImageManager(policy)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Expect 95% usage and little of it gets freed.
 | 
						// Expect 95% usage and little of it gets freed.
 | 
				
			||||||
	mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{
 | 
						mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{
 | 
				
			||||||
		Usage:    950,
 | 
							Usage:    950,
 | 
				
			||||||
		Capacity: 1000,
 | 
							Capacity: 1000,
 | 
				
			||||||
	}, nil)
 | 
						}, nil)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2379,7 +2379,7 @@ func (kl *Kubelet) isOutOfDisk() bool {
 | 
				
			|||||||
	outOfDockerDisk := false
 | 
						outOfDockerDisk := false
 | 
				
			||||||
	outOfRootDisk := false
 | 
						outOfRootDisk := false
 | 
				
			||||||
	// Check disk space once globally and reject or accept all new pods.
 | 
						// Check disk space once globally and reject or accept all new pods.
 | 
				
			||||||
	withinBounds, err := kl.diskSpaceManager.IsDockerDiskSpaceAvailable()
 | 
						withinBounds, err := kl.diskSpaceManager.IsRuntimeDiskSpaceAvailable()
 | 
				
			||||||
	// Assume enough space in case of errors.
 | 
						// Assume enough space in case of errors.
 | 
				
			||||||
	if err == nil && !withinBounds {
 | 
						if err == nil && !withinBounds {
 | 
				
			||||||
		outOfDockerDisk = true
 | 
							outOfDockerDisk = true
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,10 +50,10 @@ func (kl *Kubelet) GetContainerInfoV2(name string, options cadvisorapiv2.Request
 | 
				
			|||||||
	return kl.cadvisor.ContainerInfoV2(name, options)
 | 
						return kl.cadvisor.ContainerInfoV2(name, options)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DockerImagesFsInfo returns information about docker image fs usage from
 | 
					// ImagesFsInfo returns information about docker image fs usage from
 | 
				
			||||||
// cadvisor.
 | 
					// cadvisor.
 | 
				
			||||||
func (kl *Kubelet) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
					func (kl *Kubelet) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
				
			||||||
	return kl.cadvisor.DockerImagesFsInfo()
 | 
						return kl.cadvisor.ImagesFsInfo()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// RootFsInfo returns info about the root fs from cadvisor.
 | 
					// RootFsInfo returns info about the root fs from cadvisor.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -299,7 +299,7 @@ func TestSyncLoopAbort(t *testing.T) {
 | 
				
			|||||||
func TestSyncPodsStartPod(t *testing.T) {
 | 
					func TestSyncPodsStartPod(t *testing.T) {
 | 
				
			||||||
	testKubelet := newTestKubelet(t)
 | 
						testKubelet := newTestKubelet(t)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	kubelet := testKubelet.kubelet
 | 
						kubelet := testKubelet.kubelet
 | 
				
			||||||
	fakeRuntime := testKubelet.fakeRuntime
 | 
						fakeRuntime := testKubelet.fakeRuntime
 | 
				
			||||||
@@ -321,7 +321,7 @@ func TestSyncPodsDeletesWhenSourcesAreReady(t *testing.T) {
 | 
				
			|||||||
	testKubelet := newTestKubelet(t)
 | 
						testKubelet := newTestKubelet(t)
 | 
				
			||||||
	fakeRuntime := testKubelet.fakeRuntime
 | 
						fakeRuntime := testKubelet.fakeRuntime
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	kubelet := testKubelet.kubelet
 | 
						kubelet := testKubelet.kubelet
 | 
				
			||||||
	kubelet.sourcesReady = config.NewSourcesReady(func(_ sets.String) bool { return ready })
 | 
						kubelet.sourcesReady = config.NewSourcesReady(func(_ sets.String) bool { return ready })
 | 
				
			||||||
@@ -1967,7 +1967,7 @@ func TestHandlePortConflicts(t *testing.T) {
 | 
				
			|||||||
	testKubelet := newTestKubelet(t)
 | 
						testKubelet := newTestKubelet(t)
 | 
				
			||||||
	kl := testKubelet.kubelet
 | 
						kl := testKubelet.kubelet
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	kl.nodeLister = testNodeLister{nodes: []api.Node{
 | 
						kl.nodeLister = testNodeLister{nodes: []api.Node{
 | 
				
			||||||
@@ -2028,7 +2028,7 @@ func TestHandleHostNameConflicts(t *testing.T) {
 | 
				
			|||||||
	testKubelet := newTestKubelet(t)
 | 
						testKubelet := newTestKubelet(t)
 | 
				
			||||||
	kl := testKubelet.kubelet
 | 
						kl := testKubelet.kubelet
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	kl.nodeLister = testNodeLister{nodes: []api.Node{
 | 
						kl.nodeLister = testNodeLister{nodes: []api.Node{
 | 
				
			||||||
@@ -2098,7 +2098,7 @@ func TestHandleNodeSelector(t *testing.T) {
 | 
				
			|||||||
	kl.nodeLister = testNodeLister{nodes: nodes}
 | 
						kl.nodeLister = testNodeLister{nodes: nodes}
 | 
				
			||||||
	kl.nodeInfo = testNodeInfo{nodes: nodes}
 | 
						kl.nodeInfo = testNodeInfo{nodes: nodes}
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	pods := []*api.Pod{
 | 
						pods := []*api.Pod{
 | 
				
			||||||
		podWithUidNameNsSpec("123456789", "podA", "foo", api.PodSpec{NodeSelector: map[string]string{"key": "A"}}),
 | 
							podWithUidNameNsSpec("123456789", "podA", "foo", api.PodSpec{NodeSelector: map[string]string{"key": "A"}}),
 | 
				
			||||||
@@ -2143,7 +2143,7 @@ func TestHandleMemExceeded(t *testing.T) {
 | 
				
			|||||||
	kl.nodeLister = testNodeLister{nodes: nodes}
 | 
						kl.nodeLister = testNodeLister{nodes: nodes}
 | 
				
			||||||
	kl.nodeInfo = testNodeInfo{nodes: nodes}
 | 
						kl.nodeInfo = testNodeInfo{nodes: nodes}
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	spec := api.PodSpec{NodeName: kl.nodeName,
 | 
						spec := api.PodSpec{NodeName: kl.nodeName,
 | 
				
			||||||
@@ -2187,7 +2187,7 @@ func TestHandleMemExceeded(t *testing.T) {
 | 
				
			|||||||
func TestPurgingObsoleteStatusMapEntries(t *testing.T) {
 | 
					func TestPurgingObsoleteStatusMapEntries(t *testing.T) {
 | 
				
			||||||
	testKubelet := newTestKubelet(t)
 | 
						testKubelet := newTestKubelet(t)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	versionInfo := &cadvisorapi.VersionInfo{
 | 
						versionInfo := &cadvisorapi.VersionInfo{
 | 
				
			||||||
		KernelVersion:      "3.16.0-0.bpo.4-amd64",
 | 
							KernelVersion:      "3.16.0-0.bpo.4-amd64",
 | 
				
			||||||
@@ -2336,7 +2336,7 @@ func TestValidateContainerLogStatus(t *testing.T) {
 | 
				
			|||||||
func updateDiskSpacePolicy(kubelet *Kubelet, mockCadvisor *cadvisortest.Mock, rootCap, dockerCap, rootAvail, dockerAvail uint64, rootThreshold, dockerThreshold int) error {
 | 
					func updateDiskSpacePolicy(kubelet *Kubelet, mockCadvisor *cadvisortest.Mock, rootCap, dockerCap, rootAvail, dockerAvail uint64, rootThreshold, dockerThreshold int) error {
 | 
				
			||||||
	dockerimagesFsInfo := cadvisorapiv2.FsInfo{Capacity: rootCap * mb, Available: rootAvail * mb}
 | 
						dockerimagesFsInfo := cadvisorapiv2.FsInfo{Capacity: rootCap * mb, Available: rootAvail * mb}
 | 
				
			||||||
	rootFsInfo := cadvisorapiv2.FsInfo{Capacity: dockerCap * mb, Available: dockerAvail * mb}
 | 
						rootFsInfo := cadvisorapiv2.FsInfo{Capacity: dockerCap * mb, Available: dockerAvail * mb}
 | 
				
			||||||
	mockCadvisor.On("DockerImagesFsInfo").Return(dockerimagesFsInfo, nil)
 | 
						mockCadvisor.On("ImagesFsInfo").Return(dockerimagesFsInfo, nil)
 | 
				
			||||||
	mockCadvisor.On("RootFsInfo").Return(rootFsInfo, nil)
 | 
						mockCadvisor.On("RootFsInfo").Return(rootFsInfo, nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dsp := DiskSpacePolicy{DockerFreeDiskMB: rootThreshold, RootFreeDiskMB: dockerThreshold}
 | 
						dsp := DiskSpacePolicy{DockerFreeDiskMB: rootThreshold, RootFreeDiskMB: dockerThreshold}
 | 
				
			||||||
@@ -3099,7 +3099,7 @@ func TestDeleteOutdatedMirrorPod(t *testing.T) {
 | 
				
			|||||||
	testKubelet := newTestKubelet(t)
 | 
						testKubelet := newTestKubelet(t)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("Start").Return(nil)
 | 
						testKubelet.fakeCadvisor.On("Start").Return(nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	kl := testKubelet.kubelet
 | 
						kl := testKubelet.kubelet
 | 
				
			||||||
@@ -3142,7 +3142,7 @@ func TestDeleteOrphanedMirrorPods(t *testing.T) {
 | 
				
			|||||||
	testKubelet := newTestKubelet(t)
 | 
						testKubelet := newTestKubelet(t)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("Start").Return(nil)
 | 
						testKubelet.fakeCadvisor.On("Start").Return(nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	kl := testKubelet.kubelet
 | 
						kl := testKubelet.kubelet
 | 
				
			||||||
@@ -3425,7 +3425,7 @@ func TestRegisterExistingNodeWithApiserver(t *testing.T) {
 | 
				
			|||||||
		DockerVersion:      "1.5.0",
 | 
							DockerVersion:      "1.5.0",
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	mockCadvisor.On("VersionInfo").Return(versionInfo, nil)
 | 
						mockCadvisor.On("VersionInfo").Return(versionInfo, nil)
 | 
				
			||||||
	mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{
 | 
						mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{
 | 
				
			||||||
		Usage:     400 * mb,
 | 
							Usage:     400 * mb,
 | 
				
			||||||
		Capacity:  1000 * mb,
 | 
							Capacity:  1000 * mb,
 | 
				
			||||||
		Available: 600 * mb,
 | 
							Available: 600 * mb,
 | 
				
			||||||
@@ -3650,7 +3650,7 @@ func podWithUidNameNsSpec(uid types.UID, name, namespace string, spec api.PodSpe
 | 
				
			|||||||
func TestDeletePodDirsForDeletedPods(t *testing.T) {
 | 
					func TestDeletePodDirsForDeletedPods(t *testing.T) {
 | 
				
			||||||
	testKubelet := newTestKubelet(t)
 | 
						testKubelet := newTestKubelet(t)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	kl := testKubelet.kubelet
 | 
						kl := testKubelet.kubelet
 | 
				
			||||||
	pods := []*api.Pod{
 | 
						pods := []*api.Pod{
 | 
				
			||||||
@@ -3697,7 +3697,7 @@ func syncAndVerifyPodDir(t *testing.T, testKubelet *TestKubelet, pods []*api.Pod
 | 
				
			|||||||
func TestDoesNotDeletePodDirsForTerminatedPods(t *testing.T) {
 | 
					func TestDoesNotDeletePodDirsForTerminatedPods(t *testing.T) {
 | 
				
			||||||
	testKubelet := newTestKubelet(t)
 | 
						testKubelet := newTestKubelet(t)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	kl := testKubelet.kubelet
 | 
						kl := testKubelet.kubelet
 | 
				
			||||||
	pods := []*api.Pod{
 | 
						pods := []*api.Pod{
 | 
				
			||||||
@@ -3717,7 +3717,7 @@ func TestDoesNotDeletePodDirsForTerminatedPods(t *testing.T) {
 | 
				
			|||||||
func TestDoesNotDeletePodDirsIfContainerIsRunning(t *testing.T) {
 | 
					func TestDoesNotDeletePodDirsIfContainerIsRunning(t *testing.T) {
 | 
				
			||||||
	testKubelet := newTestKubelet(t)
 | 
						testKubelet := newTestKubelet(t)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	runningPod := &kubecontainer.Pod{
 | 
						runningPod := &kubecontainer.Pod{
 | 
				
			||||||
		ID:        "12345678",
 | 
							ID:        "12345678",
 | 
				
			||||||
@@ -4192,7 +4192,7 @@ func TestHandlePodAdditionsInvokesPodAdmitHandlers(t *testing.T) {
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
	testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
						testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pods := []*api.Pod{
 | 
						pods := []*api.Pod{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,7 +46,7 @@ import (
 | 
				
			|||||||
func TestRunOnce(t *testing.T) {
 | 
					func TestRunOnce(t *testing.T) {
 | 
				
			||||||
	cadvisor := &cadvisortest.Mock{}
 | 
						cadvisor := &cadvisortest.Mock{}
 | 
				
			||||||
	cadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
						cadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
 | 
				
			||||||
	cadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{
 | 
						cadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{
 | 
				
			||||||
		Usage:     400 * mb,
 | 
							Usage:     400 * mb,
 | 
				
			||||||
		Capacity:  1000 * mb,
 | 
							Capacity:  1000 * mb,
 | 
				
			||||||
		Available: 600 * mb,
 | 
							Available: 600 * mb,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -171,7 +171,7 @@ type HostInterface interface {
 | 
				
			|||||||
	GetNode() (*api.Node, error)
 | 
						GetNode() (*api.Node, error)
 | 
				
			||||||
	GetNodeConfig() cm.NodeConfig
 | 
						GetNodeConfig() cm.NodeConfig
 | 
				
			||||||
	LatestLoopEntryTime() time.Time
 | 
						LatestLoopEntryTime() time.Time
 | 
				
			||||||
	DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error)
 | 
						ImagesFsInfo() (cadvisorapiv2.FsInfo, error)
 | 
				
			||||||
	RootFsInfo() (cadvisorapiv2.FsInfo, error)
 | 
						RootFsInfo() (cadvisorapiv2.FsInfo, error)
 | 
				
			||||||
	ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool)
 | 
						ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool)
 | 
				
			||||||
	PLEGHealthCheck() (bool, error)
 | 
						PLEGHealthCheck() (bool, error)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -142,8 +142,8 @@ func (_ *fakeKubelet) GetContainerInfoV2(_ string, _ cadvisorapiv2.RequestOption
 | 
				
			|||||||
	return nil, nil
 | 
						return nil, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (_ *fakeKubelet) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
					func (_ *fakeKubelet) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
				
			||||||
	return cadvisorapiv2.FsInfo{}, fmt.Errorf("Unsupported Operation DockerImagesFsInfo")
 | 
						return cadvisorapiv2.FsInfo{}, fmt.Errorf("Unsupported Operation ImagesFsInfo")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (_ *fakeKubelet) RootFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
					func (_ *fakeKubelet) RootFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,7 +44,7 @@ type StatsProvider interface {
 | 
				
			|||||||
	GetPodByName(namespace, name string) (*api.Pod, bool)
 | 
						GetPodByName(namespace, name string) (*api.Pod, bool)
 | 
				
			||||||
	GetNode() (*api.Node, error)
 | 
						GetNode() (*api.Node, error)
 | 
				
			||||||
	GetNodeConfig() cm.NodeConfig
 | 
						GetNodeConfig() cm.NodeConfig
 | 
				
			||||||
	DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error)
 | 
						ImagesFsInfo() (cadvisorapiv2.FsInfo, error)
 | 
				
			||||||
	RootFsInfo() (cadvisorapiv2.FsInfo, error)
 | 
						RootFsInfo() (cadvisorapiv2.FsInfo, error)
 | 
				
			||||||
	ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool)
 | 
						ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool)
 | 
				
			||||||
	GetPods() []*api.Pod
 | 
						GetPods() []*api.Pod
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -162,8 +162,8 @@ func (_m *MockStatsProvider) GetNodeConfig() cm.NodeConfig {
 | 
				
			|||||||
	return r0
 | 
						return r0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DockerImagesFsInfo provides a mock function with given fields:
 | 
					// ImagesFsInfo provides a mock function with given fields:
 | 
				
			||||||
func (_m *MockStatsProvider) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
					func (_m *MockStatsProvider) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
 | 
				
			||||||
	ret := _m.Called()
 | 
						ret := _m.Called()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var r0 cadvisorapiv2.FsInfo
 | 
						var r0 cadvisorapiv2.FsInfo
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -81,7 +81,7 @@ func (sp *summaryProviderImpl) Get() (*stats.Summary, error) {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	imageFsInfo, err := sp.provider.DockerImagesFsInfo()
 | 
						imageFsInfo, err := sp.provider.ImagesFsInfo()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -99,7 +99,7 @@ func containerRuntime() error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Setup cadvisor to check the container environment
 | 
						// Setup cadvisor to check the container environment
 | 
				
			||||||
	c, err := cadvisor.New(0 /*don't start the http server*/)
 | 
						c, err := cadvisor.New(0 /*don't start the http server*/, "docker")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return printError("Container Runtime Check: %s Could not start cadvisor %v", failed, err)
 | 
							return printError("Container Runtime Check: %s Could not start cadvisor %v", failed, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user