From 15c0b883fef33963316c5e4987d27ab962f12b26 Mon Sep 17 00:00:00 2001 From: Guillaume Tardif Date: Fri, 5 Feb 2021 09:36:37 +0100 Subject: [PATCH] hide non running containers if no --all option Signed-off-by: Guillaume Tardif --- kube/client/client.go | 13 ++++++++----- kube/e2e/compose_test.go | 21 ++++++++++++++------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/kube/client/client.go b/kube/client/client.go index 1cdf8821b..cdb0cb010 100644 --- a/kube/client/client.go +++ b/kube/client/client.go @@ -20,7 +20,6 @@ package client import ( "context" - "encoding/json" "fmt" v1 "k8s.io/api/core/v1" @@ -54,14 +53,18 @@ func NewKubeClient(config genericclioptions.RESTClientGetter) (*KubeClient, erro // GetContainers get containers for a given compose project func (kc KubeClient) GetContainers(ctx context.Context, projectName string, all bool) ([]compose.ContainerSummary, error) { - pods, err := kc.client.CoreV1().Pods("").List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("%s=%s", compose.ProjectTag, projectName)}) + fieldSelector := "" + if !all { + fieldSelector = "status.phase=Running" + } + pods, err := kc.client.CoreV1().Pods("").List(ctx, metav1.ListOptions{ + LabelSelector: fmt.Sprintf("%s=%s", compose.ProjectTag, projectName), + FieldSelector: fieldSelector, + }) if err != nil { return nil, err } - json, _ := json.MarshalIndent(pods, "", " ") - fmt.Println(string(json)) - fmt.Printf("containers: %d\n", len(pods.Items)) result := []compose.ContainerSummary{} for _, pod := range pods.Items { result = append(result, podToContainerSummary(pod)) diff --git a/kube/e2e/compose_test.go b/kube/e2e/compose_test.go index 0813f5a3a..1960c1ab7 100644 --- a/kube/e2e/compose_test.go +++ b/kube/e2e/compose_test.go @@ -79,16 +79,23 @@ func TestComposeUp(t *testing.T) { res.Assert(t, icmd.Expected{Out: `[{"Name":"compose-kube-demo","Status":"deployed"}]`}) }) - t.Run("compose ps", func(t *testing.T) { - getServiceRegx := func(project string, service string) string { + t.Run("compose ps --all", func(t *testing.T) { + getServiceRegx := func(service string) string { // match output with random hash / spaces like: - // myproject-db-698f4dd798-jd9gw db Running - return fmt.Sprintf("%s-%s-.*\\s+%s\\s+Pending\\s+", project, service, service) + // db-698f4dd798-jd9gw db Running + return fmt.Sprintf("%s-.*\\s+%s\\s+Pending\\s+", service, service) } + res := c.RunDockerCmd("compose", "ps", "-p", projectName, "--all") + testify.Regexp(t, getServiceRegx("db"), res.Stdout()) + testify.Regexp(t, getServiceRegx("words"), res.Stdout()) + testify.Regexp(t, getServiceRegx("web"), res.Stdout()) + + assert.Equal(t, len(Lines(res.Stdout())), 4, res.Stdout()) + }) + + t.Run("compose ps hides non running containers", func(t *testing.T) { res := c.RunDockerCmd("compose", "ps", "-p", projectName) - testify.Regexp(t, getServiceRegx(projectName, "db"), res.Stdout()) - testify.Regexp(t, getServiceRegx(projectName, "words"), res.Stdout()) - testify.Regexp(t, getServiceRegx(projectName, "web"), res.Stdout()) + assert.Equal(t, len(Lines(res.Stdout())), 1, res.Stdout()) }) t.Run("check running project", func(t *testing.T) {