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...)
}