Skip to content

Commit 0bf0876

Browse files
author
Neil Jerram
committed
Make enhancements in docker provider, not just podman
1 parent bd2457f commit 0bf0876

File tree

1 file changed

+39
-2
lines changed

1 file changed

+39
-2
lines changed

pkg/cluster/internal/providers/docker/provision.go

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,15 +109,23 @@ func planCreation(cfg *config.Cluster, networkName string) (createContainerFuncs
109109
if err != nil {
110110
return err
111111
}
112-
return createContainer(args)
112+
err = createContainer(args)
113+
if err == nil {
114+
err = connectExtraNetworks(node, name)
115+
}
116+
return err
113117
})
114118
case config.WorkerRole:
115119
createContainerFuncs = append(createContainerFuncs, func() error {
116120
args, err := runArgsForNode(node, cfg.Networking.IPFamily, name, genericArgs)
117121
if err != nil {
118122
return err
119123
}
120-
return createContainer(args)
124+
err = createContainer(args)
125+
if err == nil {
126+
err = connectExtraNetworks(node, name)
127+
}
128+
return err
121129
})
122130
default:
123131
return nil, errors.Errorf("unknown node role: %q", node.Role)
@@ -126,6 +134,19 @@ func planCreation(cfg *config.Cluster, networkName string) (createContainerFuncs
126134
return createContainerFuncs, nil
127135
}
128136

137+
func connectExtraNetworks(node *config.Node, name string) error {
138+
for i, network := range node.Networks {
139+
if i == 0 {
140+
// First network is already handled in the docker run.
141+
continue
142+
}
143+
if err := exec.Command("docker", "network", "connect", network, name).Run(); err != nil {
144+
return errors.Wrap(err, "docker network connect error")
145+
}
146+
}
147+
return nil
148+
}
149+
129150
func createContainer(args []string) error {
130151
if err := exec.Command("docker", args...).Run(); err != nil {
131152
return errors.Wrap(err, "docker run error")
@@ -254,6 +275,22 @@ func runArgsForNode(node *config.Node, clusterIPFamily config.ClusterIPFamily, n
254275
}
255276
args = append(args, mappingArgs...)
256277

278+
fmt.Printf("networks = %v\n", node.Networks)
279+
if len(node.Networks) > 0 {
280+
updated := false
281+
for i := range args {
282+
if args[i] == "--net" || args[i] == "--network" {
283+
args[i+1] = node.Networks[0]
284+
updated = true
285+
break
286+
}
287+
}
288+
if !updated {
289+
args = append(args, "--net", node.Networks[0])
290+
}
291+
}
292+
fmt.Printf("args = %v\n", args)
293+
257294
// finally, specify the image to run
258295
return append(args, node.Image), nil
259296
}

0 commit comments

Comments
 (0)