浏览代码

Merge pull request #12312 from runcom/remove-job-container-stats

Remove job from container stats
Brian Goff 10 年之前
父节点
当前提交
12eff0c26f
共有 3 个文件被更改,包括 9 次插入10 次删除
  1. 4 4
      api/server/server.go
  2. 0 1
      daemon/daemon.go
  3. 5 5
      daemon/stats.go

+ 4 - 4
api/server/server.go

@@ -541,10 +541,10 @@ func getContainersStats(eng *engine.Engine, version version.Version, w http.Resp
 	if vars == nil {
 		return fmt.Errorf("Missing parameter")
 	}
-	name := vars["name"]
-	job := eng.Job("container_stats", name)
-	streamJSON(job, w, true)
-	return job.Run()
+
+	d := getDaemon(eng)
+
+	return d.ContainerStats(vars["name"], utils.NewWriteFlusher(w))
 }
 
 func getContainersLogs(eng *engine.Engine, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error {

+ 0 - 1
daemon/daemon.go

@@ -119,7 +119,6 @@ func (daemon *Daemon) Install(eng *engine.Engine) error {
 	for name, method := range map[string]engine.Handler{
 		"commit":            daemon.ContainerCommit,
 		"container_inspect": daemon.ContainerInspect,
-		"container_stats":   daemon.ContainerStats,
 		"create":            daemon.ContainerCreate,
 		"info":              daemon.CmdInfo,
 		"restart":           daemon.ContainerRestart,

+ 5 - 5
daemon/stats.go

@@ -2,20 +2,20 @@ package daemon
 
 import (
 	"encoding/json"
+	"io"
 
 	"github.com/docker/docker/api/types"
 	"github.com/docker/docker/daemon/execdriver"
-	"github.com/docker/docker/engine"
 	"github.com/docker/libcontainer"
 	"github.com/docker/libcontainer/cgroups"
 )
 
-func (daemon *Daemon) ContainerStats(job *engine.Job) error {
-	updates, err := daemon.SubscribeToContainerStats(job.Args[0])
+func (daemon *Daemon) ContainerStats(name string, out io.Writer) error {
+	updates, err := daemon.SubscribeToContainerStats(name)
 	if err != nil {
 		return err
 	}
-	enc := json.NewEncoder(job.Stdout)
+	enc := json.NewEncoder(out)
 	for v := range updates {
 		update := v.(*execdriver.ResourceStats)
 		ss := convertToAPITypes(update.Stats)
@@ -24,7 +24,7 @@ func (daemon *Daemon) ContainerStats(job *engine.Job) error {
 		ss.CpuStats.SystemUsage = update.SystemUsage
 		if err := enc.Encode(ss); err != nil {
 			// TODO: handle the specific broken pipe
-			daemon.UnsubscribeToContainerStats(job.Args[0], updates)
+			daemon.UnsubscribeToContainerStats(name, updates)
 			return err
 		}
 	}