From a4941bd657ed5ddfd0704079167fc51bfbbf2198 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= <csviri@gmail.com>
Date: Thu, 16 May 2024 15:43:43 +0200
Subject: [PATCH] feat(operator): support test pull secret
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Attila Mészáros <csviri@gmail.com>
---
 internal/common/constants.go               |  1 +
 internal/controller/insights.go            | 11 ++++++++++-
 internal/controller/insights_controller.go | 10 +++++++---
 3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/internal/common/constants.go b/internal/common/constants.go
index 1c0f485..9e8e678 100644
--- a/internal/common/constants.go
+++ b/internal/common/constants.go
@@ -23,6 +23,7 @@ const (
 	EnvInsightsBackendDomain = "INSIGHTS_BACKEND_DOMAIN"
 	EnvInsightsProxyDomain   = "INSIGHTS_PROXY_DOMAIN"
 	EnvInsightsEnabled       = "INSIGHTS_ENABLED"
+	EnvTestPullSecretName    = "INSIGHTS_TEST_PULL_SECRET_NAME"
 	// Environment variable to override the Insights proxy image
 	EnvInsightsProxyImageTag = "RELATED_IMAGE_INSIGHTS_PROXY"
 )
diff --git a/internal/controller/insights.go b/internal/controller/insights.go
index 3551094..f72aa14 100644
--- a/internal/controller/insights.go
+++ b/internal/controller/insights.go
@@ -120,7 +120,16 @@ func (r *InsightsReconciler) reconcileProxyService(ctx context.Context) error {
 func (r *InsightsReconciler) getTokenFromPullSecret(ctx context.Context) (*string, error) {
 	// Get the global pull secret
 	pullSecret := &corev1.Secret{}
-	err := r.Client.Get(ctx, types.NamespacedName{Namespace: "openshift-config", Name: "pull-secret"}, pullSecret)
+
+	var pullSecretName = "pull-secret"
+	var pullSecretNamespace = "openshift-config"
+
+	if len(r.testPullSecretName) > 0 {
+		pullSecretName = r.testPullSecretName
+		pullSecretNamespace = r.Namespace
+	}
+
+	err := r.Client.Get(ctx, types.NamespacedName{Namespace: pullSecretNamespace, Name: pullSecretName}, pullSecret)
 	if err != nil {
 		return nil, err
 	}
diff --git a/internal/controller/insights_controller.go b/internal/controller/insights_controller.go
index bba3c1f..b6501df 100644
--- a/internal/controller/insights_controller.go
+++ b/internal/controller/insights_controller.go
@@ -35,9 +35,10 @@ import (
 // InsightsReconciler reconciles the Insights proxy for Cryostat agents
 type InsightsReconciler struct {
 	*InsightsReconcilerConfig
-	backendDomain string
-	proxyDomain   string
-	proxyImageTag string
+	backendDomain      string
+	proxyDomain        string
+	proxyImageTag      string
+	testPullSecretName string
 }
 
 // InsightsReconcilerConfig contains configuration to create an InsightsReconciler
@@ -61,12 +62,15 @@ func NewInsightsReconciler(config *InsightsReconcilerConfig) (*InsightsReconcile
 		return nil, errors.New("no proxy image tag provided for Insights")
 	}
 	proxyDomain := config.GetEnv(common.EnvInsightsProxyDomain)
+	// the pull secret might be empty
+	testPullSecret := config.GetEnv(common.EnvTestPullSecretName)
 
 	return &InsightsReconciler{
 		InsightsReconcilerConfig: config,
 		backendDomain:            backendDomain,
 		proxyDomain:              proxyDomain,
 		proxyImageTag:            imageTag,
+		testPullSecretName:       testPullSecret,
 	}, nil
 }