diff --git a/cli/app/list.go b/cli/app/list.go index 185090b5..66dd5454 100644 --- a/cli/app/list.go +++ b/cli/app/list.go @@ -91,12 +91,19 @@ can take some time. stackName = app.Env["STACK_NAME"] } - var version string - if status, ok := statuses[stackName]; ok { - version = status["version"] - tableRow = append(tableRow, status["status"], version) + status := "unknown" + version := "unknown" + if statusMeta, ok := statuses[stackName]; ok { + if currentVersion, exists := statusMeta["version"]; exists { + version = currentVersion + } + if statusMeta["status"] != "" { + status = statusMeta["status"] + } + + tableRow = append(tableRow, status, version) } else { - tableRow = append(tableRow, "unknown") + tableRow = append(tableRow, status, version) } var newUpdates []string @@ -104,13 +111,19 @@ can take some time. if err != nil { logrus.Fatal(err) } + for _, update := range updates { if update != version { newUpdates = append(newUpdates, update) } } + if len(newUpdates) == 0 { - tableRow = append(tableRow, "none, on latest") + if version == "unknown" { + tableRow = append(tableRow, "unknown") + } else { + tableRow = append(tableRow, "none, on latest") + } } else { // FIXME: jeezus golang why do you not have a list reverse function for i, j := 0, len(newUpdates)-1; i < j; i, j = i+1, j-1 { diff --git a/pkg/config/app.go b/pkg/config/app.go index e183f242..e97ae70a 100644 --- a/pkg/config/app.go +++ b/pkg/config/app.go @@ -299,8 +299,8 @@ func GetAppStatuses(appFiles AppFiles) (map[string]map[string]string, error) { for range servers { status := <-ch - result := make(map[string]string) for _, service := range status.Services { + result := make(map[string]string) name := service.Spec.Labels[convert.LabelNamespace] if _, ok := statuses[name]; !ok { @@ -310,6 +310,11 @@ func GetAppStatuses(appFiles AppFiles) (map[string]map[string]string, error) { labelKey := fmt.Sprintf("coop-cloud.%s.version", name) if version, ok := service.Spec.Labels[labelKey]; ok { result["version"] = version + } else { + //FIXME: we only need to check containers with the version label not + // every single container and then skip when we see no label perf gains + // to be had here + continue } statuses[name] = result