@@ -82,6 +82,7 @@ func customizeObjectsFn(provider operatorv1.GenericProvider) func(objs []unstruc
8282
8383 providerDeployment := provider .GetSpec ().Deployment
8484 providerManager := provider .GetSpec ().Manager
85+ providerVersion := provider .GetSpec ().Version
8586
8687 // If there are multiple deployments, check if we specify customizations for those deployments.
8788 // We need to skip the deployment customization if there are several deployments available
@@ -107,7 +108,7 @@ func customizeObjectsFn(provider operatorv1.GenericProvider) func(objs []unstruc
107108 providerManager = additionalProviderCustomization .Manager
108109 }
109110
110- if err := customizeDeployment (providerDeployment , providerManager , d ); err != nil {
111+ if err := customizeDeployment (providerDeployment , providerManager , d , providerVersion ); err != nil {
111112 return nil , err
112113 }
113114
@@ -124,7 +125,7 @@ func customizeObjectsFn(provider operatorv1.GenericProvider) func(objs []unstruc
124125}
125126
126127// customizeDeployment customize provider deployment base on provider spec input.
127- func customizeDeployment (dSpec * operatorv1.DeploymentSpec , mSpec * operatorv1.ManagerSpec , d * appsv1.Deployment ) error {
128+ func customizeDeployment (dSpec * operatorv1.DeploymentSpec , mSpec * operatorv1.ManagerSpec , d * appsv1.Deployment , providerVersion string ) error {
128129 // Customize deployment spec first.
129130 if dSpec != nil {
130131 customizeDeploymentSpec (* dSpec , d )
@@ -137,7 +138,7 @@ func customizeDeployment(dSpec *operatorv1.DeploymentSpec, mSpec *operatorv1.Man
137138 return fmt .Errorf ("cannot find %q container in deployment %q" , managerContainerName , d .Name )
138139 }
139140
140- customizeManagerContainer (mSpec , container )
141+ customizeManagerContainer (mSpec , container , providerVersion )
141142 }
142143
143144 return nil
@@ -183,7 +184,9 @@ func findManagerContainer(dSpec *appsv1.DeploymentSpec) *corev1.Container {
183184}
184185
185186// customizeManagerContainer customize manager container base on provider spec input.
186- func customizeManagerContainer (mSpec * operatorv1.ManagerSpec , c * corev1.Container ) {
187+ func customizeManagerContainer (mSpec * operatorv1.ManagerSpec , c * corev1.Container , providerVersion string ) {
188+ c .Image = addImageVersionIfMissing (c .Image , providerVersion )
189+
187190 // ControllerManagerConfigurationSpec fields
188191 if mSpec .Controller != nil {
189192 // TODO can't find an arg for CacheSyncTimeout
@@ -378,3 +381,11 @@ func isMultipleDeployments(objs []unstructured.Unstructured) bool {
378381func isProviderManagerDeploymentName (name string ) bool {
379382 return strings .HasPrefix (name , "ca" ) && strings .HasSuffix (name , "-controller-manager" )
380383}
384+
385+ func addImageVersionIfMissing (image , version string ) string {
386+ if strings .Contains (image , ":" ) || strings .Contains (image , "@sha256:" ) {
387+ return image
388+ }
389+
390+ return fmt .Sprintf ("%s:%s" , image , version )
391+ }
0 commit comments