MCPcopy
hub / github.com/docker/compose / removeDivergedNetwork

Method removeDivergedNetwork

pkg/compose/create.go:1473–1507  ·  pkg/compose/create.go::composeService.removeDivergedNetwork
(ctx context.Context, project *types.Project, name string, n *types.NetworkConfig)

Source from the content-addressed store, hash-verified

1471}
1472
1473func (s *composeService) removeDivergedNetwork(ctx context.Context, project *types.Project, name string, n *types.NetworkConfig) (Containers, error) {
1474 // Remove services attached to this network to force recreation
1475 var services []string
1476 for _, service := range project.Services.Filter(func(config types.ServiceConfig) bool {
1477 _, ok := config.Networks[name]
1478 return ok
1479 }) {
1480 services = append(services, service.Name)
1481 }
1482
1483 // Stop containers so we can remove network
1484 // They will be restarted (actually: recreated) with the updated network
1485 err := s.stop(ctx, project.Name, api.StopOptions{
1486 Services: services,
1487 Project: project,
1488 }, nil)
1489 if err != nil {
1490 return nil, err
1491 }
1492
1493 containers, err := s.getContainers(ctx, project.Name, oneOffExclude, true, services...)
1494 if err != nil {
1495 return nil, err
1496 }
1497
1498 err = s.disconnectNetwork(ctx, n.Name, containers)
1499 if err != nil {
1500 return nil, err
1501 }
1502
1503 _, err = s.apiClient().NetworkRemove(ctx, n.Name, client.NetworkRemoveOptions{})
1504 eventName := fmt.Sprintf("Network %s", n.Name)
1505 s.events.On(removedEvent(eventName))
1506 return containers, err
1507}
1508
1509func (s *composeService) disconnectNetwork(
1510 ctx context.Context,

Callers 1

Calls 7

stopMethod · 0.95
getContainersMethod · 0.95
disconnectNetworkMethod · 0.95
apiClientMethod · 0.95
removedEventFunction · 0.85
OnMethod · 0.65
NetworkRemoveMethod · 0.45

Tested by

no test coverage detected