Add PodIP to the info returned for a pod.

This commit is contained in:
Brendan Burns 2014-07-09 22:13:07 -07:00
parent b0b9606aea
commit 7b11cbd622
3 changed files with 46 additions and 0 deletions

View File

@ -196,6 +196,7 @@ type PodState struct {
Status PodStatus `json:"status,omitempty" yaml:"status,omitempty"`
Host string `json:"host,omitempty" yaml:"host,omitempty"`
HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"`
PodIP string `json:"podIP,omitempty" yaml:"podIP,omitempty"`
// The key of this map is the *name* of the container within the manifest; it has one
// entry per container in the manifest. The value of this map is currently the output

View File

@ -89,6 +89,12 @@ func (storage *PodRegistryStorage) fillPodInfo(pod *api.Pod) {
return
}
pod.CurrentState.Info = info
netContainerInfo, ok := info["net"]
if ok {
pod.CurrentState.PodIP = netContainerInfo.NetworkSettings.IPAddress
} else {
glog.Warningf("Couldn't find network container in %v", info)
}
}
}

View File

@ -278,3 +278,42 @@ func TestCreatePod(t *testing.T) {
// Do nothing, this is expected.
}
}
type FakePodInfoGetter struct {
info api.PodInfo
err error
}
func (f *FakePodInfoGetter) GetPodInfo(host, podID string) (api.PodInfo, error) {
return f.info, f.err
}
func TestFillPodInfo(t *testing.T) {
expectedIP := "1.2.3.4"
fakeGetter := FakePodInfoGetter{
info: map[string]docker.Container{
"net": {
ID: "foobar",
Path: "bin/run.sh",
NetworkSettings: &docker.NetworkSettings{
IPAddress: expectedIP,
},
},
},
}
storage := PodRegistryStorage{
podCache: &fakeGetter,
}
pod := api.Pod{}
storage.fillPodInfo(&pod)
if !reflect.DeepEqual(fakeGetter.info, pod.CurrentState.Info) {
t.Errorf("Unexpected mis-match: %#v vs %#v", fakeGetter.info, pod.CurrentState.Info)
}
if pod.CurrentState.PodIP != expectedIP {
t.Errorf("Expected %s, saw %s", expectedIP, pod.CurrentState.PodIP)
}
}