From a88b7bee4bd5e2630f5e1cfc0d40b42ab4e9edb8 Mon Sep 17 00:00:00 2001
From: Leela Venkaiah G <lgangava@ibm.com>
Date: Mon, 18 Mar 2024 12:44:31 +0530
Subject: [PATCH] add suffix for external ceph client secret name during gRPC
 response

when provider & client are running in same namespace the cephclient
secret name clashes and as the contents will be different we'll add a
suffix ".csi" to the secret which wll be managed by client.

Signed-off-by: Leela Venkaiah G <lgangava@ibm.com>
---
 services/provider/server/server.go      |  5 ++++-
 services/provider/server/server_test.go | 23 +++++++++++++++++++++--
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/services/provider/server/server.go b/services/provider/server/server.go
index 4c9b4ebbd8..fd2be28f9f 100644
--- a/services/provider/server/server.go
+++ b/services/provider/server/server.go
@@ -570,7 +570,10 @@ func (s *OCSProviderServer) GetStorageClassClaimConfig(ctx context.Context, req
 				keyProp = "adminKey"
 			}
 			extR = append(extR, &pb.ExternalResource{
-				Name: clientSecretName,
+				// a common suffix '.csi' is being added to distinguish secrets that are created
+				// by ocs-client-operator vs rook-operator when both these operators are deployed in same namespace
+				// TODO: need to transform existing secrets during migration manually
+				Name: clientSecretName + ".csi",
 				Kind: "Secret",
 				Data: mustMarshal(map[string]string{
 					idProp:  cephRes.Name,
diff --git a/services/provider/server/server_test.go b/services/provider/server/server_test.go
index c48752f75b..e7b8cf58aa 100644
--- a/services/provider/server/server_test.go
+++ b/services/provider/server/server_test.go
@@ -5,6 +5,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"strconv"
+	"strings"
 	"testing"
 
 	ocsv1alpha1 "github.com/red-hat-storage/ocs-operator/api/v4/v1alpha1"
@@ -841,6 +842,10 @@ func TestOCSProviderServerGetStorageClassClaimConfig(t *testing.T) {
 			name = fmt.Sprintf("%s-volumesnapshotclass", name)
 		} else if extResource.Kind == "StorageClass" {
 			name = fmt.Sprintf("%s-storageclass", name)
+		} else if extResource.Kind == "Secret" {
+			var found bool
+			name, found = strings.CutSuffix(name, ".csi")
+			assert.True(t, found)
 		}
 		mockResoruce, ok := mockBlockPoolClaimExtR[name]
 		assert.True(t, ok)
@@ -849,7 +854,12 @@ func TestOCSProviderServerGetStorageClassClaimConfig(t *testing.T) {
 		assert.NoError(t, err)
 		assert.Equal(t, string(extResource.Data), string(data))
 		assert.Equal(t, extResource.Kind, mockResoruce.Kind)
-		assert.Equal(t, extResource.Name, mockResoruce.Name)
+		if extResource.Kind == "Secret" {
+			name, _ := strings.CutSuffix(name, ".csi")
+			assert.Equal(t, name, mockResoruce.Name)
+		} else {
+			assert.Equal(t, extResource.Name, mockResoruce.Name)
+		}
 	}
 
 	// get the storage class request config for share filesystem
@@ -868,6 +878,10 @@ func TestOCSProviderServerGetStorageClassClaimConfig(t *testing.T) {
 			name = fmt.Sprintf("%s-volumesnapshotclass", name)
 		} else if extResource.Kind == "StorageClass" {
 			name = fmt.Sprintf("%s-storageclass", name)
+		} else if extResource.Kind == "Secret" {
+			var found bool
+			name, found = strings.CutSuffix(name, ".csi")
+			assert.True(t, found)
 		}
 		mockResoruce, ok := mockShareFilesystemClaimExtR[name]
 		assert.True(t, ok)
@@ -876,7 +890,12 @@ func TestOCSProviderServerGetStorageClassClaimConfig(t *testing.T) {
 		assert.NoError(t, err)
 		assert.Equal(t, string(extResource.Data), string(data))
 		assert.Equal(t, extResource.Kind, mockResoruce.Kind)
-		assert.Equal(t, extResource.Name, mockResoruce.Name)
+		if extResource.Kind == "Secret" {
+			name, _ := strings.CutSuffix(name, ".csi")
+			assert.Equal(t, name, mockResoruce.Name)
+		} else {
+			assert.Equal(t, extResource.Name, mockResoruce.Name)
+		}
 	}
 
 	// When ceph resources is empty