mirror of
https://github.com/docker/cli.git
synced 2026-09-27 17:56:04 -04:00
Add network events.
Signed-off-by: David Calavera <david.calavera@gmail.com> Upstream-commit: f15af1eff75f920c956e7c437d1ef81f5c31129a Component: engine
This commit is contained in:
@@ -699,6 +699,7 @@ func (daemon *Daemon) connectToNetwork(container *container.Container, idOrName
|
||||
return derr.ErrorCodeJoinInfo.WithArgs(err)
|
||||
}
|
||||
|
||||
daemon.LogNetworkEventWithAttributes(n, "connect", map[string]string{"container": container.ID})
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -850,11 +851,15 @@ func (daemon *Daemon) releaseNetwork(container *container.Container) {
|
||||
|
||||
sid := container.NetworkSettings.SandboxID
|
||||
settings := container.NetworkSettings.Networks
|
||||
var networks []libnetwork.Network
|
||||
for n := range settings {
|
||||
if nw, err := daemon.FindNetwork(n); err == nil {
|
||||
networks = append(networks, nw)
|
||||
}
|
||||
settings[n] = &networktypes.EndpointSettings{}
|
||||
}
|
||||
|
||||
container.NetworkSettings = &network.Settings{Networks: networks}
|
||||
container.NetworkSettings = &network.Settings{Networks: settings}
|
||||
|
||||
if sid == "" || len(settings) == 0 {
|
||||
return
|
||||
@@ -873,8 +878,8 @@ func (daemon *Daemon) releaseNetwork(container *container.Container) {
|
||||
attributes := map[string]string{
|
||||
"container": container.ID,
|
||||
}
|
||||
for nwID := range settings {
|
||||
daemon.logNetworkEventWithID(nwID, "disconnect", attributes)
|
||||
for _, nw := range networks {
|
||||
daemon.LogNetworkEventWithAttributes(nw, "disconnect", attributes)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -61,12 +61,8 @@ func (daemon *Daemon) LogNetworkEvent(nw libnetwork.Network, action string) {
|
||||
func (daemon *Daemon) LogNetworkEventWithAttributes(nw libnetwork.Network, action string, attributes map[string]string) {
|
||||
attributes["name"] = nw.Name()
|
||||
attributes["type"] = nw.Type()
|
||||
daemon.logNetworkEventWithID(nw.ID(), action, attributes)
|
||||
}
|
||||
|
||||
func (daemon *Daemon) logNetworkEventWithID(id, action string, attributes map[string]string) {
|
||||
actor := events.Actor{
|
||||
ID: id,
|
||||
ID: nw.ID(),
|
||||
Attributes: attributes,
|
||||
}
|
||||
daemon.EventsService.Log(action, events.NetworkEventType, actor)
|
||||
|
||||
@@ -7,6 +7,8 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/docker/docker/api/types/network"
|
||||
derr "github.com/docker/docker/errors"
|
||||
"github.com/docker/docker/runconfig"
|
||||
"github.com/docker/libnetwork"
|
||||
)
|
||||
|
||||
@@ -114,7 +116,13 @@ func (daemon *Daemon) CreateNetwork(name, driver string, ipam network.IPAM, opti
|
||||
|
||||
nwOptions = append(nwOptions, libnetwork.NetworkOptionIpam(ipam.Driver, "", v4Conf, v6Conf))
|
||||
nwOptions = append(nwOptions, libnetwork.NetworkOptionDriverOpts(options))
|
||||
return c.NewNetwork(driver, name, nwOptions...)
|
||||
n, err := c.NewNetwork(driver, name, nwOptions...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
daemon.LogNetworkEvent(n, "create")
|
||||
return n, nil
|
||||
}
|
||||
|
||||
func getIpamConfig(data []network.IPAMConfig) ([]*libnetwork.IpamConf, []*libnetwork.IpamConf, error) {
|
||||
@@ -178,3 +186,21 @@ func (daemon *Daemon) GetNetworkDriverList() map[string]bool {
|
||||
|
||||
return pluginList
|
||||
}
|
||||
|
||||
// DeleteNetwork destroys a network unless it's one of docker's predefined networks.
|
||||
func (daemon *Daemon) DeleteNetwork(networkID string) error {
|
||||
nw, err := daemon.FindNetwork(networkID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if runconfig.IsPreDefinedNetwork(nw.Name()) {
|
||||
return derr.ErrorCodeCantDeletePredefinedNetwork.WithArgs(nw.Name())
|
||||
}
|
||||
|
||||
if err := nw.Delete(); err != nil {
|
||||
return err
|
||||
}
|
||||
daemon.LogNetworkEvent(nw, "destroy")
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user