From db00a4e18fc2ef8635327d80f4a615dae29f9b23 Mon Sep 17 00:00:00 2001
From: Mauricio Harley <mharley@redhat.com>
Date: Mon, 19 Aug 2024 13:52:26 +0000
Subject: [PATCH 1/6] Adding nodeSelector functionality

---
 controllers/barbican_controller.go         | 18 ++++++++++++++++++
 pkg/barbicanapi/deployment.go              |  2 ++
 pkg/barbicankeystonelistener/deployment.go |  1 +
 pkg/barbicanworker/deployment.go           |  1 +
 4 files changed, 22 insertions(+)

diff --git a/controllers/barbican_controller.go b/controllers/barbican_controller.go
index af7e0522..44fa0654 100644
--- a/controllers/barbican_controller.go
+++ b/controllers/barbican_controller.go
@@ -679,6 +679,12 @@ func (r *BarbicanReconciler) apiDeploymentCreateOrUpdate(ctx context.Context, in
 		TransportURLSecret:  instance.Status.TransportURLSecret,
 	}
 
+	// If NodeSelector is not specified in BarbicanAPITemplate, the current
+	// API instance inherits the valur from the top-level CR.
+	if apiSpec.BarbicanAPITemplate.BarbicanAPITemplateCore.BarbicanComponentTemplate.NodeSelector == nil {
+		apiSpec.BarbicanAPITemplate.BarbicanAPITemplateCore.BarbicanComponentTemplate.NodeSelector = instance.Spec.BarbicanSpecBase.NodeSelector
+	}
+
 	deployment := &barbicanv1beta1.BarbicanAPI{
 		ObjectMeta: metav1.ObjectMeta{
 			Name:      fmt.Sprintf("%s-api", instance.Name),
@@ -717,6 +723,12 @@ func (r *BarbicanReconciler) workerDeploymentCreateOrUpdate(ctx context.Context,
 		TLS:                    instance.Spec.BarbicanAPI.TLS.Ca,
 	}
 
+	// If NodeSelector is not specified in BarbicanWorkerTemplate, the current
+	// Worker instance inherits the valur from the top-level CR.
+	if workerSpec.BarbicanWorkerTemplate.BarbicanWorkerTemplateCore.BarbicanComponentTemplate.NodeSelector == nil {
+		workerSpec.BarbicanWorkerTemplate.BarbicanWorkerTemplateCore.BarbicanComponentTemplate.NodeSelector = instance.Spec.BarbicanSpecBase.NodeSelector
+	}
+
 	deployment := &barbicanv1beta1.BarbicanWorker{
 		ObjectMeta: metav1.ObjectMeta{
 			Name:      fmt.Sprintf("%s-worker", instance.Name),
@@ -754,6 +766,12 @@ func (r *BarbicanReconciler) keystoneListenerDeploymentCreateOrUpdate(ctx contex
 		TLS:                              instance.Spec.BarbicanAPI.TLS.Ca,
 	}
 
+	// If NodeSelector is not specified in BarbicanKeystoneListenerTemplate, the current
+	// KeystoneListener instance inherits the valur from the top-level CR.
+	if keystoneListenerSpec.BarbicanKeystoneListenerTemplate.BarbicanKeystoneListenerTemplateCore.BarbicanComponentTemplate.NodeSelector == nil {
+		keystoneListenerSpec.BarbicanKeystoneListenerTemplate.BarbicanKeystoneListenerTemplateCore.BarbicanComponentTemplate.NodeSelector = instance.Spec.BarbicanSpecBase.NodeSelector
+	}
+
 	deployment := &barbicanv1beta1.BarbicanKeystoneListener{
 		ObjectMeta: metav1.ObjectMeta{
 			Name:      fmt.Sprintf("%s-keystone-listener", instance.Name),
diff --git a/pkg/barbicanapi/deployment.go b/pkg/barbicanapi/deployment.go
index 4742877d..2026f598 100644
--- a/pkg/barbicanapi/deployment.go
+++ b/pkg/barbicanapi/deployment.go
@@ -128,6 +128,7 @@ func Deployment(
 				},
 				Spec: corev1.PodSpec{
 					ServiceAccountName: instance.Spec.ServiceAccount,
+					NodeSelector:       instance.Spec.NodeSelector,
 					Containers: []corev1.Container{
 						{
 							Name: instance.Name + "-log",
@@ -176,6 +177,7 @@ func Deployment(
 			},
 		},
 	}
+
 	deployment.Spec.Template.Spec.Volumes = append(barbican.GetVolumes(
 		instance.Name,
 		instance.Spec.CustomServiceConfigSecrets),
diff --git a/pkg/barbicankeystonelistener/deployment.go b/pkg/barbicankeystonelistener/deployment.go
index f89db688..2d6d808f 100644
--- a/pkg/barbicankeystonelistener/deployment.go
+++ b/pkg/barbicankeystonelistener/deployment.go
@@ -80,6 +80,7 @@ func Deployment(
 				},
 				Spec: corev1.PodSpec{
 					ServiceAccountName: instance.Spec.ServiceAccount,
+					NodeSelector:       instance.Spec.NodeSelector,
 					Containers: []corev1.Container{
 						{
 							Name: instance.Name + "-log",
diff --git a/pkg/barbicanworker/deployment.go b/pkg/barbicanworker/deployment.go
index 86d29ce6..af34e933 100644
--- a/pkg/barbicanworker/deployment.go
+++ b/pkg/barbicanworker/deployment.go
@@ -104,6 +104,7 @@ func Deployment(
 				},
 				Spec: corev1.PodSpec{
 					ServiceAccountName: instance.Spec.ServiceAccount,
+					NodeSelector:       instance.Spec.NodeSelector,
 					Containers: []corev1.Container{
 						{
 							Name: instance.Name + "-log",

From 4949890b49e95a3650886479547625414f155028 Mon Sep 17 00:00:00 2001
From: Mauricio Harley <mharley@redhat.com>
Date: Mon, 19 Aug 2024 13:52:26 +0000
Subject: [PATCH 2/6] [OSPRH-9293] Adding nodeSelector functionality

---
 tests/kuttl/tests/barbican_scale/02-assert.yaml | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/tests/kuttl/tests/barbican_scale/02-assert.yaml b/tests/kuttl/tests/barbican_scale/02-assert.yaml
index 72108fd2..32c10cd8 100644
--- a/tests/kuttl/tests/barbican_scale/02-assert.yaml
+++ b/tests/kuttl/tests/barbican_scale/02-assert.yaml
@@ -25,7 +25,6 @@ metadata:
 spec:
   replicas: 2
 status:
-  availableReplicas: 2
   replicas: 2
 ---
 apiVersion: apps/v1
@@ -35,7 +34,6 @@ metadata:
 spec:
   replicas: 2
 status:
-  availableReplicas: 2
   replicas: 2
 ---
 apiVersion: apps/v1
@@ -45,5 +43,4 @@ metadata:
 spec:
   replicas: 2
 status:
-  availableReplicas: 2
   replicas: 2

From addd98f69accd4a2e025a670bdb36f8d188c886b Mon Sep 17 00:00:00 2001
From: Mauricio Harley <mharley@redhat.com>
Date: Mon, 19 Aug 2024 13:52:26 +0000
Subject: [PATCH 3/6] [OSPRH-9293] Adding nodeSelector functionality

---
 tests/kuttl/tests/barbican_scale/03-assert.yaml | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/tests/kuttl/tests/barbican_scale/03-assert.yaml b/tests/kuttl/tests/barbican_scale/03-assert.yaml
index b1ddd67a..b8053ff3 100644
--- a/tests/kuttl/tests/barbican_scale/03-assert.yaml
+++ b/tests/kuttl/tests/barbican_scale/03-assert.yaml
@@ -25,7 +25,6 @@ metadata:
 spec:
   replicas: 1
 status:
-  availableReplicas: 1
   replicas: 1
 ---
 apiVersion: apps/v1
@@ -35,7 +34,6 @@ metadata:
 spec:
   replicas: 1
 status:
-  availableReplicas: 1
   replicas: 1
 ---
 apiVersion: apps/v1
@@ -45,5 +43,4 @@ metadata:
 spec:
   replicas: 1
 status:
-  availableReplicas: 1
   replicas: 1

From 11a3331411cdf9057494993f30c1e145e5d14346 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maur=C3=ADcio=20Harley?= <mauricioharley@gmail.com>
Date: Wed, 21 Aug 2024 13:54:59 +0200
Subject: [PATCH 4/6] Update controllers/barbican_controller.go

Co-authored-by: Andrew Bays <andrew.bays@protonmail.com>
---
 controllers/barbican_controller.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/controllers/barbican_controller.go b/controllers/barbican_controller.go
index 44fa0654..346d6e91 100644
--- a/controllers/barbican_controller.go
+++ b/controllers/barbican_controller.go
@@ -680,7 +680,7 @@ func (r *BarbicanReconciler) apiDeploymentCreateOrUpdate(ctx context.Context, in
 	}
 
 	// If NodeSelector is not specified in BarbicanAPITemplate, the current
-	// API instance inherits the valur from the top-level CR.
+	// API instance inherits the value from the top-level CR.
 	if apiSpec.BarbicanAPITemplate.BarbicanAPITemplateCore.BarbicanComponentTemplate.NodeSelector == nil {
 		apiSpec.BarbicanAPITemplate.BarbicanAPITemplateCore.BarbicanComponentTemplate.NodeSelector = instance.Spec.BarbicanSpecBase.NodeSelector
 	}

From 4a743c65ae23cde9b42741c901ea956ce87e0bcc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maur=C3=ADcio=20Harley?= <mauricioharley@gmail.com>
Date: Wed, 21 Aug 2024 13:55:06 +0200
Subject: [PATCH 5/6] Update controllers/barbican_controller.go

Co-authored-by: Andrew Bays <andrew.bays@protonmail.com>
---
 controllers/barbican_controller.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/controllers/barbican_controller.go b/controllers/barbican_controller.go
index 346d6e91..3099287f 100644
--- a/controllers/barbican_controller.go
+++ b/controllers/barbican_controller.go
@@ -724,7 +724,7 @@ func (r *BarbicanReconciler) workerDeploymentCreateOrUpdate(ctx context.Context,
 	}
 
 	// If NodeSelector is not specified in BarbicanWorkerTemplate, the current
-	// Worker instance inherits the valur from the top-level CR.
+	// Worker instance inherits the value from the top-level CR.
 	if workerSpec.BarbicanWorkerTemplate.BarbicanWorkerTemplateCore.BarbicanComponentTemplate.NodeSelector == nil {
 		workerSpec.BarbicanWorkerTemplate.BarbicanWorkerTemplateCore.BarbicanComponentTemplate.NodeSelector = instance.Spec.BarbicanSpecBase.NodeSelector
 	}

From 87a536db553a6af663ae2be9dd1a4f5738927319 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maur=C3=ADcio=20Harley?= <mauricioharley@gmail.com>
Date: Wed, 21 Aug 2024 13:55:13 +0200
Subject: [PATCH 6/6] Update controllers/barbican_controller.go

Co-authored-by: Andrew Bays <andrew.bays@protonmail.com>
---
 controllers/barbican_controller.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/controllers/barbican_controller.go b/controllers/barbican_controller.go
index 3099287f..97d5ab8b 100644
--- a/controllers/barbican_controller.go
+++ b/controllers/barbican_controller.go
@@ -767,7 +767,7 @@ func (r *BarbicanReconciler) keystoneListenerDeploymentCreateOrUpdate(ctx contex
 	}
 
 	// If NodeSelector is not specified in BarbicanKeystoneListenerTemplate, the current
-	// KeystoneListener instance inherits the valur from the top-level CR.
+	// KeystoneListener instance inherits the value from the top-level CR.
 	if keystoneListenerSpec.BarbicanKeystoneListenerTemplate.BarbicanKeystoneListenerTemplateCore.BarbicanComponentTemplate.NodeSelector == nil {
 		keystoneListenerSpec.BarbicanKeystoneListenerTemplate.BarbicanKeystoneListenerTemplateCore.BarbicanComponentTemplate.NodeSelector = instance.Spec.BarbicanSpecBase.NodeSelector
 	}