func (s *Scheduler) executePlan(clusterModel *state.ClusterModel, plan plan) error { steps := plan.steps() clusterModel.BeginScheduling(len(steps)) for _, step := range steps { clusterModel.SchedulingStepStarted(step.StepType()) err := step.Perform() if err != nil { clusterModel.SchedulingError(err) return err } clusterModel.SchedulingStepCompleted() } return nil }