Browse code

Merge pull request #17615 from WeiZhang555/17404-net-inspect-name

Include container names in `network inspect`

Alexander Morozov authored on 2015/11/14 04:54:59
Showing 3 changed files
... ...
@@ -237,6 +237,7 @@ func buildEndpointResource(e libnetwork.Endpoint) types.EndpointResource {
237 237
 	}
238 238
 
239 239
 	er.EndpointID = e.ID()
240
+	er.Name = e.Name()
240 241
 	ei := e.Info()
241 242
 	if ei == nil {
242 243
 		return er
... ...
@@ -362,6 +362,7 @@ type NetworkResource struct {
362 362
 
363 363
 // EndpointResource contains network resources allocated and used for a container in a network
364 364
 type EndpointResource struct {
365
+	Name        string
365 366
 	EndpointID  string
366 367
 	MacAddress  string
367 368
 	IPv4Address string
... ...
@@ -294,6 +294,47 @@ func (s *DockerSuite) TestDockerInspectMultipleNetwork(c *check.C) {
294 294
 	c.Assert(out, checker.Contains, "Error: No such network: nonexistent")
295 295
 }
296 296
 
297
+func (s *DockerSuite) TestDockerInspectNetworkWithContainerName(c *check.C) {
298
+	dockerCmd(c, "network", "create", "brNetForInspect")
299
+	assertNwIsAvailable(c, "brNetForInspect")
300
+	defer func() {
301
+		dockerCmd(c, "network", "rm", "brNetForInspect")
302
+		assertNwNotAvailable(c, "brNetForInspect")
303
+	}()
304
+
305
+	out, _ := dockerCmd(c, "run", "-d", "--name", "testNetInspect1", "--net", "brNetForInspect", "busybox", "top")
306
+	c.Assert(waitRun("testNetInspect1"), check.IsNil)
307
+	containerID := strings.TrimSpace(out)
308
+	defer func() {
309
+		// we don't stop container by name, because we'll rename it later
310
+		dockerCmd(c, "stop", containerID)
311
+	}()
312
+
313
+	out, _ = dockerCmd(c, "network", "inspect", "brNetForInspect")
314
+	networkResources := []types.NetworkResource{}
315
+	err := json.Unmarshal([]byte(out), &networkResources)
316
+	c.Assert(err, check.IsNil)
317
+	c.Assert(networkResources, checker.HasLen, 1)
318
+	container, ok := networkResources[0].Containers[containerID]
319
+	c.Assert(ok, checker.True)
320
+	c.Assert(container.Name, checker.Equals, "testNetInspect1")
321
+
322
+	// rename container and check docker inspect output update
323
+	newName := "HappyNewName"
324
+	dockerCmd(c, "rename", "testNetInspect1", newName)
325
+
326
+	// check whether network inspect works properly
327
+	out, _ = dockerCmd(c, "network", "inspect", "brNetForInspect")
328
+	newNetRes := []types.NetworkResource{}
329
+	err = json.Unmarshal([]byte(out), &newNetRes)
330
+	c.Assert(err, check.IsNil)
331
+	c.Assert(newNetRes, checker.HasLen, 1)
332
+	container1, ok := newNetRes[0].Containers[containerID]
333
+	c.Assert(ok, checker.True)
334
+	c.Assert(container1.Name, checker.Equals, newName)
335
+
336
+}
337
+
297 338
 func (s *DockerNetworkSuite) TestDockerNetworkConnectDisconnect(c *check.C) {
298 339
 	dockerCmd(c, "network", "create", "test")
299 340
 	assertNwIsAvailable(c, "test")