Преглед изворни кода

Minor fix: remove redundant tag name in error message of create failed.

Signed-off-by: Lei Jitang <leijitang@huawei.com>
Lei Jitang пре 10 година
родитељ
комит
16220e0681
2 измењених фајлова са 44 додато и 2 уклоњено
  1. 6 2
      daemon/create.go
  2. 38 0
      integration-cli/docker_api_create_test.go

+ 6 - 2
daemon/create.go

@@ -2,6 +2,7 @@ package daemon
 
 import (
 	"fmt"
+	"strings"
 
 	"github.com/Sirupsen/logrus"
 	"github.com/docker/docker/api/types"
@@ -28,11 +29,14 @@ func (daemon *Daemon) ContainerCreate(name string, config *runconfig.Config, hos
 	container, buildWarnings, err := daemon.Create(config, hostConfig, name)
 	if err != nil {
 		if daemon.Graph().IsNotExist(err, config.Image) {
-			_, tag := parsers.ParseRepositoryTag(config.Image)
+			if strings.Contains(config.Image, "@") {
+				return nil, warnings, fmt.Errorf("No such image: %s", config.Image)
+			}
+			img, tag := parsers.ParseRepositoryTag(config.Image)
 			if tag == "" {
 				tag = tags.DefaultTag
 			}
-			return nil, warnings, fmt.Errorf("No such image: %s (tag: %s)", config.Image, tag)
+			return nil, warnings, fmt.Errorf("No such image: %s:%s", img, tag)
 		}
 		return nil, warnings, err
 	}

+ 38 - 0
integration-cli/docker_api_create_test.go

@@ -0,0 +1,38 @@
+package main
+
+import (
+	"net/http"
+	"strings"
+
+	"github.com/go-check/check"
+)
+
+func (s *DockerSuite) TestApiCreateWithNotExistImage(c *check.C) {
+	name := "test"
+	config := map[string]interface{}{
+		"Image":   "test456:v1",
+		"Volumes": map[string]struct{}{"/tmp": {}},
+	}
+
+	status, resp, err := sockRequest("POST", "/containers/create?name="+name, config)
+	c.Assert(err, check.IsNil)
+	c.Assert(status, check.Equals, http.StatusNotFound)
+	expected := "No such image: test456:v1"
+	if !strings.Contains(string(resp), expected) {
+		c.Fatalf("expected: %s, got: %s", expected, string(resp))
+	}
+
+	config2 := map[string]interface{}{
+		"Image":   "test456",
+		"Volumes": map[string]struct{}{"/tmp": {}},
+	}
+
+	status, resp, err = sockRequest("POST", "/containers/create?name="+name, config2)
+	c.Assert(err, check.IsNil)
+	c.Assert(status, check.Equals, http.StatusNotFound)
+	expected = "No such image: test456:latest"
+	if !strings.Contains(string(resp), expected) {
+		c.Fatalf("expected: %s, got: %s", expected, string(resp))
+	}
+
+}