func()

in pkg/networks/networks.go [70:101]


func (m *networkMigrator) Complete(ctx context.Context) error {
	path := pkg.LocationPath(m.projectID, pkg.AnyLocation)
	resp, err := m.clients.Container.ListClusters(ctx, path)
	if err != nil {
		return fmt.Errorf("error listing Clusters for network %s: %w", m.ResourcePath(), err)
	}

	if len(resp.MissingZones) > 0 {
		log.Warnf("Clusters.List response is missing zones: %v", resp.MissingZones)
	}

	filteredClusters := make([]*container.Cluster, 0)
	for _, c := range resp.Clusters {
		if c.Network == m.network.Name {
			filteredClusters = append(filteredClusters, c)
		}
	}

	m.children = make([]migrate.Migrator, len(filteredClusters))
	for i, c := range filteredClusters {
		m.children[i] = m.factory(c)
	}

	// API returns error if no GCE resource with an internal IP (e.g. Cluster) is present on the Network:
	//  "No internal IP resources on the Network. This network does not need to be migrated."
	if len(m.children) == 0 {
		log.Warnf("Network %s contains no clusters.", m.ResourcePath())
	}

	sem := make(chan struct{}, m.concurrentClusters)
	return migrate.Complete(ctx, sem, m.children...)
}