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