@@ -9,18 +9,20 @@ import (
99 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1010 "k8s.io/apimachinery/pkg/runtime"
1111 "k8s.io/apimachinery/pkg/runtime/serializer"
12+ utilversion "k8s.io/apimachinery/pkg/util/version"
1213 "k8s.io/apimachinery/pkg/util/wait"
14+ "k8s.io/apimachinery/pkg/version"
1315 genericapiserver "k8s.io/apiserver/pkg/server"
1416 genericapiserveroptions "k8s.io/apiserver/pkg/server/options"
17+ kasversion "k8s.io/apiserver/pkg/util/version"
1518 "k8s.io/client-go/kubernetes"
1619 "k8s.io/klog/v2"
1720
1821 configv1 "github.com/openshift/api/config/v1"
1922 operatorv1alpha1 "github.com/openshift/api/operator/v1alpha1"
2023)
2124
22- func ToServerConfig (ctx context.Context , servingInfo configv1.HTTPServingInfo , authenticationConfig operatorv1alpha1.DelegatedAuthentication , authorizationConfig operatorv1alpha1.DelegatedAuthorization ,
23- kubeConfigFile string , kubeClient * kubernetes.Clientset , le * configv1.LeaderElection , enableHTTP2 bool ) (* genericapiserver.Config , error ) {
25+ func ToServerConfig (ctx context.Context , servingInfo configv1.HTTPServingInfo , authenticationConfig operatorv1alpha1.DelegatedAuthentication , authorizationConfig operatorv1alpha1.DelegatedAuthorization , kubeConfigFile string , kubeClient * kubernetes.Clientset , le * configv1.LeaderElection , enableHTTP2 bool , versionInfo * version.Info ) (* genericapiserver.Config , error ) {
2426 scheme := runtime .NewScheme ()
2527 metav1 .AddToGroupVersion (scheme , metav1 .SchemeGroupVersion )
2628 config := genericapiserver .NewConfig (serializer .NewCodecFactory (scheme ))
@@ -83,6 +85,7 @@ func ToServerConfig(ctx context.Context, servingInfo configv1.HTTPServingInfo, a
8385 }
8486
8587 config .SecureServing .DisableHTTP2 = ! enableHTTP2
88+ config .EffectiveVersion = defaultBuildEffectiveVersion (versionInfo )
8689
8790 return config , nil
8891}
@@ -103,3 +106,17 @@ func assertAPIConnection(ctx context.Context, kubeClient *kubernetes.Clientset,
103106
104107 return nil
105108}
109+
110+ // DefaultBuildEffectiveVersion returns the MutableEffectiveVersion based on the
111+ // current build information.
112+ // Similar to version.DefaultBuildEffectiveVersion
113+ func defaultBuildEffectiveVersion (versionInfo * version.Info ) kasversion.MutableEffectiveVersion {
114+ if versionInfo != nil {
115+ // major.minor passed through gitVersion
116+ parsedVersion , err := utilversion .Parse (versionInfo .String ())
117+ if err == nil && (parsedVersion .Major () != 0 || parsedVersion .Minor () != 0 ) {
118+ return kasversion .NewEffectiveVersion (versionInfo .String ())
119+ }
120+ }
121+ return kasversion .DefaultKubeEffectiveVersion ()
122+ }
0 commit comments