summaryrefslogtreecommitdiffstats
path: root/src/ncm/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/ncm/api')
-rw-r--r--src/ncm/api/api.go1
-rw-r--r--src/ncm/api/clusterhandler.go17
-rw-r--r--src/ncm/api/clusterhandler_test.go9
3 files changed, 27 insertions, 0 deletions
diff --git a/src/ncm/api/api.go b/src/ncm/api/api.go
index 34b46c67..3ff8671a 100644
--- a/src/ncm/api/api.go
+++ b/src/ncm/api/api.go
@@ -74,6 +74,7 @@ func NewRouter(testClient interface{}) *mux.Router {
router.HandleFunc("/cluster-providers/{name}", clusterHandler.deleteClusterProviderHandler).Methods("DELETE")
router.HandleFunc("/cluster-providers/{provider-name}/clusters", clusterHandler.createClusterHandler).Methods("POST")
router.HandleFunc("/cluster-providers/{provider-name}/clusters", clusterHandler.getClusterHandler).Methods("GET")
+ router.HandleFunc("/cluster-providers/{provider-name}/clusters", clusterHandler.getClusterHandler).Queries("label", "{label}")
router.HandleFunc("/cluster-providers/{provider-name}/clusters/{name}", clusterHandler.getClusterHandler).Methods("GET")
router.HandleFunc("/cluster-providers/{provider-name}/clusters/{name}", clusterHandler.deleteClusterHandler).Methods("DELETE")
router.HandleFunc("/cluster-providers/{provider-name}/clusters/{cluster-name}/labels", clusterHandler.createClusterLabelHandler).Methods("POST")
diff --git a/src/ncm/api/clusterhandler.go b/src/ncm/api/clusterhandler.go
index cb147a8a..8c50f720 100644
--- a/src/ncm/api/clusterhandler.go
+++ b/src/ncm/api/clusterhandler.go
@@ -194,6 +194,23 @@ func (h clusterHandler) getClusterHandler(w http.ResponseWriter, r *http.Request
provider := vars["provider-name"]
name := vars["name"]
+ label := r.URL.Query().Get("label")
+ if len(label) != 0 {
+ ret, err := h.client.GetClustersWithLabel(provider, label)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+ w.Header().Set("Content-Type", "application/json")
+ w.WriteHeader(http.StatusOK)
+ err = json.NewEncoder(w).Encode(ret)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+ return
+ }
+
// handle the get all clusters case - return a list of only the json parts
if len(name) == 0 {
var retList []moduleLib.Cluster
diff --git a/src/ncm/api/clusterhandler_test.go b/src/ncm/api/clusterhandler_test.go
index af5bd160..a26c41bd 100644
--- a/src/ncm/api/clusterhandler_test.go
+++ b/src/ncm/api/clusterhandler_test.go
@@ -43,6 +43,7 @@ type mockClusterManager struct {
ClusterContentItems []moduleLib.ClusterContent
ClusterLabelItems []moduleLib.ClusterLabel
ClusterKvPairsItems []moduleLib.ClusterKvPairs
+ ClusterList []string
Err error
}
@@ -106,6 +107,14 @@ func (m *mockClusterManager) GetClusters(provider string) ([]moduleLib.Cluster,
return m.ClusterItems, nil
}
+func (m *mockClusterManager) GetClustersWithLabel(provider, label string) ([]string, error) {
+ if m.Err != nil {
+ return []string{}, m.Err
+ }
+
+ return m.ClusterList, nil
+}
+
func (m *mockClusterManager) DeleteCluster(provider, name string) error {
return m.Err
}