This is an automated email from the ASF dual-hosted git repository.

kaihsun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/submarine.git


The following commit(s) were added to refs/heads/master by this push:
     new 9463906  SUBMARINE 819. Create namespace for single user
9463906 is described below

commit 94639069d3fd6b1f1c993669f24d2928ca0873a8
Author: Kenchu123 <[email protected]>
AuthorDate: Sat May 15 02:26:45 2021 +0800

    SUBMARINE 819. Create namespace for single user
    
    ### What is this PR for?
    
    Create a namespace `submarine-user-test` of submarine for single user
    
    ### What type of PR is it?
    [Feature]
    
    ### Todos
    
    ### What is the Jira issue?
    
    https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE-819
    
    ### How should this be tested?
    
    Create submarine:
    ```bash
    cd submarine-cloud-v2
    kubectl create ns submarine-operator-test
    kubectl apply -f artifacts/example/crd.yaml
    kubectl apply -f artifacts/examples/example-submarine.yaml -n 
submarine-operator-test
    go builld -o submarine-operator
    ./submarine-operator
    kubectl port-forward --address 0.0.0.0 service/traefik 32080:80 -n 
submarine-user-test
    ```
    
    Delete submarine:
    ```bash
    kubectl delete submarine example-submarine -n submarine-operator-test
    ```
    
    ### Screenshots (if appropriate)
    
    
https://user-images.githubusercontent.com/17617373/118001859-b1c7ad00-b379-11eb-8651-a829e90c050a.mov
    
    ### Questions:
    
    * Do the license files need updating? No
    * Are there breaking changes for older versions? No
    * Does this need new documentation? No
    
    Author: Kenchu123 <[email protected]>
    
    Signed-off-by: Kai-Hsun Chen <[email protected]>
    
    Closes #586 from Kenchu123/SUBMARINE-819 and squashes the following commits:
    
    c398d72c [Kenchu123] SUBMARINE-819. Remove some klog line and add comment
    88951cc5 [Kenchu123] SUBMARINE-819. Place create namespace in ADD
    8be2d897 [Kenchu123] SUBMARINE-819. Create new namespace submarine-user-test
---
 submarine-cloud-v2/controller.go | 30 ++++++++++++++++++++++--------
 submarine-cloud-v2/main.go       | 11 ++++++-----
 2 files changed, 28 insertions(+), 13 deletions(-)

diff --git a/submarine-cloud-v2/controller.go b/submarine-cloud-v2/controller.go
index bf54e36..863de53 100644
--- a/submarine-cloud-v2/controller.go
+++ b/submarine-cloud-v2/controller.go
@@ -1069,6 +1069,7 @@ func (c *Controller) syncHandler(workqueueItem 
WorkQueueItem) error {
                utilruntime.HandleError(fmt.Errorf("Invalid resource key: %s", 
key))
                return nil
        }
+       newNamespace := "submarine-user-test"
 
        klog.Info("syncHandler: ", key, " / ", action)
 
@@ -1089,8 +1090,15 @@ func (c *Controller) syncHandler(workqueueItem 
WorkQueueItem) error {
                b, err := json.MarshalIndent(submarine.Spec, "", "  ")
                fmt.Println(string(b))
 
+               // create submarine in a new namespace
+               nsSpec := &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: 
newNamespace}}
+               _, err = 
c.kubeclientset.CoreV1().Namespaces().Create(context.TODO(), nsSpec, 
metav1.CreateOptions{})
+               if err != nil {
+                       return err
+               }
+
                // Install subcharts
-               c.newSubCharts(namespace)
+               c.newSubCharts(newNamespace)
 
                // Create submarine-server
                serverImage := submarine.Spec.Server.Image
