Docker-DCO-1.1-Signed-off-by: Vincent Batts <vbatts@redhat.com> (github: vbatts)
| ... | ... |
@@ -1,7 +1,6 @@ |
| 1 | 1 |
package graph |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 |
- "encoding/json" |
|
| 5 | 4 |
"io" |
| 6 | 5 |
|
| 7 | 6 |
"github.com/dotcloud/docker/engine" |
| ... | ... |
@@ -136,7 +135,7 @@ func (s *TagStore) CmdLookup(job *engine.Job) engine.Status {
|
| 136 | 136 |
name := job.Args[0] |
| 137 | 137 |
if image, err := s.LookupImage(name); err == nil && image != nil {
|
| 138 | 138 |
if job.GetenvBool("raw") {
|
| 139 |
- b, err := json.Marshal(image) |
|
| 139 |
+ b, err := image.RawJson() |
|
| 140 | 140 |
if err != nil {
|
| 141 | 141 |
return job.Error(err) |
| 142 | 142 |
} |
| ... | ... |
@@ -149,6 +149,22 @@ func jsonPath(root string) string {
|
| 149 | 149 |
return path.Join(root, "json") |
| 150 | 150 |
} |
| 151 | 151 |
|
| 152 |
+func (img *Image) RawJson() ([]byte, error) {
|
|
| 153 |
+ root, err := img.root() |
|
| 154 |
+ if err != nil {
|
|
| 155 |
+ return nil, fmt.Errorf("Failed to get root for image %s: %s", img.ID, err)
|
|
| 156 |
+ } |
|
| 157 |
+ fh, err := os.Open(jsonPath(root)) |
|
| 158 |
+ if err != nil {
|
|
| 159 |
+ return nil, fmt.Errorf("Failed to open json for image %s: %s", img.ID, err)
|
|
| 160 |
+ } |
|
| 161 |
+ buf, err := ioutil.ReadAll(fh) |
|
| 162 |
+ if err != nil {
|
|
| 163 |
+ return nil, fmt.Errorf("Failed to read json for image %s: %s", img.ID, err)
|
|
| 164 |
+ } |
|
| 165 |
+ return buf, nil |
|
| 166 |
+} |
|
| 167 |
+ |
|
| 152 | 168 |
// TarLayer returns a tar archive of the image's filesystem layer. |
| 153 | 169 |
func (img *Image) TarLayer() (arch archive.Archive, err error) {
|
| 154 | 170 |
if img.graph == nil {
|