Browse code

Generate ImageDeleteResponse from swagger spec.

Signed-off-by: Daniel Nephin <dnephin@docker.com>

Daniel Nephin authored on 2016/11/11 01:27:56
Showing 10 changed files
... ...
@@ -25,7 +25,7 @@ type containerBackend interface {
25 25
 }
26 26
 
27 27
 type imageBackend interface {
28
-	ImageDelete(imageRef string, force, prune bool) ([]types.ImageDelete, error)
28
+	ImageDelete(imageRef string, force, prune bool) ([]types.ImageDeleteResponseItem, error)
29 29
 	ImageHistory(imageName string) ([]*image.HistoryResponseItem, error)
30 30
 	Images(imageFilters filters.Args, all bool, withExtraAttrs bool) ([]*types.ImageSummary, error)
31 31
 	LookupImage(name string) (*types.ImageInspect, error)
... ...
@@ -2337,7 +2337,7 @@ definitions:
2337 2337
           -
2338 2338
             NetworkID: "4qvuz4ko70xaltuqbt8956gd1"
2339 2339
             Addr: "10.255.0.3/16"
2340
-  ImageDeleteResponse:
2340
+  ImageDeleteResponseItem:
2341 2341
     type: "object"
2342 2342
     properties:
2343 2343
       Untagged:
... ...
@@ -4780,19 +4780,20 @@ paths:
4780 4780
     delete:
4781 4781
       summary: "Remove an image"
4782 4782
       description: |
4783
-        Remove an image, along with any untagged parent images that were referenced by that image.
4783
+        Remove an image, along with any untagged parent images that were
4784
+        referenced by that image.
4784 4785
 
4785
-        Images can't be removed if they have descendant images, are being used by a running container or are being used by a build.
4786
+        Images can't be removed if they have descendant images, are being
4787
+        used by a running container or are being used by a build.
4786 4788
       operationId: "ImageDelete"
4787
-      produces:
4788
-        - "application/json"
4789
+      produces: ["application/json"]
4789 4790
       responses:
4790 4791
         200:
4791
-          description: "No error"
4792
+          description: "The image was deleted successfully"
4792 4793
           schema:
4793 4794
             type: "array"
4794 4795
             items:
4795
-              $ref: "#/definitions/ImageDeleteResponse"
4796
+              $ref: "#/definitions/ImageDeleteResponseItem"
4796 4797
           examples:
4797 4798
             application/json:
4798 4799
               - Untagged: "3e2f21a89f"
... ...
@@ -4920,7 +4921,7 @@ paths:
4920 4920
                 description: "Images that were deleted"
4921 4921
                 type: "array"
4922 4922
                 items:
4923
-                  $ref: "#/definitions/ImageDeleteResponse"
4923
+                  $ref: "#/definitions/ImageDeleteResponseItem"
4924 4924
               SpaceReclaimed:
4925 4925
                 description: "Disk space reclaimed in bytes"
4926 4926
                 type: "integer"
4927 4927
new file mode 100644
... ...
@@ -0,0 +1,15 @@
0
+package types
1
+
2
+// This file was generated by the swagger tool.
3
+// Editing this file might prove futile when you re-run the swagger generate command
4
+
5
+// ImageDeleteResponseItem image delete response item
6
+// swagger:model ImageDeleteResponseItem
7
+type ImageDeleteResponseItem struct {
8
+
9
+	// The image ID of an image that was deleted
10
+	Deleted string `json:"Deleted,omitempty"`
11
+
12
+	// The image ID of an image that was untagged
13
+	Untagged string `json:"Untagged,omitempty"`
14
+}
... ...
@@ -17,13 +17,6 @@ import (
17 17
 	"github.com/docker/go-connections/nat"
18 18
 )
19 19
 
20
-// ImageDelete contains response of Engine API:
21
-// DELETE "/images/{name:.*}"
22
-type ImageDelete struct {
23
-	Untagged string `json:",omitempty"`
24
-	Deleted  string `json:",omitempty"`
25
-}
26
-
27 20
 // GraphDriverData returns Image's graph driver config info
28 21
 // when calling inspect command
29 22
 type GraphDriverData struct {
... ...
@@ -508,7 +501,7 @@ type VolumesPruneReport struct {
508 508
 // ImagesPruneReport contains the response for Engine API:
509 509
 // POST "/images/prune"
510 510
 type ImagesPruneReport struct {
511
-	ImagesDeleted  []ImageDelete
511
+	ImagesDeleted  []ImageDeleteResponseItem
512 512
 	SpaceReclaimed uint64
513 513
 }
514 514
 
... ...
@@ -9,7 +9,7 @@ import (
9 9
 )
10 10
 
11 11
 // ImageRemove removes an image from the docker host.
12
-func (cli *Client) ImageRemove(ctx context.Context, imageID string, options types.ImageRemoveOptions) ([]types.ImageDelete, error) {
12
+func (cli *Client) ImageRemove(ctx context.Context, imageID string, options types.ImageRemoveOptions) ([]types.ImageDeleteResponseItem, error) {
13 13
 	query := url.Values{}
14 14
 
15 15
 	if options.Force {
... ...
@@ -24,7 +24,7 @@ func (cli *Client) ImageRemove(ctx context.Context, imageID string, options type
24 24
 		return nil, err
25 25
 	}
26 26
 
27
-	var dels []types.ImageDelete
27
+	var dels []types.ImageDeleteResponseItem
28 28
 	err = json.NewDecoder(resp.body).Decode(&dels)
29 29
 	ensureReaderClosed(resp)
30 30
 	return dels, err
... ...
@@ -63,7 +63,7 @@ func TestImageRemove(t *testing.T) {
63 63
 						return nil, fmt.Errorf("%s not set in URL query properly. Expected '%s', got %s", key, expected, actual)
64 64
 					}
65 65
 				}
66
-				b, err := json.Marshal([]types.ImageDelete{
66
+				b, err := json.Marshal([]types.ImageDeleteResponseItem{
67 67
 					{
68 68
 						Untagged: "image_id1",
69 69
 					},
... ...
@@ -79,7 +79,7 @@ type ImageAPIClient interface {
79 79
 	ImageLoad(ctx context.Context, input io.Reader, quiet bool) (types.ImageLoadResponse, error)
80 80
 	ImagePull(ctx context.Context, ref string, options types.ImagePullOptions) (io.ReadCloser, error)
81 81
 	ImagePush(ctx context.Context, ref string, options types.ImagePushOptions) (io.ReadCloser, error)
82
-	ImageRemove(ctx context.Context, image string, options types.ImageRemoveOptions) ([]types.ImageDelete, error)
82
+	ImageRemove(ctx context.Context, image string, options types.ImageRemoveOptions) ([]types.ImageDeleteResponseItem, error)
83 83
 	ImageSearch(ctx context.Context, term string, options types.ImageSearchOptions) ([]registry.SearchResult, error)
84 84
 	ImageSave(ctx context.Context, images []string) (io.ReadCloser, error)
85 85
 	ImageTag(ctx context.Context, image, ref string) error
... ...
@@ -61,9 +61,9 @@ const (
61 61
 // FIXME: remove ImageDelete's dependency on Daemon, then move to the graph
62 62
 // package. This would require that we no longer need the daemon to determine
63 63
 // whether images are being used by a stopped or running container.
64
-func (daemon *Daemon) ImageDelete(imageRef string, force, prune bool) ([]types.ImageDelete, error) {
64
+func (daemon *Daemon) ImageDelete(imageRef string, force, prune bool) ([]types.ImageDeleteResponseItem, error) {
65 65
 	start := time.Now()
66
-	records := []types.ImageDelete{}
66
+	records := []types.ImageDeleteResponseItem{}
67 67
 
68 68
 	imgID, err := daemon.GetImageID(imageRef)
69 69
 	if err != nil {
... ...
@@ -99,7 +99,7 @@ func (daemon *Daemon) ImageDelete(imageRef string, force, prune bool) ([]types.I
99 99
 			return nil, err
100 100
 		}
101 101
 
102
-		untaggedRecord := types.ImageDelete{Untagged: parsedRef.String()}
102
+		untaggedRecord := types.ImageDeleteResponseItem{Untagged: parsedRef.String()}
103 103
 
104 104
 		daemon.LogImageEvent(imgID.String(), imgID.String(), "untag")
105 105
 		records = append(records, untaggedRecord)
... ...
@@ -126,7 +126,7 @@ func (daemon *Daemon) ImageDelete(imageRef string, force, prune bool) ([]types.I
126 126
 							return records, err
127 127
 						}
128 128
 
129
-						untaggedRecord := types.ImageDelete{Untagged: repoRef.String()}
129
+						untaggedRecord := types.ImageDeleteResponseItem{Untagged: repoRef.String()}
130 130
 						records = append(records, untaggedRecord)
131 131
 					} else {
132 132
 						remainingRefs = append(remainingRefs, repoRef)
... ...
@@ -162,7 +162,7 @@ func (daemon *Daemon) ImageDelete(imageRef string, force, prune bool) ([]types.I
162 162
 					return nil, err
163 163
 				}
164 164
 
165
-				untaggedRecord := types.ImageDelete{Untagged: parsedRef.String()}
165
+				untaggedRecord := types.ImageDeleteResponseItem{Untagged: parsedRef.String()}
166 166
 
167 167
 				daemon.LogImageEvent(imgID.String(), imgID.String(), "untag")
168 168
 				records = append(records, untaggedRecord)
... ...
@@ -244,9 +244,9 @@ func (daemon *Daemon) removeImageRef(ref reference.Named) (reference.Named, erro
244 244
 // removeAllReferencesToImageID attempts to remove every reference to the given
245 245
 // imgID from this daemon's store of repository tag/digest references. Returns
246 246
 // on the first encountered error. Removed references are logged to this
247
-// daemon's event service. An "Untagged" types.ImageDelete is added to the
247
+// daemon's event service. An "Untagged" types.ImageDeleteResponseItem is added to the
248 248
 // given list of records.
249
-func (daemon *Daemon) removeAllReferencesToImageID(imgID image.ID, records *[]types.ImageDelete) error {
249
+func (daemon *Daemon) removeAllReferencesToImageID(imgID image.ID, records *[]types.ImageDeleteResponseItem) error {
250 250
 	imageRefs := daemon.referenceStore.References(imgID.Digest())
251 251
 
252 252
 	for _, imageRef := range imageRefs {
... ...
@@ -255,7 +255,7 @@ func (daemon *Daemon) removeAllReferencesToImageID(imgID image.ID, records *[]ty
255 255
 			return err
256 256
 		}
257 257
 
258
-		untaggedRecord := types.ImageDelete{Untagged: parsedRef.String()}
258
+		untaggedRecord := types.ImageDeleteResponseItem{Untagged: parsedRef.String()}
259 259
 
260 260
 		daemon.LogImageEvent(imgID.String(), imgID.String(), "untag")
261 261
 		*records = append(*records, untaggedRecord)
... ...
@@ -295,7 +295,7 @@ func (idc *imageDeleteConflict) Error() string {
295 295
 // conflict is encountered, it will be returned immediately without deleting
296 296
 // the image. If quiet is true, any encountered conflicts will be ignored and
297 297
 // the function will return nil immediately without deleting the image.
298
-func (daemon *Daemon) imageDeleteHelper(imgID image.ID, records *[]types.ImageDelete, force, prune, quiet bool) error {
298
+func (daemon *Daemon) imageDeleteHelper(imgID image.ID, records *[]types.ImageDeleteResponseItem, force, prune, quiet bool) error {
299 299
 	// First, determine if this image has any conflicts. Ignore soft conflicts
300 300
 	// if force is true.
301 301
 	c := conflictHard
... ...
@@ -331,9 +331,9 @@ func (daemon *Daemon) imageDeleteHelper(imgID image.ID, records *[]types.ImageDe
331 331
 	}
332 332
 
333 333
 	daemon.LogImageEvent(imgID.String(), imgID.String(), "delete")
334
-	*records = append(*records, types.ImageDelete{Deleted: imgID.String()})
334
+	*records = append(*records, types.ImageDeleteResponseItem{Deleted: imgID.String()})
335 335
 	for _, removedLayer := range removedLayers {
336
-		*records = append(*records, types.ImageDelete{Deleted: removedLayer.ChainID.String()})
336
+		*records = append(*records, types.ImageDeleteResponseItem{Deleted: removedLayer.ChainID.String()})
337 337
 	}
338 338
 
339 339
 	if !prune || parent == "" {
... ...
@@ -114,7 +114,7 @@ func (daemon *Daemon) ImagesPrune(pruneFilters filters.Args) (*types.ImagesPrune
114 114
 			continue
115 115
 		}
116 116
 
117
-		deletedImages := []types.ImageDelete{}
117
+		deletedImages := []types.ImageDeleteResponseItem{}
118 118
 		refs := daemon.referenceStore.References(dgst)
119 119
 		if len(refs) > 0 {
120 120
 			if danglingOnly {
... ...
@@ -3,13 +3,14 @@ set -eu
3 3
 
4 4
 swagger generate model -f api/swagger.yaml \
5 5
     -t api -m types --skip-validator -C api/swagger-gen.yaml \
6
-    -n Volume \
7
-    -n Port \
8
-    -n ImageSummary \
9
-    -n Plugin -n PluginDevice -n PluginMount -n PluginEnv -n PluginInterfaceType \
10 6
     -n ErrorResponse \
11 7
     -n IdResponse \
12
-    -n ServiceUpdateResponse
8
+    -n ImageDeleteResponseItem \
9
+    -n ImageSummary \
10
+    -n Plugin -n PluginDevice -n PluginMount -n PluginEnv -n PluginInterfaceType \
11
+    -n Port \
12
+    -n ServiceUpdateResponse \
13
+    -n Volume
13 14
 
14 15
 swagger generate operation -f api/swagger.yaml \
15 16
     -t api -a types -m types -C api/swagger-gen.yaml \