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