From b5938d9d6d40172b1634b1ee791e050e41a08eca Mon Sep 17 00:00:00 2001 From: gazarenkov Date: Wed, 27 Mar 2024 14:15:36 +0200 Subject: [PATCH 1/5] overwrite only backstage and init-dynamic-plugins image --- api/v1alpha1/backstage_types.go | 2 +- controllers/backstage_controller_test.go | 4 +++- controllers/backstage_deployment.go | 17 ++++++++++------- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/api/v1alpha1/backstage_types.go b/api/v1alpha1/backstage_types.go index 6e9d2098..9c09e822 100644 --- a/api/v1alpha1/backstage_types.go +++ b/api/v1alpha1/backstage_types.go @@ -180,7 +180,7 @@ type Env struct { type RuntimeConfig struct { // Name of ConfigMap containing Backstage runtime objects configuration BackstageConfigName string `json:"backstageConfig,omitempty"` - // Name of ConfigMap containing LocalDb (P|ostgreSQL) runtime objects configuration + // Name of ConfigMap containing LocalDb (PostgreSQL) runtime objects configuration LocalDbConfigName string `json:"localDbConfig,omitempty"` } diff --git a/controllers/backstage_controller_test.go b/controllers/backstage_controller_test.go index f9550cbd..2e2b6d82 100644 --- a/controllers/backstage_controller_test.go +++ b/controllers/backstage_controller_test.go @@ -1315,7 +1315,9 @@ plugins: [] By("Checking that the image was set on all containers in the Pod Spec") visitContainers(&found.Spec.Template, func(container *corev1.Container) { By(fmt.Sprintf("Checking Image in the Backstage Deployment - container: %q", container.Name), func() { - Expect(container.Image).Should(Equal(imageName)) + if container.Image == _defaultBackstageMainContainerName || container.Image == _defaultBackstageInitContainerName { + Expect(container.Image).Should(Equal(imageName)) + } }) }) diff --git a/controllers/backstage_deployment.go b/controllers/backstage_deployment.go index 6a02d382..16700a07 100644 --- a/controllers/backstage_deployment.go +++ b/controllers/backstage_deployment.go @@ -195,10 +195,7 @@ func (r *BackstageReconciler) validateAndUpdatePsqlSecretRef(backstage bs.Backst func (r *BackstageReconciler) setDefaultDeploymentImage(deployment *appsv1.Deployment) { if envBackstageImage != "" { - visitContainers(&deployment.Spec.Template, func(container *v1.Container) { - container.Image = envBackstageImage - - }) + setBackstageImage(deployment, envBackstageImage) } } @@ -212,9 +209,7 @@ func (r *BackstageReconciler) applyApplicationParamsFromCR(backstage bs.Backstag if backstage.Spec.Application != nil { deployment.Spec.Replicas = backstage.Spec.Application.Replicas if backstage.Spec.Application.Image != nil { - visitContainers(&deployment.Spec.Template, func(container *v1.Container) { - container.Image = *backstage.Spec.Application.Image - }) + setBackstageImage(deployment, *backstage.Spec.Application.Image) } if backstage.Spec.Application.ImagePullSecrets != nil { // use image pull secrets from the CR spec deployment.Spec.Template.Spec.ImagePullSecrets = nil @@ -236,3 +231,11 @@ func getDefaultObjName(backstage bs.Backstage) string { func getDefaultDbObjName(backstage bs.Backstage) string { return fmt.Sprintf("backstage-psql-%s", backstage.Name) } + +func setBackstageImage(deployment *appsv1.Deployment, imageName string) { + visitContainers(&deployment.Spec.Template, func(container *v1.Container) { + if container.Image == _defaultBackstageMainContainerName || container.Image == _defaultBackstageInitContainerName { + container.Image = imageName + } + }) +} From 02a88a3f0d72b1054cd5df6768b6f8868d46e9ea Mon Sep 17 00:00:00 2001 From: gazarenkov Date: Wed, 27 Mar 2024 17:49:54 +0200 Subject: [PATCH 2/5] overwrite only backstage and init-dynamic-plugins image --- controllers/backstage_controller_test.go | 2 +- controllers/backstage_deployment.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/backstage_controller_test.go b/controllers/backstage_controller_test.go index 2e2b6d82..f4659358 100644 --- a/controllers/backstage_controller_test.go +++ b/controllers/backstage_controller_test.go @@ -1315,7 +1315,7 @@ plugins: [] By("Checking that the image was set on all containers in the Pod Spec") visitContainers(&found.Spec.Template, func(container *corev1.Container) { By(fmt.Sprintf("Checking Image in the Backstage Deployment - container: %q", container.Name), func() { - if container.Image == _defaultBackstageMainContainerName || container.Image == _defaultBackstageInitContainerName { + if container.Name == _defaultBackstageMainContainerName || container.Name == _defaultBackstageInitContainerName { Expect(container.Image).Should(Equal(imageName)) } }) diff --git a/controllers/backstage_deployment.go b/controllers/backstage_deployment.go index 16700a07..8c3d24d1 100644 --- a/controllers/backstage_deployment.go +++ b/controllers/backstage_deployment.go @@ -234,7 +234,7 @@ func getDefaultDbObjName(backstage bs.Backstage) string { func setBackstageImage(deployment *appsv1.Deployment, imageName string) { visitContainers(&deployment.Spec.Template, func(container *v1.Container) { - if container.Image == _defaultBackstageMainContainerName || container.Image == _defaultBackstageInitContainerName { + if container.Name == _defaultBackstageMainContainerName || container.Name == _defaultBackstageInitContainerName { container.Image = imageName } }) From 5c9ea93875e659e10493a90079ad2e1f90ae326f Mon Sep 17 00:00:00 2001 From: gazarenkov Date: Wed, 27 Mar 2024 18:05:40 +0200 Subject: [PATCH 3/5] overwrite only backstage and init-dynamic-plugins image --- api/v1alpha1/backstage_types.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/v1alpha1/backstage_types.go b/api/v1alpha1/backstage_types.go index 9c09e822..6e9d2098 100644 --- a/api/v1alpha1/backstage_types.go +++ b/api/v1alpha1/backstage_types.go @@ -180,7 +180,7 @@ type Env struct { type RuntimeConfig struct { // Name of ConfigMap containing Backstage runtime objects configuration BackstageConfigName string `json:"backstageConfig,omitempty"` - // Name of ConfigMap containing LocalDb (PostgreSQL) runtime objects configuration + // Name of ConfigMap containing LocalDb (P|ostgreSQL) runtime objects configuration LocalDbConfigName string `json:"localDbConfig,omitempty"` } From 06f5aaa4da742104504c04243b7c0d8e3f521724 Mon Sep 17 00:00:00 2001 From: gazarenkov Date: Wed, 27 Mar 2024 21:12:45 +0200 Subject: [PATCH 4/5] overwrite only backstage and init-dynamic-plugins image --- .../crd/bases/rhdh.redhat.com_backstages.yaml | 2 +- controllers/backstage_controller_test.go | 27 +++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/config/crd/bases/rhdh.redhat.com_backstages.yaml b/config/crd/bases/rhdh.redhat.com_backstages.yaml index 64c18360..248b9737 100644 --- a/config/crd/bases/rhdh.redhat.com_backstages.yaml +++ b/config/crd/bases/rhdh.redhat.com_backstages.yaml @@ -292,7 +292,7 @@ spec: configuration type: string localDbConfig: - description: Name of ConfigMap containing LocalDb (PostgreSQL) + description: Name of ConfigMap containing LocalDb (P|ostgreSQL) runtime objects configuration type: string type: object diff --git a/controllers/backstage_controller_test.go b/controllers/backstage_controller_test.go index f4659358..e8d04c53 100644 --- a/controllers/backstage_controller_test.go +++ b/controllers/backstage_controller_test.go @@ -490,14 +490,23 @@ spec: app: bs1 spec: containers: - - name: bs1 + - name: backstage-backend + image: busybox + - name: sidecar + image: busybox + initContainers: + - name: install-dynamic-plugins image: busybox `, }) err := k8sClient.Create(ctx, backstageConfigMap) Expect(err).To(Not(HaveOccurred())) + img := "backstage" backstage = buildBackstageCR(bsv1alpha1.BackstageSpec{ + Application: &bsv1alpha1.Application{ + Image: &img, + }, RawRuntimeConfig: bsv1alpha1.RuntimeConfig{ BackstageConfigName: backstageConfigMap.Name, }, @@ -523,7 +532,21 @@ spec: By("Checking if Deployment was successfully created in the reconciliation") Eventually(func() error { found := &appsv1.Deployment{} - return k8sClient.Get(ctx, types.NamespacedName{Namespace: ns, Name: getDefaultObjName(*backstage)}, found) + if err := k8sClient.Get(ctx, types.NamespacedName{Namespace: ns, Name: getDefaultObjName(*backstage)}, found); err != nil { + return err + } + Expect(len(found.Spec.Template.Spec.Containers)).To(Equal(2)) + for i, c := range found.Spec.Template.Spec.Containers { + if c.Name == _defaultBackstageMainContainerName { + Expect(found.Spec.Template.Spec.Containers[i].Image).To(Equal("backstage")) + } else { + Expect(found.Spec.Template.Spec.Containers[i].Image).To(Equal("busybox")) + } + } + Expect(len(found.Spec.Template.Spec.InitContainers)).To(Equal(1)) + Expect(found.Spec.Template.Spec.InitContainers[0].Image).To(Equal("backstage")) + + return nil }, time.Minute, time.Second).Should(Succeed()) By("Checking the latest Status added to the Backstage instance") From 7cc96908418d48e3cb433499376498bb5f3620f5 Mon Sep 17 00:00:00 2001 From: gazarenkov Date: Tue, 2 Apr 2024 15:54:28 +0300 Subject: [PATCH 5/5] fix Postgre description --- api/v1alpha1/backstage_types.go | 2 +- config/crd/bases/rhdh.redhat.com_backstages.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api/v1alpha1/backstage_types.go b/api/v1alpha1/backstage_types.go index 6e9d2098..9c09e822 100644 --- a/api/v1alpha1/backstage_types.go +++ b/api/v1alpha1/backstage_types.go @@ -180,7 +180,7 @@ type Env struct { type RuntimeConfig struct { // Name of ConfigMap containing Backstage runtime objects configuration BackstageConfigName string `json:"backstageConfig,omitempty"` - // Name of ConfigMap containing LocalDb (P|ostgreSQL) runtime objects configuration + // Name of ConfigMap containing LocalDb (PostgreSQL) runtime objects configuration LocalDbConfigName string `json:"localDbConfig,omitempty"` } diff --git a/config/crd/bases/rhdh.redhat.com_backstages.yaml b/config/crd/bases/rhdh.redhat.com_backstages.yaml index 248b9737..64c18360 100644 --- a/config/crd/bases/rhdh.redhat.com_backstages.yaml +++ b/config/crd/bases/rhdh.redhat.com_backstages.yaml @@ -292,7 +292,7 @@ spec: configuration type: string localDbConfig: - description: Name of ConfigMap containing LocalDb (P|ostgreSQL) + description: Name of ConfigMap containing LocalDb (PostgreSQL) runtime objects configuration type: string type: object