Skip to content

Commit 8a98fbc

Browse files
committed
OCPBUGS-73844: Let import mode be decided by the cluster when not specified
Today, we default to "Legacy" importmode when no option is specified. With the introduction of https://issues.redhat.com/browse/MULTIARCH-4552, the importmode is determined by the Cluster version's `desired.architecture` - which if set to "Multi", the import mode is PreserveOriginal else Legacy. Hence we don't need to default to Legacy all the time.
1 parent 4df0e94 commit 8a98fbc

7 files changed

Lines changed: 41 additions & 38 deletions

File tree

pkg/cli/importimage/importimage.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ func NewImportImageOptions(streams genericiooptions.IOStreams) *ImportImageOptio
100100
PrintFlags: genericclioptions.NewPrintFlags("imported"),
101101
IOStreams: streams,
102102
ReferencePolicy: tag.SourceReferencePolicy,
103-
ImportMode: string(imagev1.ImportModeLegacy),
104103
}
105104
}
106105

@@ -129,7 +128,7 @@ func NewCmdImportImage(f kcmdutil.Factory, streams genericiooptions.IOStreams) *
129128
cmd.Flags().BoolVar(&o.Confirm, "confirm", o.Confirm, "If true, allow the image stream import location to be set or changed")
130129
cmd.Flags().BoolVar(&o.All, "all", o.All, "If true, import all tags from the provided source on creation or if --from is specified")
131130
cmd.Flags().StringVar(&o.ReferencePolicy, "reference-policy", o.ReferencePolicy, "Allow to request pullthrough for external image when set to 'local'. Defaults to 'source'.")
132-
cmd.Flags().StringVar(&o.ImportMode, "import-mode", o.ImportMode, "Imports the full manifest list of a tag when set to 'PreserveOriginal'. Defaults to 'Legacy'.")
131+
cmd.Flags().StringVar(&o.ImportMode, "import-mode", o.ImportMode, "Imports the full manifest list of a tag when set to 'PreserveOriginal'. When set to 'Legacy', imports a single sub-manifest. When unspecified, the cluster determines the import mode.")
133132
cmd.Flags().BoolVar(&o.DryRun, "dry-run", o.DryRun, "Fetch information about images without creating or updating an image stream.")
134133
cmd.Flags().BoolVar(&o.Scheduled, "scheduled", o.Scheduled, "Set each imported container image to be periodically imported from a remote repository. Defaults to false.")
135134
cmd.Flags().BoolVar(&o.Insecure, "insecure", o.Insecure, "If true, allow importing from registries that have invalid HTTPS certificates or are hosted via HTTP. This flag will take precedence over the insecure annotation.")
@@ -218,7 +217,8 @@ func (o *ImportImageOptions) Validate() error {
218217
case string(imagev1.ImportModeLegacy):
219218
case string(imagev1.ImportModePreserveOriginal):
220219
case "":
221-
o.ImportMode = string(imagev1.ImportModeLegacy)
220+
// Leave empty and let it be decided based on the ClusterVersion's "desired.architecture" value. If the value is "Multi",
221+
// the import mode is set to "PreserveOriginal", if not it is set to "Legacy"
222222
default:
223223
return fmt.Errorf("valid ImportMode values are %s or %s", imagev1.ImportModeLegacy, imagev1.ImportModePreserveOriginal)
224224
}

pkg/cli/importimage/importimage_test.go

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func TestCreateImageImport(t *testing.T) {
4040
From: corev1.ObjectReference{Kind: "DockerImage", Name: "nonexisting"},
4141
To: &corev1.LocalObjectReference{Name: "latest"},
4242
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
43-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
43+
ImportPolicy: imagev1.TagImportPolicy{},
4444
}},
4545
},
4646
"confirmed import all from non-existing": {
@@ -50,7 +50,7 @@ func TestCreateImageImport(t *testing.T) {
5050
expectedRepository: &imagev1.RepositoryImportSpec{
5151
From: corev1.ObjectReference{Kind: "DockerImage", Name: "nonexisting"},
5252
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
53-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
53+
ImportPolicy: imagev1.TagImportPolicy{},
5454
},
5555
},
5656
"import from .spec.dockerImageRepository": {
@@ -66,7 +66,7 @@ func TestCreateImageImport(t *testing.T) {
6666
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage"},
6767
To: &corev1.LocalObjectReference{Name: "latest"},
6868
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
69-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
69+
ImportPolicy: imagev1.TagImportPolicy{},
7070
}},
7171
},
7272
"import from .spec.dockerImageRepository non-existing tag": {
@@ -93,7 +93,7 @@ func TestCreateImageImport(t *testing.T) {
9393
expectedRepository: &imagev1.RepositoryImportSpec{
9494
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage"},
9595
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
96-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
96+
ImportPolicy: imagev1.TagImportPolicy{},
9797
},
9898
},
9999
"import all from .spec.dockerImageRepository with different from": {
@@ -124,7 +124,7 @@ func TestCreateImageImport(t *testing.T) {
124124
expectedRepository: &imagev1.RepositoryImportSpec{
125125
From: corev1.ObjectReference{Kind: "DockerImage", Name: "totally/different/spec"},
126126
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
127-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
127+
ImportPolicy: imagev1.TagImportPolicy{},
128128
},
129129
},
130130
"import all from .spec.tags": {
@@ -144,13 +144,13 @@ func TestCreateImageImport(t *testing.T) {
144144
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:latest"},
145145
To: &corev1.LocalObjectReference{Name: "latest"},
146146
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
147-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
147+
ImportPolicy: imagev1.TagImportPolicy{},
148148
},
149149
{
150150
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:other"},
151151
To: &corev1.LocalObjectReference{Name: "other"},
152152
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
153-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
153+
ImportPolicy: imagev1.TagImportPolicy{},
154154
},
155155
},
156156
},
@@ -174,13 +174,13 @@ func TestCreateImageImport(t *testing.T) {
174174
{
175175
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:latest"},
176176
To: &corev1.LocalObjectReference{Name: "latest"},
177-
ImportPolicy: imagev1.TagImportPolicy{Insecure: true, ImportMode: imagev1.ImportModeLegacy},
177+
ImportPolicy: imagev1.TagImportPolicy{Insecure: true},
178178
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
179179
},
180180
{
181181
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:other"},
182182
To: &corev1.LocalObjectReference{Name: "other"},
183-
ImportPolicy: imagev1.TagImportPolicy{Insecure: true, ImportMode: imagev1.ImportModeLegacy},
183+
ImportPolicy: imagev1.TagImportPolicy{Insecure: true},
184184
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
185185
},
186186
},
@@ -202,13 +202,13 @@ func TestCreateImageImport(t *testing.T) {
202202
{
203203
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:latest"},
204204
To: &corev1.LocalObjectReference{Name: "latest"},
205-
ImportPolicy: imagev1.TagImportPolicy{Insecure: true, ImportMode: imagev1.ImportModeLegacy},
205+
ImportPolicy: imagev1.TagImportPolicy{Insecure: true},
206206
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
207207
},
208208
{
209209
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:other"},
210210
To: &corev1.LocalObjectReference{Name: "other"},
211-
ImportPolicy: imagev1.TagImportPolicy{Insecure: true, ImportMode: imagev1.ImportModeLegacy},
211+
ImportPolicy: imagev1.TagImportPolicy{Insecure: true},
212212
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
213213
},
214214
},
@@ -250,7 +250,7 @@ func TestCreateImageImport(t *testing.T) {
250250
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:latest"},
251251
To: &corev1.LocalObjectReference{Name: "latest"},
252252
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
253-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
253+
ImportPolicy: imagev1.TagImportPolicy{},
254254
}},
255255
},
256256
"import existing tag": {
@@ -270,7 +270,7 @@ func TestCreateImageImport(t *testing.T) {
270270
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:latest"},
271271
To: &corev1.LocalObjectReference{Name: "existing"},
272272
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
273-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
273+
ImportPolicy: imagev1.TagImportPolicy{},
274274
}},
275275
},
276276
"import non-existing tag": {
@@ -308,7 +308,7 @@ func TestCreateImageImport(t *testing.T) {
308308
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:mytag"},
309309
To: &corev1.LocalObjectReference{Name: "mytag"},
310310
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
311-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
311+
ImportPolicy: imagev1.TagImportPolicy{},
312312
}},
313313
},
314314
"use tag aliases": {
@@ -330,7 +330,7 @@ func TestCreateImageImport(t *testing.T) {
330330
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:mytag"},
331331
To: &corev1.LocalObjectReference{Name: "mytag"},
332332
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
333-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
333+
ImportPolicy: imagev1.TagImportPolicy{},
334334
}},
335335
},
336336
"import tag from alias of cross-image-stream": {
@@ -403,7 +403,7 @@ func TestCreateImageImport(t *testing.T) {
403403
expectedImages: []imagev1.ImageImportSpec{{
404404
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage"},
405405
To: &corev1.LocalObjectReference{Name: "latest"},
406-
ImportPolicy: imagev1.TagImportPolicy{Insecure: true, ImportMode: imagev1.ImportModeLegacy},
406+
ImportPolicy: imagev1.TagImportPolicy{Insecure: true},
407407
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
408408
}},
409409
},
@@ -424,7 +424,7 @@ func TestCreateImageImport(t *testing.T) {
424424
expectedImages: []imagev1.ImageImportSpec{{
425425
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage"},
426426
To: &corev1.LocalObjectReference{Name: "latest"},
427-
ImportPolicy: imagev1.TagImportPolicy{Insecure: false, ImportMode: imagev1.ImportModeLegacy},
427+
ImportPolicy: imagev1.TagImportPolicy{Insecure: false},
428428
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
429429
}},
430430
},
@@ -446,7 +446,7 @@ func TestCreateImageImport(t *testing.T) {
446446
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:mytag"},
447447
To: &corev1.LocalObjectReference{Name: "mytag"},
448448
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.LocalTagReferencePolicy},
449-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
449+
ImportPolicy: imagev1.TagImportPolicy{},
450450
}},
451451
},
452452
"import all from .spec.tags setting referencePolicy": {
@@ -467,13 +467,13 @@ func TestCreateImageImport(t *testing.T) {
467467
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:mytag"},
468468
To: &corev1.LocalObjectReference{Name: "mytag"},
469469
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.LocalTagReferencePolicy},
470-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
470+
ImportPolicy: imagev1.TagImportPolicy{},
471471
},
472472
{
473473
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:other"},
474474
To: &corev1.LocalObjectReference{Name: "other"},
475475
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.LocalTagReferencePolicy},
476-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
476+
ImportPolicy: imagev1.TagImportPolicy{},
477477
},
478478
},
479479
},
@@ -491,7 +491,7 @@ func TestCreateImageImport(t *testing.T) {
491491
expectedRepository: &imagev1.RepositoryImportSpec{
492492
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage"},
493493
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.LocalTagReferencePolicy},
494-
ImportPolicy: imagev1.TagImportPolicy{ImportMode: imagev1.ImportModeLegacy},
494+
ImportPolicy: imagev1.TagImportPolicy{},
495495
},
496496
},
497497
"import tag setting scheduled": {
@@ -511,7 +511,7 @@ func TestCreateImageImport(t *testing.T) {
511511
expectedImages: []imagev1.ImageImportSpec{{
512512
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:mytag"},
513513
To: &corev1.LocalObjectReference{Name: "mytag"},
514-
ImportPolicy: imagev1.TagImportPolicy{Scheduled: true, ImportMode: imagev1.ImportModeLegacy},
514+
ImportPolicy: imagev1.TagImportPolicy{Scheduled: true},
515515
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
516516
}},
517517
},
@@ -533,7 +533,7 @@ func TestCreateImageImport(t *testing.T) {
533533
expectedImages: []imagev1.ImageImportSpec{{
534534
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:mytag"},
535535
To: &corev1.LocalObjectReference{Name: "mytag"},
536-
ImportPolicy: imagev1.TagImportPolicy{Scheduled: true, ImportMode: imagev1.ImportModeLegacy},
536+
ImportPolicy: imagev1.TagImportPolicy{Scheduled: true},
537537
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
538538
}},
539539
},
@@ -554,13 +554,13 @@ func TestCreateImageImport(t *testing.T) {
554554
{
555555
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:mytag"},
556556
To: &corev1.LocalObjectReference{Name: "mytag"},
557-
ImportPolicy: imagev1.TagImportPolicy{Scheduled: true, ImportMode: imagev1.ImportModeLegacy},
557+
ImportPolicy: imagev1.TagImportPolicy{Scheduled: true},
558558
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
559559
},
560560
{
561561
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:other"},
562562
To: &corev1.LocalObjectReference{Name: "other"},
563-
ImportPolicy: imagev1.TagImportPolicy{Scheduled: true, ImportMode: imagev1.ImportModeLegacy},
563+
ImportPolicy: imagev1.TagImportPolicy{Scheduled: true},
564564
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
565565
},
566566
},
@@ -586,13 +586,13 @@ func TestCreateImageImport(t *testing.T) {
586586
{
587587
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:mytag"},
588588
To: &corev1.LocalObjectReference{Name: "mytag"},
589-
ImportPolicy: imagev1.TagImportPolicy{Scheduled: true, ImportMode: imagev1.ImportModeLegacy},
589+
ImportPolicy: imagev1.TagImportPolicy{Scheduled: true},
590590
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
591591
},
592592
{
593593
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage:other"},
594594
To: &corev1.LocalObjectReference{Name: "other"},
595-
ImportPolicy: imagev1.TagImportPolicy{Scheduled: false, ImportMode: imagev1.ImportModeLegacy},
595+
ImportPolicy: imagev1.TagImportPolicy{Scheduled: false},
596596
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
597597
},
598598
},
@@ -610,7 +610,7 @@ func TestCreateImageImport(t *testing.T) {
610610
},
611611
expectedRepository: &imagev1.RepositoryImportSpec{
612612
From: corev1.ObjectReference{Kind: "DockerImage", Name: "repo.com/somens/someimage"},
613-
ImportPolicy: imagev1.TagImportPolicy{Scheduled: true, ImportMode: imagev1.ImportModeLegacy},
613+
ImportPolicy: imagev1.TagImportPolicy{Scheduled: true},
614614
ReferencePolicy: imagev1.TagReferencePolicy{Type: imagev1.SourceTagReferencePolicy},
615615
},
616616
},

