Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 /// <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);
 }