/* Copyright (c) Citrix Systems Inc. * All rights reserved. * * Redistribution and use in source and binary forms, * with or without modification, are permitted provided * that the following conditions are met: * * * Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ using System.Collections.Generic; using System.Text; using XenAdmin.Core; using XenAPI; namespace XenAdmin.Wizards.PatchingWizard { public class PatchingWizardModeGuidanceBuilder { public string ModeRetailPatch(List servers, Pool_patch patch) { StringBuilder sbLog = new StringBuilder(); foreach (after_apply_guidance guide in patch.after_apply_guidance) { sbLog.AppendLine(GetGuideMessage(guide)); switch (guide) { case after_apply_guidance.restartHost: case after_apply_guidance.restartXAPI: foreach (Host host in servers) { if (host.IsMaster()) sbLog.AppendFormat("\t{0} ({1})\r\n", host.Name, Messages.MASTER); else sbLog.AppendFormat("\t{0}\r\n", host.Name); } break; case after_apply_guidance.restartPV: foreach (VM vm in Helpers.VMsRunningOn(servers)) { if (vm.IsHVM) continue; sbLog.AppendFormat("\t{0}\r\n", vm.Name); } break; case after_apply_guidance.restartHVM: foreach (VM vm in Helpers.VMsRunningOn(servers)) { if (!vm.IsHVM) continue; sbLog.AppendFormat("\t{0}\r\n", vm.Name); } break; } } if (patch.after_apply_guidance.Count == 0) sbLog.Append(Messages.PATCHINGWIZARD_MODEPAGE_NOACTION); return sbLog.ToString(); } private string GetGuideMessage(after_apply_guidance guidance) { switch (guidance) { case after_apply_guidance.restartXAPI: return Messages.PATCHINGWIZARD_MODEPAGE_RESTARTXAPI; case after_apply_guidance.restartHost: return Messages.PATCHINGWIZARD_MODEPAGE_RESTARTSERVERS; case after_apply_guidance.restartHVM: case after_apply_guidance.restartPV: return Messages.PATCHINGWIZARD_MODEPAGE_RESTARTVMS; default: return Messages.PATCHINGWIZARD_MODEPAGE_UNKNOWNACTION; } } } }