Signed-off-by: Solomon Hykes <solomon@docker.com>
| 24 | 25 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,38 @@ |
| 0 |
+package graph |
|
| 1 |
+ |
|
| 2 |
+import ( |
|
| 3 |
+ "strings" |
|
| 4 |
+ |
|
| 5 |
+ "github.com/docker/docker/engine" |
|
| 6 |
+ "github.com/docker/docker/image" |
|
| 7 |
+) |
|
| 8 |
+ |
|
| 9 |
+func (s *TagStore) CmdViz(job *engine.Job) engine.Status {
|
|
| 10 |
+ images, _ := s.graph.Map() |
|
| 11 |
+ if images == nil {
|
|
| 12 |
+ return engine.StatusOK |
|
| 13 |
+ } |
|
| 14 |
+ job.Stdout.Write([]byte("digraph docker {\n"))
|
|
| 15 |
+ |
|
| 16 |
+ var ( |
|
| 17 |
+ parentImage *image.Image |
|
| 18 |
+ err error |
|
| 19 |
+ ) |
|
| 20 |
+ for _, image := range images {
|
|
| 21 |
+ parentImage, err = image.GetParent() |
|
| 22 |
+ if err != nil {
|
|
| 23 |
+ return job.Errorf("Error while getting parent image: %v", err)
|
|
| 24 |
+ } |
|
| 25 |
+ if parentImage != nil {
|
|
| 26 |
+ job.Stdout.Write([]byte(" \"" + parentImage.ID + "\" -> \"" + image.ID + "\"\n"))
|
|
| 27 |
+ } else {
|
|
| 28 |
+ job.Stdout.Write([]byte(" base -> \"" + image.ID + "\" [style=invis]\n"))
|
|
| 29 |
+ } |
|
| 30 |
+ } |
|
| 31 |
+ |
|
| 32 |
+ for id, repos := range s.GetRepoRefs() {
|
|
| 33 |
+ job.Stdout.Write([]byte(" \"" + id + "\" [label=\"" + id + "\\n" + strings.Join(repos, "\\n") + "\",shape=box,fillcolor=\"paleturquoise\",style=\"filled,rounded\"];\n"))
|
|
| 34 |
+ } |
|
| 35 |
+ job.Stdout.Write([]byte(" base [style=invisible]\n}\n"))
|
|
| 36 |
+ return engine.StatusOK |
|
| 37 |
+} |
| ... | ... |
@@ -212,36 +212,6 @@ func (srv *Server) recursiveLoad(eng *engine.Engine, address, tmpImageDir string |
| 212 | 212 |
return nil |
| 213 | 213 |
} |
| 214 | 214 |
|
| 215 |
-func (srv *Server) ImagesViz(job *engine.Job) engine.Status {
|
|
| 216 |
- images, _ := srv.daemon.Graph().Map() |
|
| 217 |
- if images == nil {
|
|
| 218 |
- return engine.StatusOK |
|
| 219 |
- } |
|
| 220 |
- job.Stdout.Write([]byte("digraph docker {\n"))
|
|
| 221 |
- |
|
| 222 |
- var ( |
|
| 223 |
- parentImage *image.Image |
|
| 224 |
- err error |
|
| 225 |
- ) |
|
| 226 |
- for _, image := range images {
|
|
| 227 |
- parentImage, err = image.GetParent() |
|
| 228 |
- if err != nil {
|
|
| 229 |
- return job.Errorf("Error while getting parent image: %v", err)
|
|
| 230 |
- } |
|
| 231 |
- if parentImage != nil {
|
|
| 232 |
- job.Stdout.Write([]byte(" \"" + parentImage.ID + "\" -> \"" + image.ID + "\"\n"))
|
|
| 233 |
- } else {
|
|
| 234 |
- job.Stdout.Write([]byte(" base -> \"" + image.ID + "\" [style=invis]\n"))
|
|
| 235 |
- } |
|
| 236 |
- } |
|
| 237 |
- |
|
| 238 |
- for id, repos := range srv.daemon.Repositories().GetRepoRefs() {
|
|
| 239 |
- job.Stdout.Write([]byte(" \"" + id + "\" [label=\"" + id + "\\n" + strings.Join(repos, "\\n") + "\",shape=box,fillcolor=\"paleturquoise\",style=\"filled,rounded\"];\n"))
|
|
| 240 |
- } |
|
| 241 |
- job.Stdout.Write([]byte(" base [style=invisible]\n}\n"))
|
|
| 242 |
- return engine.StatusOK |
|
| 243 |
-} |
|
| 244 |
- |
|
| 245 | 215 |
func (srv *Server) ImageTag(job *engine.Job) engine.Status {
|
| 246 | 216 |
if len(job.Args) != 2 && len(job.Args) != 3 {
|
| 247 | 217 |
return job.Errorf("Usage: %s IMAGE REPOSITORY [TAG]\n", job.Name)
|
| ... | ... |
@@ -88,7 +88,6 @@ func InitServer(job *engine.Job) engine.Status {
|
| 88 | 88 |
for name, handler := range map[string]engine.Handler{
|
| 89 | 89 |
"tag": srv.ImageTag, // FIXME merge with "image_tag" |
| 90 | 90 |
"info": srv.DockerInfo, |
| 91 |
- "viz": srv.ImagesViz, |
|
| 92 | 91 |
"log": srv.Log, |
| 93 | 92 |
"load": srv.ImageLoad, |
| 94 | 93 |
"build": srv.Build, |