package events import ( "context" "log" "github.com/docker/docker/api/types" dockerEvents "github.com/docker/docker/api/types/events" "github.com/docker/docker/client" ) type Network struct { Action string ID string Network *types.NetworkResource Container *types.ContainerJSON } //goland:noinspection ALL func (c Network) __interface_event() { panic("interface event guard") } func makeNetwork(message dockerEvents.Message, client *client.Client) Event { var e Network e.ID = message.Actor.ID e.Action = message.Action if message.Action != "destroy" { network, err := client.NetworkInspect(context.TODO(), message.Actor.ID, types.NetworkInspectOptions{}) if err != nil { log.Printf("error inspecting network %v: %v", message.Actor.ID, err) } else { e.Network = &network } } if message.Action == "connect" || message.Action == "disconnect" { if containerId, ok := message.Actor.Attributes["container"]; ok { container, err := client.ContainerInspect(context.TODO(), containerId) if err != nil { log.Printf("error inspecting container %v: %v", containerId, err) } else { e.Container = &container } } } return e }