Browse code

continue daemon refactor of Repositories()

- use daemon member directly rather than through a function call
- create GetImage method for use external to deamon

Signed-off-by: Morgan Bauer <mbauer@us.ibm.com>

Morgan Bauer authored on 2015/10/02 06:51:36
Showing 5 changed files
... ...
@@ -425,7 +425,7 @@ func (s *router) postBuild(ctx context.Context, w http.ResponseWriter, r *http.R
425 425
 	}
426 426
 
427 427
 	if repoName != "" {
428
-		if err := s.daemon.Repositories().Tag(repoName, tag, string(imgID), true); err != nil {
428
+		if err := s.daemon.TagImage(repoName, tag, string(imgID), true); err != nil {
429 429
 			return errf(err)
430 430
 		}
431 431
 	}
... ...
@@ -1011,11 +1011,6 @@ func (daemon *Daemon) Graph() *graph.Graph {
1011 1011
 	return daemon.graph
1012 1012
 }
1013 1013
 
1014
-// Repositories returns all repositories.
1015
-func (daemon *Daemon) Repositories() *graph.TagStore {
1016
-	return daemon.repositories
1017
-}
1018
-
1019 1014
 // TagImage creates a tag in the repository reponame, pointing to the image named
1020 1015
 // imageName. If force is true, an existing tag with the same name may be
1021 1016
 // overwritten.
... ...
@@ -1079,6 +1074,13 @@ func (daemon *Daemon) ImageHistory(name string) ([]*types.ImageHistory, error) {
1079 1079
 	return daemon.repositories.History(name)
1080 1080
 }
1081 1081
 
1082
+// GetImage returns pointer to an Image struct corresponding to the given
1083
+// name. The name can include an optional tag; otherwise the default tag will
1084
+// be used.
1085
+func (daemon *Daemon) GetImage(name string) (*image.Image, error) {
1086
+	return daemon.repositories.LookupImage(name)
1087
+}
1088
+
1082 1089
 func (daemon *Daemon) config() *Config {
1083 1090
 	return daemon.configStore
1084 1091
 }
... ...
@@ -39,7 +39,7 @@ var _ builder.Docker = Docker{}
39 39
 
40 40
 // LookupImage looks up a Docker image referenced by `name`.
41 41
 func (d Docker) LookupImage(name string) (*image.Image, error) {
42
-	return d.Daemon.Repositories().LookupImage(name)
42
+	return d.Daemon.GetImage(name)
43 43
 }
44 44
 
45 45
 // Pull tells Docker to pull image referenced by `name`.
... ...
@@ -69,11 +69,11 @@ func (d Docker) Pull(name string) (*image.Image, error) {
69 69
 		OutStream:  ioutils.NopWriteCloser(d.OutOld),
70 70
 	}
71 71
 
72
-	if err := d.Daemon.Repositories().Pull(remote, tag, imagePullConfig); err != nil {
72
+	if err := d.Daemon.PullImage(remote, tag, imagePullConfig); err != nil {
73 73
 		return nil, err
74 74
 	}
75 75
 
76
-	return d.Daemon.Repositories().LookupImage(name)
76
+	return d.Daemon.GetImage(name)
77 77
 }
78 78
 
79 79
 // Container looks up a Docker container referenced by `id`.
... ...
@@ -53,7 +53,7 @@ import (
53 53
 func (daemon *Daemon) ImageDelete(imageRef string, force, prune bool) ([]types.ImageDelete, error) {
54 54
 	records := []types.ImageDelete{}
55 55
 
56
-	img, err := daemon.Repositories().LookupImage(imageRef)
56
+	img, err := daemon.repositories.LookupImage(imageRef)
57 57
 	if err != nil {
58 58
 		return nil, err
59 59
 	}
... ...
@@ -90,7 +90,7 @@ func (daemon *Daemon) ImageDelete(imageRef string, force, prune bool) ([]types.I
90 90
 		// repository reference to the image then we will want to
91 91
 		// remove that reference.
92 92
 		// FIXME: Is this the behavior we want?
93
-		repoRefs := daemon.Repositories().ByID()[img.ID]
93
+		repoRefs := daemon.repositories.ByID()[img.ID]
94 94
 		if len(repoRefs) == 1 {
95 95
 			parsedRef, err := daemon.removeImageRef(repoRefs[0])
96 96
 			if err != nil {
... ...
@@ -116,7 +116,7 @@ func isImageIDPrefix(imageID, possiblePrefix string) bool {
116 116
 // imageHasMultipleRepositoryReferences returns whether there are multiple
117 117
 // repository references to the given imageID.
118 118
 func (daemon *Daemon) imageHasMultipleRepositoryReferences(imageID string) bool {
119
-	return len(daemon.Repositories().ByID()[imageID]) > 1
119
+	return len(daemon.repositories.ByID()[imageID]) > 1
120 120
 }
121 121
 
122 122
 // getContainerUsingImage returns a container that was created using the given
... ...
@@ -145,7 +145,7 @@ func (daemon *Daemon) removeImageRef(repositoryRef string) (string, error) {
145 145
 	// Ignore the boolean value returned, as far as we're concerned, this
146 146
 	// is an idempotent operation and it's okay if the reference didn't
147 147
 	// exist in the first place.
148
-	_, err := daemon.Repositories().Delete(repository, ref)
148
+	_, err := daemon.repositories.Delete(repository, ref)
149 149
 
150 150
 	return utils.ImageReference(repository, ref), err
151 151
 }
... ...
@@ -156,7 +156,7 @@ func (daemon *Daemon) removeImageRef(repositoryRef string) (string, error) {
156 156
 // daemon's event service. An "Untagged" types.ImageDelete is added to the
157 157
 // given list of records.
158 158
 func (daemon *Daemon) removeAllReferencesToImageID(imgID string, records *[]types.ImageDelete) error {
159
-	imageRefs := daemon.Repositories().ByID()[imgID]
159
+	imageRefs := daemon.repositories.ByID()[imgID]
160 160
 
161 161
 	for _, imageRef := range imageRefs {
162 162
 		parsedRef, err := daemon.removeImageRef(imageRef)
... ...
@@ -308,7 +308,7 @@ func (daemon *Daemon) checkImageDeleteHardConflict(img *image.Image) *imageDelet
308 308
 
309 309
 func (daemon *Daemon) checkImageDeleteSoftConflict(img *image.Image) *imageDeleteConflict {
310 310
 	// Check if any repository tags/digest reference this image.
311
-	if daemon.Repositories().HasReferences(img) {
311
+	if daemon.repositories.HasReferences(img) {
312 312
 		return &imageDeleteConflict{
313 313
 			imgID:   img.ID,
314 314
 			message: "image is referenced in one or more repositories",
... ...
@@ -337,5 +337,5 @@ func (daemon *Daemon) checkImageDeleteSoftConflict(img *image.Image) *imageDelet
337 337
 // that there are no repository references to the given image and it has no
338 338
 // child images.
339 339
 func (daemon *Daemon) imageIsDangling(img *image.Image) bool {
340
-	return !(daemon.Repositories().HasReferences(img) || daemon.Graph().HasChildren(img))
340
+	return !(daemon.repositories.HasReferences(img) || daemon.Graph().HasChildren(img))
341 341
 }
... ...
@@ -163,7 +163,7 @@ func (daemon *Daemon) foldFilter(config *ContainersConfig) (*listContext, error)
163 163
 		// The idea is to walk the graph down the most "efficient" way.
164 164
 		for _, ancestor := range ancestors {
165 165
 			// First, get the imageId of the ancestor filter (yay)
166
-			image, err := daemon.Repositories().LookupImage(ancestor)
166
+			image, err := daemon.repositories.LookupImage(ancestor)
167 167
 			if err != nil {
168 168
 				logrus.Warnf("Error while looking up for image %v", ancestor)
169 169
 				continue
... ...
@@ -297,7 +297,7 @@ func (daemon *Daemon) transformContainer(container *Container, ctx *listContext)
297 297
 		newC.Names = []string{}
298 298
 	}
299 299
 
300
-	img, err := daemon.Repositories().LookupImage(container.Config.Image)
300
+	img, err := daemon.repositories.LookupImage(container.Config.Image)
301 301
 	if err != nil {
302 302
 		// If the image can no longer be found by its original reference,
303 303
 		// it makes sense to show the ID instead of a stale reference.