WIP: add first run at app rollback command

See coop-cloud/organising#146.
This commit is contained in:
2021-09-08 12:55:33 +02:00
parent 855e9ea26d
commit 3c3d8dc0e7
8 changed files with 132 additions and 44 deletions

View File

@ -7,6 +7,7 @@ import (
abraFormatter "coopcloud.tech/abra/cli/formatter"
"coopcloud.tech/abra/cli/internal"
appPkg "coopcloud.tech/abra/pkg/app"
"coopcloud.tech/abra/pkg/client/stack"
"coopcloud.tech/abra/pkg/config"
"github.com/docker/distribution/reference"
@ -27,19 +28,6 @@ func getImagePath(image string) (string, error) {
return path, nil
}
// parseVersionLabel parses a $STACK_NAME_$SERVICE_NAME service label
func parseServiceName(label string) string {
idx := strings.LastIndex(label, "_")
return label[idx+1:]
}
// parseVersionLabel parses a $VERSION-$DIGEST service label
func parseVersionLabel(label string) (string, string) {
// versions may look like v4.2-abcd or v4.2-alpine-abcd
idx := strings.LastIndex(label, "-")
return label[:idx], label[idx+1:]
}
var appVersionCommand = &cli.Command{
Name: "version",
Aliases: []string{"v"},
@ -72,7 +60,7 @@ var appVersionCommand = &cli.Command{
for range compose.Services {
status := <-ch
if len(status.Services) > 0 {
serviceName := parseServiceName(status.Services[0].Spec.Name)
serviceName := appPkg.ParseServiceName(status.Services[0].Spec.Name)
statuses[serviceName] = status
}
}
@ -85,7 +73,7 @@ var appVersionCommand = &cli.Command{
if status, ok := statuses[service.Name]; ok {
statusService := status.Services[0]
label := fmt.Sprintf("coop-cloud.%s.%s.version", app.StackName(), service.Name)
version, digest := parseVersionLabel(statusService.Spec.Labels[label])
version, digest := appPkg.ParseVersionLabel(statusService.Spec.Labels[label])
image, err := getImagePath(statusService.Spec.Labels["com.docker.stack.image"])
if err != nil {
logrus.Fatal(err)