diff --git a/pkg/ui/v1alpha3/backend.go b/pkg/ui/v1alpha3/backend.go index 3a6bd559471..41a9c955474 100644 --- a/pkg/ui/v1alpha3/backend.go +++ b/pkg/ui/v1alpha3/backend.go @@ -232,17 +232,13 @@ func (k *KatibUIHandler) DeleteTemplate(w http.ResponseWriter, r *http.Request) func (k *KatibUIHandler) FetchNamespaces(w http.ResponseWriter, r *http.Request) { - namespaceList, err := k.katibClient.GetNamespaceList() + // Get all available namespaces + namespaces, err := k.getAvailableNamespaces() if err != nil { - log.Printf("GetNamespaceList failed: %v", err) + log.Printf("GetAvailableNamespaces failed: %v", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } - var namespaces []string - - for _, namespace := range namespaceList.Items { - namespaces = append(namespaces, namespace.ObjectMeta.Name) - } response, err := json.Marshal(namespaces) if err != nil { diff --git a/pkg/ui/v1alpha3/hp.go b/pkg/ui/v1alpha3/hp.go index 18c6bfd4101..56cb81227a7 100644 --- a/pkg/ui/v1alpha3/hp.go +++ b/pkg/ui/v1alpha3/hp.go @@ -18,8 +18,12 @@ import ( // FetchAllHPJobs gets experiments in all namespaces. func (k *KatibUIHandler) FetchAllHPJobs(w http.ResponseWriter, r *http.Request) { - // Use "" to get experiments in all namespaces. - jobs, err := k.getExperimentList("", JobTypeHP) + // At first, try to list experiments in cluster scope + jobs, err := k.getExperimentList([]string{""}, JobTypeHP) + if err != nil { + // If failed, just try to list experiments from own namespace + jobs, err = k.getExperimentList([]string{}, JobTypeHP) + } if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return diff --git a/pkg/ui/v1alpha3/nas.go b/pkg/ui/v1alpha3/nas.go index 6ff6b52843a..9c68cc2131b 100644 --- a/pkg/ui/v1alpha3/nas.go +++ b/pkg/ui/v1alpha3/nas.go @@ -12,9 +12,12 @@ import ( ) func (k *KatibUIHandler) FetchAllNASJobs(w http.ResponseWriter, r *http.Request) { - //enableCors(&w) - // Use "" to get experiments in all namespaces. - jobs, err := k.getExperimentList("", JobTypeNAS) + // At first, try to list experiments in cluster scope + jobs, err := k.getExperimentList([]string{""}, JobTypeHP) + if err != nil { + // If failed, just try to list experiments from own namespace + jobs, err = k.getExperimentList([]string{}, JobTypeHP) + } if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return diff --git a/pkg/ui/v1alpha3/util.go b/pkg/ui/v1alpha3/util.go index 4c6cbcadc73..04cc3c859f4 100644 --- a/pkg/ui/v1alpha3/util.go +++ b/pkg/ui/v1alpha3/util.go @@ -2,6 +2,7 @@ package v1alpha3 import ( "encoding/json" + "github.com/kubeflow/katib/pkg/controller.v1alpha3/consts" "log" "net/http" "strconv" @@ -12,10 +13,10 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -func (k *KatibUIHandler) getExperimentList(namespace string, typ JobType) ([]JobView, error) { +func (k *KatibUIHandler) getExperimentList(namespace []string, typ JobType) ([]JobView, error) { jobs := make([]JobView, 0) - el, err := k.katibClient.GetExperimentList(namespace) + el, err := k.katibClient.GetExperimentList(namespace...) if err != nil { log.Printf("GetExperimentList failed: %v", err) return nil, err @@ -50,16 +51,15 @@ func enableCors(w *http.ResponseWriter) { func (k *KatibUIHandler) getTrialTemplatesViewList() ([]TrialTemplatesView, error) { trialTemplatesViewList := make([]TrialTemplatesView, 0) - // Get all namespaces - namespaceList, err := k.katibClient.GetNamespaceList() + // Get all available namespaces + namespaces, err := k.getAvailableNamespaces() if err != nil { - log.Printf("GetNamespaceList failed: %v", err) + log.Printf("GetAvailableNamespaces failed: %v", err) return nil, err } // Get Trial Template ConfigMap for each namespace - for _, namespace := range namespaceList.Items { - ns := namespace.ObjectMeta.Name + for _, ns := range namespaces { trialTemplatesConfigMapList, err := k.katibClient.GetTrialTemplates(ns) if err != nil { log.Printf("GetTrialTemplates failed: %v", err) @@ -72,6 +72,22 @@ func (k *KatibUIHandler) getTrialTemplatesViewList() ([]TrialTemplatesView, erro } return trialTemplatesViewList, nil } + +func (k *KatibUIHandler) getAvailableNamespaces() ([]string, error) { + var namespaces []string + + namespaceList, err := k.katibClient.GetNamespaceList() + if err != nil { + namespaces = append(namespaces, consts.DefaultKatibNamespace) + return namespaces, nil + } + for _, ns := range namespaceList.Items { + namespaces = append(namespaces, ns.ObjectMeta.Name) + } + + return namespaces, nil +} + func getTrialTemplatesView(templatesConfigMapList *apiv1.ConfigMapList) TrialTemplatesView { trialTemplateView := TrialTemplatesView{