Skip to content

Commit 4616af6

Browse files
Merge pull request #443 from openshift/importmode-apiserver
MULTIARCH-4558: Set default for imagestreamImportMode based on observed config changes in the image config
2 parents ca5030f + c8310b1 commit 4616af6

File tree

4 files changed

+17
-2
lines changed

4 files changed

+17
-2
lines changed

pkg/cmd/openshift-apiserver/openshiftapiserver/config.go

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
routehostassignment "github.com/openshift/library-go/pkg/route/hostassignment"
1818
"github.com/openshift/openshift-apiserver/pkg/cmd/openshift-apiserver/openshiftadmission"
1919
"github.com/openshift/openshift-apiserver/pkg/cmd/openshift-apiserver/openshiftapiserver/configprocessing"
20+
apisimage "github.com/openshift/openshift-apiserver/pkg/image/apis/image"
2021
"github.com/openshift/openshift-apiserver/pkg/image/apiserver/registryhostname"
2122
"github.com/openshift/openshift-apiserver/pkg/version"
2223
"github.com/spf13/pflag"
@@ -264,6 +265,7 @@ func NewOpenshiftAPIConfig(config *openshiftcontrolplanev1.OpenShiftAPIServerCon
264265
AllowedRegistriesForImport: config.ImagePolicyConfig.AllowedRegistriesForImport,
265266
MaxImagesBulkImportedPerRepository: config.ImagePolicyConfig.MaxImagesBulkImportedPerRepository,
266267
AdditionalTrustedCA: caData,
268+
ImageStreamImportMode: apisimage.ImportModeType(config.ImagePolicyConfig.ImageStreamImportMode),
267269
RouteAllocator: routeAllocator,
268270
AllowRouteExternalCertificates: feature.DefaultFeatureGate.Enabled(featuregate.Feature(openshiftfeatures.FeatureGateRouteExternalCertificate)),
269271
ProjectAuthorizationCache: projectAuthorizationCache,

pkg/cmd/openshift-apiserver/openshiftapiserver/openshift_apiserver.go

+11-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import (
4444
"github.com/openshift/openshift-apiserver/pkg/bootstrappolicy"
4545
buildapiserver "github.com/openshift/openshift-apiserver/pkg/build/apiserver"
4646
"github.com/openshift/openshift-apiserver/pkg/cmd/openshift-apiserver/openshiftapiserver/configprocessing"
47+
apisimage "github.com/openshift/openshift-apiserver/pkg/image/apis/image"
4748
imageapiserver "github.com/openshift/openshift-apiserver/pkg/image/apiserver"
4849
"github.com/openshift/openshift-apiserver/pkg/image/apiserver/registryhostname"
4950
projectapiserver "github.com/openshift/openshift-apiserver/pkg/project/apiserver"
@@ -87,6 +88,7 @@ type OpenshiftAPIExtraConfig struct {
8788
AllowedRegistriesForImport openshiftcontrolplanev1.AllowedRegistries
8889
MaxImagesBulkImportedPerRepository int
8990
AdditionalTrustedCA []byte
91+
ImageStreamImportMode apisimage.ImportModeType
9092

9193
RouteAllocator *routehostassignment.SimpleAllocationPlugin
9294
AllowRouteExternalCertificates bool
@@ -146,7 +148,11 @@ func (c *OpenshiftAPIExtraConfig) Validate() error {
146148
if c.RESTMapper == nil {
147149
ret = append(ret, fmt.Errorf("RESTMapper is required"))
148150
}
149-
151+
if len(c.ImageStreamImportMode) > 0 {
152+
if (c.ImageStreamImportMode != apisimage.ImportModeLegacy) && (c.ImageStreamImportMode != apisimage.ImportModePreserveOriginal) {
153+
ret = append(ret, fmt.Errorf("Invalid value for import mode"))
154+
}
155+
}
150156
return utilerrors.NewAggregate(ret)
151157
}
152158

@@ -505,6 +511,10 @@ func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget)
505511
GenericAPIServer: genericServer,
506512
}
507513

514+
if len(c.ExtraConfig.ImageStreamImportMode) > 0 {
515+
apisimage.DefaultImportMode = c.ExtraConfig.ImageStreamImportMode
516+
}
517+
508518
// this remains a non-healthz endpoint so that you can be healthy without being ready.
509519
addReadinessCheckRoute(s.GenericAPIServer.Handler.NonGoRestfulMux, "/healthz/ready", c.ExtraConfig.ProjectAuthorizationCache.ReadyForAccess)
510520

pkg/image/apis/image/types.go

+2
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,8 @@ const (
298298
ImportModePreserveOriginal ImportModeType = "PreserveOriginal"
299299
)
300300

301+
var DefaultImportMode ImportModeType = ImportModeLegacy
302+
301303
// TagReferencePolicyType describes how pull-specs for images in an image stream tag are generated when
302304
// image change triggers are fired.
303305
type TagReferencePolicyType string

pkg/image/apis/image/v1/defaults.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55

66
imagev1 "github.com/openshift/api/image/v1"
77
"github.com/openshift/library-go/pkg/image/reference"
8+
apisimage "github.com/openshift/openshift-apiserver/pkg/image/apis/image"
89
)
910

1011
func SetDefaults_ImageImportSpec(obj *imagev1.ImageImportSpec) {
@@ -25,6 +26,6 @@ func SetDefaults_TagReferencePolicy(obj *imagev1.TagReferencePolicy) {
2526

2627
func SetDefaults_TagImportPolicy(obj *imagev1.TagImportPolicy) {
2728
if len(obj.ImportMode) == 0 {
28-
obj.ImportMode = imagev1.ImportModeLegacy
29+
obj.ImportMode = imagev1.ImportModeType(apisimage.DefaultImportMode)
2930
}
3031
}

0 commit comments

Comments
 (0)