From 808fd821acd0a8ae6c6040682ade367487a5baf8 Mon Sep 17 00:00:00 2001 From: Abin Shahab Date: Mon, 13 Oct 2014 21:03:07 +0000 Subject: [PATCH] NetworkInterface now contains both VethHost and VethChild --- container/lxc/container_desc.go | 8 +++++++- container/lxc/container_desc_test.go | 3 ++- container/lxc/handler.go | 8 ++++---- container/lxc/test_resources/cdesc.json | 5 ++++- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/container/lxc/container_desc.go b/container/lxc/container_desc.go index 0d6fdef1..c1f2f0f8 100644 --- a/container/lxc/container_desc.go +++ b/container/lxc/container_desc.go @@ -29,7 +29,13 @@ type ContainersDesc struct { type ContainerDesc struct { Id string - Network_interface string + Network_interface *NetworkInterface +} + +type NetworkInterface struct { + VethHost string + VethChild string + NsPath string } func Unmarshal(containerDescFile string) (ContainersDesc, error) { diff --git a/container/lxc/container_desc_test.go b/container/lxc/container_desc_test.go index 1b6e0b4f..f5cbd8cc 100644 --- a/container/lxc/container_desc_test.go +++ b/container/lxc/container_desc_test.go @@ -11,7 +11,8 @@ func TestUnmarshal(t *testing.T) { } t.Logf("Cdesc: %s", cDesc) - if cDesc.All_hosts[0].Network_interface != "veth7ASIQc" { + if cDesc.All_hosts[0].Network_interface.VethHost != "veth24031eth1" && + cDesc.All_hosts[0].Network_interface.VethChild != "eth1" { t.Errorf("Cannot find network interface in %s", cDesc) } } diff --git a/container/lxc/handler.go b/container/lxc/handler.go index e4b521b1..836175fa 100644 --- a/container/lxc/handler.go +++ b/container/lxc/handler.go @@ -47,7 +47,7 @@ type lxcContainerHandler struct { stopWatcher chan error watches map[string]struct{} fsInfo fs.FsInfo - network_interface string + network_interface *NetworkInterface } func newLxcContainerHandler(name string, cgroupSubsystems *cgroupSubsystems, machineInfoFactory info.MachineInfoFactory) (container.ContainerHandler, error) { @@ -56,7 +56,7 @@ func newLxcContainerHandler(name string, cgroupSubsystems *cgroupSubsystems, mac return nil, err } cDesc, err := Unmarshal(*containersDesc) - var network_interface string + var network_interface *NetworkInterface for _, container := range cDesc.All_hosts { cName := "/lxc/" + container.Id glog.Infof("container %s Name %s \n\n", container, name) @@ -176,8 +176,8 @@ func (self *lxcContainerHandler) GetSpec() (info.ContainerSpec, error) { func (self *lxcContainerHandler) GetStats() (*info.ContainerStats, error) { var stats *info.ContainerStats var err error - if len(self.network_interface) > 0 { - n := network.NetworkState{VethHost: self.network_interface, VethChild: "unknown", NsPath: "unknown"} + if self.network_interface != nil { + n := network.NetworkState{VethHost: self.network_interface.VethHost, VethChild: self.network_interface.VethChild, NsPath: "unknown"} s := dockerlibcontainer.State{NetworkState: n} stats, err = libcontainer.GetStats(self.cgroup, &s) } else { diff --git a/container/lxc/test_resources/cdesc.json b/container/lxc/test_resources/cdesc.json index fcc6b07f..33c86735 100644 --- a/container/lxc/test_resources/cdesc.json +++ b/container/lxc/test_resources/cdesc.json @@ -17,7 +17,10 @@ "role": "compute_node", "net": null, "netinit": "false", - "network_interface": "veth7ASIQc", + "network_interface": { + "VethChild": "eth1", + "VethHost": "veth24031eth1" + }, "mounts": [ { "host-dir": "/var/run/nm-sdc1",