From 6d8420898c5863afac432926c53e70fed48e7cd9 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sun, 20 Jan 2013 15:55:00 -0800 Subject: [PATCH] Experimental web UI --- dockerd/dockerd.go | 13 +++ dockerd/dockerweb.html | 220 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 233 insertions(+) create mode 100644 dockerd/dockerweb.html diff --git a/dockerd/dockerd.go b/dockerd/dockerd.go index 731ed55d2c..2aa498bc08 100644 --- a/dockerd/dockerd.go +++ b/dockerd/dockerd.go @@ -19,6 +19,7 @@ import ( "bytes" "text/tabwriter" "sort" + "os" ) func (docker *Docker) CmdHelp(stdin io.ReadCloser, stdout io.Writer, args ...string) error { @@ -36,6 +37,7 @@ func (docker *Docker) CmdHelp(stdin io.ReadCloser, stdout io.Writer, args ...str {"export", "Extract changes to a container's filesystem into a new layer"}, {"attach", "Attach to the standard inputs and outputs of a running container"}, {"info", "Display system-wide information"}, + {"web", "Generate a web UI"}, } { fmt.Fprintf(stdout, " %-10.10s%s\n", cmd...) } @@ -350,6 +352,8 @@ func (docker *Docker) ServeHTTP(w http.ResponseWriter, r *http.Request) { log.Printf("%s\n", strings.Join(append(append([]string{"docker"}, cmd), args...), " ")) if cmd == "" { cmd = "help" + } else if cmd == "web" { + w.Header().Set("content-type", "text/html") } method := docker.getMethod(cmd) if method == nil { @@ -362,6 +366,15 @@ func (docker *Docker) ServeHTTP(w http.ResponseWriter, r *http.Request) { } } +func (docker *Docker) CmdWeb(stdin io.ReadCloser, stdout io.Writer, args ...string) error { + if file, err := os.Open("dockerweb.html"); err != nil { + return err + } else if _, err := io.Copy(stdout, file); err != nil { + return err + } + return nil +} + func (docker *Docker) getMethod(name string) Cmd { methodName := "Cmd"+strings.ToUpper(name[:1])+strings.ToLower(name[1:]) method, exists := reflect.TypeOf(docker).MethodByName(methodName) diff --git a/dockerd/dockerweb.html b/dockerd/dockerweb.html new file mode 100644 index 0000000000..9bd6b9bf3e --- /dev/null +++ b/dockerd/dockerweb.html @@ -0,0 +1,220 @@ + + + + + + + + + + + + + +
+ + +