Browse code

Replace NamedTagReference with TagReference

Having two different types internally and externally was not useful, and
made it harder to keep the types in sync and reason about their
conversions.

Clayton Coleman authored on 2016/02/01 13:39:28
Showing 12 changed files
... ...
@@ -19947,14 +19947,14 @@
19947 19947
      "tags": {
19948 19948
       "type": "array",
19949 19949
       "items": {
19950
-       "$ref": "v1.NamedTagReference"
19950
+       "$ref": "v1.TagReference"
19951 19951
       },
19952 19952
       "description": "map arbitrary string values to specific image locators"
19953 19953
      }
19954 19954
     }
19955 19955
    },
19956
-   "v1.NamedTagReference": {
19957
-    "id": "v1.NamedTagReference",
19956
+   "v1.TagReference": {
19957
+    "id": "v1.TagReference",
19958 19958
     "required": [
19959 19959
      "name",
19960 19960
      "generation"
... ...
@@ -2357,6 +2357,7 @@ func deepCopy_api_TagImportPolicy(in imageapi.TagImportPolicy, out *imageapi.Tag
2357 2357
 }
2358 2358
 
2359 2359
 func deepCopy_api_TagReference(in imageapi.TagReference, out *imageapi.TagReference, c *conversion.Cloner) error {
2360
+	out.Name = in.Name
2360 2361
 	if in.Annotations != nil {
2361 2362
 		out.Annotations = make(map[string]string)
2362 2363
 		for key, val := range in.Annotations {
... ...
@@ -165,6 +165,10 @@ func fuzzInternalObject(t *testing.T, forVersion string, item runtime.Object, se
165 165
 			if j.Tags == nil {
166 166
 				j.Tags = make(map[string]image.TagReference)
167 167
 			}
168
+			for k, v := range j.Tags {
169
+				v.Name = k
170
+				j.Tags[k] = v
171
+			}
168 172
 		},
169 173
 		func(j *image.ImageStreamStatus, c fuzz.Continue) {
170 174
 			c.FuzzNoCustom(j)
... ...
@@ -2082,9 +2082,9 @@ func deepCopy_v1_ImageStreamMapping(in imageapiv1.ImageStreamMapping, out *image
2082 2082
 func deepCopy_v1_ImageStreamSpec(in imageapiv1.ImageStreamSpec, out *imageapiv1.ImageStreamSpec, c *conversion.Cloner) error {
2083 2083
 	out.DockerImageRepository = in.DockerImageRepository
2084 2084
 	if in.Tags != nil {
2085
-		out.Tags = make([]imageapiv1.NamedTagReference, len(in.Tags))
2085
+		out.Tags = make([]imageapiv1.TagReference, len(in.Tags))
2086 2086
 		for i := range in.Tags {
2087
-			if err := deepCopy_v1_NamedTagReference(in.Tags[i], &out.Tags[i], c); err != nil {
2087
+			if err := deepCopy_v1_TagReference(in.Tags[i], &out.Tags[i], c); err != nil {
2088 2088
 				return err
2089 2089
 			}
2090 2090
 		}
... ...
@@ -2175,38 +2175,6 @@ func deepCopy_v1_NamedTagEventList(in imageapiv1.NamedTagEventList, out *imageap
2175 2175
 	return nil
2176 2176
 }
2177 2177
 
2178
-func deepCopy_v1_NamedTagReference(in imageapiv1.NamedTagReference, out *imageapiv1.NamedTagReference, c *conversion.Cloner) error {
2179
-	out.Name = in.Name
2180
-	if in.Annotations != nil {
2181
-		out.Annotations = make(map[string]string)
2182
-		for key, val := range in.Annotations {
2183
-			out.Annotations[key] = val
2184
-		}
2185
-	} else {
2186
-		out.Annotations = nil
2187
-	}
2188
-	if in.From != nil {
2189
-		if newVal, err := c.DeepCopy(in.From); err != nil {
2190
-			return err
2191
-		} else {
2192
-			out.From = newVal.(*pkgapiv1.ObjectReference)
2193
-		}
2194
-	} else {
2195
-		out.From = nil
2196
-	}
2197
-	out.Reference = in.Reference
2198
-	if in.Generation != nil {
2199
-		out.Generation = new(int64)
2200
-		*out.Generation = *in.Generation
2201
-	} else {
2202
-		out.Generation = nil
2203
-	}
2204
-	if err := deepCopy_v1_TagImportPolicy(in.ImportPolicy, &out.ImportPolicy, c); err != nil {
2205
-		return err
2206
-	}
2207
-	return nil
2208
-}
2209
-
2210 2178
 func deepCopy_v1_RepositoryImportSpec(in imageapiv1.RepositoryImportSpec, out *imageapiv1.RepositoryImportSpec, c *conversion.Cloner) error {
2211 2179
 	if newVal, err := c.DeepCopy(in.From); err != nil {
2212 2180
 		return err
... ...
@@ -2279,6 +2247,38 @@ func deepCopy_v1_TagImportPolicy(in imageapiv1.TagImportPolicy, out *imageapiv1.
2279 2279
 	return nil
2280 2280
 }
2281 2281
 
2282
+func deepCopy_v1_TagReference(in imageapiv1.TagReference, out *imageapiv1.TagReference, c *conversion.Cloner) error {
2283
+	out.Name = in.Name
2284
+	if in.Annotations != nil {
2285
+		out.Annotations = make(map[string]string)
2286
+		for key, val := range in.Annotations {
2287
+			out.Annotations[key] = val
2288
+		}
2289
+	} else {
2290
+		out.Annotations = nil
2291
+	}
2292
+	if in.From != nil {
2293
+		if newVal, err := c.DeepCopy(in.From); err != nil {
2294
+			return err
2295
+		} else {
2296
+			out.From = newVal.(*pkgapiv1.ObjectReference)
2297
+		}
2298
+	} else {
2299
+		out.From = nil
2300
+	}
2301
+	out.Reference = in.Reference
2302
+	if in.Generation != nil {
2303
+		out.Generation = new(int64)
2304
+		*out.Generation = *in.Generation
2305
+	} else {
2306
+		out.Generation = nil
2307
+	}
2308
+	if err := deepCopy_v1_TagImportPolicy(in.ImportPolicy, &out.ImportPolicy, c); err != nil {
2309
+		return err
2310
+	}
2311
+	return nil
2312
+}
2313
+
2282 2314
 func deepCopy_v1_OAuthAccessToken(in oauthapiv1.OAuthAccessToken, out *oauthapiv1.OAuthAccessToken, c *conversion.Cloner) error {
2283 2315
 	if newVal, err := c.DeepCopy(in.TypeMeta); err != nil {
2284 2316
 		return err
... ...
@@ -3128,12 +3128,12 @@ func init() {
3128 3128
 		deepCopy_v1_ImageStreamTag,
3129 3129
 		deepCopy_v1_ImageStreamTagList,
3130 3130
 		deepCopy_v1_NamedTagEventList,
3131
-		deepCopy_v1_NamedTagReference,
3132 3131
 		deepCopy_v1_RepositoryImportSpec,
3133 3132
 		deepCopy_v1_RepositoryImportStatus,
3134 3133
 		deepCopy_v1_TagEvent,
3135 3134
 		deepCopy_v1_TagEventCondition,
3136 3135
 		deepCopy_v1_TagImportPolicy,
3136
+		deepCopy_v1_TagReference,
3137 3137
 		deepCopy_v1_OAuthAccessToken,
3138 3138
 		deepCopy_v1_OAuthAccessTokenList,
3139 3139
 		deepCopy_v1_OAuthAuthorizeToken,
... ...
@@ -1968,9 +1968,9 @@ func deepCopy_v1beta3_ImageStreamMapping(in imageapiv1beta3.ImageStreamMapping,
1968 1968
 func deepCopy_v1beta3_ImageStreamSpec(in imageapiv1beta3.ImageStreamSpec, out *imageapiv1beta3.ImageStreamSpec, c *conversion.Cloner) error {
1969 1969
 	out.DockerImageRepository = in.DockerImageRepository
1970 1970
 	if in.Tags != nil {
1971
-		out.Tags = make([]imageapiv1beta3.NamedTagReference, len(in.Tags))
1971
+		out.Tags = make([]imageapiv1beta3.TagReference, len(in.Tags))
1972 1972
 		for i := range in.Tags {
1973
-			if err := deepCopy_v1beta3_NamedTagReference(in.Tags[i], &out.Tags[i], c); err != nil {
1973
+			if err := deepCopy_v1beta3_TagReference(in.Tags[i], &out.Tags[i], c); err != nil {
1974 1974
 				return err
1975 1975
 			}
1976 1976
 		}
... ...
@@ -2052,38 +2052,6 @@ func deepCopy_v1beta3_NamedTagEventList(in imageapiv1beta3.NamedTagEventList, ou
2052 2052
 	return nil
2053 2053
 }
2054 2054
 
2055
-func deepCopy_v1beta3_NamedTagReference(in imageapiv1beta3.NamedTagReference, out *imageapiv1beta3.NamedTagReference, c *conversion.Cloner) error {
2056
-	out.Name = in.Name
2057
-	if in.Annotations != nil {
2058
-		out.Annotations = make(map[string]string)
2059
-		for key, val := range in.Annotations {
2060
-			out.Annotations[key] = val
2061
-		}
2062
-	} else {
2063
-		out.Annotations = nil
2064
-	}
2065
-	if in.From != nil {
2066
-		if newVal, err := c.DeepCopy(in.From); err != nil {
2067
-			return err
2068
-		} else {
2069
-			out.From = newVal.(*pkgapiv1beta3.ObjectReference)
2070
-		}
2071
-	} else {
2072
-		out.From = nil
2073
-	}
2074
-	out.Reference = in.Reference
2075
-	if in.Generation != nil {
2076
-		out.Generation = new(int64)
2077
-		*out.Generation = *in.Generation
2078
-	} else {
2079
-		out.Generation = nil
2080
-	}
2081
-	if err := deepCopy_v1beta3_TagImportPolicy(in.ImportPolicy, &out.ImportPolicy, c); err != nil {
2082
-		return err
2083
-	}
2084
-	return nil
2085
-}
2086
-
2087 2055
 func deepCopy_v1beta3_TagEvent(in imageapiv1beta3.TagEvent, out *imageapiv1beta3.TagEvent, c *conversion.Cloner) error {
2088 2056
 	if newVal, err := c.DeepCopy(in.Created); err != nil {
2089 2057
 		return err
... ...
@@ -2116,6 +2084,38 @@ func deepCopy_v1beta3_TagImportPolicy(in imageapiv1beta3.TagImportPolicy, out *i
2116 2116
 	return nil
2117 2117
 }
2118 2118
 
2119
+func deepCopy_v1beta3_TagReference(in imageapiv1beta3.TagReference, out *imageapiv1beta3.TagReference, c *conversion.Cloner) error {
2120
+	out.Name = in.Name
2121
+	if in.Annotations != nil {
2122
+		out.Annotations = make(map[string]string)
2123
+		for key, val := range in.Annotations {
2124
+			out.Annotations[key] = val
2125
+		}
2126
+	} else {
2127
+		out.Annotations = nil
2128
+	}
2129
+	if in.From != nil {
2130
+		if newVal, err := c.DeepCopy(in.From); err != nil {
2131
+			return err
2132
+		} else {
2133
+			out.From = newVal.(*pkgapiv1beta3.ObjectReference)
2134
+		}
2135
+	} else {
2136
+		out.From = nil
2137
+	}
2138
+	out.Reference = in.Reference
2139
+	if in.Generation != nil {
2140
+		out.Generation = new(int64)
2141
+		*out.Generation = *in.Generation
2142
+	} else {
2143
+		out.Generation = nil
2144
+	}
2145
+	if err := deepCopy_v1beta3_TagImportPolicy(in.ImportPolicy, &out.ImportPolicy, c); err != nil {
2146
+		return err
2147
+	}
2148
+	return nil
2149
+}
2150
+
2119 2151
 func deepCopy_v1beta3_OAuthAccessToken(in oauthapiv1beta3.OAuthAccessToken, out *oauthapiv1beta3.OAuthAccessToken, c *conversion.Cloner) error {
2120 2152
 	if newVal, err := c.DeepCopy(in.TypeMeta); err != nil {
2121 2153
 		return err
... ...
@@ -2960,10 +2960,10 @@ func init() {
2960 2960
 		deepCopy_v1beta3_ImageStreamTag,
2961 2961
 		deepCopy_v1beta3_ImageStreamTagList,
2962 2962
 		deepCopy_v1beta3_NamedTagEventList,
2963
-		deepCopy_v1beta3_NamedTagReference,
2964 2963
 		deepCopy_v1beta3_TagEvent,
2965 2964
 		deepCopy_v1beta3_TagEventCondition,
2966 2965
 		deepCopy_v1beta3_TagImportPolicy,
2966
+		deepCopy_v1beta3_TagReference,
2967 2967
 		deepCopy_v1beta3_OAuthAccessToken,
2968 2968
 		deepCopy_v1beta3_OAuthAccessTokenList,
2969 2969
 		deepCopy_v1beta3_OAuthAuthorizeToken,
... ...
@@ -89,6 +89,8 @@ type ImageStreamSpec struct {
89 89
 // TagReference specifies optional annotations for images using this tag and an optional reference to
90 90
 // an ImageStreamTag, ImageStreamImage, or DockerImage this tag should track.
91 91
 type TagReference struct {
92
+	// Name of the tag
93
+	Name string
92 94
 	// Optional; if specified, annotations that are applied to images retrieved via ImageStreamTags.
93 95
 	Annotations map[string]string
94 96
 	// Optional; if specified, a reference to another image that this tag should point to. Valid values
... ...
@@ -104,7 +104,7 @@ func convert_api_ImageStreamSpec_To_v1_ImageStreamSpec(in *newer.ImageStreamSpec
104 104
 			}
105 105
 		}
106 106
 	}
107
-	out.Tags = make([]NamedTagReference, 0, 0)
107
+	out.Tags = make([]TagReference, 0, 0)
108 108
 	return s.Convert(&in.Tags, &out.Tags, 0)
109 109
 }
110 110
 
... ...
@@ -189,28 +189,17 @@ func init() {
189 189
 
190 190
 			return nil
191 191
 		},
192
-		func(in *[]NamedTagReference, out *map[string]newer.TagReference, s conversion.Scope) error {
192
+		func(in *[]TagReference, out *map[string]newer.TagReference, s conversion.Scope) error {
193 193
 			for _, curr := range *in {
194
-				r := newer.TagReference{
195
-					Annotations: curr.Annotations,
196
-					Reference:   curr.Reference,
197
-					ImportPolicy: newer.TagImportPolicy{
198
-						Insecure:  curr.ImportPolicy.Insecure,
199
-						Scheduled: curr.ImportPolicy.Scheduled,
200
-					},
201
-				}
202
-				if curr.Generation != nil {
203
-					gen := *curr.Generation
204
-					r.Generation = &gen
205
-				}
206
-				if err := s.Convert(&curr.From, &r.From, 0); err != nil {
194
+				r := newer.TagReference{}
195
+				if err := s.Convert(&curr, &r, 0); err != nil {
207 196
 					return err
208 197
 				}
209 198
 				(*out)[curr.Name] = r
210 199
 			}
211 200
 			return nil
212 201
 		},
213
-		func(in *map[string]newer.TagReference, out *[]NamedTagReference, s conversion.Scope) error {
202
+		func(in *map[string]newer.TagReference, out *[]TagReference, s conversion.Scope) error {
214 203
 			allTags := make([]string, 0, len(*in))
215 204
 			for tag := range *in {
216 205
 				allTags = append(allTags, tag)
... ...
@@ -219,22 +208,11 @@ func init() {
219 219
 
220 220
 			for _, tag := range allTags {
221 221
 				newTagReference := (*in)[tag]
222
-				oldTagReference := NamedTagReference{
223
-					Name:        tag,
224
-					Annotations: newTagReference.Annotations,
225
-					Reference:   newTagReference.Reference,
226
-					ImportPolicy: TagImportPolicy{
227
-						Insecure:  newTagReference.ImportPolicy.Insecure,
228
-						Scheduled: newTagReference.ImportPolicy.Scheduled,
229
-					},
230
-				}
231
-				if newTagReference.Generation != nil {
232
-					gen := *newTagReference.Generation
233
-					oldTagReference.Generation = &gen
234
-				}
235
-				if err := s.Convert(&newTagReference.From, &oldTagReference.From, 0); err != nil {
222
+				oldTagReference := TagReference{}
223
+				if err := s.Convert(&newTagReference, &oldTagReference, 0); err != nil {
236 224
 					return err
237 225
 				}
226
+				oldTagReference.Name = tag
238 227
 				*out = append(*out, oldTagReference)
239 228
 			}
240 229
 			return nil
... ...
@@ -67,11 +67,11 @@ type ImageStreamSpec struct {
67 67
 	// DockerImageRepository is optional, if specified this stream is backed by a Docker repository on this server
68 68
 	DockerImageRepository string `json:"dockerImageRepository,omitempty" description:"optional field if specified this stream is backed by a Docker repository on this server"`
69 69
 	// Tags map arbitrary string values to specific image locators
70
-	Tags []NamedTagReference `json:"tags,omitempty" description:"map arbitrary string values to specific image locators"`
70
+	Tags []TagReference `json:"tags,omitempty" description:"map arbitrary string values to specific image locators"`
71 71
 }
72 72
 
73
-// NamedTagReference specifies optional annotations for images using this tag and an optional reference to an ImageStreamTag, ImageStreamImage, or DockerImage this tag should track.
74
-type NamedTagReference struct {
73
+// TagReference specifies optional annotations for images using this tag and an optional reference to an ImageStreamTag, ImageStreamImage, or DockerImage this tag should track.
74
+type TagReference struct {
75 75
 	// Name of the tag
76 76
 	Name string `json:"name" description:"name of tag"`
77 77
 	// Annotations associated with images using this tag
... ...
@@ -81,7 +81,7 @@ func convert_v1beta3_ImageStreamSpec_To_api_ImageStreamSpec(in *ImageStreamSpec,
81 81
 
82 82
 func convert_api_ImageStreamSpec_To_v1beta3_ImageStreamSpec(in *newer.ImageStreamSpec, out *ImageStreamSpec, s conversion.Scope) error {
83 83
 	out.DockerImageRepository = in.DockerImageRepository
84
-	out.Tags = make([]NamedTagReference, 0, 0)
84
+	out.Tags = make([]TagReference, 0, 0)
85 85
 	return s.Convert(&in.Tags, &out.Tags, 0)
86 86
 }
87 87
 
... ...
@@ -237,28 +237,17 @@ func init() {
237 237
 
238 238
 			return nil
239 239
 		},
240
-		func(in *[]NamedTagReference, out *map[string]newer.TagReference, s conversion.Scope) error {
240
+		func(in *[]TagReference, out *map[string]newer.TagReference, s conversion.Scope) error {
241 241
 			for _, curr := range *in {
242
-				r := newer.TagReference{
243
-					Annotations: curr.Annotations,
244
-					Reference:   curr.Reference,
245
-					ImportPolicy: newer.TagImportPolicy{
246
-						Insecure:  curr.ImportPolicy.Insecure,
247
-						Scheduled: curr.ImportPolicy.Scheduled,
248
-					},
249
-				}
250
-				if curr.Generation != nil {
251
-					gen := *curr.Generation
252
-					r.Generation = &gen
253
-				}
254
-				if err := s.Convert(&curr.From, &r.From, 0); err != nil {
242
+				r := newer.TagReference{}
243
+				if err := s.Convert(&curr, &r, 0); err != nil {
255 244
 					return err
256 245
 				}
257 246
 				(*out)[curr.Name] = r
258 247
 			}
259 248
 			return nil
260 249
 		},
261
-		func(in *map[string]newer.TagReference, out *[]NamedTagReference, s conversion.Scope) error {
250
+		func(in *map[string]newer.TagReference, out *[]TagReference, s conversion.Scope) error {
262 251
 			allTags := make([]string, 0, len(*in))
263 252
 			for tag := range *in {
264 253
 				allTags = append(allTags, tag)
... ...
@@ -267,22 +256,11 @@ func init() {
267 267
 
268 268
 			for _, tag := range allTags {
269 269
 				newTagReference := (*in)[tag]
270
-				oldTagReference := NamedTagReference{
271
-					Name:        tag,
272
-					Annotations: newTagReference.Annotations,
273
-					Reference:   newTagReference.Reference,
274
-					ImportPolicy: TagImportPolicy{
275
-						Insecure:  newTagReference.ImportPolicy.Insecure,
276
-						Scheduled: newTagReference.ImportPolicy.Scheduled,
277
-					},
278
-				}
279
-				if newTagReference.Generation != nil {
280
-					gen := *newTagReference.Generation
281
-					oldTagReference.Generation = &gen
282
-				}
283
-				if err := s.Convert(&newTagReference.From, &oldTagReference.From, 0); err != nil {
270
+				oldTagReference := TagReference{}
271
+				if err := s.Convert(&newTagReference, &oldTagReference, 0); err != nil {
284 272
 					return err
285 273
 				}
274
+				oldTagReference.Name = tag
286 275
 				*out = append(*out, oldTagReference)
287 276
 			}
288 277
 			return nil
... ...
@@ -65,11 +65,11 @@ type ImageStreamSpec struct {
65 65
 	// Optional, if specified this stream is backed by a Docker repository on this server
66 66
 	DockerImageRepository string `json:"dockerImageRepository,omitempty"`
67 67
 	// Tags map arbitrary string values to specific image locators
68
-	Tags []NamedTagReference `json:"tags,omitempty"`
68
+	Tags []TagReference `json:"tags,omitempty"`
69 69
 }
70 70
 
71
-// NamedTagReference specifies optional annotations for images using this tag and an optional reference to an ImageStreamTag, ImageStreamImage, or DockerImage this tag should track.
72
-type NamedTagReference struct {
71
+// TagReference specifies optional annotations for images using this tag and an optional reference to an ImageStreamTag, ImageStreamImage, or DockerImage this tag should track.
72
+type TagReference struct {
73 73
 	Name        string                `json:"name"`
74 74
 	Annotations map[string]string     `json:"annotations,omitempty"`
75 75
 	From        *kapi.ObjectReference `json:"from,omitempty"`
... ...
@@ -75,10 +75,6 @@ func ValidateImageStream(stream *api.ImageStream) field.ErrorList {
75 75
 		result = append(result, field.Invalid(field.NewPath("metadata", "name"), stream.Name, fmt.Sprintf("'namespace/name' cannot be longer than %d characters", reference.NameTotalLengthMax)))
76 76
 	}
77 77
 
78
-	if stream.Spec.Tags == nil {
79
-		stream.Spec.Tags = make(map[string]api.TagReference)
80
-	}
81
-
82 78
 	if len(stream.Spec.DockerImageRepository) != 0 {
83 79
 		dockerImageRepositoryPath := field.NewPath("spec", "dockerImageRepository")
84 80
 		if ref, err := api.ParseDockerImageReference(stream.Spec.DockerImageRepository); err != nil {
... ...
@@ -426,6 +426,7 @@ func TestDeleteImageStreamTag(t *testing.T) {
426 426
 		three := int64(3)
427 427
 		expectedStreamSpec := map[string]api.TagReference{
428 428
 			"another": {
429
+				Name: "another",
429 430
 				From: &kapi.ObjectReference{
430 431
 					Kind: "ImageStreamTag",
431 432
 					Name: "test:foo",