From ae08ef38d7986838e858f91f384f2249c07411a7 Mon Sep 17 00:00:00 2001 From: Shaya Potter Date: Tue, 17 May 2016 22:05:55 -0700 Subject: [PATCH] kubelet/cadvisor: Refactor cadvisor disk stat/usage interfaces --- cmd/kubelet/app/server.go | 2 +- .../mesos/pkg/executor/service/cadvisor.go | 4 +-- contrib/mesos/pkg/executor/service/service.go | 2 +- pkg/kubelet/cadvisor/cadvisor_linux.go | 19 ++++++++++-- pkg/kubelet/cadvisor/cadvisor_unsupported.go | 4 +-- pkg/kubelet/cadvisor/testing/cadvisor_fake.go | 2 +- pkg/kubelet/cadvisor/testing/cadvisor_mock.go | 2 +- pkg/kubelet/cadvisor/types.go | 2 +- pkg/kubelet/disk_manager.go | 6 ++-- pkg/kubelet/disk_manager_test.go | 30 +++++++++---------- pkg/kubelet/image_manager.go | 2 +- pkg/kubelet/image_manager_test.go | 8 ++--- pkg/kubelet/kubelet.go | 2 +- pkg/kubelet/kubelet_cadvisor.go | 6 ++-- pkg/kubelet/kubelet_test.go | 30 +++++++++---------- pkg/kubelet/runonce_test.go | 2 +- pkg/kubelet/server/server.go | 2 +- pkg/kubelet/server/server_test.go | 4 +-- pkg/kubelet/server/stats/handler.go | 2 +- pkg/kubelet/server/stats/mocks_test.go | 4 +-- pkg/kubelet/server/stats/summary.go | 2 +- test/e2e_node/environment/conformance.go | 2 +- 22 files changed, 76 insertions(+), 63 deletions(-) diff --git a/cmd/kubelet/app/server.go b/cmd/kubelet/app/server.go index bf2cc623d9..81c9af9c24 100644 --- a/cmd/kubelet/app/server.go +++ b/cmd/kubelet/app/server.go @@ -330,7 +330,7 @@ func run(s *options.KubeletServer, kcfg *KubeletConfig) (err error) { } if kcfg.CAdvisorInterface == nil { - kcfg.CAdvisorInterface, err = cadvisor.New(s.CAdvisorPort) + kcfg.CAdvisorInterface, err = cadvisor.New(s.CAdvisorPort, kcfg.ContainerRuntime) if err != nil { return err } diff --git a/contrib/mesos/pkg/executor/service/cadvisor.go b/contrib/mesos/pkg/executor/service/cadvisor.go index 663dbdbada..85a2a492c4 100644 --- a/contrib/mesos/pkg/executor/service/cadvisor.go +++ b/contrib/mesos/pkg/executor/service/cadvisor.go @@ -28,8 +28,8 @@ type MesosCadvisor struct { mem uint64 } -func NewMesosCadvisor(cores int, mem uint64, port uint) (*MesosCadvisor, error) { - c, err := cadvisor.New(port) +func NewMesosCadvisor(cores int, mem uint64, port uint, runtime string) (*MesosCadvisor, error) { + c, err := cadvisor.New(port, runtime) if err != nil { return nil, err } diff --git a/contrib/mesos/pkg/executor/service/service.go b/contrib/mesos/pkg/executor/service/service.go index 72b644e77a..a8b336b2de 100644 --- a/contrib/mesos/pkg/executor/service/service.go +++ b/contrib/mesos/pkg/executor/service/service.go @@ -209,7 +209,7 @@ func (s *KubeletExecutorServer) runKubelet( // create custom cAdvisor interface which return the resource values that Mesos reports 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 { return err } diff --git a/pkg/kubelet/cadvisor/cadvisor_linux.go b/pkg/kubelet/cadvisor/cadvisor_linux.go index f7691b6384..32c3865a04 100644 --- a/pkg/kubelet/cadvisor/cadvisor_linux.go +++ b/pkg/kubelet/cadvisor/cadvisor_linux.go @@ -39,6 +39,7 @@ import ( ) type cadvisorClient struct { + runtime string manager.Manager } @@ -60,7 +61,7 @@ func init() { } // 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() if err != nil { return nil, err @@ -73,6 +74,7 @@ func New(port uint) (Interface, error) { } cadvisorClient := &cadvisorClient{ + runtime: runtime, Manager: m, } @@ -163,8 +165,19 @@ func (cc *cadvisorClient) MachineInfo() (*cadvisorapi.MachineInfo, error) { return cc.GetMachineInfo() } -func (cc *cadvisorClient) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) { - return cc.getFsInfo(cadvisorfs.LabelDockerImages) +func (cc *cadvisorClient) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) { + 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) { diff --git a/pkg/kubelet/cadvisor/cadvisor_unsupported.go b/pkg/kubelet/cadvisor/cadvisor_unsupported.go index e0bcd4d6de..e5f281d646 100644 --- a/pkg/kubelet/cadvisor/cadvisor_unsupported.go +++ b/pkg/kubelet/cadvisor/cadvisor_unsupported.go @@ -31,7 +31,7 @@ type cadvisorUnsupported struct { var _ Interface = new(cadvisorUnsupported) -func New(port uint) (Interface, error) { +func New(port uint, runtime string) (Interface, error) { return &cadvisorUnsupported{}, nil } @@ -65,7 +65,7 @@ func (cu *cadvisorUnsupported) VersionInfo() (*cadvisorapi.VersionInfo, error) { return nil, unsupportedErr } -func (cu *cadvisorUnsupported) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) { +func (cu *cadvisorUnsupported) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) { return cadvisorapiv2.FsInfo{}, unsupportedErr } diff --git a/pkg/kubelet/cadvisor/testing/cadvisor_fake.go b/pkg/kubelet/cadvisor/testing/cadvisor_fake.go index d29dea2d80..f73597ea69 100644 --- a/pkg/kubelet/cadvisor/testing/cadvisor_fake.go +++ b/pkg/kubelet/cadvisor/testing/cadvisor_fake.go @@ -62,7 +62,7 @@ func (c *Fake) VersionInfo() (*cadvisorapi.VersionInfo, error) { return new(cadvisorapi.VersionInfo), nil } -func (c *Fake) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) { +func (c *Fake) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) { return cadvisorapiv2.FsInfo{}, nil } diff --git a/pkg/kubelet/cadvisor/testing/cadvisor_mock.go b/pkg/kubelet/cadvisor/testing/cadvisor_mock.go index 37671afa83..97b5091ed6 100644 --- a/pkg/kubelet/cadvisor/testing/cadvisor_mock.go +++ b/pkg/kubelet/cadvisor/testing/cadvisor_mock.go @@ -69,7 +69,7 @@ func (c *Mock) VersionInfo() (*cadvisorapi.VersionInfo, error) { 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() return args.Get(0).(cadvisorapiv2.FsInfo), args.Error(1) } diff --git a/pkg/kubelet/cadvisor/types.go b/pkg/kubelet/cadvisor/types.go index 5bfbd2a0f0..fbf7b9e058 100644 --- a/pkg/kubelet/cadvisor/types.go +++ b/pkg/kubelet/cadvisor/types.go @@ -34,7 +34,7 @@ type Interface interface { VersionInfo() (*cadvisorapi.VersionInfo, error) // Returns usage information about the filesystem holding Docker images. - DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) + ImagesFsInfo() (cadvisorapiv2.FsInfo, error) // Returns usage information about the root filesystem. RootFsInfo() (cadvisorapiv2.FsInfo, error) diff --git a/pkg/kubelet/disk_manager.go b/pkg/kubelet/disk_manager.go index ad110cef4b..edf749b4f8 100644 --- a/pkg/kubelet/disk_manager.go +++ b/pkg/kubelet/disk_manager.go @@ -35,7 +35,7 @@ const mb = 1024 * 1024 type diskSpaceManager interface { // Checks the available disk space IsRootDiskSpaceAvailable() (bool, error) - IsDockerDiskSpaceAvailable() (bool, error) + IsRuntimeDiskSpaceAvailable() (bool, error) } type DiskSpacePolicy struct { @@ -83,8 +83,8 @@ func (dm *realDiskSpaceManager) getFsInfo(fsType string, f func() (cadvisorapi.F return fsi, nil } -func (dm *realDiskSpaceManager) IsDockerDiskSpaceAvailable() (bool, error) { - return dm.isSpaceAvailable("docker", dm.policy.DockerFreeDiskMB, dm.cadvisor.DockerImagesFsInfo) +func (dm *realDiskSpaceManager) IsRuntimeDiskSpaceAvailable() (bool, error) { + return dm.isSpaceAvailable("runtime", dm.policy.DockerFreeDiskMB, dm.cadvisor.ImagesFsInfo) } func (dm *realDiskSpaceManager) IsRootDiskSpaceAvailable() (bool, error) { diff --git a/pkg/kubelet/disk_manager_test.go b/pkg/kubelet/disk_manager_test.go index 378c3ab3f7..f9dba0bf1c 100644 --- a/pkg/kubelet/disk_manager_test.go +++ b/pkg/kubelet/disk_manager_test.go @@ -61,7 +61,7 @@ func TestSpaceAvailable(t *testing.T) { dm, err := newDiskSpaceManager(mockCadvisor, policy) assert.NoError(err) - mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{ + mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{ Usage: 400 * mb, Capacity: 1000 * mb, Available: 600 * mb, @@ -71,7 +71,7 @@ func TestSpaceAvailable(t *testing.T) { Capacity: 10 * mb, }, nil) - ok, err := dm.IsDockerDiskSpaceAvailable() + ok, err := dm.IsRuntimeDiskSpaceAvailable() assert.NoError(err) assert.True(ok) @@ -80,31 +80,31 @@ func TestSpaceAvailable(t *testing.T) { assert.False(ok) } -// TestIsDockerDiskSpaceAvailableWithSpace verifies IsDockerDiskSpaceAvailable results when +// TestIsRuntimeDiskSpaceAvailableWithSpace verifies IsRuntimeDiskSpaceAvailable results when // space is available. -func TestIsDockerDiskSpaceAvailableWithSpace(t *testing.T) { +func TestIsRuntimeDiskSpaceAvailableWithSpace(t *testing.T) { assert, policy, mockCadvisor := setUp(t) dm, err := newDiskSpaceManager(mockCadvisor, policy) require.NoError(t, err) // 500MB available - mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{ + mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{ Usage: 9500 * mb, Capacity: 10000 * mb, Available: 500 * mb, }, nil) - ok, err := dm.IsDockerDiskSpaceAvailable() + ok, err := dm.IsRuntimeDiskSpaceAvailable() assert.NoError(err) assert.True(ok) } -// TestIsDockerDiskSpaceAvailableWithoutSpace verifies IsDockerDiskSpaceAvailable results when +// TestIsRuntimeDiskSpaceAvailableWithoutSpace verifies IsRuntimeDiskSpaceAvailable results when // space is not available. -func TestIsDockerDiskSpaceAvailableWithoutSpace(t *testing.T) { +func TestIsRuntimeDiskSpaceAvailableWithoutSpace(t *testing.T) { // 1MB available assert, policy, mockCadvisor := setUp(t) - mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{ + mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{ Usage: 999 * mb, Capacity: 1000 * mb, Available: 1 * mb, @@ -113,7 +113,7 @@ func TestIsDockerDiskSpaceAvailableWithoutSpace(t *testing.T) { dm, err := newDiskSpaceManager(mockCadvisor, policy) require.NoError(t, err) - ok, err := dm.IsDockerDiskSpaceAvailable() + ok, err := dm.IsRuntimeDiskSpaceAvailable() assert.NoError(err) assert.False(ok) } @@ -164,7 +164,7 @@ func TestCache(t *testing.T) { dm, err := newDiskSpaceManager(mockCadvisor, policy) assert.NoError(err) - mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{ + mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{ Usage: 400 * mb, Capacity: 1000 * mb, Available: 300 * mb, @@ -176,7 +176,7 @@ func TestCache(t *testing.T) { }, nil).Once() // Initial calls which should be recorded in mockCadvisor - ok, err := dm.IsDockerDiskSpaceAvailable() + ok, err := dm.IsRuntimeDiskSpaceAvailable() assert.NoError(err) assert.True(ok) @@ -188,7 +188,7 @@ func TestCache(t *testing.T) { cadvisorCallCount := len(mockCadvisor.Calls) // 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.True(ok) @@ -208,9 +208,9 @@ func TestFsInfoError(t *testing.T) { dm, err := newDiskSpaceManager(mockCadvisor, policy) 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")) - ok, err := dm.IsDockerDiskSpaceAvailable() + ok, err := dm.IsRuntimeDiskSpaceAvailable() assert.Error(err) assert.True(ok) ok, err = dm.IsRootDiskSpaceAvailable() diff --git a/pkg/kubelet/image_manager.go b/pkg/kubelet/image_manager.go index 892dcfe279..6f521647d6 100644 --- a/pkg/kubelet/image_manager.go +++ b/pkg/kubelet/image_manager.go @@ -209,7 +209,7 @@ func (im *realImageManager) detectImages(detectTime time.Time) error { func (im *realImageManager) GarbageCollect() error { // Get disk usage on disk holding images. - fsInfo, err := im.cadvisor.DockerImagesFsInfo() + fsInfo, err := im.cadvisor.ImagesFsInfo() if err != nil { return err } diff --git a/pkg/kubelet/image_manager_test.go b/pkg/kubelet/image_manager_test.go index 57de1a6e63..cee3fb1bf0 100644 --- a/pkg/kubelet/image_manager_test.go +++ b/pkg/kubelet/image_manager_test.go @@ -373,7 +373,7 @@ func TestGarbageCollectBelowLowThreshold(t *testing.T) { manager, _, mockCadvisor := newRealImageManager(policy) // Expect 40% usage. - mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{ + mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{ Usage: 400, Capacity: 1000, }, nil) @@ -388,7 +388,7 @@ func TestGarbageCollectCadvisorFailure(t *testing.T) { } 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()) } @@ -400,7 +400,7 @@ func TestGarbageCollectBelowSuccess(t *testing.T) { manager, fakeRuntime, mockCadvisor := newRealImageManager(policy) // Expect 95% usage and most of it gets freed. - mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{ + mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{ Usage: 950, Capacity: 1000, }, nil) @@ -419,7 +419,7 @@ func TestGarbageCollectNotEnoughFreed(t *testing.T) { manager, fakeRuntime, mockCadvisor := newRealImageManager(policy) // Expect 95% usage and little of it gets freed. - mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{ + mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{ Usage: 950, Capacity: 1000, }, nil) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index a850126e61..832666623d 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -2379,7 +2379,7 @@ func (kl *Kubelet) isOutOfDisk() bool { outOfDockerDisk := false outOfRootDisk := false // 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. if err == nil && !withinBounds { outOfDockerDisk = true diff --git a/pkg/kubelet/kubelet_cadvisor.go b/pkg/kubelet/kubelet_cadvisor.go index a398f71103..76bf6ceb34 100644 --- a/pkg/kubelet/kubelet_cadvisor.go +++ b/pkg/kubelet/kubelet_cadvisor.go @@ -50,10 +50,10 @@ func (kl *Kubelet) GetContainerInfoV2(name string, options cadvisorapiv2.Request 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. -func (kl *Kubelet) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) { - return kl.cadvisor.DockerImagesFsInfo() +func (kl *Kubelet) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) { + return kl.cadvisor.ImagesFsInfo() } // RootFsInfo returns info about the root fs from cadvisor. diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index 9955269eed..2431164ed3 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -299,7 +299,7 @@ func TestSyncLoopAbort(t *testing.T) { func TestSyncPodsStartPod(t *testing.T) { testKubelet := newTestKubelet(t) 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) kubelet := testKubelet.kubelet fakeRuntime := testKubelet.fakeRuntime @@ -321,7 +321,7 @@ func TestSyncPodsDeletesWhenSourcesAreReady(t *testing.T) { testKubelet := newTestKubelet(t) fakeRuntime := testKubelet.fakeRuntime 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) kubelet := testKubelet.kubelet kubelet.sourcesReady = config.NewSourcesReady(func(_ sets.String) bool { return ready }) @@ -1967,7 +1967,7 @@ func TestHandlePortConflicts(t *testing.T) { testKubelet := newTestKubelet(t) kl := testKubelet.kubelet 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) kl.nodeLister = testNodeLister{nodes: []api.Node{ @@ -2028,7 +2028,7 @@ func TestHandleHostNameConflicts(t *testing.T) { testKubelet := newTestKubelet(t) kl := testKubelet.kubelet 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) kl.nodeLister = testNodeLister{nodes: []api.Node{ @@ -2098,7 +2098,7 @@ func TestHandleNodeSelector(t *testing.T) { kl.nodeLister = testNodeLister{nodes: nodes} kl.nodeInfo = testNodeInfo{nodes: nodes} 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) pods := []*api.Pod{ 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.nodeInfo = testNodeInfo{nodes: nodes} 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) spec := api.PodSpec{NodeName: kl.nodeName, @@ -2187,7 +2187,7 @@ func TestHandleMemExceeded(t *testing.T) { func TestPurgingObsoleteStatusMapEntries(t *testing.T) { testKubelet := newTestKubelet(t) 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) versionInfo := &cadvisorapi.VersionInfo{ 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 { dockerimagesFsInfo := cadvisorapiv2.FsInfo{Capacity: rootCap * mb, Available: rootAvail * 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) dsp := DiskSpacePolicy{DockerFreeDiskMB: rootThreshold, RootFreeDiskMB: dockerThreshold} @@ -3099,7 +3099,7 @@ func TestDeleteOutdatedMirrorPod(t *testing.T) { testKubelet := newTestKubelet(t) testKubelet.fakeCadvisor.On("Start").Return(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) kl := testKubelet.kubelet @@ -3142,7 +3142,7 @@ func TestDeleteOrphanedMirrorPods(t *testing.T) { testKubelet := newTestKubelet(t) testKubelet.fakeCadvisor.On("Start").Return(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) kl := testKubelet.kubelet @@ -3425,7 +3425,7 @@ func TestRegisterExistingNodeWithApiserver(t *testing.T) { DockerVersion: "1.5.0", } mockCadvisor.On("VersionInfo").Return(versionInfo, nil) - mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{ + mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{ Usage: 400 * mb, Capacity: 1000 * mb, Available: 600 * mb, @@ -3650,7 +3650,7 @@ func podWithUidNameNsSpec(uid types.UID, name, namespace string, spec api.PodSpe func TestDeletePodDirsForDeletedPods(t *testing.T) { testKubelet := newTestKubelet(t) 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) kl := testKubelet.kubelet pods := []*api.Pod{ @@ -3697,7 +3697,7 @@ func syncAndVerifyPodDir(t *testing.T, testKubelet *TestKubelet, pods []*api.Pod func TestDoesNotDeletePodDirsForTerminatedPods(t *testing.T) { testKubelet := newTestKubelet(t) 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) kl := testKubelet.kubelet pods := []*api.Pod{ @@ -3717,7 +3717,7 @@ func TestDoesNotDeletePodDirsForTerminatedPods(t *testing.T) { func TestDoesNotDeletePodDirsIfContainerIsRunning(t *testing.T) { testKubelet := newTestKubelet(t) 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) runningPod := &kubecontainer.Pod{ ID: "12345678", @@ -4192,7 +4192,7 @@ func TestHandlePodAdditionsInvokesPodAdmitHandlers(t *testing.T) { }, }} 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) pods := []*api.Pod{ diff --git a/pkg/kubelet/runonce_test.go b/pkg/kubelet/runonce_test.go index 31739030f1..e84e1e823e 100644 --- a/pkg/kubelet/runonce_test.go +++ b/pkg/kubelet/runonce_test.go @@ -46,7 +46,7 @@ import ( func TestRunOnce(t *testing.T) { cadvisor := &cadvisortest.Mock{} cadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil) - cadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{ + cadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{ Usage: 400 * mb, Capacity: 1000 * mb, Available: 600 * mb, diff --git a/pkg/kubelet/server/server.go b/pkg/kubelet/server/server.go index 163ecf57b6..66d0c882eb 100644 --- a/pkg/kubelet/server/server.go +++ b/pkg/kubelet/server/server.go @@ -171,7 +171,7 @@ type HostInterface interface { GetNode() (*api.Node, error) GetNodeConfig() cm.NodeConfig LatestLoopEntryTime() time.Time - DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) + ImagesFsInfo() (cadvisorapiv2.FsInfo, error) RootFsInfo() (cadvisorapiv2.FsInfo, error) ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool) PLEGHealthCheck() (bool, error) diff --git a/pkg/kubelet/server/server_test.go b/pkg/kubelet/server/server_test.go index 322c0bcf0d..2df3088fda 100644 --- a/pkg/kubelet/server/server_test.go +++ b/pkg/kubelet/server/server_test.go @@ -142,8 +142,8 @@ func (_ *fakeKubelet) GetContainerInfoV2(_ string, _ cadvisorapiv2.RequestOption return nil, nil } -func (_ *fakeKubelet) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) { - return cadvisorapiv2.FsInfo{}, fmt.Errorf("Unsupported Operation DockerImagesFsInfo") +func (_ *fakeKubelet) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) { + return cadvisorapiv2.FsInfo{}, fmt.Errorf("Unsupported Operation ImagesFsInfo") } func (_ *fakeKubelet) RootFsInfo() (cadvisorapiv2.FsInfo, error) { diff --git a/pkg/kubelet/server/stats/handler.go b/pkg/kubelet/server/stats/handler.go index 0d2221bac8..6bf5e9952a 100644 --- a/pkg/kubelet/server/stats/handler.go +++ b/pkg/kubelet/server/stats/handler.go @@ -44,7 +44,7 @@ type StatsProvider interface { GetPodByName(namespace, name string) (*api.Pod, bool) GetNode() (*api.Node, error) GetNodeConfig() cm.NodeConfig - DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) + ImagesFsInfo() (cadvisorapiv2.FsInfo, error) RootFsInfo() (cadvisorapiv2.FsInfo, error) ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool) GetPods() []*api.Pod diff --git a/pkg/kubelet/server/stats/mocks_test.go b/pkg/kubelet/server/stats/mocks_test.go index b95a823d25..3449534609 100644 --- a/pkg/kubelet/server/stats/mocks_test.go +++ b/pkg/kubelet/server/stats/mocks_test.go @@ -162,8 +162,8 @@ func (_m *MockStatsProvider) GetNodeConfig() cm.NodeConfig { return r0 } -// DockerImagesFsInfo provides a mock function with given fields: -func (_m *MockStatsProvider) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) { +// ImagesFsInfo provides a mock function with given fields: +func (_m *MockStatsProvider) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) { ret := _m.Called() var r0 cadvisorapiv2.FsInfo diff --git a/pkg/kubelet/server/stats/summary.go b/pkg/kubelet/server/stats/summary.go index 5a1ee27973..f576376161 100644 --- a/pkg/kubelet/server/stats/summary.go +++ b/pkg/kubelet/server/stats/summary.go @@ -81,7 +81,7 @@ func (sp *summaryProviderImpl) Get() (*stats.Summary, error) { if err != nil { return nil, err } - imageFsInfo, err := sp.provider.DockerImagesFsInfo() + imageFsInfo, err := sp.provider.ImagesFsInfo() if err != nil { return nil, err } diff --git a/test/e2e_node/environment/conformance.go b/test/e2e_node/environment/conformance.go index 9ac19a44da..ad9ac4a14c 100644 --- a/test/e2e_node/environment/conformance.go +++ b/test/e2e_node/environment/conformance.go @@ -99,7 +99,7 @@ func containerRuntime() error { } // 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 { return printError("Container Runtime Check: %s Could not start cadvisor %v", failed, err) }