fix: more precise filtering
All checks were successful
continuous-integration/drone/push Build is passing

Closes coop-cloud/organising#305.
This commit is contained in:
2022-03-27 12:40:05 +02:00
committed by Gitea
parent 338360096c
commit 6aa23a76a1
10 changed files with 70 additions and 25 deletions

View File

@ -13,6 +13,7 @@ import (
loader "coopcloud.tech/abra/pkg/upstream/stack"
stack "coopcloud.tech/abra/pkg/upstream/stack"
composetypes "github.com/docker/cli/cli/compose/types"
"github.com/docker/docker/api/types/filters"
"github.com/sirupsen/logrus"
)
@ -63,6 +64,29 @@ func (a App) StackName() string {
return stackName
}
// Filters retrieves exact app filters for querying the container runtime.
func (a App) Filters() (filters.Args, error) {
filters := filters.NewArgs()
composeFiles, err := GetAppComposeFiles(a.Recipe, a.Env)
if err != nil {
return filters, err
}
opts := stack.Deploy{Composefiles: composeFiles}
compose, err := GetAppComposeConfig(a.Recipe, opts, a.Env)
if err != nil {
return filters, err
}
for _, service := range compose.Services {
filter := fmt.Sprintf("^%s_%s", a.StackName(), service.Name)
filters.Add("name", filter)
}
return filters, nil
}
// ByServer sort a slice of Apps
type ByServer []App