private List <PlanAction> CompilePoolUpdateActionList(Host host, Pool_update poolUpdate) { var actions = new List <PlanAction> { new ApplyPoolUpdatePlanAction(host, poolUpdate) }; if (poolUpdate.after_apply_guidance.Contains(update_after_apply_guidance.restartHost) && !(LivePatchCodesByHost != null && LivePatchCodesByHost.ContainsKey(host.uuid) && LivePatchCodesByHost[host.uuid] == livepatch_status.ok_livepatch_complete)) { actions.Add(new RestartHostPlanAction(host, host.GetRunningVMs())); } if (poolUpdate.after_apply_guidance.Contains(update_after_apply_guidance.restartXAPI)) { actions.Add(new RestartAgentPlanAction(host)); } if (poolUpdate.after_apply_guidance.Contains(update_after_apply_guidance.restartHVM)) { actions.Add(new RebootVMsPlanAction(host, host.GetRunningHvmVMs())); } if (poolUpdate.after_apply_guidance.Contains(update_after_apply_guidance.restartPV)) { actions.Add(new RebootVMsPlanAction(host, host.GetRunningPvVMs())); } return(actions); }
private List <PlanAction> CompileActionList(Host host, Pool_patch patch) { if (SelectedUpdateType == UpdateType.ISO) { return(CompileSuppPackActionList(host)); } List <PlanAction> actions = new List <PlanAction>(); if (patch == null) { return(actions); } List <XenRef <VM> > runningVMs = RunningVMs(host, patch); actions.Add(new ApplyPatchPlanAction(host, patch)); if (patch.after_apply_guidance.Contains(after_apply_guidance.restartHost) && !(LivePatchCodesByHost != null && LivePatchCodesByHost.ContainsKey(host.uuid) && LivePatchCodesByHost[host.uuid] == livepatch_status.ok_livepatch_complete)) { actions.Add(new EvacuateHostPlanAction(host)); actions.Add(new RebootHostPlanAction(host)); actions.Add(new BringBabiesBackAction(runningVMs, host, false)); } if (patch.after_apply_guidance.Contains(after_apply_guidance.restartXAPI)) { actions.Add(new RestartAgentPlanAction(host)); } if (patch.after_apply_guidance.Contains(after_apply_guidance.restartHVM)) { actions.Add(new RebootVMsPlanAction(host, RunningHvmVMs(host))); } if (patch.after_apply_guidance.Contains(after_apply_guidance.restartPV)) { actions.Add(new RebootVMsPlanAction(host, RunningPvVMs(host))); } return(actions); }
/// <summary> /// Live patching is attempted for a host if the LivePatchCodesByHost contains the LIVEPATCH_COMPLETE value for that host /// </summary> /// <param name="host"></param> /// <returns></returns> private bool LivePatchingAttemptedForHost(Host host) { return(LivePatchCodesByHost != null && LivePatchCodesByHost.ContainsKey(host.uuid) && LivePatchCodesByHost[host.uuid] == livepatch_status.ok_livepatch_complete); }
/// <summary> /// Live patching is attempted for a host if the LivePatchCodesByHost contains the LIVEPATCH_COMPLETE value for that host /// </summary> /// <param name="host"></param> /// <returns></returns> private bool LivePatchingAttemptedForHost(Host host) { return(LivePatchCodesByHost != null && LivePatchCodesByHost.ContainsKey(host.uuid) && LivePatchCodesByHost[host.uuid] == LivePatchCode.PATCH_PRECHECK_LIVEPATCH_COMPLETE); }