func()

in pkg/clusters/clusters.go [73:103]


func (m *clusterMigrator) Complete(ctx context.Context) error {
	resp, err := m.clients.Container.ListNodePools(ctx, m.ResourcePath())
	if err != nil {
		return fmt.Errorf("error retrieving NodePools for Cluster %s: %w", m.ResourcePath(), err)
	}
	path := pkg.LocationPath(m.projectID, m.cluster.Location)
	m.serverConfig, err = m.clients.Container.GetServerConfig(ctx, path)
	if err != nil {
		return fmt.Errorf("error retrieving ServerConfig for Cluster %s: %w", m.ResourcePath(), err)
	}

	m.releaseChannel = getReleaseChannel(m.cluster.ReleaseChannel)
	def, valid := getVersions(m.serverConfig, m.releaseChannel, ControlPlane)
	if m.opts.InPlaceControlPlaneUpgrade {
		m.resolvedDesiredControlPlaneVersion = m.cluster.CurrentMasterVersion
	} else {
		m.resolvedDesiredControlPlaneVersion, err = resolveVersion(m.opts.DesiredControlPlaneVersion, def, valid)
		if err != nil {
			return err
		}
	}

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

	log.Infof("Initialize NodePool objects for Cluster %s", m.ResourcePath())
	sem := make(chan struct{}, m.opts.ConcurrentNodePools)
	return migrate.Complete(ctx, sem, m.children...)
}