From f73318f25edeee6b2aded34fdcedded25d801a1a Mon Sep 17 00:00:00 2001 From: faizanahmad055 Date: Thu, 12 Jul 2018 16:16:46 +0500 Subject: [PATCH] Implement PR-1 review comments --- .../chart/reloader/templates/rbac.yaml | 8 ++- internal/pkg/app/app.go | 2 +- internal/pkg/controller/controller_test.go | 68 +++++++++++++++++++ 3 files changed, 74 insertions(+), 4 deletions(-) diff --git a/deployments/kubernetes/chart/reloader/templates/rbac.yaml b/deployments/kubernetes/chart/reloader/templates/rbac.yaml index 87b3fde..678725d 100644 --- a/deployments/kubernetes/chart/reloader/templates/rbac.yaml +++ b/deployments/kubernetes/chart/reloader/templates/rbac.yaml @@ -7,12 +7,13 @@ metadata: name: {{ template "reloader-name" . }} --- apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole +kind: Role metadata: labels: {{ include "reloader-labels.stakater" . | indent 4 }} {{ include "reloader-labels.chart" . | indent 4 }} name: {{ template "reloader-name" . }}-role + namespace: {{ .Release.Namespace }} rules: - apiGroups: - "" @@ -25,15 +26,16 @@ rules: - watch --- apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding +kind: RoleBinding metadata: labels: {{ include "reloader-labels.stakater" . | indent 4 }} {{ include "reloader-labels.chart" . | indent 4 }} name: {{ template "reloader-name" . }}-role-binding + namespace: {{ .Release.Namespace }} roleRef: apiGroup: rbac.authorization.k8s.io - kind: ClusterRole + kind: Role name: {{ template "reloader-name" . }}-role subjects: - kind: ServiceAccount diff --git a/internal/pkg/app/app.go b/internal/pkg/app/app.go index 319501a..8d09188 100644 --- a/internal/pkg/app/app.go +++ b/internal/pkg/app/app.go @@ -6,4 +6,4 @@ import "github.com/stakater/Reloader/internal/pkg/cmd" func Run() error { cmd := cmd.NewReloaderCommand() return cmd.Execute() -} \ No newline at end of file +} diff --git a/internal/pkg/controller/controller_test.go b/internal/pkg/controller/controller_test.go index 808be7c..2ebbcfe 100644 --- a/internal/pkg/controller/controller_test.go +++ b/internal/pkg/controller/controller_test.go @@ -14,6 +14,7 @@ import ( var ( client, err = kube.GetClient() configmapNamePrefix = "testconfigmap-reloader" + secretNamePrefix = "testsecret-reloader" letters = []rune("abcdefghijklmnopqrstuvwxyz") ) @@ -72,6 +73,51 @@ func TestControllerForUpdatingConfigmapShouldUpdateDeployment(t *testing.T) { time.Sleep(15 * time.Second) } +func TestControllerForUpdatingSecretShouldUpdateDeployment(t *testing.T) { + namespace := "test-reloader-secrets" + createNamespace(t, namespace) + defer deleteNamespace(t, namespace) + + controller, err := NewController(client, "secrets", namespace) + if err != nil { + logrus.Infof("Unable to create NewController error = %v", err) + return + } + stop := make(chan struct{}) + defer close(stop) + go controller.Run(1, stop) + time.Sleep(10 * time.Second) + + secretName := secretNamePrefix + "-update-" + randSeq(5) + secretClient := client.CoreV1().Secrets(namespace) + secret := initSecret(namespace, secretName) + secret, err = secretClient.Create(secret) + if err != nil { + panic(err) + } + logrus.Infof("Created Secret %q.\n", secret.GetObjectMeta().GetName()) + time.Sleep(10 * time.Second) + + logrus.Infof("Updating Secret %q.\n", secret.GetObjectMeta().GetName()) + secret, err = secretClient.Get(secretName, metav1.GetOptions{}) + if err != nil { + + } + secret = updateSecret(namespace, secretName) + _, updateErr := secretClient.Update(secret) + + // TODO: Add functionality to verify reloader functionality here + + if updateErr != nil { + controller.client.CoreV1().Secrets(namespace).Delete(secretName, &metav1.DeleteOptions{}) + panic(updateErr) + } + time.Sleep(10 * time.Second) + logrus.Infof("Deleting Secret %q.\n", secret.GetObjectMeta().GetName()) + controller.client.CoreV1().Secrets(namespace).Delete(secretName, &metav1.DeleteOptions{}) + time.Sleep(15 * time.Second) +} + func initConfigmap(namespace string, configmapName string) *v1.ConfigMap { return &v1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ @@ -83,6 +129,17 @@ func initConfigmap(namespace string, configmapName string) *v1.ConfigMap { } } +func initSecret(namespace string, secretName string) *v1.Secret { + return &v1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: secretName, + Namespace: namespace, + Labels: map[string]string{"firstLabel": "temp"}, + }, + Data: map[string][]byte{"test.url": []byte("dGVzdFNlY3JldEVuY29kaW5nRm9yUmVsb2FkZXI=")}, + } +} + func createNamespace(t *testing.T, namespace string) { _, err := client.CoreV1().Namespaces().Create(&v1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: namespace}}) if err != nil { @@ -111,3 +168,14 @@ func updateConfigmap(namespace string, configmapName string) *v1.ConfigMap { Data: map[string]string{"test.url": "www.stakater.com"}, } } + +func updateSecret(namespace string, secretName string) *v1.Secret { + return &v1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: secretName, + Namespace: namespace, + Labels: map[string]string{"firstLabel": "temp"}, + }, + Data: map[string][]byte{"test.url": []byte("dGVzdFVwZGF0ZWRTZWNyZXRFbmNvZGluZ0ZvclJlbG9hZGVy")}, + } +}