From c1977526e005232df46155075047cb989d9c417f Mon Sep 17 00:00:00 2001 From: liuwei Date: Wed, 16 Sep 2020 10:29:43 +0800 Subject: [PATCH] rollback init clusername and agentname in secret --- pkg/spoke/hubclientcert/controller.go | 15 +++++++++++++++ pkg/spoke/hubclientcert/controller_test.go | 18 +++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/pkg/spoke/hubclientcert/controller.go b/pkg/spoke/hubclientcert/controller.go index 8ce8f6f55..839a3bb89 100644 --- a/pkg/spoke/hubclientcert/controller.go +++ b/pkg/spoke/hubclientcert/controller.go @@ -5,6 +5,7 @@ import ( "crypto/tls" "crypto/x509/pkix" "fmt" + "reflect" "time" "github.com/openshift/library-go/pkg/controller/factory" @@ -142,6 +143,20 @@ func (c *ClientCertForHubController) sync(ctx context.Context, syncCtx factory.S return nil } + // save the cluster name and agent name into secret if they are not saved yet + newSecretConfig := map[string][]byte{} + for k, v := range secret.Data { + newSecretConfig[k] = v + } + newSecretConfig[ClusterNameFile] = []byte(c.clusterName) + newSecretConfig[AgentNameFile] = []byte(c.agentName) + if !reflect.DeepEqual(newSecretConfig, secret.Data) { + secret.Data = newSecretConfig + if err := c.saveHubKubeconfigSecret(secret); err != nil { + return err + } + } + // create a csr to request new client certificate if // a. there is no client certificate // b. client certificate exists and has less than 20% of its life remaining diff --git a/pkg/spoke/hubclientcert/controller_test.go b/pkg/spoke/hubclientcert/controller_test.go index 7a83f2769..98867ebb1 100644 --- a/pkg/spoke/hubclientcert/controller_test.go +++ b/pkg/spoke/hubclientcert/controller_test.go @@ -3,6 +3,7 @@ package hubclientcert import ( "context" "fmt" + "reflect" "testing" "time" @@ -10,6 +11,7 @@ import ( certificates "k8s.io/api/certificates/v1beta1" corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/informers" kubefake "k8s.io/client-go/kubernetes/fake" @@ -47,7 +49,21 @@ func TestSync(t *testing.T) { t.Errorf("expected csr was created, but failed") } - testinghelpers.AssertNoActions(t, agentActions) + expectedSecret := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: testNamespace, + Name: testSecretName, + }, + Data: map[string][]byte{ + ClusterNameFile: []byte(testinghelpers.TestManagedClusterName), + AgentNameFile: []byte(testAgentName), + }, + } + testinghelpers.AssertActions(t, agentActions, "create") + actualSecret := agentActions[0].(clienttesting.CreateActionImpl).Object + if !reflect.DeepEqual(expectedSecret, actualSecret) { + t.Errorf("expected secret %v, but got %v", expectedSecret, actualSecret) + } }, }, {