diff --git a/pkg/stdlib/pkgs/query.cue b/pkg/stdlib/pkgs/query.cue index 1b177f249..8d73cd75a 100644 --- a/pkg/stdlib/pkgs/query.cue +++ b/pkg/stdlib/pkgs/query.cue @@ -16,6 +16,7 @@ revision: string object: {...} }] + ... } #CollectPods: { diff --git a/test/e2e-apiserver-test/testdata/component-pod-view.yaml b/test/e2e-apiserver-test/testdata/component-pod-view.yaml index 826b4be27..7e86a560c 100644 --- a/test/e2e-apiserver-test/testdata/component-pod-view.yaml +++ b/test/e2e-apiserver-test/testdata/component-pod-view.yaml @@ -36,57 +36,63 @@ data: } } - resources: application.list - - podsMap: op.#Steps & { - for i, resource in resources { - "\(i)": ql.#CollectPods & { - value: resource.object - cluster: resource.cluster - } - } + if application.err != _|_ { + status: error: application.err } - podsWithCluster: [ for i, pods in podsMap for podObj in pods.list { - cluster: pods.cluster - obj: podObj - }] + if application.err == _|_ { + resources: application.list - podStatus: op.#Steps & { - for i, pod in podsWithCluster { - "\(i)": op.#Steps & { - name: pod.obj.metadata.name - containers: {for container in pod.obj.status.containerStatuses { - "\(container.name)": { - image: container.image - state: container.state - } - }} - events: ql.#SearchEvents & { - value: pod.obj - cluster: pod.cluster + podsMap: op.#Steps & { + for i, resource in resources { + "\(i)": ql.#CollectPods & { + value: resource.object + cluster: resource.cluster } - metrics: ql.#Read & { - cluster: pod.cluster - value: { - apiVersion: "metrics.k8s.io/v1beta1" - kind: "PodMetrics" - metadata: { - name: pod.obj.metadata.name - namespace: pod.obj.metadata.namespace + } + } + + podsWithCluster: [ for i, pods in podsMap for podObj in pods.list { + cluster: pods.cluster + obj: podObj + }] + + podStatus: op.#Steps & { + for i, pod in podsWithCluster { + "\(i)": op.#Steps & { + name: pod.obj.metadata.name + containers: {for container in pod.obj.status.containerStatuses { + "\(container.name)": { + image: container.image + state: container.state + } + }} + events: ql.#SearchEvents & { + value: pod.obj + cluster: pod.cluster + } + metrics: ql.#Read & { + cluster: pod.cluster + value: { + apiVersion: "metrics.k8s.io/v1beta1" + kind: "PodMetrics" + metadata: { + name: pod.obj.metadata.name + namespace: pod.obj.metadata.namespace + } } } } } } - } - status: { - podList: [ for podInfo in podStatus { - name: podInfo.name - containers: [ for containerName, container in podInfo.containers { - containerName + status: { + podList: [ for podInfo in podStatus { + name: podInfo.name + containers: [ for containerName, container in podInfo.containers { + containerName + }] + events: podInfo.events.list }] - events: podInfo.events.list - }] + } } diff --git a/test/e2e-apiserver-test/velaql_test.go b/test/e2e-apiserver-test/velaql_test.go index ec445b6be..f92129715 100644 --- a/test/e2e-apiserver-test/velaql_test.go +++ b/test/e2e-apiserver-test/velaql_test.go @@ -45,7 +45,8 @@ type PodStatus struct { Events interface{} `json:"events"` } type Status struct { - PodList []PodStatus `json:"podList"` + PodList []PodStatus `json:"podList,omitempty"` + Error string `json:"error,omitempty"` } var _ = Describe("Test velaQL rest api", func() { @@ -215,7 +216,7 @@ var _ = Describe("Test velaQL rest api", func() { Eventually(func() error { queryRes, err := http.Get( - fmt.Sprintf("http://127.0.0.1:8000/api/v1/query?velaql=%s{appName=%s,appNs=%s,name=%s}.%s", "test-component-pod-view", appName, namespace, component2Name, "status"), + fmt.Sprintf("http://127.0.0.1:8000/api/v1/query?velaql=%s{appName=%s,appNs=%s}.%s", "test-component-pod-view", appName, namespace, "status"), ) if err != nil { return err