From 7e3695c3ebc4f532fd51165865c2cfb83b1d1a37 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Bie=C5=84?= <michal1.bien@gmail.com>
Date: Wed, 17 Apr 2019 13:03:12 +0200
Subject: [PATCH] Nonexistent namespace is now created when createorreplace
 called

---
 pkg/service/v1/config-service.go      | 18 ++++++++++++++----
 pkg/service/v1/config-service_test.go | 12 ------------
 2 files changed, 14 insertions(+), 16 deletions(-)

diff --git a/pkg/service/v1/config-service.go b/pkg/service/v1/config-service.go
index 518c3d5..b243a92 100644
--- a/pkg/service/v1/config-service.go
+++ b/pkg/service/v1/config-service.go
@@ -194,8 +194,13 @@ func (s *configServiceServer) CreateOrReplace(ctx context.Context, req *v1.Insta
 
 	//check if given k8s namespace exists
 	_, err = s.kubeAPI.CoreV1().Namespaces().Get(depl.Namespace, metav1.GetOptions{})
-	if err != nil {
-		return prepareResponse(v1.Status_FAILED, namespaceNotFound), err
+	if err != nil{
+		ns := apiv1.Namespace{}
+		ns.Name = depl.Namespace
+		_, err = s.kubeAPI.CoreV1().Namespaces().Create(&ns)
+		if err != nil {
+			return prepareResponse(v1.Status_FAILED, namespaceNotFound), err
+		}
 	}
 
 	//check if configmap already exists
@@ -318,8 +323,13 @@ func (s *basicAuthServiceServer) CreateOrReplace(ctx context.Context, req *v1.In
 
 	//check if given k8s namespace exists
 	_, err := s.kubeAPI.CoreV1().Namespaces().Get(depl.Namespace, metav1.GetOptions{})
-	if err != nil {
-		return prepareResponse(v1.Status_FAILED, namespaceNotFound), err
+	if err != nil{
+		ns := apiv1.Namespace{}
+		ns.Name = depl.Namespace
+		_, err = s.kubeAPI.CoreV1().Namespaces().Create(&ns)
+		if err != nil {
+			return prepareResponse(v1.Status_FAILED, namespaceNotFound), err
+		}
 	}
 
 	secretName := getAuthSecretName(depl.Uid)
diff --git a/pkg/service/v1/config-service_test.go b/pkg/service/v1/config-service_test.go
index 9c3afd5..9335427 100644
--- a/pkg/service/v1/config-service_test.go
+++ b/pkg/service/v1/config-service_test.go
@@ -170,18 +170,6 @@ func TestBasicAuthServiceServer_CreateOrReplace(t *testing.T) {
 		t.Fail()
 	}
 
-	//Fail on namespace check
-	freq := v1.InstanceCredentialsRequest{Api:apiVersion, Instance:&fake_ns_inst, Credentials: &creds}
-	res, err = server.CreateOrReplace(context.Background(), &freq)
-	if err == nil || res.Status != v1.Status_FAILED {
-		t.Fail()
-	}
-
-	//create mock namespace
-	ns := corev1.Namespace{}
-	ns.Name = "test-namespace"
-	_, _ = client.CoreV1().Namespaces().Create(&ns)
-
 	//Should create new secret
 	req := v1.InstanceCredentialsRequest{Api:apiVersion, Instance:&inst, Credentials: &creds}
 	res, err = server.CreateOrReplace(context.Background(), &req)
-- 
GitLab