@@ -1098,31 +1106,31 @@ func (c *Controller) syncHandler(workqueueItem 
WorkQueueItem) error {
                if serverImage == "" {
                        serverImage = "apache/submarine:server-" + 
submarine.Spec.Version
                }
-               err = c.newSubmarineServer(namespace, serverImage, 
serverReplicas)
+               err = c.newSubmarineServer(newNamespace, serverImage, 
serverReplicas)
                if err != nil {
                        return err
                }
 
                // Create Submarine Database
-               err = c.newSubmarineDatabase(namespace, &submarine.Spec)
+               err = c.newSubmarineDatabase(newNamespace, &submarine.Spec)
                if err != nil {
                        return err
                }
 
                // Create ingress
-               err = c.newIngress(namespace)
+               err = c.newIngress(newNamespace)
                if err != nil {
                        return err
                }
 
                // Create RBAC
-               err = c.newSubmarineServerRBAC(namespace)
+               err = c.newSubmarineServerRBAC(newNamespace)
                if err != nil {
                        return err
                }
 
                // Create Submarine Tensorboard
-               err = c.newSubmarineTensorboard(namespace, &submarine.Spec)
+               err = c.newSubmarineTensorboard(newNamespace, &submarine.Spec)
                if err != nil {
                        return err
                }
@@ -1134,18 +1142,24 @@ func (c *Controller) syncHandler(workqueueItem 
WorkQueueItem) error {
                c.charts = nil
 
                // Delete namespace: Delete all namespaced resources, ex: POD, 
Deployment, ... etc.
+               err = 
c.kubeclientset.CoreV1().Namespaces().Delete(context.TODO(), newNamespace, 
metav1.DeleteOptions{})
+               if err != nil {
+                       return err
+               }
+               klog.Info("Delete Namespace: ", newNamespace)
+
                err = 
c.kubeclientset.CoreV1().Namespaces().Delete(context.TODO(), namespace, 
metav1.DeleteOptions{})
                if err != nil {
                        return err
                }
 
                // Delete non-namespaced resources (ex: PersistentVolume)
-               err = 
c.kubeclientset.CoreV1().PersistentVolumes().Delete(context.TODO(), 
"submarine-database-pv--"+namespace, metav1.DeleteOptions{})
+               err = 
c.kubeclientset.CoreV1().PersistentVolumes().Delete(context.TODO(), 
"submarine-database-pv--"+newNamespace, metav1.DeleteOptions{})
                if err != nil {
                        return err
                }
 
-               err = 
c.kubeclientset.CoreV1().PersistentVolumes().Delete(context.TODO(), 
"submarine-tensorboard-pv--"+namespace, metav1.DeleteOptions{})
+               err = 
c.kubeclientset.CoreV1().PersistentVolumes().Delete(context.TODO(), 
"submarine-tensorboard-pv--"+newNamespace, metav1.DeleteOptions{})
                if err != nil {
                        return err
                }
diff --git a/submarine-cloud-v2/main.go b/submarine-cloud-v2/main.go
index 47236e9..1f1d1fb 100644
--- a/submarine-cloud-v2/main.go
+++ b/submarine-cloud-v2/main.go
@@ -19,17 +19,18 @@ package main
 
 import (
        "flag"
-       kubeinformers "k8s.io/client-go/informers"
-       "k8s.io/client-go/kubernetes"
-       "k8s.io/client-go/rest"
-       "k8s.io/client-go/tools/clientcmd"
-       "k8s.io/klog/v2"
        "os"
        clientset "submarine-cloud-v2/pkg/generated/clientset/versioned"
        informers "submarine-cloud-v2/pkg/generated/informers/externalversions"
        "submarine-cloud-v2/pkg/signals"
        "time"
 
+       kubeinformers "k8s.io/client-go/informers"
+       "k8s.io/client-go/kubernetes"
+       "k8s.io/client-go/rest"
+       "k8s.io/client-go/tools/clientcmd"
+       "k8s.io/klog/v2"
+
        traefikclientset 
"github.com/traefik/traefik/v2/pkg/provider/kubernetes/crd/generated/clientset/versioned"
        traefikinformers 
"github.com/traefik/traefik/v2/pkg/provider/kubernetes/crd/generated/informers/externalversions"
 )

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to