From f7a4f0d18561c366e3653dd644a77caf13ffe566 Mon Sep 17 00:00:00 2001 From: chengyumeng <792400644@qq.com> Date: Tue, 12 Feb 2019 15:31:39 +0800 Subject: [PATCH] Fix get pod info API bug that label should be a key not a map --- src/backend/controllers/openapi/pod.go | 10 +--------- src/backend/resources/pod/pod.go | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/backend/controllers/openapi/pod.go b/src/backend/controllers/openapi/pod.go index 1f1aa740d..73af2cceb 100644 --- a/src/backend/controllers/openapi/pod.go +++ b/src/backend/controllers/openapi/pod.go @@ -5,8 +5,6 @@ import ( "net/http" "strings" - "k8s.io/apimachinery/pkg/labels" - "github.com/Qihoo360/wayne/src/backend/client" "github.com/Qihoo360/wayne/src/backend/models" "github.com/Qihoo360/wayne/src/backend/models/response" @@ -79,13 +77,7 @@ func (c *OpenAPIController) GetPodInfo() { return } - label, err := labels.ConvertSelectorToLabelsMap(params.LabelSelector) - if err != nil { - c.AddErrorAndResponse(fmt.Sprintf("Invalid LabelSelector parameter: %v!", err), http.StatusBadRequest) - return - } - - pods, err := pod.ListPod(manager.CacheFactory, "", label) + pods, err := pod.ListPodByLabelKey(manager.CacheFactory, "", params.LabelSelector) if err != nil { logs.Error(fmt.Sprintf("Failed to parse metadata: %s", err.Error())) c.AddErrorAndResponse(fmt.Sprintf("Maybe a problematic k8s cluster(%s)!", params.Cluster), http.StatusInternalServerError) diff --git a/src/backend/resources/pod/pod.go b/src/backend/resources/pod/pod.go index a3dbf7577..0d7d9ace5 100644 --- a/src/backend/resources/pod/pod.go +++ b/src/backend/resources/pod/pod.go @@ -71,6 +71,24 @@ func ListKubePod(indexer *client.CacheFactory, namespace string, label map[strin return pods, nil } +func ListPodByLabelKey(indexer *client.CacheFactory, namespace string, label string) ([]*Pod, error) { + podSelector := map[string]string{} + podList, err := ListKubePod(indexer, namespace, podSelector) + if err != nil { + return nil, err + } + pods := make([]*Pod, 0) + for _, pod := range podList { + if pod.Labels[label] != "" { + pods = append(pods, &Pod{ + Labels: pod.Labels, + PodIp: pod.Status.PodIP, + }) + } + } + return pods, nil +} + func GetPodsByStatefulset(indexer *client.CacheFactory, namespace, name string) ([]*Pod, error) { podSelector := map[string]string{"app": name} pods, err := ListKubePod(indexer, namespace, podSelector)