Пример #1
0
func (d *Deployment) destroyUnits(f scheduler.Scheduler, units []string, ui *stateUI) error {
	if len(units) == 0 {
		return maskAny(fmt.Errorf("No units on cluster: %s", d.cluster.Stack))
	}

	ui.MessageSink <- fmt.Sprintf("Stopping %d unit(s)", len(units))
	stats, err := f.Stop(ui.EventSink, units...)
	if err != nil {
		ui.Warningf("Warning: stop failed.\n%s\n", err.Error())
	}

	if stats.StoppedGlobalUnits > 0 {
		InterruptibleSleep(ui.MessageSink, d.StopDelay, "Waiting for %s...")
	}

	ui.MessageSink <- fmt.Sprintf("Destroying %d unit(s)", len(units))
	if err := f.Destroy(ui.EventSink, units...); err != nil {
		return maskAny(err)
	}

	return nil
}