Files
2026-09-03 21:57:42 -04:00

56 lines
1.8 KiB
Go

package external
import (
"context"
"coopcloud.tech/abra/pkg/upstream/convert"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/filters"
"github.com/docker/docker/api/types/swarm"
dockerClient "github.com/docker/docker/client"
"github.com/stretchr/testify/mock"
)
type DockerClient interface {
GetStackServices(ctx context.Context, dockerclient dockerClient.APIClient, namespace string) ([]swarm.Service, error)
}
type AbraDockerClient struct{}
func (a *AbraDockerClient) GetStackServices(ctx context.Context, dockerclient dockerClient.APIClient, namespace string) ([]swarm.Service, error) {
return dockerclient.ServiceList(ctx, types.ServiceListOptions{Filters: a.getStackServiceFilter(namespace)})
}
func (a *AbraDockerClient) getStackFilter(namespace string) filters.Args {
filter := filters.NewArgs()
filter.Add("label", convert.LabelNamespace+"="+namespace)
return filter
}
func (a *AbraDockerClient) getStackServiceFilter(namespace string) filters.Args {
return a.getStackFilter(namespace)
}
type MockDockerClient struct {
mock.Mock
}
func (a *MockDockerClient) GetStackServices(ctx context.Context, dockerclient dockerClient.APIClient, namespace string) ([]swarm.Service, error) {
callArgs := []interface{}{ctx}
callArgs = append(callArgs, dockerclient)
callArgs = append(callArgs, namespace)
args := a.Called(callArgs...)
return args.Get(0).([]swarm.Service), args.Error(1)
}
func (a *MockDockerClient) getStackFilter(namespace string) filters.Args {
callArgs := []interface{}{namespace}
args := a.Called(callArgs...)
return args.Get(0).(filters.Args)
}
func (a *MockDockerClient) getStackServiceFilter(namespace string) filters.Args {
callArgs := []interface{}{namespace}
args := a.Called(callArgs...)
return args.Get(0).(filters.Args)
}