func (s *Service) connectContainerToNetworks(ctx context.Context, c *container.Container, oneOff bool) error { connectedNetworks, err := c.Networks() if err != nil { return nil } if s.serviceConfig.Networks != nil { for _, network := range s.serviceConfig.Networks.Networks { existingNetwork, ok := connectedNetworks[network.Name] if ok { // FIXME(vdemeester) implement alias checking (to not disconnect/reconnect for nothing) aliasPresent := false for _, alias := range existingNetwork.Aliases { // FIXME(vdemeester) use shortID instead of ID ID, _ := c.ID() if alias == ID { aliasPresent = true } } if aliasPresent { continue } if err := s.NetworkDisconnect(ctx, c, network, oneOff); err != nil { return err } } if err := s.NetworkConnect(ctx, c, network, oneOff); err != nil { return err } } } return nil }