From 58a24a50e1f47cdfdf3e54c179abaeccf3fc5049 Mon Sep 17 00:00:00 2001 From: cellarspoon Date: Fri, 24 Dec 2021 01:40:39 +0100 Subject: [PATCH] WIP: app errors --- cli/app/errors.go | 55 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 16 deletions(-) diff --git a/cli/app/errors.go b/cli/app/errors.go index de380bd0..3bb4308d 100644 --- a/cli/app/errors.go +++ b/cli/app/errors.go @@ -1,12 +1,14 @@ package app import ( - "fmt" + "strconv" "strings" + abraFormatter "coopcloud.tech/abra/cli/formatter" "coopcloud.tech/abra/cli/internal" "coopcloud.tech/abra/pkg/autocomplete" "coopcloud.tech/abra/pkg/client" + stack "coopcloud.tech/abra/pkg/upstream/stack" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/filters" "github.com/sirupsen/logrus" @@ -34,6 +36,15 @@ by "abra app logs ". logrus.Fatal(err) } + isDeployed, _, err := stack.IsDeployed(c.Context, cl, app.StackName()) + if err != nil { + logrus.Fatal(err) + } + + if !isDeployed { + logrus.Fatalf("%s is not deployed?", app.Name) + } + filters := filters.NewArgs() filters.Add("name", app.StackName()) @@ -42,38 +53,50 @@ by "abra app logs ". logrus.Fatal(err) } - // tableCol := []string{"status", "error", "healthcheck", "healthcheck logs"} - // table := abraFormatter.CreateTable(tableCol) + tableCol := []string{"app name", "status", "error", "out of memory", "restart count", "healthcheck"} + table := abraFormatter.CreateTable(tableCol) for _, container := range containers { - fmt.Println("service: ", strings.Join(container.Names, "")) + serviceName := getServiceName(container.Names) containerState, err := cl.ContainerInspect(c.Context, container.ID) if err != nil { logrus.Fatal(err) } - fmt.Println("restarted no. times: ", containerState.RestartCount) - fmt.Println("status: ", containerState.State.Status) - fmt.Println("oom killed: ", containerState.State.OOMKilled) - fmt.Println("error: ", containerState.State.Error) - + errMsg := "N/A" + hcStat := "N/A" + var hcLogs []string if containerState.State.Health != nil { - fmt.Println("healthcheck status: ", containerState.State.Health.Status) - fmt.Println("failed no. times: ", containerState.State.Health.FailingStreak) + hcStat = containerState.State.Health.Status for _, log := range containerState.State.Health.Log { - fmt.Println("output: ", log.Output) + hcLogs = append(hcLogs, log.Output) } } - fmt.Println("---") - - // table.Append([]string{containerState.State.Status, containerState.State.Error, healthCheckState, healthCheckLogs}) + if containerState.State.Error != "" { + errMsg = containerState.State.Error + } + table.Append([]string{ + serviceName, + containerState.State.Status, + errMsg, + strconv.FormatBool(containerState.State.OOMKilled), + strconv.Itoa(containerState.RestartCount), + hcStat, + strings.Join(hcLogs, "\n"), + }) } - // table.Render() + table.Render() return nil }, } + +func getServiceName(names []string) string { + containerName := strings.Join(names, " ") + trimmed := strings.TrimPrefix(containerName, "/") + return strings.Split(trimmed, ".")[0] +}