From e43ff2f6f2630f971c9494aed285f1d410e42df9 Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Wed, 11 Dec 2013 17:52:41 -0800 Subject: [PATCH] move tag to job --- api.go | 11 +++-------- integration/api_test.go | 2 +- integration/commands_test.go | 3 +-- integration/server_test.go | 19 ++++++++++--------- server.go | 22 +++++++++++++++++----- 5 files changed, 32 insertions(+), 25 deletions(-) diff --git a/api.go b/api.go index 58fa310240..f7a7ac91a4 100644 --- a/api.go +++ b/api.go @@ -356,18 +356,13 @@ func postImagesTag(srv *Server, version float64, w http.ResponseWriter, r *http. if err := parseForm(r); err != nil { return err } - repo := r.Form.Get("repo") - tag := r.Form.Get("tag") if vars == nil { return fmt.Errorf("Missing parameter") } - name := vars["name"] - force, err := getBoolParam(r.Form.Get("force")) - if err != nil { - return err - } - if err := srv.ContainerTag(name, repo, tag, force); err != nil { + job := srv.Eng.Job("tag", vars["name"], r.Form.Get("repo"), r.Form.Get("tag")) + job.Setenv("force", r.Form.Get("force")) + if err := job.Run(); err != nil { return err } w.WriteHeader(http.StatusCreated) diff --git a/integration/api_test.go b/integration/api_test.go index 819c43a8a5..eed17c9084 100644 --- a/integration/api_test.go +++ b/integration/api_test.go @@ -1120,7 +1120,7 @@ func TestDeleteImages(t *testing.T) { t.Fatal(err) } - if err := srv.ContainerTag(unitTestImageName, "test", "test", false); err != nil { + if err := eng.Job("tag", unitTestImageName, "test", "test").Run(); err != nil { t.Fatal(err) } images, err := srv.Images(false, "") diff --git a/integration/commands_test.go b/integration/commands_test.go index 16e2b3fb02..822567a7fa 100644 --- a/integration/commands_test.go +++ b/integration/commands_test.go @@ -910,8 +910,7 @@ run [ "$(ls -d /var/run/sshd)" = "/var/run/sshd" ] t.Fatal(err) } - err = mkServerFromEngine(eng, t).ContainerTag(image.ID, "test", "latest", false) - if err != nil { + if err := eng.Job("tag", image.ID, "test").Run(); err != nil { t.Fatal(err) } diff --git a/integration/server_test.go b/integration/server_test.go index c1499e26cc..9cb26a4c2d 100644 --- a/integration/server_test.go +++ b/integration/server_test.go @@ -8,7 +8,7 @@ import ( "testing" ) -func TestContainerTagImageDelete(t *testing.T) { +func TestImageTagImageDelete(t *testing.T) { eng := NewTestEngine(t) defer mkRuntimeFromEngine(eng, t).Nuke() @@ -18,14 +18,15 @@ func TestContainerTagImageDelete(t *testing.T) { if err != nil { t.Fatal(err) } - if err := srv.ContainerTag(unitTestImageName, "utest", "tag1", false); err != nil { + if err := eng.Job("tag", unitTestImageName, "utest", "tag1").Run(); err != nil { t.Fatal(err) } - if err := srv.ContainerTag(unitTestImageName, "utest/docker", "tag2", false); err != nil { + if err := eng.Job("tag", unitTestImageName, "utest/docker", "tag2").Run(); err != nil { t.Fatal(err) } - if err := srv.ContainerTag(unitTestImageName, "utest:5000/docker", "tag3", false); err != nil { + + if err := eng.Job("tag", unitTestImageName, "utest:5000/docker", "tag3").Run(); err != nil { t.Fatal(err) } @@ -265,8 +266,7 @@ func TestRmi(t *testing.T) { t.Fatal(err) } - err = srv.ContainerTag(imageID, "test", "0.1", false) - if err != nil { + if err := eng.Job("tag", imageID, "test", "0.1").Run(); err != nil { t.Fatal(err) } @@ -329,14 +329,15 @@ func TestImagesFilter(t *testing.T) { srv := mkServerFromEngine(eng, t) - if err := srv.ContainerTag(unitTestImageName, "utest", "tag1", false); err != nil { + if err := eng.Job("tag", unitTestImageName, "utest", "tag1").Run(); err != nil { t.Fatal(err) } - if err := srv.ContainerTag(unitTestImageName, "utest/docker", "tag2", false); err != nil { + if err := eng.Job("tag", unitTestImageName, "utest/docker", "tag2").Run(); err != nil { t.Fatal(err) } - if err := srv.ContainerTag(unitTestImageName, "utest:5000/docker", "tag3", false); err != nil { + + if err := eng.Job("tag", unitTestImageName, "utest:5000/docker", "tag3").Run(); err != nil { t.Fatal(err) } diff --git a/server.go b/server.go index c32cfe23ed..bfc4564ac0 100644 --- a/server.go +++ b/server.go @@ -95,6 +95,10 @@ func jobInitApi(job *engine.Job) engine.Status { job.Error(err) return engine.StatusErr } + if err := job.Eng.Register("tag", srv.ImageTag); err != nil { + job.Error(err) + return engine.StatusErr + } return engine.StatusOK } @@ -769,12 +773,20 @@ func (srv *Server) ContainerCommit(name, repo, tag, author, comment string, conf return img.ID, err } -// FIXME: this should be called ImageTag -func (srv *Server) ContainerTag(name, repo, tag string, force bool) error { - if err := srv.runtime.repositories.Set(repo, tag, name, force); err != nil { - return err +func (srv *Server) ImageTag(job *engine.Job) engine.Status { + if len(job.Args) != 2 && len(job.Args) != 3 { + job.Errorf("Usage: %s IMAGE REPOSITORY [TAG]\n", job.Name) + return engine.StatusErr } - return nil + var tag string + if len(job.Args) == 3 { + tag = job.Args[2] + } + if err := srv.runtime.repositories.Set(job.Args[1], tag, job.Args[0], job.GetenvBool("force")); err != nil { + job.Error(err) + return engine.StatusErr + } + return engine.StatusOK } func (srv *Server) pullImage(r *registry.Registry, out io.Writer, imgID, endpoint string, token []string, sf *utils.StreamFormatter) error {