mirror of
https://github.com/docker/cli.git
synced 2026-09-27 17:56:04 -04:00
Support configuration networks
- They are configuration-only networks which can be used to supply the configuration when creating regular networks. - They do not get allocated and do net get plumbed. Drivers do not get to know about them. - They can be removed, once no other network is using them. - When user creates a network specifying a configuration network for the config, no other network specific configuration field is are accepted. User can only specify network operator fields (attachable, internal,...) Signed-off-by: Alessandro Boch <aboch@docker.com> Upstream-commit: 9ee7b4dda926a1444dc0ea50c4ca6d90c8684060 Component: engine
This commit is contained in:
@@ -320,6 +320,10 @@ func (daemon *Daemon) createNetwork(create types.NetworkCreateRequest, id string
|
||||
libnetwork.NetworkOptionIngress(create.Ingress),
|
||||
}
|
||||
|
||||
if create.ConfigOnly {
|
||||
nwOptions = append(nwOptions, libnetwork.NetworkOptionConfigOnly())
|
||||
}
|
||||
|
||||
if create.IPAM != nil {
|
||||
ipam := create.IPAM
|
||||
v4Conf, v6Conf, err := getIpamConfig(ipam.Config)
|
||||
@@ -337,6 +341,10 @@ func (daemon *Daemon) createNetwork(create types.NetworkCreateRequest, id string
|
||||
nwOptions = append(nwOptions, libnetwork.NetworkOptionPersist(false))
|
||||
}
|
||||
|
||||
if create.ConfigFrom != nil {
|
||||
nwOptions = append(nwOptions, libnetwork.NetworkOptionConfigFrom(create.ConfigFrom.Network))
|
||||
}
|
||||
|
||||
n, err := c.NewNetwork(driver, create.Name, id, nwOptions...)
|
||||
if err != nil {
|
||||
if _, ok := err.(libnetwork.ErrDataStoreNotInitialized); ok {
|
||||
@@ -501,10 +509,16 @@ func (daemon *Daemon) deleteNetwork(networkID string, dynamic bool) error {
|
||||
if err := nw.Delete(); err != nil {
|
||||
return err
|
||||
}
|
||||
daemon.pluginRefCount(nw.Type(), driverapi.NetworkPluginEndpointType, plugingetter.Release)
|
||||
ipamType, _, _, _ := nw.Info().IpamConfig()
|
||||
daemon.pluginRefCount(ipamType, ipamapi.PluginEndpointType, plugingetter.Release)
|
||||
daemon.LogNetworkEvent(nw, "destroy")
|
||||
|
||||
// If this is not a configuration only network, we need to
|
||||
// update the corresponding remote drivers' reference counts
|
||||
if !nw.Info().ConfigOnly() {
|
||||
daemon.pluginRefCount(nw.Type(), driverapi.NetworkPluginEndpointType, plugingetter.Release)
|
||||
ipamType, _, _, _ := nw.Info().IpamConfig()
|
||||
daemon.pluginRefCount(ipamType, ipamapi.PluginEndpointType, plugingetter.Release)
|
||||
daemon.LogNetworkEvent(nw, "destroy")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -315,6 +315,9 @@ func (daemon *Daemon) localNetworksPrune(ctx context.Context, pruneFilters filte
|
||||
return true
|
||||
default:
|
||||
}
|
||||
if nw.Info().ConfigOnly() {
|
||||
return false
|
||||
}
|
||||
if !until.IsZero() && nw.Info().Created().After(until) {
|
||||
return false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user