9
9
"time"
10
10
11
11
"golang.org/x/exp/slices"
12
- k8simage "k8s.io/kubernetes/test/utils/image"
13
12
13
+ "github.com/openshift-eng/openshift-tests-extension/pkg/extension"
14
14
"github.com/openshift/library-go/pkg/image/reference"
15
15
"github.com/openshift/origin/pkg/clioptions/imagesetup"
16
16
"github.com/openshift/origin/pkg/cmd"
@@ -19,6 +19,7 @@ import (
19
19
"github.com/spf13/cobra"
20
20
"k8s.io/kube-openapi/pkg/util/sets"
21
21
"k8s.io/kubectl/pkg/util/templates"
22
+ k8simage "k8s.io/kubernetes/test/utils/image"
22
23
)
23
24
24
25
func NewImagesCommand () * cobra.Command {
@@ -112,14 +113,10 @@ type imagesOptions struct {
112
113
// TAG is the hash described above.
113
114
func createImageMirrorForInternalImages (prefix string , ref reference.DockerImageReference , mirrored bool ) ([]string , error ) {
114
115
source := ref .Exact ()
115
-
116
- initialImageSets := []extensions.ImageSet {
117
- k8simage .GetOriginalImageConfigs (),
118
- }
116
+ externalImageSets := []extension.Image {}
119
117
120
118
// If ENV is not set, the list of images should come from external binaries
121
119
if len (os .Getenv ("OPENSHIFT_SKIP_EXTERNAL_TESTS" )) == 0 {
122
- // Extract all test binaries
123
120
extractionContext , extractionContextCancel := context .WithTimeout (context .Background (), 30 * time .Minute )
124
121
defer extractionContextCancel ()
125
122
cleanUpFn , externalBinaries , err := extensions .ExtractAllTestBinaries (extractionContext , 10 )
@@ -138,30 +135,34 @@ func createImageMirrorForInternalImages(prefix string, ref reference.DockerImage
138
135
if len (imageSetsFromBinaries ) == 0 {
139
136
return nil , fmt .Errorf ("no test images were reported by external binaries" )
140
137
}
141
- initialImageSets = imageSetsFromBinaries
138
+ externalImageSets = imageSetsFromBinaries
142
139
}
143
140
144
141
// Take the initial images coming from external binaries and remove any exceptions that might exist.
142
+ // Also, split the images into default, updated, and initial sets (initial set is the images that are not mapped)
145
143
exceptions := image .Exceptions .List ()
146
144
defaultImageSets := []extensions.ImageSet {}
147
- for i := range initialImageSets {
148
- filtered := extensions.ImageSet {}
149
- for imageID , imageConfig := range initialImageSets [i ] {
150
- if ! slices .ContainsFunc (exceptions , func (e string ) bool {
151
- return strings .Contains (imageConfig .GetE2EImage (), e )
152
- }) {
153
- filtered [imageID ] = imageConfig
145
+ updatedImageSets := []extensions.ImageSet {}
146
+ initialImageSets := []extensions.ImageSet {}
147
+ for _ , image := range externalImageSets {
148
+ originalImage := covertMappedImageToImageSet (image )
149
+ imageConfig := originalImage [k8simage .ImageID (image .Index )]
150
+ if ! slices .ContainsFunc (exceptions , func (e string ) bool {
151
+ return strings .Contains (imageConfig .GetE2EImage (), e )
152
+ }) {
153
+ defaultImageSets = append (defaultImageSets , originalImage )
154
+ if image .Mapped != nil {
155
+ mappedImage := covertMappedImageToImageSet (* image .Mapped )
156
+ updatedImageSets = append (updatedImageSets , mappedImage )
157
+ } else {
158
+ initialImageSets = append (initialImageSets , originalImage )
154
159
}
155
160
}
156
- if len (filtered ) > 0 {
157
- defaultImageSets = append (defaultImageSets , filtered )
158
- }
159
161
}
160
162
161
- // Created a new slice with the updatedImageSets addresses for the images
162
- updatedImageSets := []extensions.ImageSet {}
163
- for i := range defaultImageSets {
164
- updatedImageSets = append (updatedImageSets , k8simage .GetMappedImageConfigs (defaultImageSets [i ], ref .Exact ()))
163
+ // Map initial images to the target repository
164
+ for i := range initialImageSets {
165
+ updatedImageSets = append (updatedImageSets , k8simage .GetMappedImageConfigs (initialImageSets [i ], ref .Exact ()))
165
166
}
166
167
167
168
openshiftDefaults := image .OriginalImages ()
@@ -178,9 +179,9 @@ func createImageMirrorForInternalImages(prefix string, ref reference.DockerImage
178
179
covered := sets .NewString ()
179
180
for i := range updatedImageSets {
180
181
for imageID , imageConfig := range updatedImageSets [i ] {
181
- defaultConfig := defaultImageSets [i ][imageID ]
182
+ originalConfig := defaultImageSets [i ][imageID ]
182
183
pullSpec := imageConfig .GetE2EImage ()
183
- if pullSpec == defaultConfig .GetE2EImage () {
184
+ if pullSpec == originalConfig .GetE2EImage () {
184
185
continue
185
186
}
186
187
if covered .Has (pullSpec ) {
@@ -250,3 +251,14 @@ func createImageMirrorForInternalImages(prefix string, ref reference.DockerImage
250
251
sort .Strings (lines )
251
252
return lines , nil
252
253
}
254
+
255
+ func covertMappedImageToImageSet (image extension.Image ) extensions.ImageSet {
256
+ imageSet := extensions.ImageSet {}
257
+ imageConfig := k8simage.Config {}
258
+ imageConfig .SetName (image .Name )
259
+ imageConfig .SetVersion (image .Version )
260
+ imageConfig .SetRegistry (image .Registry )
261
+ imageSet [k8simage .ImageID (image .Index )] = imageConfig
262
+
263
+ return imageSet
264
+ }
0 commit comments