func moveNodes()

in pkg/api/platformapi/allocatorapi/vacate.go [123:153]


func moveNodes(id string, params *VacateParams, p *pool.Pool) ([]pool.Validator, bool, error) {
	var merr = multierror.NewPrefixed("vacate error")
	res, err := params.API.V1API.PlatformInfrastructure.MoveClusters(
		platform_infrastructure.NewMoveClustersParams().
			WithAllocatorID(id).
			WithMoveOnly(params.MoveOnly).
			WithContext(api.WithRegion(context.Background(), params.Region)).
			WithValidateOnly(ec.Bool(true)),
		params.AuthWriter,
	)
	if err != nil {
		return nil, false, merr.Append(VacateError{
			AllocatorID: id,
			Err:         apierror.Wrap(err),
		})
	}

	if err := CheckVacateFailures(res.Payload.Failures, params.ClusterFilter, id); err != nil {
		// Errors already wrapped in VacateError
		merr = merr.Append(err)
	}

	work, hasWork := addAllocatorMovesToPool(addAllocatorMovesToPoolParams{
		ID:           id,
		Pool:         p,
		Moves:        res.Payload.Moves,
		VacateParams: params,
	})

	return work, hasWork, merr.ErrorOrNil()
}