From dd8f63363e6d90c280bbd194ad9bddb2d539fc8f Mon Sep 17 00:00:00 2001 From: Antonis Kalipetis Date: Tue, 22 Nov 2016 10:42:19 +0200 Subject: [PATCH] Fix issue where instance name rotation was faulty Previously, if node2 was deleted in a node1, node2, node3 set, the next node creation would fail since it would always try to assign node3 as a name. Now, the first available name is always assigned. Signed-off-by: Antonis Kalipetis --- services/docker.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/services/docker.go b/services/docker.go index a77d1bf..362d91e 100644 --- a/services/docker.go +++ b/services/docker.go @@ -86,14 +86,28 @@ func CreateInstance(session *Session, dindImage string) (*Instance, error) { t := true h.Resources.OomKillDisable = &t - nodeName := fmt.Sprintf("node%d", len(session.Instances)+1) + var nodeName string + var containerName string + for i := 1; ; i++ { + nodeName = fmt.Sprintf("node%d", i) + containerName = fmt.Sprintf("%s_%s", session.Id[:8], nodeName) + exists := false + for _, instance := range session.Instances { + if instance.Name == containerName { + exists = true + break + } + } + if !exists { + break + } + } conf := &container.Config{Hostname: nodeName, Image: dindImage, Tty: true, OpenStdin: true, AttachStdin: true, AttachStdout: true, AttachStderr: true} networkConf := &network.NetworkingConfig{ map[string]*network.EndpointSettings{ session.Id: &network.EndpointSettings{Aliases: []string{nodeName}}, }, } - containerName := fmt.Sprintf("%s_%s", session.Id[:8], nodeName) container, err := c.ContainerCreate(context.Background(), conf, h, networkConf, containerName) if err != nil {