refresh networks on whole cluster after create and rm

Signed-off-by: Victor Vieux <victorvieux@gmail.com>
This commit is contained in:
Victor Vieux 2015-10-16 17:13:41 -07:00
parent 6ee3420542
commit e9c486b046
1 changed files with 18 additions and 2 deletions

View File

@ -176,7 +176,9 @@ func (c *Cluster) RemoveContainer(container *cluster.Container, force, volumes b
// RemoveNetwork removes a network from the cluster
func (c *Cluster) RemoveNetwork(network *cluster.Network) error {
return network.Engine.RemoveNetwork(network)
err := network.Engine.RemoveNetwork(network)
c.refreshNetworks()
return err
}
func (c *Cluster) getEngineByAddr(addr string) *cluster.Engine {
@ -335,6 +337,18 @@ func (c *Cluster) RemoveImages(name string, force bool) ([]*dockerclient.ImageDe
return out, err
}
func (c *Cluster) refreshNetworks() {
var wg sync.WaitGroup
for _, e := range c.engines {
wg.Add(1)
go func() {
e.RefreshNetworks()
wg.Done()
}()
}
wg.Wait()
}
// CreateNetwork creates a network in the cluster
func (c *Cluster) CreateNetwork(request *dockerclient.NetworkCreate) (response *dockerclient.NetworkCreateResponse, err error) {
var (
@ -353,7 +367,9 @@ func (c *Cluster) CreateNetwork(request *dockerclient.NetworkCreate) (response *
return nil, err
}
if nodes != nil {
return c.engines[nodes[0].ID].CreateNetwork(request)
resp, err := c.engines[nodes[0].ID].CreateNetwork(request)
c.refreshNetworks()
return resp, err
}
return nil, nil
}