mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #2919 from brendandburns/kubelet
Revert "Add an api object for the kubelet, and a versioned endpoint."
This commit is contained in:
commit
5ef34bf523
@ -62,7 +62,7 @@ var (
|
|||||||
|
|
||||||
type fakeKubeletClient struct{}
|
type fakeKubeletClient struct{}
|
||||||
|
|
||||||
func (fakeKubeletClient) GetPodInfo(host, podNamespace, podID string) (api.PodContainerInfo, error) {
|
func (fakeKubeletClient) GetPodInfo(host, podNamespace, podID string) (api.PodInfo, error) {
|
||||||
// This is a horrible hack to get around the fact that we can't provide
|
// This is a horrible hack to get around the fact that we can't provide
|
||||||
// different port numbers per kubelet...
|
// different port numbers per kubelet...
|
||||||
var c client.PodInfoGetter
|
var c client.PodInfoGetter
|
||||||
|
@ -25,7 +25,6 @@ var Scheme = runtime.NewScheme()
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Scheme.AddKnownTypes("",
|
Scheme.AddKnownTypes("",
|
||||||
&PodContainerInfo{},
|
|
||||||
&PodList{},
|
&PodList{},
|
||||||
&Pod{},
|
&Pod{},
|
||||||
&ReplicationControllerList{},
|
&ReplicationControllerList{},
|
||||||
@ -53,7 +52,6 @@ func init() {
|
|||||||
Scheme.AddKnownTypeWithName("", "MinionList", &NodeList{})
|
Scheme.AddKnownTypeWithName("", "MinionList", &NodeList{})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*PodContainerInfo) IsAnAPIObject() {}
|
|
||||||
func (*Pod) IsAnAPIObject() {}
|
func (*Pod) IsAnAPIObject() {}
|
||||||
func (*PodList) IsAnAPIObject() {}
|
func (*PodList) IsAnAPIObject() {}
|
||||||
func (*ReplicationController) IsAnAPIObject() {}
|
func (*ReplicationController) IsAnAPIObject() {}
|
||||||
|
@ -203,7 +203,7 @@ func TestList(t *testing.T) {
|
|||||||
api.Scheme.Log(nil)
|
api.Scheme.Log(nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
var nonRoundTrippableTypes = util.NewStringSet("ContainerManifest", "PodContainerInfo")
|
var nonRoundTrippableTypes = util.NewStringSet("ContainerManifest")
|
||||||
var nonInternalRoundTrippableTypes = util.NewStringSet("List")
|
var nonInternalRoundTrippableTypes = util.NewStringSet("List")
|
||||||
|
|
||||||
func TestRoundTripTypes(t *testing.T) {
|
func TestRoundTripTypes(t *testing.T) {
|
||||||
|
@ -410,13 +410,6 @@ type ContainerStatus struct {
|
|||||||
// PodInfo contains one entry for every container with available info.
|
// PodInfo contains one entry for every container with available info.
|
||||||
type PodInfo map[string]ContainerStatus
|
type PodInfo map[string]ContainerStatus
|
||||||
|
|
||||||
// PodContainerInfo is a wrapper for PodInfo that can be encode/decoded
|
|
||||||
type PodContainerInfo struct {
|
|
||||||
TypeMeta `json:",inline"`
|
|
||||||
ObjectMeta `json:"metadata,omitempty"`
|
|
||||||
ContainerInfo PodInfo `json:"containerInfo"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type RestartPolicyAlways struct{}
|
type RestartPolicyAlways struct{}
|
||||||
|
|
||||||
// TODO(dchen1107): Define what kinds of failures should restart.
|
// TODO(dchen1107): Define what kinds of failures should restart.
|
||||||
|
@ -366,12 +366,6 @@ type ContainerStatus struct {
|
|||||||
// PodInfo contains one entry for every container with available info.
|
// PodInfo contains one entry for every container with available info.
|
||||||
type PodInfo map[string]ContainerStatus
|
type PodInfo map[string]ContainerStatus
|
||||||
|
|
||||||
// PodContainerInfo is a wrapper for PodInfo that can be encode/decoded
|
|
||||||
type PodContainerInfo struct {
|
|
||||||
TypeMeta `json:",inline"`
|
|
||||||
ContainerInfo PodInfo `json:"containerInfo" description:"information about each container in this pod"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type RestartPolicyAlways struct{}
|
type RestartPolicyAlways struct{}
|
||||||
|
|
||||||
// TODO(dchen1107): Define what kinds of failures should restart
|
// TODO(dchen1107): Define what kinds of failures should restart
|
||||||
|
@ -31,7 +31,6 @@ func init() {
|
|||||||
|
|
||||||
api.Scheme.AddKnownTypes("v1beta2",
|
api.Scheme.AddKnownTypes("v1beta2",
|
||||||
&Pod{},
|
&Pod{},
|
||||||
&PodContainerInfo{},
|
|
||||||
&PodList{},
|
&PodList{},
|
||||||
&ReplicationController{},
|
&ReplicationController{},
|
||||||
&ReplicationControllerList{},
|
&ReplicationControllerList{},
|
||||||
@ -59,7 +58,6 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (*Pod) IsAnAPIObject() {}
|
func (*Pod) IsAnAPIObject() {}
|
||||||
func (*PodContainerInfo) IsAnAPIObject() {}
|
|
||||||
func (*PodList) IsAnAPIObject() {}
|
func (*PodList) IsAnAPIObject() {}
|
||||||
func (*ReplicationController) IsAnAPIObject() {}
|
func (*ReplicationController) IsAnAPIObject() {}
|
||||||
func (*ReplicationControllerList) IsAnAPIObject() {}
|
func (*ReplicationControllerList) IsAnAPIObject() {}
|
||||||
|
@ -331,12 +331,6 @@ type ContainerStatus struct {
|
|||||||
// PodInfo contains one entry for every container with available info.
|
// PodInfo contains one entry for every container with available info.
|
||||||
type PodInfo map[string]ContainerStatus
|
type PodInfo map[string]ContainerStatus
|
||||||
|
|
||||||
// PodContainerInfo is a wrapper for PodInfo that can be encode/decoded
|
|
||||||
type PodContainerInfo struct {
|
|
||||||
TypeMeta `json:",inline"`
|
|
||||||
ContainerInfo PodInfo `json:"containerInfo" description:"information about each container in this pod"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type RestartPolicyAlways struct{}
|
type RestartPolicyAlways struct{}
|
||||||
|
|
||||||
// TODO(dchen1107): Define what kinds of failures should restart.
|
// TODO(dchen1107): Define what kinds of failures should restart.
|
||||||
|
@ -26,7 +26,6 @@ var Codec = runtime.CodecFor(api.Scheme, "v1beta3")
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
api.Scheme.AddKnownTypes("v1beta3",
|
api.Scheme.AddKnownTypes("v1beta3",
|
||||||
&PodContainerInfo{},
|
|
||||||
&Pod{},
|
&Pod{},
|
||||||
&PodList{},
|
&PodList{},
|
||||||
&PodTemplate{},
|
&PodTemplate{},
|
||||||
@ -54,7 +53,6 @@ func init() {
|
|||||||
api.Scheme.AddKnownTypeWithName("v1beta3", "MinionList", &NodeList{})
|
api.Scheme.AddKnownTypeWithName("v1beta3", "MinionList", &NodeList{})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*PodContainerInfo) IsAnAPIObject() {}
|
|
||||||
func (*Pod) IsAnAPIObject() {}
|
func (*Pod) IsAnAPIObject() {}
|
||||||
func (*PodList) IsAnAPIObject() {}
|
func (*PodList) IsAnAPIObject() {}
|
||||||
func (*PodTemplate) IsAnAPIObject() {}
|
func (*PodTemplate) IsAnAPIObject() {}
|
||||||
|
@ -427,13 +427,6 @@ type ContainerStatus struct {
|
|||||||
// PodInfo contains one entry for every container with available info.
|
// PodInfo contains one entry for every container with available info.
|
||||||
type PodInfo map[string]ContainerStatus
|
type PodInfo map[string]ContainerStatus
|
||||||
|
|
||||||
// PodContainerInfo is a wrapper for PodInfo that can be encode/decoded
|
|
||||||
type PodContainerInfo struct {
|
|
||||||
TypeMeta `json:",inline"`
|
|
||||||
ObjectMeta `json:"metadata,omitempty"`
|
|
||||||
ContainerInfo PodInfo `json:"containerInfo" description:"information about each container in this pod"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type RestartPolicyAlways struct{}
|
type RestartPolicyAlways struct{}
|
||||||
|
|
||||||
// TODO(dchen1107): Define what kinds of failures should restart.
|
// TODO(dchen1107): Define what kinds of failures should restart.
|
||||||
|
@ -17,16 +17,15 @@ limitations under the License.
|
|||||||
package client
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/latest"
|
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/health"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/health"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -49,7 +48,7 @@ type KubeletHealthChecker interface {
|
|||||||
type PodInfoGetter interface {
|
type PodInfoGetter interface {
|
||||||
// GetPodInfo returns information about all containers which are part
|
// GetPodInfo returns information about all containers which are part
|
||||||
// Returns an api.PodInfo, or an error if one occurs.
|
// Returns an api.PodInfo, or an error if one occurs.
|
||||||
GetPodInfo(host, podNamespace, podID string) (api.PodContainerInfo, error)
|
GetPodInfo(host, podNamespace, podID string) (api.PodInfo, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// HTTPKubeletClient is the default implementation of PodInfoGetter and KubeletHealthchecker, accesses the kubelet over HTTP.
|
// HTTPKubeletClient is the default implementation of PodInfoGetter and KubeletHealthchecker, accesses the kubelet over HTTP.
|
||||||
@ -90,36 +89,35 @@ func (c *HTTPKubeletClient) url(host string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetPodInfo gets information about the specified pod.
|
// GetPodInfo gets information about the specified pod.
|
||||||
func (c *HTTPKubeletClient) GetPodInfo(host, podNamespace, podID string) (api.PodContainerInfo, error) {
|
func (c *HTTPKubeletClient) GetPodInfo(host, podNamespace, podID string) (api.PodInfo, error) {
|
||||||
request, err := http.NewRequest(
|
request, err := http.NewRequest(
|
||||||
"GET",
|
"GET",
|
||||||
fmt.Sprintf(
|
fmt.Sprintf(
|
||||||
"%s/api/v1beta1/podInfo?podID=%s&podNamespace=%s",
|
"%s/podInfo?podID=%s&podNamespace=%s",
|
||||||
c.url(host),
|
c.url(host),
|
||||||
podID,
|
podID,
|
||||||
podNamespace),
|
podNamespace),
|
||||||
nil)
|
nil)
|
||||||
info := api.PodContainerInfo{}
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return info, err
|
return nil, err
|
||||||
}
|
}
|
||||||
response, err := c.Client.Do(request)
|
response, err := c.Client.Do(request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return info, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer response.Body.Close()
|
defer response.Body.Close()
|
||||||
if response.StatusCode == http.StatusNotFound {
|
if response.StatusCode == http.StatusNotFound {
|
||||||
return info, ErrPodInfoNotAvailable
|
return nil, ErrPodInfoNotAvailable
|
||||||
}
|
}
|
||||||
body, err := ioutil.ReadAll(response.Body)
|
body, err := ioutil.ReadAll(response.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return info, err
|
return nil, err
|
||||||
}
|
}
|
||||||
// Check that this data can be unmarshalled
|
// Check that this data can be unmarshalled
|
||||||
log.Printf("FOOO: %s", string(body))
|
info := api.PodInfo{}
|
||||||
err = latest.Codec.DecodeInto(body, &info)
|
err = json.Unmarshal(body, &info)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return info, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return info, nil
|
return info, nil
|
||||||
}
|
}
|
||||||
@ -134,8 +132,8 @@ func (c *HTTPKubeletClient) HealthCheck(host string) (health.Status, error) {
|
|||||||
type FakeKubeletClient struct{}
|
type FakeKubeletClient struct{}
|
||||||
|
|
||||||
// GetPodInfo is a fake implementation of PodInfoGetter.GetPodInfo.
|
// GetPodInfo is a fake implementation of PodInfoGetter.GetPodInfo.
|
||||||
func (c FakeKubeletClient) GetPodInfo(host, podNamespace string, podID string) (api.PodContainerInfo, error) {
|
func (c FakeKubeletClient) GetPodInfo(host, podNamespace string, podID string) (api.PodInfo, error) {
|
||||||
return api.PodContainerInfo{}, errors.New("Not Implemented")
|
return api.PodInfo{}, errors.New("Not Implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c FakeKubeletClient) HealthCheck(host string) (health.Status, error) {
|
func (c FakeKubeletClient) HealthCheck(host string) (health.Status, error) {
|
||||||
|
@ -31,10 +31,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestHTTPKubeletClient(t *testing.T) {
|
func TestHTTPKubeletClient(t *testing.T) {
|
||||||
expectObj := api.PodContainerInfo{
|
expectObj := api.PodInfo{
|
||||||
ContainerInfo: map[string]api.ContainerStatus{
|
"myID": api.ContainerStatus{},
|
||||||
"myID": {},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
body, err := json.Marshal(expectObj)
|
body, err := json.Marshal(expectObj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -70,16 +68,14 @@ func TestHTTPKubeletClient(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// reflect.DeepEqual(expectObj, gotObj) doesn't handle blank times well
|
// reflect.DeepEqual(expectObj, gotObj) doesn't handle blank times well
|
||||||
if len(gotObj.ContainerInfo) != len(expectObj.ContainerInfo) {
|
if len(gotObj) != len(expectObj) {
|
||||||
t.Errorf("Unexpected response. Expected: %#v, received %#v", expectObj, gotObj)
|
t.Errorf("Unexpected response. Expected: %#v, received %#v", expectObj, gotObj)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHTTPKubeletClientNotFound(t *testing.T) {
|
func TestHTTPKubeletClientNotFound(t *testing.T) {
|
||||||
expectObj := api.PodContainerInfo{
|
expectObj := api.PodInfo{
|
||||||
ContainerInfo: map[string]api.ContainerStatus{
|
"myID": api.ContainerStatus{},
|
||||||
"myID": {},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
_, err := json.Marshal(expectObj)
|
_, err := json.Marshal(expectObj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -35,7 +35,6 @@ import (
|
|||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/healthz"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/healthz"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/httplog"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/httplog"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/dockertools"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/dockertools"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime"
|
|
||||||
"github.com/ghodss/yaml"
|
"github.com/ghodss/yaml"
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"github.com/google/cadvisor/info"
|
"github.com/google/cadvisor/info"
|
||||||
@ -92,8 +91,7 @@ func NewServer(host HostInterface, updates chan<- interface{}, enableDebuggingHa
|
|||||||
// InstallDefaultHandlers registers the default set of supported HTTP request patterns with the mux.
|
// InstallDefaultHandlers registers the default set of supported HTTP request patterns with the mux.
|
||||||
func (s *Server) InstallDefaultHandlers() {
|
func (s *Server) InstallDefaultHandlers() {
|
||||||
healthz.InstallHandler(s.mux)
|
healthz.InstallHandler(s.mux)
|
||||||
s.mux.HandleFunc("/podInfo", s.handlePodInfoOld)
|
s.mux.HandleFunc("/podInfo", s.handlePodInfo)
|
||||||
s.mux.HandleFunc("/api/v1beta1/podInfo", s.handlePodInfoVersioned)
|
|
||||||
s.mux.HandleFunc("/boundPods", s.handleBoundPods)
|
s.mux.HandleFunc("/boundPods", s.handleBoundPods)
|
||||||
s.mux.HandleFunc("/stats/", s.handleStats)
|
s.mux.HandleFunc("/stats/", s.handleStats)
|
||||||
s.mux.HandleFunc("/spec/", s.handleSpec)
|
s.mux.HandleFunc("/spec/", s.handleSpec)
|
||||||
@ -251,16 +249,8 @@ func (s *Server) handleBoundPods(w http.ResponseWriter, req *http.Request) {
|
|||||||
w.Write(data)
|
w.Write(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) handlePodInfoOld(w http.ResponseWriter, req *http.Request) {
|
|
||||||
s.handlePodInfo(w, req, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Server) handlePodInfoVersioned(w http.ResponseWriter, req *http.Request) {
|
|
||||||
s.handlePodInfo(w, req, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
// handlePodInfo handles podInfo requests against the Kubelet
|
// handlePodInfo handles podInfo requests against the Kubelet
|
||||||
func (s *Server) handlePodInfo(w http.ResponseWriter, req *http.Request, versioned bool) {
|
func (s *Server) handlePodInfo(w http.ResponseWriter, req *http.Request) {
|
||||||
u, err := url.ParseRequestURI(req.RequestURI)
|
u, err := url.ParseRequestURI(req.RequestURI)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.error(w, err)
|
s.error(w, err)
|
||||||
@ -296,7 +286,7 @@ func (s *Server) handlePodInfo(w http.ResponseWriter, req *http.Request, version
|
|||||||
s.error(w, err)
|
s.error(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
data, err := exportPodInfo(info, versioned)
|
data, err := json.Marshal(info)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.error(w, err)
|
s.error(w, err)
|
||||||
return
|
return
|
||||||
@ -447,23 +437,3 @@ func (s *Server) serveStats(w http.ResponseWriter, req *http.Request) {
|
|||||||
w.Write(data)
|
w.Write(data)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func exportPodInfo(info api.PodInfo, versioned bool) ([]byte, error) {
|
|
||||||
if versioned {
|
|
||||||
// TODO: support arbitrary versions here
|
|
||||||
codec, err := findCodec("v1beta1")
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return codec.Encode(&api.PodContainerInfo{ContainerInfo: info})
|
|
||||||
}
|
|
||||||
return json.Marshal(info)
|
|
||||||
}
|
|
||||||
|
|
||||||
func findCodec(version string) (runtime.Codec, error) {
|
|
||||||
versions, err := latest.InterfacesFor(version)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return versions.Codec, nil
|
|
||||||
}
|
|
||||||
|
@ -33,7 +33,7 @@ type PodCache struct {
|
|||||||
containerInfo client.PodInfoGetter
|
containerInfo client.PodInfoGetter
|
||||||
pods pod.Registry
|
pods pod.Registry
|
||||||
// This is a map of pod id to a map of container name to the
|
// This is a map of pod id to a map of container name to the
|
||||||
podInfo map[string]api.PodContainerInfo
|
podInfo map[string]api.PodInfo
|
||||||
podLock sync.Mutex
|
podLock sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ func NewPodCache(info client.PodInfoGetter, pods pod.Registry) *PodCache {
|
|||||||
return &PodCache{
|
return &PodCache{
|
||||||
containerInfo: info,
|
containerInfo: info,
|
||||||
pods: pods,
|
pods: pods,
|
||||||
podInfo: map[string]api.PodContainerInfo{},
|
podInfo: map[string]api.PodInfo{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,12 +54,12 @@ func makePodCacheKey(podNamespace, podID string) string {
|
|||||||
// GetPodInfo implements the PodInfoGetter.GetPodInfo.
|
// GetPodInfo implements the PodInfoGetter.GetPodInfo.
|
||||||
// The returned value should be treated as read-only.
|
// The returned value should be treated as read-only.
|
||||||
// TODO: Remove the host from this call, it's totally unnecessary.
|
// TODO: Remove the host from this call, it's totally unnecessary.
|
||||||
func (p *PodCache) GetPodInfo(host, podNamespace, podID string) (api.PodContainerInfo, error) {
|
func (p *PodCache) GetPodInfo(host, podNamespace, podID string) (api.PodInfo, error) {
|
||||||
p.podLock.Lock()
|
p.podLock.Lock()
|
||||||
defer p.podLock.Unlock()
|
defer p.podLock.Unlock()
|
||||||
value, ok := p.podInfo[makePodCacheKey(podNamespace, podID)]
|
value, ok := p.podInfo[makePodCacheKey(podNamespace, podID)]
|
||||||
if !ok {
|
if !ok {
|
||||||
return api.PodContainerInfo{}, client.ErrPodInfoNotAvailable
|
return nil, client.ErrPodInfoNotAvailable
|
||||||
}
|
}
|
||||||
return value, nil
|
return value, nil
|
||||||
}
|
}
|
||||||
|
@ -28,11 +28,11 @@ type FakePodInfoGetter struct {
|
|||||||
host string
|
host string
|
||||||
id string
|
id string
|
||||||
namespace string
|
namespace string
|
||||||
data api.PodContainerInfo
|
data api.PodInfo
|
||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FakePodInfoGetter) GetPodInfo(host, namespace, id string) (api.PodContainerInfo, error) {
|
func (f *FakePodInfoGetter) GetPodInfo(host, namespace, id string) (api.PodInfo, error) {
|
||||||
f.host = host
|
f.host = host
|
||||||
f.id = id
|
f.id = id
|
||||||
f.namespace = namespace
|
f.namespace = namespace
|
||||||
@ -42,15 +42,11 @@ func (f *FakePodInfoGetter) GetPodInfo(host, namespace, id string) (api.PodConta
|
|||||||
func TestPodCacheGetDifferentNamespace(t *testing.T) {
|
func TestPodCacheGetDifferentNamespace(t *testing.T) {
|
||||||
cache := NewPodCache(nil, nil)
|
cache := NewPodCache(nil, nil)
|
||||||
|
|
||||||
expectedDefault := api.PodContainerInfo{
|
expectedDefault := api.PodInfo{
|
||||||
ContainerInfo: api.PodInfo{
|
"foo": api.ContainerStatus{},
|
||||||
"foo": api.ContainerStatus{},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
expectedOther := api.PodContainerInfo{
|
expectedOther := api.PodInfo{
|
||||||
ContainerInfo: api.PodInfo{
|
"bar": api.ContainerStatus{},
|
||||||
"bar": api.ContainerStatus{},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cache.podInfo[makePodCacheKey(api.NamespaceDefault, "foo")] = expectedDefault
|
cache.podInfo[makePodCacheKey(api.NamespaceDefault, "foo")] = expectedDefault
|
||||||
@ -76,10 +72,8 @@ func TestPodCacheGetDifferentNamespace(t *testing.T) {
|
|||||||
func TestPodCacheGet(t *testing.T) {
|
func TestPodCacheGet(t *testing.T) {
|
||||||
cache := NewPodCache(nil, nil)
|
cache := NewPodCache(nil, nil)
|
||||||
|
|
||||||
expected := api.PodContainerInfo{
|
expected := api.PodInfo{
|
||||||
ContainerInfo: api.PodInfo{
|
"foo": api.ContainerStatus{},
|
||||||
"foo": api.ContainerStatus{},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
cache.podInfo[makePodCacheKey(api.NamespaceDefault, "foo")] = expected
|
cache.podInfo[makePodCacheKey(api.NamespaceDefault, "foo")] = expected
|
||||||
|
|
||||||
@ -99,16 +93,14 @@ func TestPodCacheGetMissing(t *testing.T) {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("Unexpected non-error: %#v", err)
|
t.Errorf("Unexpected non-error: %#v", err)
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(info, api.PodContainerInfo{}) {
|
if info != nil {
|
||||||
t.Errorf("Unexpected info: %#v", info)
|
t.Errorf("Unexpected info: %#v", info)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPodGetPodInfoGetter(t *testing.T) {
|
func TestPodGetPodInfoGetter(t *testing.T) {
|
||||||
expected := api.PodContainerInfo{
|
expected := api.PodInfo{
|
||||||
ContainerInfo: api.PodInfo{
|
"foo": api.ContainerStatus{},
|
||||||
"foo": api.ContainerStatus{},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
fake := FakePodInfoGetter{
|
fake := FakePodInfoGetter{
|
||||||
data: expected,
|
data: expected,
|
||||||
@ -141,10 +133,8 @@ func TestPodUpdateAllContainers(t *testing.T) {
|
|||||||
pods := []api.Pod{pod}
|
pods := []api.Pod{pod}
|
||||||
mockRegistry := registrytest.NewPodRegistry(&api.PodList{Items: pods})
|
mockRegistry := registrytest.NewPodRegistry(&api.PodList{Items: pods})
|
||||||
|
|
||||||
expected := api.PodContainerInfo{
|
expected := api.PodInfo{
|
||||||
ContainerInfo: api.PodInfo{
|
"foo": api.ContainerStatus{},
|
||||||
"foo": api.ContainerStatus{},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
fake := FakePodInfoGetter{
|
fake := FakePodInfoGetter{
|
||||||
data: expected,
|
data: expected,
|
||||||
|
@ -230,8 +230,8 @@ func (rs *REST) fillPodInfo(pod *api.Pod) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pod.Status.Info = info.ContainerInfo
|
pod.Status.Info = info
|
||||||
netContainerInfo, ok := pod.Status.Info["net"]
|
netContainerInfo, ok := info["net"]
|
||||||
if ok {
|
if ok {
|
||||||
if netContainerInfo.PodIP != "" {
|
if netContainerInfo.PodIP != "" {
|
||||||
pod.Status.PodIP = netContainerInfo.PodIP
|
pod.Status.PodIP = netContainerInfo.PodIP
|
||||||
|
@ -566,8 +566,8 @@ type FakePodInfoGetter struct {
|
|||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FakePodInfoGetter) GetPodInfo(host, podNamespace string, podID string) (api.PodContainerInfo, error) {
|
func (f *FakePodInfoGetter) GetPodInfo(host, podNamespace string, podID string) (api.PodInfo, error) {
|
||||||
return api.PodContainerInfo{ContainerInfo: f.info}, f.err
|
return f.info, f.err
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFillPodInfo(t *testing.T) {
|
func TestFillPodInfo(t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user