daemon: remove some intermediate vars and some cleanup
Remove some intermediate vars, move vars closer to where they're used, and introduce local var for `nw.Name()` to reduce some locking/unlocking in: - `Daemon.allocateNetwork()` - `Daemon.releaseNetwork()` - `Daemon.connectToNetwork()` - `Daemon.disconnectFromNetwork()` - `Daemon.findAndAttachNetwork()` Also un-wrapping some lines to make it slightly easier to read the conditions. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
8153a7760e
commit
4f9540f19f
1 changed files with 23 additions and 41 deletions
|
@ -356,8 +356,7 @@ func (daemon *Daemon) findAndAttachNetwork(container *container.Container, idOrN
|
|||
|
||||
n, err := daemon.FindNetwork(id)
|
||||
if err != nil {
|
||||
// We should always be able to find the network for a
|
||||
// managed container.
|
||||
// We should always be able to find the network for a managed container.
|
||||
if container.Managed {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
@ -385,22 +384,18 @@ func (daemon *Daemon) findAndAttachNetwork(container *container.Container, idOrN
|
|||
if epConfig.IPAMConfig.IPv4Address != "" {
|
||||
addresses = append(addresses, epConfig.IPAMConfig.IPv4Address)
|
||||
}
|
||||
|
||||
if epConfig.IPAMConfig.IPv6Address != "" {
|
||||
addresses = append(addresses, epConfig.IPAMConfig.IPv6Address)
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
nwCfg *networktypes.NetworkingConfig
|
||||
retryCount int
|
||||
)
|
||||
|
||||
if n == nil && daemon.attachableNetworkLock != nil {
|
||||
daemon.attachableNetworkLock.Lock(id)
|
||||
defer daemon.attachableNetworkLock.Unlock(id)
|
||||
}
|
||||
|
||||
retryCount := 0
|
||||
var nwCfg *networktypes.NetworkingConfig
|
||||
for {
|
||||
// In all other cases, attempt to attach to the network to
|
||||
// trigger attachment in the swarm cluster manager.
|
||||
|
@ -526,13 +521,10 @@ func (daemon *Daemon) allocateNetwork(cfg *config.Config, container *container.C
|
|||
return nil
|
||||
}
|
||||
|
||||
var (
|
||||
start = time.Now()
|
||||
controller = daemon.netController
|
||||
)
|
||||
start := time.Now()
|
||||
|
||||
// Cleanup any stale sandbox left over due to ungraceful daemon shutdown
|
||||
if err := controller.SandboxDestroy(container.ID); err != nil {
|
||||
if err := daemon.netController.SandboxDestroy(container.ID); err != nil {
|
||||
log.G(context.TODO()).WithError(err).Errorf("failed to cleanup up stale network sandbox for container %s", container.ID)
|
||||
}
|
||||
|
||||
|
@ -541,7 +533,6 @@ func (daemon *Daemon) allocateNetwork(cfg *config.Config, container *container.C
|
|||
}
|
||||
|
||||
updateSettings := false
|
||||
|
||||
if len(container.NetworkSettings.Networks) == 0 {
|
||||
daemon.updateContainerNetworkSettings(container, nil)
|
||||
updateSettings = true
|
||||
|
@ -728,8 +719,7 @@ func (daemon *Daemon) connectToNetwork(cfg *config.Config, container *container.
|
|||
if container.HostConfig.NetworkMode.IsContainer() {
|
||||
return runconfig.ErrConflictSharedNetwork
|
||||
}
|
||||
if containertypes.NetworkMode(idOrName).IsBridge() &&
|
||||
cfg.DisableBridge {
|
||||
if cfg.DisableBridge && containertypes.NetworkMode(idOrName).IsBridge() {
|
||||
container.Config.NetworkDisabled = true
|
||||
return nil
|
||||
}
|
||||
|
@ -744,14 +734,12 @@ func (daemon *Daemon) connectToNetwork(cfg *config.Config, container *container.
|
|||
if n == nil {
|
||||
return nil
|
||||
}
|
||||
nwName := n.Name()
|
||||
|
||||
var operIPAM bool
|
||||
if nwCfg != nil {
|
||||
if epConfig, ok := nwCfg.EndpointsConfig[n.Name()]; ok {
|
||||
if endpointConfig.IPAMConfig == nil ||
|
||||
(endpointConfig.IPAMConfig.IPv4Address == "" &&
|
||||
endpointConfig.IPAMConfig.IPv6Address == "" &&
|
||||
len(endpointConfig.IPAMConfig.LinkLocalIPs) == 0) {
|
||||
if epConfig, ok := nwCfg.EndpointsConfig[nwName]; ok {
|
||||
if endpointConfig.IPAMConfig == nil || (endpointConfig.IPAMConfig.IPv4Address == "" && endpointConfig.IPAMConfig.IPv6Address == "" && len(endpointConfig.IPAMConfig.LinkLocalIPs) == 0) {
|
||||
operIPAM = true
|
||||
}
|
||||
|
||||
|
@ -765,7 +753,6 @@ func (daemon *Daemon) connectToNetwork(cfg *config.Config, container *container.
|
|||
return err
|
||||
}
|
||||
|
||||
controller := daemon.netController
|
||||
sb := daemon.getNetworkSandbox(container)
|
||||
createOptions, err := buildCreateEndpointOptions(container, n, endpointConfig, sb, cfg.DNS)
|
||||
if err != nil {
|
||||
|
@ -784,7 +771,7 @@ func (daemon *Daemon) connectToNetwork(cfg *config.Config, container *container.
|
|||
}
|
||||
}
|
||||
}()
|
||||
container.NetworkSettings.Networks[n.Name()] = &network.EndpointSettings{
|
||||
container.NetworkSettings.Networks[nwName] = &network.EndpointSettings{
|
||||
EndpointSettings: endpointConfig,
|
||||
IPAMOperational: operIPAM,
|
||||
}
|
||||
|
@ -800,7 +787,7 @@ func (daemon *Daemon) connectToNetwork(cfg *config.Config, container *container.
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
sb, err = controller.NewSandbox(container.ID, sbOptions...)
|
||||
sb, err = daemon.netController.NewSandbox(container.ID, sbOptions...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -885,8 +872,7 @@ func (daemon *Daemon) disconnectFromNetwork(container *container.Container, n *l
|
|||
ep *libnetwork.Endpoint
|
||||
sbox *libnetwork.Sandbox
|
||||
)
|
||||
|
||||
s := func(current *libnetwork.Endpoint) bool {
|
||||
n.WalkEndpoints(func(current *libnetwork.Endpoint) bool {
|
||||
epInfo := current.Info()
|
||||
if epInfo == nil {
|
||||
return false
|
||||
|
@ -899,19 +885,17 @@ func (daemon *Daemon) disconnectFromNetwork(container *container.Container, n *l
|
|||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
n.WalkEndpoints(s)
|
||||
|
||||
if ep == nil && force {
|
||||
epName := strings.TrimPrefix(container.Name, "/")
|
||||
ep, err := n.EndpointByName(epName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return ep.Delete(force)
|
||||
}
|
||||
})
|
||||
|
||||
if ep == nil {
|
||||
if force {
|
||||
var err error
|
||||
ep, err = n.EndpointByName(strings.TrimPrefix(container.Name, "/"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return ep.Delete(force)
|
||||
}
|
||||
return fmt.Errorf("container %s is not connected to network %s", container.ID, n.Name())
|
||||
}
|
||||
|
||||
|
@ -1005,16 +989,14 @@ func (daemon *Daemon) releaseNetwork(container *container.Container) {
|
|||
return
|
||||
}
|
||||
|
||||
sid := container.NetworkSettings.SandboxID
|
||||
settings := container.NetworkSettings.Networks
|
||||
container.NetworkSettings.Ports = nil
|
||||
|
||||
sid := container.NetworkSettings.SandboxID
|
||||
if sid == "" {
|
||||
return
|
||||
}
|
||||
|
||||
var networks []*libnetwork.Network
|
||||
for n, epSettings := range settings {
|
||||
for n, epSettings := range container.NetworkSettings.Networks {
|
||||
if nw, err := daemon.FindNetwork(getNetworkID(n, epSettings.EndpointSettings)); err == nil {
|
||||
networks = append(networks, nw)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue