瀏覽代碼

move warnings to the job

Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
Victor Vieux 11 年之前
父節點
當前提交
abd64a2b00
共有 2 個文件被更改,包括 15 次插入22 次删除
  1. 0 22
      api.go
  2. 15 0
      server.go

+ 0 - 22
api.go

@@ -560,14 +560,6 @@ func postContainersCreate(srv *Server, version float64, w http.ResponseWriter, r
 	if err := job.DecodeEnv(r.Body); err != nil {
 	if err := job.DecodeEnv(r.Body); err != nil {
 		return err
 		return err
 	}
 	}
-	resolvConf, err := utils.GetResolvConf()
-	if err != nil {
-		return err
-	}
-	if !job.GetenvBool("NetworkDisabled") && len(job.Getenv("Dns")) == 0 && len(srv.runtime.config.Dns) == 0 && utils.CheckLocalDns(resolvConf) {
-		out.Warnings = append(out.Warnings, fmt.Sprintf("Docker detected local DNS server on resolv.conf. Using default external servers: %v", defaultDns))
-		job.SetenvList("Dns", defaultDns)
-	}
 	// Read container ID from the first line of stdout
 	// Read container ID from the first line of stdout
 	job.Stdout.AddString(&out.ID)
 	job.Stdout.AddString(&out.ID)
 	// Read warnings from stderr
 	// Read warnings from stderr
@@ -581,20 +573,6 @@ func postContainersCreate(srv *Server, version float64, w http.ResponseWriter, r
 	for scanner.Scan() {
 	for scanner.Scan() {
 		out.Warnings = append(out.Warnings, scanner.Text())
 		out.Warnings = append(out.Warnings, scanner.Text())
 	}
 	}
-	if job.GetenvInt("Memory") > 0 && !srv.runtime.sysInfo.MemoryLimit {
-		log.Println("WARNING: Your kernel does not support memory limit capabilities. Limitation discarded.")
-		out.Warnings = append(out.Warnings, "Your kernel does not support memory limit capabilities. Limitation discarded.")
-	}
-	if job.GetenvInt("Memory") > 0 && !srv.runtime.sysInfo.SwapLimit {
-		log.Println("WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.")
-		out.Warnings = append(out.Warnings, "Your kernel does not support memory swap capabilities. Limitation discarded.")
-	}
-
-	if !job.GetenvBool("NetworkDisabled") && srv.runtime.sysInfo.IPv4ForwardingDisabled {
-		log.Println("Warning: IPv4 forwarding is disabled.")
-		out.Warnings = append(out.Warnings, "IPv4 forwarding is disabled.")
-	}
-
 	return writeJSON(w, http.StatusCreated, out)
 	return writeJSON(w, http.StatusCreated, out)
 }
 }
 
 

+ 15 - 0
server.go

@@ -1753,11 +1753,23 @@ func (srv *Server) ContainerCreate(job *engine.Job) engine.Status {
 		return engine.StatusErr
 		return engine.StatusErr
 	}
 	}
 	if config.Memory > 0 && !srv.runtime.sysInfo.MemoryLimit {
 	if config.Memory > 0 && !srv.runtime.sysInfo.MemoryLimit {
+		job.Errorf("WARNING: Your kernel does not support memory limit capabilities. Limitation discarded.\n")
 		config.Memory = 0
 		config.Memory = 0
 	}
 	}
 	if config.Memory > 0 && !srv.runtime.sysInfo.SwapLimit {
 	if config.Memory > 0 && !srv.runtime.sysInfo.SwapLimit {
+		job.Errorf("WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.\n")
 		config.MemorySwap = -1
 		config.MemorySwap = -1
 	}
 	}
+	resolvConf, err := utils.GetResolvConf()
+	if err != nil {
+		job.Error(err)
+		return engine.StatusErr
+	}
+	if !config.NetworkDisabled && len(config.Dns) == 0 && len(srv.runtime.config.Dns) == 0 && utils.CheckLocalDns(resolvConf) {
+		job.Errorf("WARNING: Docker detected local DNS server on resolv.conf. Using default external servers: %v\n", defaultDns)
+		config.Dns = defaultDns
+	}
+
 	container, buildWarnings, err := srv.runtime.Create(&config, name)
 	container, buildWarnings, err := srv.runtime.Create(&config, name)
 	if err != nil {
 	if err != nil {
 		if srv.runtime.graph.IsNotExist(err) {
 		if srv.runtime.graph.IsNotExist(err) {
@@ -1771,6 +1783,9 @@ func (srv *Server) ContainerCreate(job *engine.Job) engine.Status {
 		job.Error(err)
 		job.Error(err)
 		return engine.StatusErr
 		return engine.StatusErr
 	}
 	}
+	if !container.Config.NetworkDisabled && srv.runtime.sysInfo.IPv4ForwardingDisabled {
+		job.Errorf("WARNING: IPv4 forwarding is disabled.\n")
+	}
 	srv.LogEvent("create", container.ID, srv.runtime.repositories.ImageName(container.Image))
 	srv.LogEvent("create", container.ID, srv.runtime.repositories.ImageName(container.Image))
 	// FIXME: this is necessary because runtime.Create might return a nil container
 	// FIXME: this is necessary because runtime.Create might return a nil container
 	// with a non-nil error. This should not happen! Once it's fixed we
 	// with a non-nil error. This should not happen! Once it's fixed we