@@ -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+
129150func 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