Browse code

Remove `jsonData` argument from `image.StoreImage`

The argument specified the json data to save to disk when registering
a new image into the image graph. If it is nil, then the given image
is serialized to json and that is written by default. This default
behavior is sufficient if the given image was originally deserialzed
from this jsonData to begin with which has always been the case.

Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn)

Josh Hawn authored on 2014/10/28 03:00:29
Showing 7 changed files
... ...
@@ -132,14 +132,14 @@ func (graph *Graph) Create(layerData archive.ArchiveReader, containerID, contain
132 132
 		img.ContainerConfig = *containerConfig
133 133
 	}
134 134
 
135
-	if err := graph.Register(img, nil, layerData); err != nil {
135
+	if err := graph.Register(img, layerData); err != nil {
136 136
 		return nil, err
137 137
 	}
138 138
 	return img, nil
139 139
 }
140 140
 
141 141
 // Register imports a pre-existing image into the graph.
142
-func (graph *Graph) Register(img *image.Image, jsonData []byte, layerData archive.ArchiveReader) (err error) {
142
+func (graph *Graph) Register(img *image.Image, layerData archive.ArchiveReader) (err error) {
143 143
 	defer func() {
144 144
 		// If any error occurs, remove the new dir from the driver.
145 145
 		// Don't check for errors since the dir might not have been created.
... ...
@@ -181,7 +181,7 @@ func (graph *Graph) Register(img *image.Image, jsonData []byte, layerData archiv
181 181
 	}
182 182
 	// Apply the diff/layer
183 183
 	img.SetGraph(graph)
184
-	if err := image.StoreImage(img, jsonData, layerData, tmp); err != nil {
184
+	if err := image.StoreImage(img, layerData, tmp); err != nil {
185 185
 		return err
186 186
 	}
187 187
 	// Commit
... ...
@@ -118,7 +118,7 @@ func (s *TagStore) recursiveLoad(eng *engine.Engine, address, tmpImageDir string
118 118
 				}
119 119
 			}
120 120
 		}
121
-		if err := s.graph.Register(img, imageJson, layer); err != nil {
121
+		if err := s.graph.Register(img, layer); err != nil {
122 122
 			return err
123 123
 		}
124 124
 	}
... ...
@@ -392,7 +392,7 @@ func (s *TagStore) pullImage(r *registry.Session, out io.Writer, imgID, endpoint
392 392
 				layers_downloaded = true
393 393
 				defer layer.Close()
394 394
 
395
-				err = s.graph.Register(img, imgJSON,
395
+				err = s.graph.Register(img,
396 396
 					utils.ProgressReader(layer, imgSize, out, sf, false, utils.TruncateID(id), "Downloading"))
397 397
 				if terr, ok := err.(net.Error); ok && terr.Timeout() && j < retries {
398 398
 					time.Sleep(time.Duration(j) * 500 * time.Millisecond)
... ...
@@ -577,7 +577,7 @@ func (s *TagStore) pullV2Tag(eng *engine.Engine, r *registry.Session, out io.Wri
577 577
 			defer d.tmpFile.Close()
578 578
 			d.tmpFile.Seek(0, 0)
579 579
 			if d.tmpFile != nil {
580
-				err = s.graph.Register(d.img, d.imgJSON,
580
+				err = s.graph.Register(d.img,
581 581
 					utils.ProgressReader(d.tmpFile, int(d.length), out, sf, false, utils.TruncateID(d.img.ID), "Extracting"))
582 582
 				if err != nil {
583 583
 					return false, err
... ...
@@ -74,7 +74,7 @@ func (s *TagStore) CmdSet(job *engine.Job) engine.Status {
74 74
 	if err != nil {
75 75
 		return job.Error(err)
76 76
 	}
77
-	if err := s.graph.Register(img, imgJSON, layer); err != nil {
77
+	if err := s.graph.Register(img, layer); err != nil {
78 78
 		return job.Error(err)
79 79
 	}
80 80
 	return engine.StatusOK
... ...
@@ -62,7 +62,7 @@ func mkTestTagStore(root string, t *testing.T) *TagStore {
62 62
 		t.Fatal(err)
63 63
 	}
64 64
 	img := &image.Image{ID: testImageID}
65
-	if err := graph.Register(img, nil, archive); err != nil {
65
+	if err := graph.Register(img, archive); err != nil {
66 66
 		t.Fatal(err)
67 67
 	}
68 68
 	if err := store.Set(testImageName, "", testImageID, false); err != nil {
... ...
@@ -70,7 +70,7 @@ func LoadImage(root string) (*Image, error) {
70 70
 	return img, nil
71 71
 }
72 72
 
73
-func StoreImage(img *Image, jsonData []byte, layerData archive.ArchiveReader, root string) error {
73
+func StoreImage(img *Image, layerData archive.ArchiveReader, root string) error {
74 74
 	// Store the layer
75 75
 	var (
76 76
 		size   int64
... ...
@@ -90,20 +90,14 @@ func StoreImage(img *Image, jsonData []byte, layerData archive.ArchiveReader, ro
90 90
 		return err
91 91
 	}
92 92
 
93
-	// If raw json is provided, then use it
94
-	if jsonData != nil {
95
-		if err := ioutil.WriteFile(jsonPath(root), jsonData, 0600); err != nil {
96
-			return err
97
-		}
98
-	} else {
99
-		if jsonData, err = json.Marshal(img); err != nil {
100
-			return err
101
-		}
102
-		if err := ioutil.WriteFile(jsonPath(root), jsonData, 0600); err != nil {
103
-			return err
104
-		}
93
+	f, err := os.OpenFile(jsonPath(root), os.O_CREATE|os.O_WRONLY|os.O_TRUNC, os.FileMode(0600))
94
+	if err != nil {
95
+		return err
105 96
 	}
106
-	return nil
97
+
98
+	defer f.Close()
99
+
100
+	return json.NewEncoder(f).Encode(img)
107 101
 }
108 102
 
109 103
 func (img *Image) SetGraph(graph Graph) {
... ...
@@ -74,7 +74,7 @@ func TestInterruptedRegister(t *testing.T) {
74 74
 		Created: time.Now(),
75 75
 	}
76 76
 	w.CloseWithError(errors.New("But I'm not a tarball!")) // (Nobody's perfect, darling)
77
-	graph.Register(image, nil, badArchive)
77
+	graph.Register(image, badArchive)
78 78
 	if _, err := graph.Get(image.ID); err == nil {
79 79
 		t.Fatal("Image should not exist after Register is interrupted")
80 80
 	}
... ...
@@ -83,7 +83,7 @@ func TestInterruptedRegister(t *testing.T) {
83 83
 	if err != nil {
84 84
 		t.Fatal(err)
85 85
 	}
86
-	if err := graph.Register(image, nil, goodArchive); err != nil {
86
+	if err := graph.Register(image, goodArchive); err != nil {
87 87
 		t.Fatal(err)
88 88
 	}
89 89
 }
... ...
@@ -133,7 +133,7 @@ func TestRegister(t *testing.T) {
133 133
 		Comment: "testing",
134 134
 		Created: time.Now(),
135 135
 	}
136
-	err = graph.Register(image, nil, archive)
136
+	err = graph.Register(image, archive)
137 137
 	if err != nil {
138 138
 		t.Fatal(err)
139 139
 	}
... ...
@@ -228,7 +228,7 @@ func TestDelete(t *testing.T) {
228 228
 		t.Fatal(err)
229 229
 	}
230 230
 	// Test delete twice (pull -> rm -> pull -> rm)
231
-	if err := graph.Register(img1, nil, archive); err != nil {
231
+	if err := graph.Register(img1, archive); err != nil {
232 232
 		t.Fatal(err)
233 233
 	}
234 234
 	if err := graph.Delete(img1.ID); err != nil {
... ...
@@ -262,9 +262,9 @@ func TestByParent(t *testing.T) {
262 262
 		Created: time.Now(),
263 263
 		Parent:  parentImage.ID,
264 264
 	}
265
-	_ = graph.Register(parentImage, nil, archive1)
266
-	_ = graph.Register(childImage1, nil, archive2)
267
-	_ = graph.Register(childImage2, nil, archive3)
265
+	_ = graph.Register(parentImage, archive1)
266
+	_ = graph.Register(childImage1, archive2)
267
+	_ = graph.Register(childImage2, archive3)
268 268
 
269 269
 	byParent, err := graph.ByParent()
270 270
 	if err != nil {