pkg/cli/newapp/newapp.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ func NewCmdNewApplication(f kcmdutil.Factory, streams genericiooptions.IOStreams
302302
cmd.Flags().StringVar(&o.Config.SourceSecret, "source-secret", o.Config.SourceSecret, "The name of an existing secret that should be used for cloning a private git repository.")
303303
cmd.Flags().BoolVar(&o.Config.SkipGeneration, "no-install", o.Config.SkipGeneration, "Do not attempt to run images that describe themselves as being installable")
304304
cmd.Flags().BoolVar(&o.Config.BinaryBuild, "binary", o.Config.BinaryBuild, "Instead of expecting a source URL, set the build to expect binary contents. Will disable triggers.")
305-
cmd.Flags().StringVar(&o.Config.ImportMode, "import-mode", o.Config.ImportMode, "Imports the full manifest list of a tag when set to 'PreserveOriginal'. Defaults to 'Legacy'.")
305+
cmd.Flags().StringVar(&o.Config.ImportMode, "import-mode", o.Config.ImportMode, "Imports the full manifest list of a tag when set to 'PreserveOriginal'. When set to 'Legacy', imports a single sub-manifest. When unspecified, the cluster determines the import mode.")
306306

307307
o.Action.BindForOutput(cmd.Flags(), "output", "template")
308308
cmd.Flags().String("output-version", "", "The preferred API versions of the output objects")

pkg/cli/newbuild/newbuild.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ func NewCmdNewBuild(f kcmdutil.Factory, streams genericiooptions.IOStreams) *cob
158158
cmd.Flags().BoolVar(&o.Config.NoOutput, "no-output", o.Config.NoOutput, "If true, the build output will not be pushed anywhere.")
159159
cmd.Flags().StringVar(&o.Config.SourceImage, "source-image", o.Config.SourceImage, "Specify an image to use as source for the build. You must also specify --source-image-path.")
160160
cmd.Flags().StringVar(&o.Config.SourceImagePath, "source-image-path", o.Config.SourceImagePath, "Specify the file or directory to copy from the source image and its destination in the build directory. Format: [source]:[destination-dir].")
161-
cmd.Flags().StringVar(&o.Config.ImportMode, "import-mode", o.Config.ImportMode, "Imports the full manifest list of a tag when set to 'PreserveOriginal'. Defaults to 'Legacy'.")
161+
cmd.Flags().StringVar(&o.Config.ImportMode, "import-mode", o.Config.ImportMode, "Imports the full manifest list of a tag when set to 'PreserveOriginal'. When set to 'Legacy', imports a single sub-manifest. When unspecified, the cluster determines the import mode.")
162162

163163
o.Action.BindForOutput(cmd.Flags(), "output", "template", "sort-by")
164164
cmd.Flags().String("output-version", "", "The preferred API versions of the output objects")

0 commit comments

Comments
 (0)