From 11ae9213644fe1a22142b189ed8712c8f198734c Mon Sep 17 00:00:00 2001 From: Simone Gotti Date: Wed, 12 Jun 2019 17:29:43 +0200 Subject: [PATCH] docker driver: allow multiple executors on same docker daemon This is useful primarily for testing purposes. Add an executorID label to created container to filter out containers not matching our executorID. --- internal/services/executor/driver/docker.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/internal/services/executor/driver/docker.go b/internal/services/executor/driver/docker.go index e864364..590c262 100644 --- a/internal/services/executor/driver/docker.go +++ b/internal/services/executor/driver/docker.go @@ -160,6 +160,7 @@ func (d *DockerDriver) NewPod(ctx context.Context, podConfig *PodConfig, out io. searchLabels := map[string]string{} searchLabels[agolaLabelKey] = agolaLabelValue + searchLabels[executorIDKey] = d.executorID searchLabels[podIDKey] = podConfig.ID searchLabels[taskIDKey] = podConfig.TaskID args := filters.NewArgs() @@ -256,6 +257,7 @@ func (d *DockerDriver) createContainer(ctx context.Context, index int, podConfig labels := map[string]string{} labels[agolaLabelKey] = agolaLabelValue + labels[executorIDKey] = d.executorID labels[podIDKey] = podConfig.ID labels[taskIDKey] = podConfig.TaskID @@ -313,6 +315,11 @@ func (d *DockerDriver) GetPods(ctx context.Context, all bool) ([]Pod, error) { podsMap := map[string]*DockerPod{} for _, container := range containers { + executorID, ok := container.Labels[executorIDKey] + if !ok || executorID != d.executorID { + // skip container + continue + } podID, ok := container.Labels[podIDKey] if !ok { // skip container @@ -330,6 +337,11 @@ func (d *DockerDriver) GetPods(ctx context.Context, all bool) ([]Pod, error) { } for _, container := range containers { + executorID, ok := container.Labels[executorIDKey] + if !ok || executorID != d.executorID { + // skip container + continue + } podID, ok := container.Labels[podIDKey] if !ok { // skip container