Browse code

Merge pull request #13237 from ahmetalpbalkan/tag/event

Introduce daemon event 'tag' upon image tagging

Alexander Morozov authored on 2015/05/17 01:05:03
Showing 2 changed files
... ...
@@ -35,6 +35,7 @@ import (
35 35
 	"github.com/docker/docker/pkg/streamformatter"
36 36
 	"github.com/docker/docker/pkg/version"
37 37
 	"github.com/docker/docker/runconfig"
38
+	"github.com/docker/docker/utils"
38 39
 )
39 40
 
40 41
 type ServerConfig struct {
... ...
@@ -606,9 +607,11 @@ func (s *Server) postImagesTag(version version.Version, w http.ResponseWriter, r
606 606
 	repo := r.Form.Get("repo")
607 607
 	tag := r.Form.Get("tag")
608 608
 	force := boolValue(r, "force")
609
-	if err := s.daemon.Repositories().Tag(repo, tag, vars["name"], force); err != nil {
609
+	name := vars["name"]
610
+	if err := s.daemon.Repositories().Tag(repo, tag, name, force); err != nil {
610 611
 		return err
611 612
 	}
613
+	s.daemon.EventsService.Log("tag", utils.ImageReference(repo, tag), "")
612 614
 	w.WriteHeader(http.StatusCreated)
613 615
 	return nil
614 616
 }
... ...
@@ -38,8 +38,8 @@ func (s *DockerSuite) TestEventsTimestampFormats(c *check.C) {
38 38
 			c.Fatalf("docker events cmd failed: %v\nout=%s", err, out)
39 39
 		}
40 40
 		events := strings.Split(strings.TrimSpace(out), "\n")
41
-		if len(events) != 1 {
42
-			c.Fatalf("unexpected events, was expecting only 1 (since=%s, until=%s) out=%s", since, until, out)
41
+		if len(events) != 2 {
42
+			c.Fatalf("unexpected events, was expecting only 2 events tag/untag (since=%s, until=%s) out=%s", since, until, out)
43 43
 		}
44 44
 		if !strings.Contains(out, "untag") {
45 45
 			c.Fatalf("expected 'untag' event not found (since=%s, until=%s) out=%s", since, until, out)
... ...
@@ -230,6 +230,31 @@ func (s *DockerSuite) TestEventsImageUntagDelete(c *check.C) {
230 230
 	}
231 231
 }
232 232
 
233
+func (s *DockerSuite) TestEventsImageTag(c *check.C) {
234
+	time.Sleep(time.Second * 2) // because API has seconds granularity
235
+	since := daemonTime(c).Unix()
236
+	image := "testimageevents:tag"
237
+	dockerCmd(c, "tag", "busybox", image)
238
+
239
+	eventsCmd := exec.Command(dockerBinary, "events",
240
+		fmt.Sprintf("--since=%d", since),
241
+		fmt.Sprintf("--until=%d", daemonTime(c).Unix()))
242
+	out, _, err := runCommandWithOutput(eventsCmd)
243
+	c.Assert(err, check.IsNil)
244
+
245
+	events := strings.Split(strings.TrimSpace(out), "\n")
246
+	if len(events) != 1 {
247
+		c.Fatalf("was expecting 1 event. out=%s", out)
248
+	}
249
+	event := strings.TrimSpace(events[0])
250
+	expectedStr := image + ": tag"
251
+
252
+	if !strings.HasSuffix(event, expectedStr) {
253
+		c.Fatalf("wrong event format. expected='%s' got=%s", expectedStr, event)
254
+	}
255
+
256
+}
257
+
233 258
 func (s *DockerSuite) TestEventsImagePull(c *check.C) {
234 259
 	since := daemonTime(c).Unix()
235 260
 	testRequires(c, Network)