@@ -187,6 +187,7 @@ func fromConfig(
187
187
// factor release steps into something more reusable
188
188
hasReleaseStep = true
189
189
var value string
190
+ var err error
190
191
var overrideCLIReleaseExtractImage * coreapi.ObjectReference
191
192
var overrideCLIResolveErr error
192
193
switch {
@@ -214,12 +215,22 @@ func fromConfig(
214
215
switch {
215
216
case resolveConfig .Integration != nil :
216
217
logrus .Infof ("Building release %s from a snapshot of %s/%s" , resolveConfig .Name , resolveConfig .Integration .Namespace , resolveConfig .Integration .Name )
217
- // this is the one case where we're not importing a payload, we need to get the images and build one
218
- snapshot := releasesteps .ReleaseSnapshotStep (resolveConfig .Name , * resolveConfig .Integration , podClient , jobSpec , integratedStreams [fmt .Sprintf ("%s/%s" , resolveConfig .Integration .Namespace , resolveConfig .Integration .Name )])
218
+
219
+ var snapshot api.Step
220
+ var key string
221
+
222
+ if resolveConfig .Integration .ReferencePolicy != nil {
223
+ key = fmt .Sprintf ("%s/%s/%s" , resolveConfig .Integration .Namespace , resolveConfig .Integration .Name , * resolveConfig .Integration .ReferencePolicy )
224
+ } else {
225
+ key = fmt .Sprintf ("%s/%s" , resolveConfig .Integration .Namespace , resolveConfig .Integration .Name )
226
+ }
227
+
228
+ snapshot = releasesteps .ReleaseSnapshotStep (resolveConfig .Name , * resolveConfig .Integration , podClient , jobSpec , integratedStreams [key ])
219
229
assemble := releasesteps .AssembleReleaseStep (resolveConfig .Name , nodeName , & api.ReleaseTagConfiguration {
220
230
Namespace : resolveConfig .Integration .Namespace ,
221
231
Name : resolveConfig .Integration .Name ,
222
232
IncludeBuiltImages : resolveConfig .Integration .IncludeBuiltImages ,
233
+ ReferencePolicy : resolveConfig .Integration .ReferencePolicy ,
223
234
}, config .Resources , podClient , jobSpec )
224
235
for _ , s := range []api.Step {snapshot , assemble } {
225
236
buildSteps = append (buildSteps , s )
@@ -231,7 +242,13 @@ func fromConfig(
231
242
source = releasesteps .NewReleaseSourceFromConfig (resolveConfig , httpClient )
232
243
}
233
244
}
234
- step := releasesteps .ImportReleaseStep (resolveConfig .Name , nodeName , resolveConfig .TargetName (), source , false , config .Resources , podClient , jobSpec , pullSecret , overrideCLIReleaseExtractImage )
245
+ var referencePolicy imagev1.TagReferencePolicyType
246
+ if resolveConfig .Integration != nil && resolveConfig .Integration .ReferencePolicy != nil {
247
+ referencePolicy = * resolveConfig .Integration .ReferencePolicy
248
+ } else {
249
+ referencePolicy = imagev1 .LocalTagReferencePolicy // Provide a default value or handle appropriately
250
+ }
251
+ step := releasesteps .ImportReleaseStep (resolveConfig .Name , nodeName , resolveConfig .TargetName (), referencePolicy , source , false , config .Resources , podClient , jobSpec , pullSecret , overrideCLIReleaseExtractImage )
235
252
buildSteps = append (buildSteps , step )
236
253
addProvidesForStep (step , params )
237
254
continue
@@ -283,6 +300,12 @@ func fromConfig(
283
300
for _ , name := range []string {api .InitialReleaseName , api .LatestReleaseName } {
284
301
var releaseStep api.Step
285
302
envVar := utils .ReleaseImageEnv (name )
303
+ var referencePolicy imagev1.TagReferencePolicyType
304
+ if rawStep .ReleaseImagesTagStepConfiguration .ReferencePolicy != nil {
305
+ referencePolicy = * rawStep .ReleaseImagesTagStepConfiguration .ReferencePolicy
306
+ } else {
307
+ referencePolicy = imagev1 .LocalTagReferencePolicy // Provide a default value or handle appropriately
308
+ }
286
309
if params .HasInput (envVar ) {
287
310
pullSpec , err := params .Get (envVar )
288
311
if err != nil {
@@ -291,10 +314,11 @@ func fromConfig(
291
314
logrus .Infof ("Using explicitly provided pull-spec for release %s (%s)" , name , pullSpec )
292
315
target := rawStep .ReleaseImagesTagStepConfiguration .TargetName (name )
293
316
source := releasesteps .NewReleaseSourceFromPullSpec (pullSpec )
294
- releaseStep = releasesteps .ImportReleaseStep (name , nodeName , target , source , true , config .Resources , podClient , jobSpec , pullSecret , nil )
317
+ releaseStep = releasesteps .ImportReleaseStep (name , nodeName , target , referencePolicy , source , true , config .Resources , podClient , jobSpec , pullSecret , nil )
295
318
} else {
296
319
// for backwards compatibility, users get inclusion for free with tag_spec
297
320
cfg := * rawStep .ReleaseImagesTagStepConfiguration
321
+ cfg .ReferencePolicy = & referencePolicy
298
322
cfg .IncludeBuiltImages = name == api .LatestReleaseName
299
323
releaseStep = releasesteps .AssembleReleaseStep (name , nodeName , & cfg , config .Resources , podClient , jobSpec )
300
324
}
@@ -449,8 +473,9 @@ func stepForTest(
449
473
step = steps .ClusterClaimStep (c .As , c .ClusterClaim , hiveClient , client , jobSpec , step , censor )
450
474
name := c .ClusterClaim .ClaimRelease (c .As ).ReleaseName
451
475
target := api.ReleaseConfiguration {Name : name }.TargetName ()
476
+ referencePolicy := imagev1 .LocalTagReferencePolicy
452
477
source := releasesteps .NewReleaseSourceFromClusterClaim (c .As , c .ClusterClaim , hiveClient )
453
- ret = append (ret , releasesteps .ImportReleaseStep (name , nodeName , target , source , false , config .Resources , podClient , jobSpec , pullSecret , nil ))
478
+ ret = append (ret , releasesteps .ImportReleaseStep (name , nodeName , target , referencePolicy , source , false , config .Resources , podClient , jobSpec , pullSecret , nil ))
454
479
}
455
480
addProvidesForStep (step , params )
456
481
ret = append (ret , step )
0 commit comments