Browse Source

Merge pull request #14100 from rhvgoyal/overlay-docker-inspect

overlay: Export metadata for container and image in docker-inspect
Jessie Frazelle 10 years ago
parent
commit
2fe51ecee7
1 changed files with 25 additions and 1 deletions
  1. 25 1
      daemon/graphdriver/overlay/overlay.go

+ 25 - 1
daemon/graphdriver/overlay/overlay.go

@@ -168,7 +168,31 @@ func (d *Driver) Status() [][2]string {
 }
 }
 
 
 func (d *Driver) GetMetadata(id string) (map[string]string, error) {
 func (d *Driver) GetMetadata(id string) (map[string]string, error) {
-	return nil, nil
+	dir := d.dir(id)
+	if _, err := os.Stat(dir); err != nil {
+		return nil, err
+	}
+
+	metadata := make(map[string]string)
+
+	// If id has a root, it is an image
+	rootDir := path.Join(dir, "root")
+	if _, err := os.Stat(rootDir); err == nil {
+		metadata["RootDir"] = rootDir
+		return metadata, nil
+	}
+
+	lowerId, err := ioutil.ReadFile(path.Join(dir, "lower-id"))
+	if err != nil {
+		return nil, err
+	}
+
+	metadata["LowerDir"] = path.Join(d.dir(string(lowerId)), "root")
+	metadata["UpperDir"] = path.Join(dir, "upper")
+	metadata["WorkDir"] = path.Join(dir, "work")
+	metadata["MergedDir"] = path.Join(dir, "merged")
+
+	return metadata, nil
 }
 }
 
 
 func (d *Driver) Cleanup() error {
 func (d *Driver) Cleanup() error {