Quellcode durchsuchen

Merge pull request #3820 from vieux/remove_runtime_from_api

Remove runtime from api
Michael Crosby vor 11 Jahren
Ursprung
Commit
4a35146461
4 geänderte Dateien mit 24 neuen und 33 gelöschten Zeilen
  1. 7 29
      api.go
  2. 0 2
      config.go
  3. 1 1
      docker/docker.go
  4. 16 1
      server.go

+ 7 - 29
api.go

@@ -560,14 +560,6 @@ func postContainersCreate(srv *Server, version float64, w http.ResponseWriter, r
 	if err := job.DecodeEnv(r.Body); err != nil {
 		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
 	job.Stdout.AddString(&out.ID)
 	// Read warnings from stderr
@@ -581,20 +573,6 @@ func postContainersCreate(srv *Server, version float64, w http.ResponseWriter, r
 	for scanner.Scan() {
 		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)
 }
 
@@ -931,7 +909,7 @@ func writeCorsHeaders(w http.ResponseWriter, r *http.Request) {
 	w.Header().Add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS")
 }
 
-func makeHttpHandler(srv *Server, logging bool, localMethod string, localRoute string, handlerFunc HttpApiFunc) http.HandlerFunc {
+func makeHttpHandler(srv *Server, logging bool, localMethod string, localRoute string, handlerFunc HttpApiFunc, enableCors bool) http.HandlerFunc {
 	return func(w http.ResponseWriter, r *http.Request) {
 		// log the request
 		utils.Debugf("Calling %s %s", localMethod, localRoute)
@@ -950,7 +928,7 @@ func makeHttpHandler(srv *Server, logging bool, localMethod string, localRoute s
 		if err != nil {
 			version = APIVERSION
 		}
-		if srv.runtime.config.EnableCors {
+		if enableCors {
 			writeCorsHeaders(w, r)
 		}
 
@@ -992,7 +970,7 @@ func AttachProfiler(router *mux.Router) {
 	router.HandleFunc("/debug/pprof/threadcreate", pprof.Handler("threadcreate").ServeHTTP)
 }
 
-func createRouter(srv *Server, logging bool) (*mux.Router, error) {
+func createRouter(srv *Server, logging, enableCors bool) (*mux.Router, error) {
 	r := mux.NewRouter()
 	if os.Getenv("DEBUG") != "" {
 		AttachProfiler(r)
@@ -1053,7 +1031,7 @@ func createRouter(srv *Server, logging bool) (*mux.Router, error) {
 			localMethod := method
 
 			// build the handler function
-			f := makeHttpHandler(srv, logging, localMethod, localRoute, localFct)
+			f := makeHttpHandler(srv, logging, localMethod, localRoute, localFct, enableCors)
 
 			// add the new route
 			if localRoute == "" {
@@ -1072,7 +1050,7 @@ func createRouter(srv *Server, logging bool) (*mux.Router, error) {
 // FIXME: refactor this to be part of Server and not require re-creating a new
 // router each time. This requires first moving ListenAndServe into Server.
 func ServeRequest(srv *Server, apiversion float64, w http.ResponseWriter, req *http.Request) error {
-	router, err := createRouter(srv, false)
+	router, err := createRouter(srv, false, true)
 	if err != nil {
 		return err
 	}
@@ -1114,8 +1092,8 @@ func ServeFd(addr string, handle http.Handler) error {
 
 // ListenAndServe sets up the required http.Server and gets it listening for
 // each addr passed in and does protocol specific checking.
-func ListenAndServe(proto, addr string, srv *Server, logging bool) error {
-	r, err := createRouter(srv, logging)
+func ListenAndServe(proto, addr string, srv *Server, logging, enableCors bool) error {
+	r, err := createRouter(srv, logging, enableCors)
 	if err != nil {
 		return err
 	}

+ 0 - 2
config.go

@@ -10,7 +10,6 @@ type DaemonConfig struct {
 	Pidfile                     string
 	Root                        string
 	AutoRestart                 bool
-	EnableCors                  bool
 	Dns                         []string
 	EnableIptables              bool
 	EnableIpForward             bool
@@ -29,7 +28,6 @@ func ConfigFromJob(job *engine.Job) *DaemonConfig {
 	config.Pidfile = job.Getenv("Pidfile")
 	config.Root = job.Getenv("Root")
 	config.AutoRestart = job.GetenvBool("AutoRestart")
-	config.EnableCors = job.GetenvBool("EnableCors")
 	if dns := job.GetenvList("Dns"); dns != nil {
 		config.Dns = dns
 	}

+ 1 - 1
docker/docker.go

@@ -86,7 +86,6 @@ func main() {
 		job.Setenv("Pidfile", *pidfile)
 		job.Setenv("Root", *flRoot)
 		job.SetenvBool("AutoRestart", *flAutoRestart)
-		job.SetenvBool("EnableCors", *flEnableCors)
 		job.SetenvList("Dns", flDns.GetAll())
 		job.SetenvBool("EnableIptables", *flEnableIptables)
 		job.SetenvBool("EnableIpForward", *flEnableIpForward)
@@ -102,6 +101,7 @@ func main() {
 		// Serve api
 		job = eng.Job("serveapi", flHosts.GetAll()...)
 		job.SetenvBool("Logging", true)
+		job.SetenvBool("EnableCors", *flEnableCors)
 		if err := job.Run(); err != nil {
 			log.Fatal(err)
 		}

+ 16 - 1
server.go

@@ -125,7 +125,7 @@ func (srv *Server) ListenAndServe(job *engine.Job) engine.Status {
 		protoAddrParts := strings.SplitN(protoAddr, "://", 2)
 		go func() {
 			log.Printf("Listening for HTTP on %s (%s)\n", protoAddrParts[0], protoAddrParts[1])
-			chErrors <- ListenAndServe(protoAddrParts[0], protoAddrParts[1], srv, job.GetenvBool("Logging"))
+			chErrors <- ListenAndServe(protoAddrParts[0], protoAddrParts[1], srv, job.GetenvBool("Logging"), job.GetenvBool("EnableCors"))
 		}()
 	}
 
@@ -1753,11 +1753,23 @@ func (srv *Server) ContainerCreate(job *engine.Job) engine.Status {
 		return engine.StatusErr
 	}
 	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
 	}
 	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
 	}
+	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)
 	if err != nil {
 		if srv.runtime.graph.IsNotExist(err) {
@@ -1771,6 +1783,9 @@ func (srv *Server) ContainerCreate(job *engine.Job) engine.Status {
 		job.Error(err)
 		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))
 	// 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