diff options
author | Ritu Sood <ritu.sood@intel.com> | 2020-03-03 00:44:52 -0800 |
---|---|---|
committer | Eric Multanen <eric.w.multanen@intel.com> | 2020-04-07 09:20:19 -0700 |
commit | ee5748eca6350222051125b5e2313f78da00efbe (patch) | |
tree | 0af1e364a976787a7c640e676a159e72d9be8a3e /src/ncm/pkg/module/cluster.go | |
parent | ec83b3d3bda5501b20e05efae198202b29396c4a (diff) |
Adding function to Query cluster based on label
Add Query endpoint and implements returning list
of clusters with label.
Issue-ID: MULTICLOUD-922
Signed-off-by: Ritu Sood <ritu.sood@intel.com>
Signed-off-by: Eric Multanen <eric.w.multanen@intel.com>
Change-Id: I879b5e9002a0cbc9191abb99f1e164ee2b1c6581
Diffstat (limited to 'src/ncm/pkg/module/cluster.go')
-rw-r--r-- | src/ncm/pkg/module/cluster.go | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/ncm/pkg/module/cluster.go b/src/ncm/pkg/module/cluster.go index e3260b7e..4ca4e7c8 100644 --- a/src/ncm/pkg/module/cluster.go +++ b/src/ncm/pkg/module/cluster.go @@ -66,6 +66,12 @@ type ClusterLabelKey struct { ClusterLabelName string `json:"label"` } +// LabelKey is the key structure that is used in the database +type LabelKey struct { + ClusterProviderName string `json:"provider"` + ClusterLabelName string `json:"label"` +} + // ClusterKvPairsKey is the key structure that is used in the database type ClusterKvPairsKey struct { ClusterProviderName string `json:"provider"` @@ -73,7 +79,7 @@ type ClusterKvPairsKey struct { ClusterKvPairsName string `json:"kvname"` } -// Manager is an interface exposes the Cluster functionality +// ClusterManager is an interface exposes the Cluster functionality type ClusterManager interface { CreateClusterProvider(pr ClusterProvider) (ClusterProvider, error) GetClusterProvider(name string) (ClusterProvider, error) @@ -83,6 +89,7 @@ type ClusterManager interface { GetCluster(provider, name string) (Cluster, error) GetClusterContent(provider, name string) (ClusterContent, error) GetClusters(provider string) ([]Cluster, error) + GetClustersWithLabel(provider, label string) ([]string, error) DeleteCluster(provider, name string) error CreateClusterLabel(provider, cluster string, pr ClusterLabel) (ClusterLabel, error) GetClusterLabel(provider, cluster, label string) (ClusterLabel, error) @@ -314,6 +321,29 @@ func (v *ClusterClient) GetClusters(provider string) ([]Cluster, error) { return resp, nil } +// GetClustersWithLabel returns all the Clusters with Labels for provider +// Support Query like /cluster-providers/{Provider}/clusters?label={label} +func (v *ClusterClient) GetClustersWithLabel(provider, label string) ([]string, error) { + //Construct key and tag to select the entry + key := LabelKey{ + ClusterProviderName: provider, + ClusterLabelName: label, + } + + values, err := db.DBconn.Find(v.db.storeName, key, "cluster") + if err != nil { + return []string{}, pkgerrors.Wrap(err, "Get Clusters by label") + } + var resp []string + + for _, value := range values { + cp := string(value) + resp = append(resp, cp) + } + + return resp, nil +} + // DeleteCluster the Cluster from database func (v *ClusterClient) DeleteCluster(provider, name string) error { //Construct key and tag to select the entry |