func waitVacateCompletion()

in pkg/api/platformapi/allocatorapi/vacate.go [159:189]


func waitVacateCompletion(p *pool.Pool, hasWork bool) error {
	var merr = multierror.NewPrefixed("vacate error")
	if hasWork {
		if err := p.Wait(); err != nil {
			unpackMultierror(merr, err)
		}
	}

	if p.Status() < pool.StoppingStatus {
		// Stop the pool once we've finished all the work
		if err := p.Stop(); err != nil && err != pool.ErrStopOperationTimedOut {
			unpackMultierror(merr, err)
		}
	}

	leftovers, _ := p.Leftovers()
	for _, lover := range leftovers {
		if params, ok := lover.(*VacateClusterParams); ok {
			merr = merr.Append(VacateError{
				AllocatorID: params.ID,
				ResourceID:  params.ClusterID,
				Kind:        params.Kind,
				Err: apierror.JSONError{
					Message: "was either cancelled or not processed, follow up accordingly",
				},
			})
		}
	}

	return merr.ErrorOrNil()
}