mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Rename cAdvisor info API to cadvisorApi
This commit is contained in:
		@@ -25,16 +25,16 @@ import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"strconv"
 | 
			
		||||
 | 
			
		||||
	info "github.com/google/cadvisor/info/v1"
 | 
			
		||||
	cadvisorApi "github.com/google/cadvisor/info/v1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type ContainerInfoGetter interface {
 | 
			
		||||
	// GetContainerInfo returns information about a container.
 | 
			
		||||
	GetContainerInfo(host, podID, containerID string, req *info.ContainerInfoRequest) (*info.ContainerInfo, error)
 | 
			
		||||
	GetContainerInfo(host, podID, containerID string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error)
 | 
			
		||||
	// GetRootInfo returns information about the root container on a machine.
 | 
			
		||||
	GetRootInfo(host string, req *info.ContainerInfoRequest) (*info.ContainerInfo, error)
 | 
			
		||||
	GetRootInfo(host string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error)
 | 
			
		||||
	// GetMachineInfo returns the machine's information like number of cores, memory capacity.
 | 
			
		||||
	GetMachineInfo(host string) (*info.MachineInfo, error)
 | 
			
		||||
	GetMachineInfo(host string) (*cadvisorApi.MachineInfo, error)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type HTTPContainerInfoGetter struct {
 | 
			
		||||
@@ -42,7 +42,7 @@ type HTTPContainerInfoGetter struct {
 | 
			
		||||
	Port   int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (self *HTTPContainerInfoGetter) GetMachineInfo(host string) (*info.MachineInfo, error) {
 | 
			
		||||
func (self *HTTPContainerInfoGetter) GetMachineInfo(host string) (*cadvisorApi.MachineInfo, error) {
 | 
			
		||||
	request, err := http.NewRequest(
 | 
			
		||||
		"GET",
 | 
			
		||||
		fmt.Sprintf("http://%v/spec",
 | 
			
		||||
@@ -63,7 +63,7 @@ func (self *HTTPContainerInfoGetter) GetMachineInfo(host string) (*info.MachineI
 | 
			
		||||
		return nil, fmt.Errorf("trying to get machine spec from %v; received status %v",
 | 
			
		||||
			host, response.Status)
 | 
			
		||||
	}
 | 
			
		||||
	var minfo info.MachineInfo
 | 
			
		||||
	var minfo cadvisorApi.MachineInfo
 | 
			
		||||
	err = json.NewDecoder(response.Body).Decode(&minfo)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@@ -71,7 +71,7 @@ func (self *HTTPContainerInfoGetter) GetMachineInfo(host string) (*info.MachineI
 | 
			
		||||
	return &minfo, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (self *HTTPContainerInfoGetter) getContainerInfo(host, path string, req *info.ContainerInfoRequest) (*info.ContainerInfo, error) {
 | 
			
		||||
func (self *HTTPContainerInfoGetter) getContainerInfo(host, path string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
	var body io.Reader
 | 
			
		||||
	if req != nil {
 | 
			
		||||
		content, err := json.Marshal(req)
 | 
			
		||||
@@ -102,7 +102,7 @@ func (self *HTTPContainerInfoGetter) getContainerInfo(host, path string, req *in
 | 
			
		||||
		return nil, fmt.Errorf("trying to get info for %v from %v; received status %v",
 | 
			
		||||
			path, host, response.Status)
 | 
			
		||||
	}
 | 
			
		||||
	var cinfo info.ContainerInfo
 | 
			
		||||
	var cinfo cadvisorApi.ContainerInfo
 | 
			
		||||
	err = json.NewDecoder(response.Body).Decode(&cinfo)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@@ -110,7 +110,7 @@ func (self *HTTPContainerInfoGetter) getContainerInfo(host, path string, req *in
 | 
			
		||||
	return &cinfo, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (self *HTTPContainerInfoGetter) GetContainerInfo(host, podID, containerID string, req *info.ContainerInfoRequest) (*info.ContainerInfo, error) {
 | 
			
		||||
func (self *HTTPContainerInfoGetter) GetContainerInfo(host, podID, containerID string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
	return self.getContainerInfo(
 | 
			
		||||
		host,
 | 
			
		||||
		fmt.Sprintf("%v/%v", podID, containerID),
 | 
			
		||||
@@ -118,6 +118,6 @@ func (self *HTTPContainerInfoGetter) GetContainerInfo(host, podID, containerID s
 | 
			
		||||
	)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (self *HTTPContainerInfoGetter) GetRootInfo(host string, req *info.ContainerInfoRequest) (*info.ContainerInfo, error) {
 | 
			
		||||
func (self *HTTPContainerInfoGetter) GetRootInfo(host string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
	return self.getContainerInfo(host, "", req)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,13 +28,13 @@ import (
 | 
			
		||||
	"testing"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	info "github.com/google/cadvisor/info/v1"
 | 
			
		||||
	itest "github.com/google/cadvisor/info/v1/test"
 | 
			
		||||
	cadvisorApi "github.com/google/cadvisor/info/v1"
 | 
			
		||||
	cadvisorApiTest "github.com/google/cadvisor/info/v1/test"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func testHTTPContainerInfoGetter(
 | 
			
		||||
	req *info.ContainerInfoRequest,
 | 
			
		||||
	cinfo *info.ContainerInfo,
 | 
			
		||||
	req *cadvisorApi.ContainerInfoRequest,
 | 
			
		||||
	cinfo *cadvisorApi.ContainerInfo,
 | 
			
		||||
	podID string,
 | 
			
		||||
	containerID string,
 | 
			
		||||
	status int,
 | 
			
		||||
@@ -53,7 +53,7 @@ func testHTTPContainerInfoGetter(
 | 
			
		||||
				expectedPath, r.URL.Path)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var receivedReq info.ContainerInfoRequest
 | 
			
		||||
		var receivedReq cadvisorApi.ContainerInfoRequest
 | 
			
		||||
		err := json.NewDecoder(r.Body).Decode(&receivedReq)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			t.Fatal(err)
 | 
			
		||||
@@ -87,7 +87,7 @@ func testHTTPContainerInfoGetter(
 | 
			
		||||
		Port:   port,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var receivedContainerInfo *info.ContainerInfo
 | 
			
		||||
	var receivedContainerInfo *cadvisorApi.ContainerInfo
 | 
			
		||||
	if len(podID) > 0 && len(containerID) > 0 {
 | 
			
		||||
		receivedContainerInfo, err = containerInfoGetter.GetContainerInfo(parts[0], podID, containerID, req)
 | 
			
		||||
	} else {
 | 
			
		||||
@@ -109,10 +109,10 @@ func testHTTPContainerInfoGetter(
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestHTTPContainerInfoGetterGetContainerInfoSuccessfully(t *testing.T) {
 | 
			
		||||
	req := &info.ContainerInfoRequest{
 | 
			
		||||
	req := &cadvisorApi.ContainerInfoRequest{
 | 
			
		||||
		NumStats: 10,
 | 
			
		||||
	}
 | 
			
		||||
	cinfo := itest.GenerateRandomContainerInfo(
 | 
			
		||||
	cinfo := cadvisorApiTest.GenerateRandomContainerInfo(
 | 
			
		||||
		"dockerIDWhichWillNotBeChecked", // docker ID
 | 
			
		||||
		2, // Number of cores
 | 
			
		||||
		req,
 | 
			
		||||
@@ -122,10 +122,10 @@ func TestHTTPContainerInfoGetterGetContainerInfoSuccessfully(t *testing.T) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestHTTPContainerInfoGetterGetRootInfoSuccessfully(t *testing.T) {
 | 
			
		||||
	req := &info.ContainerInfoRequest{
 | 
			
		||||
	req := &cadvisorApi.ContainerInfoRequest{
 | 
			
		||||
		NumStats: 10,
 | 
			
		||||
	}
 | 
			
		||||
	cinfo := itest.GenerateRandomContainerInfo(
 | 
			
		||||
	cinfo := cadvisorApiTest.GenerateRandomContainerInfo(
 | 
			
		||||
		"dockerIDWhichWillNotBeChecked", // docker ID
 | 
			
		||||
		2, // Number of cores
 | 
			
		||||
		req,
 | 
			
		||||
@@ -135,10 +135,10 @@ func TestHTTPContainerInfoGetterGetRootInfoSuccessfully(t *testing.T) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestHTTPContainerInfoGetterGetContainerInfoWithError(t *testing.T) {
 | 
			
		||||
	req := &info.ContainerInfoRequest{
 | 
			
		||||
	req := &cadvisorApi.ContainerInfoRequest{
 | 
			
		||||
		NumStats: 10,
 | 
			
		||||
	}
 | 
			
		||||
	cinfo := itest.GenerateRandomContainerInfo(
 | 
			
		||||
	cinfo := cadvisorApiTest.GenerateRandomContainerInfo(
 | 
			
		||||
		"dockerIDWhichWillNotBeChecked", // docker ID
 | 
			
		||||
		2, // Number of cores
 | 
			
		||||
		req,
 | 
			
		||||
@@ -148,10 +148,10 @@ func TestHTTPContainerInfoGetterGetContainerInfoWithError(t *testing.T) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestHTTPContainerInfoGetterGetRootInfoWithError(t *testing.T) {
 | 
			
		||||
	req := &info.ContainerInfoRequest{
 | 
			
		||||
	req := &cadvisorApi.ContainerInfoRequest{
 | 
			
		||||
		NumStats: 10,
 | 
			
		||||
	}
 | 
			
		||||
	cinfo := itest.GenerateRandomContainerInfo(
 | 
			
		||||
	cinfo := cadvisorApiTest.GenerateRandomContainerInfo(
 | 
			
		||||
		"dockerIDWhichWillNotBeChecked", // docker ID
 | 
			
		||||
		2, // Number of cores
 | 
			
		||||
		req,
 | 
			
		||||
@@ -161,7 +161,7 @@ func TestHTTPContainerInfoGetterGetRootInfoWithError(t *testing.T) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestHTTPGetMachineInfo(t *testing.T) {
 | 
			
		||||
	mspec := &info.MachineInfo{
 | 
			
		||||
	mspec := &cadvisorApi.MachineInfo{
 | 
			
		||||
		NumCores:       4,
 | 
			
		||||
		MemoryCapacity: 2048,
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ import (
 | 
			
		||||
 | 
			
		||||
	"github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/dockertools"
 | 
			
		||||
	"github.com/GoogleCloudPlatform/kubernetes/pkg/types"
 | 
			
		||||
	cadvisor "github.com/google/cadvisor/info/v1"
 | 
			
		||||
	cadvisorApi "github.com/google/cadvisor/info/v1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
@@ -38,16 +38,16 @@ var (
 | 
			
		||||
 | 
			
		||||
// 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)
 | 
			
		||||
	DockerContainer(name string, req *cadvisorApi.ContainerInfoRequest) (cadvisorApi.ContainerInfo, error)
 | 
			
		||||
	ContainerInfo(name string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error)
 | 
			
		||||
	MachineInfo() (*cadvisorApi.MachineInfo, error)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// statsFromContainerPath takes a container's absolute path and returns the stats for the
 | 
			
		||||
// container. The container's absolute path refers to its hierarchy in the
 | 
			
		||||
// cgroup file system. e.g. The root container, which represents the whole
 | 
			
		||||
// machine, has path "/"; all docker containers have path "/docker/<docker id>"
 | 
			
		||||
func statsFromContainerPath(cc cadvisorInterface, containerPath string, req *cadvisor.ContainerInfoRequest) (*cadvisor.ContainerInfo, error) {
 | 
			
		||||
func statsFromContainerPath(cc cadvisorInterface, containerPath string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
	cinfo, err := cc.ContainerInfo(containerPath, req)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@@ -57,7 +57,7 @@ func statsFromContainerPath(cc cadvisorInterface, containerPath string, req *cad
 | 
			
		||||
 | 
			
		||||
// statsFromDockerContainer takes a Docker container's ID and returns the stats for the
 | 
			
		||||
// container.
 | 
			
		||||
func statsFromDockerContainer(cc cadvisorInterface, containerId string, req *cadvisor.ContainerInfoRequest) (*cadvisor.ContainerInfo, error) {
 | 
			
		||||
func statsFromDockerContainer(cc cadvisorInterface, containerId string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
	cinfo, err := cc.DockerContainer(containerId, req)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@@ -66,7 +66,7 @@ func statsFromDockerContainer(cc cadvisorInterface, containerId string, req *cad
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetContainerInfo returns stats (from Cadvisor) for a container.
 | 
			
		||||
func (kl *Kubelet) GetContainerInfo(podFullName string, uid types.UID, containerName string, req *cadvisor.ContainerInfoRequest) (*cadvisor.ContainerInfo, error) {
 | 
			
		||||
func (kl *Kubelet) GetContainerInfo(podFullName string, uid types.UID, containerName string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
	cc := kl.GetCadvisorClient()
 | 
			
		||||
	if cc == nil {
 | 
			
		||||
		return nil, fmt.Errorf("no cadvisor connection")
 | 
			
		||||
@@ -91,7 +91,7 @@ func (kl *Kubelet) GetContainerInfo(podFullName string, uid types.UID, container
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetRootInfo returns stats (from Cadvisor) of current machine (root container).
 | 
			
		||||
func (kl *Kubelet) GetRootInfo(req *cadvisor.ContainerInfoRequest) (*cadvisor.ContainerInfo, error) {
 | 
			
		||||
func (kl *Kubelet) GetRootInfo(req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
	cc := kl.GetCadvisorClient()
 | 
			
		||||
	if cc == nil {
 | 
			
		||||
		return nil, fmt.Errorf("no cadvisor connection")
 | 
			
		||||
@@ -99,7 +99,7 @@ func (kl *Kubelet) GetRootInfo(req *cadvisor.ContainerInfoRequest) (*cadvisor.Co
 | 
			
		||||
	return statsFromContainerPath(cc, "/", req)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (kl *Kubelet) GetMachineInfo() (*cadvisor.MachineInfo, error) {
 | 
			
		||||
func (kl *Kubelet) GetMachineInfo() (*cadvisorApi.MachineInfo, error) {
 | 
			
		||||
	cc := kl.GetCadvisorClient()
 | 
			
		||||
	if cc == nil {
 | 
			
		||||
		return nil, fmt.Errorf("no cadvisor connection")
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@ import (
 | 
			
		||||
	"github.com/GoogleCloudPlatform/kubernetes/pkg/types"
 | 
			
		||||
	"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
 | 
			
		||||
	"github.com/fsouza/go-dockerclient"
 | 
			
		||||
	info "github.com/google/cadvisor/info/v1"
 | 
			
		||||
	cadvisorApi "github.com/google/cadvisor/info/v1"
 | 
			
		||||
	"github.com/stretchr/testify/mock"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -1258,34 +1258,34 @@ func (f *errorTestingDockerClient) ListContainers(options docker.ListContainersO
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ContainerInfo is a mock implementation of CadvisorInterface.ContainerInfo.
 | 
			
		||||
func (c *mockCadvisorClient) ContainerInfo(name string, req *info.ContainerInfoRequest) (*info.ContainerInfo, error) {
 | 
			
		||||
func (c *mockCadvisorClient) ContainerInfo(name string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
	args := c.Called(name, req)
 | 
			
		||||
	return args.Get(0).(*info.ContainerInfo), args.Error(1)
 | 
			
		||||
	return args.Get(0).(*cadvisorApi.ContainerInfo), args.Error(1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DockerContainer is a mock implementation of CadvisorInterface.DockerContainer.
 | 
			
		||||
func (c *mockCadvisorClient) DockerContainer(name string, req *info.ContainerInfoRequest) (info.ContainerInfo, error) {
 | 
			
		||||
func (c *mockCadvisorClient) DockerContainer(name string, req *cadvisorApi.ContainerInfoRequest) (cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
	args := c.Called(name, req)
 | 
			
		||||
	return args.Get(0).(info.ContainerInfo), args.Error(1)
 | 
			
		||||
	return args.Get(0).(cadvisorApi.ContainerInfo), args.Error(1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MachineInfo is a mock implementation of CadvisorInterface.MachineInfo.
 | 
			
		||||
func (c *mockCadvisorClient) MachineInfo() (*info.MachineInfo, error) {
 | 
			
		||||
func (c *mockCadvisorClient) MachineInfo() (*cadvisorApi.MachineInfo, error) {
 | 
			
		||||
	args := c.Called()
 | 
			
		||||
	return args.Get(0).(*info.MachineInfo), args.Error(1)
 | 
			
		||||
	return args.Get(0).(*cadvisorApi.MachineInfo), args.Error(1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestGetContainerInfo(t *testing.T) {
 | 
			
		||||
	containerID := "ab2cdf"
 | 
			
		||||
	containerPath := fmt.Sprintf("/docker/%v", containerID)
 | 
			
		||||
	containerInfo := info.ContainerInfo{
 | 
			
		||||
		ContainerReference: info.ContainerReference{
 | 
			
		||||
	containerInfo := cadvisorApi.ContainerInfo{
 | 
			
		||||
		ContainerReference: cadvisorApi.ContainerReference{
 | 
			
		||||
			Name: containerPath,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	mockCadvisor := &mockCadvisorClient{}
 | 
			
		||||
	cadvisorReq := &info.ContainerInfoRequest{}
 | 
			
		||||
	cadvisorReq := &cadvisorApi.ContainerInfoRequest{}
 | 
			
		||||
	mockCadvisor.On("DockerContainer", containerID, cadvisorReq).Return(containerInfo, nil)
 | 
			
		||||
 | 
			
		||||
	kubelet, fakeDocker, _ := newTestKubelet(t)
 | 
			
		||||
@@ -1311,15 +1311,15 @@ func TestGetContainerInfo(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
func TestGetRootInfo(t *testing.T) {
 | 
			
		||||
	containerPath := "/"
 | 
			
		||||
	containerInfo := &info.ContainerInfo{
 | 
			
		||||
		ContainerReference: info.ContainerReference{
 | 
			
		||||
	containerInfo := &cadvisorApi.ContainerInfo{
 | 
			
		||||
		ContainerReference: cadvisorApi.ContainerReference{
 | 
			
		||||
			Name: containerPath,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	fakeDocker := dockertools.FakeDockerClient{}
 | 
			
		||||
 | 
			
		||||
	mockCadvisor := &mockCadvisorClient{}
 | 
			
		||||
	cadvisorReq := &info.ContainerInfoRequest{}
 | 
			
		||||
	cadvisorReq := &cadvisorApi.ContainerInfoRequest{}
 | 
			
		||||
	mockCadvisor.On("ContainerInfo", containerPath, cadvisorReq).Return(containerInfo, nil)
 | 
			
		||||
 | 
			
		||||
	kubelet := Kubelet{
 | 
			
		||||
@@ -1357,9 +1357,9 @@ func TestGetContainerInfoWithoutCadvisor(t *testing.T) {
 | 
			
		||||
func TestGetContainerInfoWhenCadvisorFailed(t *testing.T) {
 | 
			
		||||
	containerID := "ab2cdf"
 | 
			
		||||
 | 
			
		||||
	containerInfo := info.ContainerInfo{}
 | 
			
		||||
	containerInfo := cadvisorApi.ContainerInfo{}
 | 
			
		||||
	mockCadvisor := &mockCadvisorClient{}
 | 
			
		||||
	cadvisorReq := &info.ContainerInfoRequest{}
 | 
			
		||||
	cadvisorReq := &cadvisorApi.ContainerInfoRequest{}
 | 
			
		||||
	mockCadvisor.On("DockerContainer", containerID, cadvisorReq).Return(containerInfo, ErrCadvisorApiFailure)
 | 
			
		||||
 | 
			
		||||
	kubelet, fakeDocker, _ := newTestKubelet(t)
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ import (
 | 
			
		||||
	"github.com/GoogleCloudPlatform/kubernetes/pkg/util/httpstream"
 | 
			
		||||
	"github.com/GoogleCloudPlatform/kubernetes/pkg/util/httpstream/spdy"
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
	info "github.com/google/cadvisor/info/v1"
 | 
			
		||||
	cadvisorApi "github.com/google/cadvisor/info/v1"
 | 
			
		||||
	"github.com/prometheus/client_golang/prometheus"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -77,10 +77,10 @@ func ListenAndServeKubeletServer(host HostInterface, address net.IP, port uint,
 | 
			
		||||
// HostInterface contains all the kubelet methods required by the server.
 | 
			
		||||
// For testablitiy.
 | 
			
		||||
type HostInterface interface {
 | 
			
		||||
	GetContainerInfo(podFullName string, uid types.UID, containerName string, req *info.ContainerInfoRequest) (*info.ContainerInfo, error)
 | 
			
		||||
	GetRootInfo(req *info.ContainerInfoRequest) (*info.ContainerInfo, error)
 | 
			
		||||
	GetContainerInfo(podFullName string, uid types.UID, containerName string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error)
 | 
			
		||||
	GetRootInfo(req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error)
 | 
			
		||||
	GetDockerVersion() ([]uint, error)
 | 
			
		||||
	GetMachineInfo() (*info.MachineInfo, error)
 | 
			
		||||
	GetMachineInfo() (*cadvisorApi.MachineInfo, error)
 | 
			
		||||
	GetBoundPods() ([]api.BoundPod, error)
 | 
			
		||||
	GetPodByName(namespace, name string) (*api.BoundPod, bool)
 | 
			
		||||
	GetPodStatus(name string, uid types.UID) (api.PodStatus, error)
 | 
			
		||||
@@ -633,9 +633,9 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, req *http.Request) {
 | 
			
		||||
func (s *Server) serveStats(w http.ResponseWriter, req *http.Request) {
 | 
			
		||||
	// /stats/<podfullname>/<containerName> or /stats/<namespace>/<podfullname>/<uid>/<containerName>
 | 
			
		||||
	components := strings.Split(strings.TrimPrefix(path.Clean(req.URL.Path), "/"), "/")
 | 
			
		||||
	var stats *info.ContainerInfo
 | 
			
		||||
	var stats *cadvisorApi.ContainerInfo
 | 
			
		||||
	var err error
 | 
			
		||||
	var query info.ContainerInfoRequest
 | 
			
		||||
	var query cadvisorApi.ContainerInfoRequest
 | 
			
		||||
	err = json.NewDecoder(req.Body).Decode(&query)
 | 
			
		||||
	if err != nil && err != io.EOF {
 | 
			
		||||
		s.error(w, err)
 | 
			
		||||
 
 | 
			
		||||
@@ -34,15 +34,15 @@ import (
 | 
			
		||||
	"github.com/GoogleCloudPlatform/kubernetes/pkg/types"
 | 
			
		||||
	"github.com/GoogleCloudPlatform/kubernetes/pkg/util/httpstream"
 | 
			
		||||
	"github.com/GoogleCloudPlatform/kubernetes/pkg/util/httpstream/spdy"
 | 
			
		||||
	info "github.com/google/cadvisor/info/v1"
 | 
			
		||||
	cadvisorApi "github.com/google/cadvisor/info/v1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type fakeKubelet struct {
 | 
			
		||||
	podByNameFunc                      func(namespace, name string) (*api.BoundPod, bool)
 | 
			
		||||
	statusFunc                         func(name string) (api.PodStatus, error)
 | 
			
		||||
	containerInfoFunc                  func(podFullName string, uid types.UID, containerName string, req *info.ContainerInfoRequest) (*info.ContainerInfo, error)
 | 
			
		||||
	rootInfoFunc                       func(query *info.ContainerInfoRequest) (*info.ContainerInfo, error)
 | 
			
		||||
	machineInfoFunc                    func() (*info.MachineInfo, error)
 | 
			
		||||
	containerInfoFunc                  func(podFullName string, uid types.UID, containerName string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error)
 | 
			
		||||
	rootInfoFunc                       func(query *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error)
 | 
			
		||||
	machineInfoFunc                    func() (*cadvisorApi.MachineInfo, error)
 | 
			
		||||
	boundPodsFunc                      func() ([]api.BoundPod, error)
 | 
			
		||||
	logFunc                            func(w http.ResponseWriter, req *http.Request)
 | 
			
		||||
	runFunc                            func(podFullName string, uid types.UID, containerName string, cmd []string) ([]byte, error)
 | 
			
		||||
@@ -62,11 +62,11 @@ func (fk *fakeKubelet) GetPodStatus(name string, uid types.UID) (api.PodStatus,
 | 
			
		||||
	return fk.statusFunc(name)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fk *fakeKubelet) GetContainerInfo(podFullName string, uid types.UID, containerName string, req *info.ContainerInfoRequest) (*info.ContainerInfo, error) {
 | 
			
		||||
func (fk *fakeKubelet) GetContainerInfo(podFullName string, uid types.UID, containerName string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
	return fk.containerInfoFunc(podFullName, uid, containerName, req)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fk *fakeKubelet) GetRootInfo(req *info.ContainerInfoRequest) (*info.ContainerInfo, error) {
 | 
			
		||||
func (fk *fakeKubelet) GetRootInfo(req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
	return fk.rootInfoFunc(req)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -74,7 +74,7 @@ func (fk *fakeKubelet) GetDockerVersion() ([]uint, error) {
 | 
			
		||||
	return fk.dockerVersionFunc()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fk *fakeKubelet) GetMachineInfo() (*info.MachineInfo, error) {
 | 
			
		||||
func (fk *fakeKubelet) GetMachineInfo() (*cadvisorApi.MachineInfo, error) {
 | 
			
		||||
	return fk.machineInfoFunc()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -189,11 +189,11 @@ func TestPodStatus(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
func TestContainerInfo(t *testing.T) {
 | 
			
		||||
	fw := newServerTest()
 | 
			
		||||
	expectedInfo := &info.ContainerInfo{}
 | 
			
		||||
	expectedInfo := &cadvisorApi.ContainerInfo{}
 | 
			
		||||
	podID := "somepod"
 | 
			
		||||
	expectedPodID := "somepod" + ".default.etcd"
 | 
			
		||||
	expectedContainerName := "goodcontainer"
 | 
			
		||||
	fw.fakeKubelet.containerInfoFunc = func(podID string, uid types.UID, containerName string, req *info.ContainerInfoRequest) (*info.ContainerInfo, error) {
 | 
			
		||||
	fw.fakeKubelet.containerInfoFunc = func(podID string, uid types.UID, containerName string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
		if podID != expectedPodID || containerName != expectedContainerName {
 | 
			
		||||
			return nil, fmt.Errorf("bad podID or containerName: podID=%v; containerName=%v", podID, containerName)
 | 
			
		||||
		}
 | 
			
		||||
@@ -205,7 +205,7 @@ func TestContainerInfo(t *testing.T) {
 | 
			
		||||
		t.Fatalf("Got error GETing: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	defer resp.Body.Close()
 | 
			
		||||
	var receivedInfo info.ContainerInfo
 | 
			
		||||
	var receivedInfo cadvisorApi.ContainerInfo
 | 
			
		||||
	err = json.NewDecoder(resp.Body).Decode(&receivedInfo)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatalf("received invalid json data: %v", err)
 | 
			
		||||
@@ -217,13 +217,13 @@ func TestContainerInfo(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
func TestContainerInfoWithUidNamespace(t *testing.T) {
 | 
			
		||||
	fw := newServerTest()
 | 
			
		||||
	expectedInfo := &info.ContainerInfo{}
 | 
			
		||||
	expectedInfo := &cadvisorApi.ContainerInfo{}
 | 
			
		||||
	podID := "somepod"
 | 
			
		||||
	expectedNamespace := "custom"
 | 
			
		||||
	expectedPodID := "somepod" + "." + expectedNamespace + ".etcd"
 | 
			
		||||
	expectedContainerName := "goodcontainer"
 | 
			
		||||
	expectedUid := "9b01b80f-8fb4-11e4-95ab-4200af06647"
 | 
			
		||||
	fw.fakeKubelet.containerInfoFunc = func(podID string, uid types.UID, containerName string, req *info.ContainerInfoRequest) (*info.ContainerInfo, error) {
 | 
			
		||||
	fw.fakeKubelet.containerInfoFunc = func(podID string, uid types.UID, containerName string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
		if podID != expectedPodID || string(uid) != expectedUid || containerName != expectedContainerName {
 | 
			
		||||
			return nil, fmt.Errorf("bad podID or uid or containerName: podID=%v; uid=%v; containerName=%v", podID, uid, containerName)
 | 
			
		||||
		}
 | 
			
		||||
@@ -235,7 +235,7 @@ func TestContainerInfoWithUidNamespace(t *testing.T) {
 | 
			
		||||
		t.Fatalf("Got error GETing: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	defer resp.Body.Close()
 | 
			
		||||
	var receivedInfo info.ContainerInfo
 | 
			
		||||
	var receivedInfo cadvisorApi.ContainerInfo
 | 
			
		||||
	err = json.NewDecoder(resp.Body).Decode(&receivedInfo)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatalf("received invalid json data: %v", err)
 | 
			
		||||
@@ -251,7 +251,7 @@ func TestContainerNotFound(t *testing.T) {
 | 
			
		||||
	expectedNamespace := "custom"
 | 
			
		||||
	expectedContainerName := "slowstartcontainer"
 | 
			
		||||
	expectedUid := "9b01b80f-8fb4-11e4-95ab-4200af06647"
 | 
			
		||||
	fw.fakeKubelet.containerInfoFunc = func(podID string, uid types.UID, containerName string, req *info.ContainerInfoRequest) (*info.ContainerInfo, error) {
 | 
			
		||||
	fw.fakeKubelet.containerInfoFunc = func(podID string, uid types.UID, containerName string, req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
		return nil, ErrContainerNotFound
 | 
			
		||||
	}
 | 
			
		||||
	resp, err := http.Get(fw.testHTTPServer.URL + fmt.Sprintf("/stats/%v/%v/%v/%v", expectedNamespace, podID, expectedUid, expectedContainerName))
 | 
			
		||||
@@ -266,8 +266,8 @@ func TestContainerNotFound(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
func TestRootInfo(t *testing.T) {
 | 
			
		||||
	fw := newServerTest()
 | 
			
		||||
	expectedInfo := &info.ContainerInfo{}
 | 
			
		||||
	fw.fakeKubelet.rootInfoFunc = func(req *info.ContainerInfoRequest) (*info.ContainerInfo, error) {
 | 
			
		||||
	expectedInfo := &cadvisorApi.ContainerInfo{}
 | 
			
		||||
	fw.fakeKubelet.rootInfoFunc = func(req *cadvisorApi.ContainerInfoRequest) (*cadvisorApi.ContainerInfo, error) {
 | 
			
		||||
		return expectedInfo, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -276,7 +276,7 @@ func TestRootInfo(t *testing.T) {
 | 
			
		||||
		t.Fatalf("Got error GETing: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	defer resp.Body.Close()
 | 
			
		||||
	var receivedInfo info.ContainerInfo
 | 
			
		||||
	var receivedInfo cadvisorApi.ContainerInfo
 | 
			
		||||
	err = json.NewDecoder(resp.Body).Decode(&receivedInfo)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatalf("received invalid json data: %v", err)
 | 
			
		||||
@@ -288,11 +288,11 @@ func TestRootInfo(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
func TestMachineInfo(t *testing.T) {
 | 
			
		||||
	fw := newServerTest()
 | 
			
		||||
	expectedInfo := &info.MachineInfo{
 | 
			
		||||
	expectedInfo := &cadvisorApi.MachineInfo{
 | 
			
		||||
		NumCores:       4,
 | 
			
		||||
		MemoryCapacity: 1024,
 | 
			
		||||
	}
 | 
			
		||||
	fw.fakeKubelet.machineInfoFunc = func() (*info.MachineInfo, error) {
 | 
			
		||||
	fw.fakeKubelet.machineInfoFunc = func() (*cadvisorApi.MachineInfo, error) {
 | 
			
		||||
		return expectedInfo, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -301,7 +301,7 @@ func TestMachineInfo(t *testing.T) {
 | 
			
		||||
		t.Fatalf("Got error GETing: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	defer resp.Body.Close()
 | 
			
		||||
	var receivedInfo info.MachineInfo
 | 
			
		||||
	var receivedInfo cadvisorApi.MachineInfo
 | 
			
		||||
	err = json.NewDecoder(resp.Body).Decode(&receivedInfo)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatalf("received invalid json data: %v", err)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user