private void ManageSemiAutomaticPlanAction(object sender, ManageSemiAutomaticPlanActionArgs e) { if (UpgradeStatus == RollingUpgradeStatus.Cancelled) return; var upgradeHostPlanAction = e.Action; //Show dialog prepare host boot from CD or PXE boot and click OK to reboot string msg = string.Format(Messages.ROLLING_UPGRADE_REBOOT_MESSAGE, upgradeHostPlanAction.Host.Name); UpgradeManualHostPlanAction action = upgradeHostPlanAction; Program.Invoke(this, () => { using (Dialog = new NotModalThreeButtonDialog(SystemIcons.Information, msg, Messages.REBOOT, Messages.SKIP_SERVER)) { Dialog.ShowDialog(this); if (Dialog.DialogResult != DialogResult.OK) // Cancel or Unknown { completedTitleLabel = Messages.ROLLING_UPGRADE_UPGRADE_NOT_COMPLETED; if(action.Host.IsMaster()) throw new ApplicationException(Messages.EXCEPTION_USER_CANCELLED_MASTER); throw new ApplicationException(Messages.EXCEPTION_USER_CANCELLED); } } }); string beforeRebootProductVersion = upgradeHostPlanAction.Host.LongProductVersion; string hostName = upgradeHostPlanAction.Host.Name; upgradeHostPlanAction.Timeout += new EventHandler(upgradeHostPlanAction_Timeout); try { do { if (UpgradeStatus == RollingUpgradeStatus.Cancelled) break; //Reboot with timeout of 20 min upgradeHostPlanAction.Run(); //if comes back and does not have a different product version if (Helpers.SameServerVersion(upgradeHostPlanAction.Host, beforeRebootProductVersion)) { using (var dialog = new NotModalThreeButtonDialog(SystemIcons.Exclamation, string.Format(Messages.ROLLING_UPGRADE_REBOOT_AGAIN_MESSAGE, hostName) , Messages.REBOOT_AGAIN_BUTTON_LABEL, Messages.SKIP_SERVER)) { Program.Invoke(this, () => dialog.ShowDialog(this)); if (dialog.DialogResult != DialogResult.OK) // Cancel or Unknown throw new Exception(Messages.HOST_REBOOTED_SAME_VERSION); else upgradeHostPlanAction = new UpgradeManualHostPlanAction(upgradeHostPlanAction.Host); } } } while (Helpers.SameServerVersion(upgradeHostPlanAction.Host, beforeRebootProductVersion)); } finally { upgradeHostPlanAction.Timeout -= new EventHandler(upgradeHostPlanAction_Timeout); } }
public ManageSemiAutomaticPlanActionArgs(UpgradeManualHostPlanAction action) { Action = action; }