mirror of
https://github.com/optim-enterprises-bv/kubernetes.git
synced 2025-12-15 20:37:39 +00:00
Merge pull request #2683 from jimmidyson/cadvisor-0.6.2
Fixes #2681: update to cadvisor 0.6.2
This commit is contained in:
@@ -25,6 +25,7 @@ import (
|
||||
|
||||
// cadvisorInterface is an abstract interface for testability. It abstracts the interface of "github.com/google/cadvisor/client".Client.
|
||||
type cadvisorInterface interface {
|
||||
DockerContainer(name string, req *cadvisor.ContainerInfoRequest) (cadvisor.ContainerInfo, error)
|
||||
ContainerInfo(name string, req *cadvisor.ContainerInfoRequest) (*cadvisor.ContainerInfo, error)
|
||||
MachineInfo() (*cadvisor.MachineInfo, error)
|
||||
}
|
||||
@@ -41,6 +42,16 @@ func (kl *Kubelet) statsFromContainerPath(cc cadvisorInterface, containerPath st
|
||||
return cinfo, nil
|
||||
}
|
||||
|
||||
// This method takes a Docker container's ID and returns the stats for the
|
||||
// container.
|
||||
func (kl *Kubelet) statsFromDockerContainer(cc cadvisorInterface, containerId string, req *cadvisor.ContainerInfoRequest) (*cadvisor.ContainerInfo, error) {
|
||||
cinfo, err := cc.DockerContainer(containerId, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &cinfo, nil
|
||||
}
|
||||
|
||||
// GetContainerInfo returns stats (from Cadvisor) for a container.
|
||||
func (kl *Kubelet) GetContainerInfo(podFullName, uuid, containerName string, req *cadvisor.ContainerInfoRequest) (*cadvisor.ContainerInfo, error) {
|
||||
cc := kl.GetCadvisorClient()
|
||||
@@ -55,7 +66,7 @@ func (kl *Kubelet) GetContainerInfo(podFullName, uuid, containerName string, req
|
||||
if !found {
|
||||
return nil, fmt.Errorf("couldn't find container")
|
||||
}
|
||||
return kl.statsFromContainerPath(cc, fmt.Sprintf("/docker/%s", dockerContainer.ID), req)
|
||||
return kl.statsFromDockerContainer(cc, dockerContainer.ID, req)
|
||||
}
|
||||
|
||||
// GetRootInfo returns stats (from Cadvisor) of current machine (root container).
|
||||
|
||||
@@ -873,6 +873,12 @@ func (c *mockCadvisorClient) ContainerInfo(name string, req *info.ContainerInfoR
|
||||
return args.Get(0).(*info.ContainerInfo), args.Error(1)
|
||||
}
|
||||
|
||||
// DockerContainer is a mock implementation of CadvisorInterface.DockerContainer.
|
||||
func (c *mockCadvisorClient) DockerContainer(name string, req *info.ContainerInfoRequest) (info.ContainerInfo, error) {
|
||||
args := c.Called(name, req)
|
||||
return args.Get(0).(info.ContainerInfo), args.Error(1)
|
||||
}
|
||||
|
||||
// MachineInfo is a mock implementation of CadvisorInterface.MachineInfo.
|
||||
func (c *mockCadvisorClient) MachineInfo() (*info.MachineInfo, error) {
|
||||
args := c.Called()
|
||||
@@ -882,7 +888,7 @@ func (c *mockCadvisorClient) MachineInfo() (*info.MachineInfo, error) {
|
||||
func TestGetContainerInfo(t *testing.T) {
|
||||
containerID := "ab2cdf"
|
||||
containerPath := fmt.Sprintf("/docker/%v", containerID)
|
||||
containerInfo := &info.ContainerInfo{
|
||||
containerInfo := info.ContainerInfo{
|
||||
ContainerReference: info.ContainerReference{
|
||||
Name: containerPath,
|
||||
},
|
||||
@@ -890,7 +896,7 @@ func TestGetContainerInfo(t *testing.T) {
|
||||
|
||||
mockCadvisor := &mockCadvisorClient{}
|
||||
cadvisorReq := &info.ContainerInfoRequest{}
|
||||
mockCadvisor.On("ContainerInfo", containerPath, cadvisorReq).Return(containerInfo, nil)
|
||||
mockCadvisor.On("DockerContainer", containerID, cadvisorReq).Return(containerInfo, nil)
|
||||
|
||||
kubelet, _, fakeDocker := newTestKubelet(t)
|
||||
kubelet.cadvisorClient = mockCadvisor
|
||||
@@ -961,13 +967,12 @@ func TestGetContainerInfoWithoutCadvisor(t *testing.T) {
|
||||
|
||||
func TestGetContainerInfoWhenCadvisorFailed(t *testing.T) {
|
||||
containerID := "ab2cdf"
|
||||
containerPath := fmt.Sprintf("/docker/%v", containerID)
|
||||
|
||||
containerInfo := &info.ContainerInfo{}
|
||||
containerInfo := info.ContainerInfo{}
|
||||
mockCadvisor := &mockCadvisorClient{}
|
||||
cadvisorReq := &info.ContainerInfoRequest{}
|
||||
expectedErr := fmt.Errorf("some error")
|
||||
mockCadvisor.On("ContainerInfo", containerPath, cadvisorReq).Return(containerInfo, expectedErr)
|
||||
mockCadvisor.On("DockerContainer", containerID, cadvisorReq).Return(containerInfo, expectedErr)
|
||||
|
||||
kubelet, _, fakeDocker := newTestKubelet(t)
|
||||
kubelet.cadvisorClient = mockCadvisor
|
||||
|
||||
Reference in New Issue
Block a user