diff --git a/pkg/kubelet/cadvisor/cadvisor_fake.go b/pkg/kubelet/cadvisor/cadvisor_fake.go index d43645f2f4e..1bd57c7e41e 100644 --- a/pkg/kubelet/cadvisor/cadvisor_fake.go +++ b/pkg/kubelet/cadvisor/cadvisor_fake.go @@ -32,6 +32,10 @@ func (c *Fake) ContainerInfo(name string, req *cadvisorApi.ContainerInfoRequest) return new(cadvisorApi.ContainerInfo), nil } +func (c *Fake) SubcontainerInfo(name string, req *cadvisorApi.ContainerInfoRequest) (map[string]*cadvisorApi.ContainerInfo, error) { + return map[string]*cadvisorApi.ContainerInfo{}, nil +} + func (c *Fake) DockerContainer(name string, req *cadvisorApi.ContainerInfoRequest) (cadvisorApi.ContainerInfo, error) { return cadvisorApi.ContainerInfo{}, nil } diff --git a/pkg/kubelet/cadvisor/cadvisor_linux.go b/pkg/kubelet/cadvisor/cadvisor_linux.go index e0c4d27c625..c3f691b0312 100644 --- a/pkg/kubelet/cadvisor/cadvisor_linux.go +++ b/pkg/kubelet/cadvisor/cadvisor_linux.go @@ -114,6 +114,19 @@ func (cc *cadvisorClient) VersionInfo() (*cadvisorApi.VersionInfo, error) { return cc.GetVersionInfo() } +func (cc *cadvisorClient) SubcontainerInfo(name string, req *cadvisorApi.ContainerInfoRequest) (map[string]*cadvisorApi.ContainerInfo, error) { + infos, err := cc.SubcontainersInfo(name, req) + if err != nil { + return nil, err + } + + result := make(map[string]*cadvisorApi.ContainerInfo, len(infos)) + for _, info := range infos { + result[info.Name] = info + } + return result, nil +} + func (cc *cadvisorClient) MachineInfo() (*cadvisorApi.MachineInfo, error) { return cc.GetMachineInfo() } diff --git a/pkg/kubelet/cadvisor/cadvisor_mock.go b/pkg/kubelet/cadvisor/cadvisor_mock.go index b1aa1cfd2df..371f30526cb 100644 --- a/pkg/kubelet/cadvisor/cadvisor_mock.go +++ b/pkg/kubelet/cadvisor/cadvisor_mock.go @@ -35,6 +35,11 @@ func (c *Mock) ContainerInfo(name string, req *cadvisorApi.ContainerInfoRequest) return args.Get(0).(*cadvisorApi.ContainerInfo), args.Error(1) } +func (c *Mock) SubcontainerInfo(name string, req *cadvisorApi.ContainerInfoRequest) (map[string]*cadvisorApi.ContainerInfo, error) { + args := c.Called(name, req) + return args.Get(0).(map[string]*cadvisorApi.ContainerInfo), args.Error(1) +} + // DockerContainer is a mock implementation of Interface.DockerContainer. func (c *Mock) DockerContainer(name string, req *cadvisorApi.ContainerInfoRequest) (cadvisorApi.ContainerInfo, error) { args := c.Called(name, req) diff --git a/pkg/kubelet/cadvisor/cadvisor_unsupported.go b/pkg/kubelet/cadvisor/cadvisor_unsupported.go index 21e22a9cc60..b0300ef5bc0 100644 --- a/pkg/kubelet/cadvisor/cadvisor_unsupported.go +++ b/pkg/kubelet/cadvisor/cadvisor_unsupported.go @@ -45,6 +45,10 @@ func (cu *cadvisorUnsupported) ContainerInfo(name string, req *cadvisorApi.Conta return nil, unsupportedErr } +func (cu *cadvisorUnsupported) SubcontainerInfo(name string, req *cadvisorApi.ContainerInfoRequest) (map[string]*cadvisorApi.ContainerInfo, error) { + return nil, unsupportedErr +} + func (cu *cadvisorUnsupported) MachineInfo() (*cadvisorApi.MachineInfo, error) { return nil, unsupportedErr } diff --git a/pkg/kubelet/cadvisor/types.go b/pkg/kubelet/cadvisor/types.go index a82390c4a99..b14154645c6 100644 --- a/pkg/kubelet/cadvisor/types.go +++ b/pkg/kubelet/cadvisor/types.go @@ -26,6 +26,7 @@ import ( type Interface interface { DockerContainer(name string, req *cadvisorApi.ContainerInfoRequest) (cadvisorApi.ContainerInfo, error) ContainerInfo(name string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) + SubcontainerInfo(name string, req *cadvisorApi.ContainerInfoRequest) (map[string]*cadvisorApi.ContainerInfo, error) MachineInfo() (*cadvisorApi.MachineInfo, error) VersionInfo() (*cadvisorApi.VersionInfo, error)