Skip to content

Commit

Permalink
Merge pull request #2373 from arkodg/ungraceful-exit-config-from-net-…
Browse files Browse the repository at this point in the history
…clean

Clean up --config-only networks after --config-from networks have ungracefully exited
  • Loading branch information
tiborvass committed Jun 4, 2019
2 parents 3c26b4e + eacb56d commit fc5a7d9
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -705,11 +705,17 @@ const overlayDSROptionString = "dsr"
// NewNetwork creates a new network of the specified network type. The options
// are network specific and modeled in a generic way.
func (c *controller) NewNetwork(networkType, name string, id string, options ...NetworkOption) (Network, error) {
var (
cap *driverapi.Capability
err error
t *network
)

if id != "" {
c.networkLocker.Lock(id)
defer c.networkLocker.Unlock(id)

if _, err := c.NetworkByID(id); err == nil {
if _, err = c.NetworkByID(id); err == nil {
return nil, NetworkNameError(id)
}
}
Expand Down Expand Up @@ -738,15 +744,10 @@ func (c *controller) NewNetwork(networkType, name string, id string, options ...
}

network.processOptions(options...)
if err := network.validateConfiguration(); err != nil {
if err = network.validateConfiguration(); err != nil {
return nil, err
}

var (
cap *driverapi.Capability
err error
)

// Reset network types, force local scope and skip allocation and
// plumbing for configuration networks. Reset of the config-only
// network drivers is needed so that this special network is not
Expand Down Expand Up @@ -793,11 +794,11 @@ func (c *controller) NewNetwork(networkType, name string, id string, options ...
// From this point on, we need the network specific configuration,
// which may come from a configuration-only network
if network.configFrom != "" {
t, err := c.getConfigNetwork(network.configFrom)
t, err = c.getConfigNetwork(network.configFrom)
if err != nil {
return nil, types.NotFoundErrorf("configuration network %q does not exist", network.configFrom)
}
if err := t.applyConfigurationTo(network); err != nil {
if err = t.applyConfigurationTo(network); err != nil {
return nil, types.InternalErrorf("Failed to apply configuration: %v", err)
}
defer func() {
Expand Down

0 comments on commit fc5a7d9

Please sign in to comment.