update notebook_controller to use env

This commit is contained in:
Gabriel Wen 2019-06-03 13:15:56 -07:00
parent 42bbb0cdbf
commit 525eee5ed8
1 changed files with 40 additions and 28 deletions

View File

@ -19,6 +19,7 @@ package notebook
import ( import (
"context" "context"
"fmt" "fmt"
"os"
"strings" "strings"
v1alpha1 "github.com/kubeflow/kubeflow/components/notebook-controller/pkg/apis/notebook/v1alpha1" v1alpha1 "github.com/kubeflow/kubeflow/components/notebook-controller/pkg/apis/notebook/v1alpha1"
@ -230,34 +231,9 @@ func (r *ReconcileNotebook) Reconcile(request reconcile.Request) (reconcile.Resu
} }
} }
// Reconcile virtual service // Reconcile virtual service if we use ISTIO.
virtualService, err := generateVirtualService(instance) if os.Getenv("USE_ISTIO") == "true" {
if err := controllerutil.SetControllerReference(instance, virtualService, r.scheme); err != nil { err = r.reconcileVirtualService(instance)
return reconcile.Result{}, err
}
// Check if the virtual service already exists.
foundVirtual := &unstructured.Unstructured{}
justCreated = false
foundVirtual.SetAPIVersion("networking.istio.io/v1alpha3")
foundVirtual.SetKind("VirtualService")
err = r.Get(context.TODO(), types.NamespacedName{Name: virtualServiceName(instance.Name,
instance.Namespace), Namespace: instance.Namespace}, foundVirtual)
if err != nil && errors.IsNotFound(err) {
log.Info("Creating virtual service", "namespace", instance.Namespace, "name",
virtualServiceName(instance.Name, instance.Namespace))
err = r.Create(context.TODO(), virtualService)
justCreated = true
if err != nil {
return reconcile.Result{}, err
}
} else if err != nil {
return reconcile.Result{}, err
}
if !justCreated && util.CopyVirtualService(virtualService, foundVirtual) {
log.Info("Updating virtual service", "namespace", instance.Namespace, "name",
virtualServiceName(instance.Name, instance.Namespace))
err = r.Update(context.TODO(), foundVirtual)
if err != nil { if err != nil {
return reconcile.Result{}, err return reconcile.Result{}, err
} }
@ -464,3 +440,39 @@ func generateVirtualService(instance *v1alpha1.Notebook) (*unstructured.Unstruct
return vsvc, nil return vsvc, nil
} }
func (r *ReconcileNotebook) reconcileVirtualService(instance *v1alpha1.Notebook) error {
virtualService, err := generateVirtualService(instance)
if err := controllerutil.SetControllerReference(instance, virtualService, r.scheme); err != nil {
return err
}
// Check if the virtual service already exists.
foundVirtual := &unstructured.Unstructured{}
justCreated := false
foundVirtual.SetAPIVersion("networking.istio.io/v1alpha3")
foundVirtual.SetKind("VirtualService")
err = r.Get(context.TODO(), types.NamespacedName{Name: virtualServiceName(instance.Name,
instance.Namespace), Namespace: instance.Namespace}, foundVirtual)
if err != nil && errors.IsNotFound(err) {
log.Info("Creating virtual service", "namespace", instance.Namespace, "name",
virtualServiceName(instance.Name, instance.Namespace))
err = r.Create(context.TODO(), virtualService)
justCreated = true
if err != nil {
return err
}
} else if err != nil {
return err
}
if !justCreated && util.CopyVirtualService(virtualService, foundVirtual) {
log.Info("Updating virtual service", "namespace", instance.Namespace, "name",
virtualServiceName(instance.Name, instance.Namespace))
err = r.Update(context.TODO(), foundVirtual)
if err != nil {
return err
}
}
return nil
}