More fixes including CA-381728, CA-381618, CA-381225 (#3205)

* CA-381728: If no post-update tasks exist, XenCenter should explicitly state so.

Also, livepatches should be shown if other guidance is absent.

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>

* Missing placeholders for building locally without applying branding.

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>

* Missing help links.

Also removed scripts that are not used any more.

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>

* CA-381618: The HA/WLB off check is a pool, not a host check.

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>

* CA-381225: Corrected order of running update guidance (also uses input from CA-381718).

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>

* UPDATES_URL has been renamed to XC_UPDATES_URL.

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>

---------

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
This commit is contained in:
Konstantina Chremmou 2023-08-21 13:35:49 +01:00 committed by GitHub
parent 002bcbfecf
commit de1120f18b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 260 additions and 329 deletions

View File

@ -41,4 +41,11 @@ BRANDING_PV_TOOLS="[Guest Tools]"
BRANDING_PRODUCT_VERSION_TEXT=0.0.0
BRANDING_XC_PRODUCT_VERSION=0.0.0
BRANDING_XC_PRODUCT_VERSION_INSTALLER=0.0.0
UPDATES_URL="[Updates url]"
XC_UPDATES_URL="[Xc updates url]"
CFU_URL="[Cfu url]"
YUM_REPO_BASE_BIN="[YumRepoBaseBin]"
YUM_REPO_BASE_SRC="[YumRepoBaseSource]"
YUM_REPO_EARLY_ACCESS_BIN="[YumRepoEarlyAccessBin]"
YUM_REPO_EARLY_ACCESS_SRC="[YumRepoEarlyAccessSource]"
YUM_REPO_NORMAL_BIN="[YumRepoNormalBin]"
YUM_REPO_NORMAL_SRC="[YumRepoNormalSource]"

View File

@ -105,7 +105,7 @@ namespace XenAdmin.Alerts
public override string FixLinkText => Messages.UPDATES_GENERAL_TAB_SYNC_NOW;
public override string HelpID => "TODO";
public override string HelpID => "OutOfSyncWithCdnAlert";
public override string Title => _outOfSyncSpan == TimeSpan.Zero
? Messages.ALERT_CDN_NEVER_SYNC_TITLE
@ -159,7 +159,7 @@ namespace XenAdmin.Alerts
public override string FixLinkText => Messages.ALERT_CDN_REPO_NOT_CONFIGURED_ACTION_LINK;
public override string HelpID => "TODO";
public override string HelpID => "YumRepoNotConfiguredAlert";
public override string Title => string.Format(Messages.ALERT_CDN_REPO_NOT_CONFIGURED_TITLE, Connection.Name);
}

View File

@ -145,7 +145,7 @@ namespace XenAdmin.Controls
if (GpuGroup == null)
{
//this refers to the item "None"
displayName = Messages.GPU_NONE;
displayName = Messages.NONE_UPPER;
}
else if (VgpuTypes == null || VgpuTypes.Length == 0 || VgpuTypes[0] == null)
{

View File

@ -103,7 +103,7 @@ namespace XenAdmin.Controls
/// Gets the value by which the help files section for this page is identified
/// Most derived classes override it to return a fixed string
/// </summary>
public virtual string HelpID => "";
public virtual string HelpID => string.Empty;
public virtual string NextText(bool isLastPage)
{

View File

@ -1,71 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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 XenAPI;
using XenAdmin.Diagnostics.Problems;
using XenAdmin.Core;
using XenAdmin.Diagnostics.Problems.PoolProblem;
namespace XenAdmin.Diagnostics.Checks
{
class HAOffCheck : HostPostLivenessCheck
{
public HAOffCheck(Host host)
: base(host)
{
}
protected override Problem RunHostCheck()
{
Pool pool = Helpers.GetPoolOfOne(Host.Connection);
if (pool == null)
return null;
if (pool.ha_enabled)
return new HAEnabledProblem(this, pool);
if (Helpers.WlbEnabled(pool.Connection))
return new WLBEnabledProblem(this, pool);
return null;
}
public override string Description => Messages.HA_CHECK_DESCRIPTION;
public override string SuccessfulCheckDescription
{
get
{
var pool = Helpers.GetPool(Host.Connection);
return string.Format(Messages.PATCHING_WIZARD_CHECK_ON_XENOBJECT_OK,
pool != null ? pool.Name() : Host.Name(), Description);
}
}
}
}

View File

@ -28,27 +28,34 @@
* SUCH DAMAGE.
*/
using System.Collections.Generic;
using XenAdmin.Core;
using XenAdmin.Diagnostics.Problems;
using XenAdmin.Diagnostics.Problems.PoolProblem;
using XenAPI;
namespace XenAdmin.Wizards.PatchingWizard.PlanActions
namespace XenAdmin.Diagnostics.Checks
{
public class BringBabiesBackAction : HostPlanAction
class HaWlbOffCheck : PoolCheck
{
private readonly List<XenRef<VM>> _vms;
private readonly bool _enableOnly;
public BringBabiesBackAction(List<XenRef<VM>> vms, Host host, bool enableOnly)
: base(host)
public HaWlbOffCheck(Pool pool)
: base(pool)
{
_vms = vms;
_enableOnly = enableOnly;
}
protected override void RunWithSession(ref Session session)
protected override Problem RunCheck()
{
BringBabiesBack(ref session, _vms, _enableOnly);
if (Pool.ha_enabled)
return new HAEnabledProblem(this, Pool);
if (Helpers.WlbEnabled(Pool.Connection))
return new WLBEnabledProblem(this, Pool);
return null;
}
public override string Description => Messages.HA_WLB_CHECK_DESCRIPTION;
public override string SuccessfulCheckDescription => string.Format(Messages.PATCHING_WIZARD_CHECK_ON_XENOBJECT_OK, Pool.Name(), Description);
}
}

View File

@ -113,6 +113,8 @@ namespace XenAdmin.Dialogs.ServerUpdates
tabControl1.SelectTab(_configLcmTab);
}
internal override string HelpName => "ConfigureUpdatesDialog";
private sealed class OptionsTabPage : TabPage
{

View File

@ -190,7 +190,7 @@
<value>pools-rootpassword</value>
</data>
<data name="ClientIdDialog" xml:space="preserve">
<value>updates-applying</value>
<value>updates-applying-ch</value>
</data>
<data name="CloseXenCenterWarningDialog" xml:space="preserve">
<value>intro-start</value>
@ -198,6 +198,9 @@
<data name="ConfigureAdDialogAccessChanged" xml:space="preserve">
<value>users-overview</value>
</data>
<data name="ConfigureUpdatesDialog" xml:space="preserve">
<value>updates-autoconfig</value>
</data>
<data name="ConfirmTemplateConvertDialog" xml:space="preserve">
<value>templates-new</value>
</data>
@ -271,7 +274,7 @@
<value>vms-relocate</value>
</data>
<data name="CssExpiryAlert" xml:space="preserve">
<value></value>
<value>systemalerts</value>
</data>
<data name="CustomFieldsDialog" xml:space="preserve">
<value>resources-customfields</value>
@ -300,9 +303,6 @@
<data name="DRFailoverWizard_Dryrun_PrechecksPane" xml:space="preserve">
<value>dr-testfailover</value>
</data>
<data name="DRFailoverWizard_Dryrun_RbacPane" xml:space="preserve">
<value>9830</value>
</data>
<data name="DRFailoverWizard_Dryrun_RecoverPane" xml:space="preserve">
<value>dr-testfailover</value>
</data>
@ -411,9 +411,6 @@
<data name="EditVmNetworkSettingsDialog" xml:space="preserve">
<value>vms-network-properties</value>
</data>
<data name="EditVMPPGeneralSettingsDialog" xml:space="preserve">
<value>6536</value>
</data>
<data name="EditVMSSGeneralSettingsDialog" xml:space="preserve">
<value>vms-snapshotschedule-manage-policy</value>
</data>
@ -588,6 +585,9 @@
<data name="IscsiDeviceConfigDialog" xml:space="preserve">
<value>dr-testfailover</value>
</data>
<data name="LeafCoalesceAlert" xml:space="preserve">
<value>systemalerts</value>
</data>
<data name="LicenseKeyDialog" xml:space="preserve">
<value>licensing-about</value>
</data>
@ -603,8 +603,11 @@
<data name="LVMoHBAWarningDialog" xml:space="preserve">
<value>storage-pools-add-hba</value>
</data>
<data name="ManageUpdatesDialog" xml:space="preserve">
<value>updates-applying</value>
<data name="ManageCdnUpdatesTabPage" xml:space="preserve">
<value>updates-applying-xs</value>
</data>
<data name="ManageUpdatesTabPage" xml:space="preserve">
<value>updates-applying-ch</value>
</data>
<data name="MemoryUsageMessageAlert" xml:space="preserve">
<value>systemalerts</value>
@ -846,32 +849,14 @@
<data name="OptionsDialog" xml:space="preserve">
<value>intro-options</value>
</data>
<data name="PatchingWizard_ApplyUpdatePane" xml:space="preserve">
<value>updates-applying</value>
<data name="OutOfSyncWithCdnAlert" xml:space="preserve">
<value>systemalerts</value>
</data>
<data name="PatchingWizard_BeforeyoustartPane" xml:space="preserve">
<value>updates-applying</value>
<data name="PatchingWizard_ch" xml:space="preserve">
<value>updates-applying-ch</value>
</data>
<data name="PatchingWizard_InstallUpdatePane" xml:space="preserve">
<value>updates-applying</value>
</data>
<data name="PatchingWizard_SelectPatchPane" xml:space="preserve">
<value>updates-applying</value>
</data>
<data name="PatchingWizard_SelectServersPane" xml:space="preserve">
<value>updates-applying</value>
</data>
<data name="PatchingWizard_SelectUpdatePane" xml:space="preserve">
<value>updates-applying</value>
</data>
<data name="PatchingWizard_UpdateModePane" xml:space="preserve">
<value>updates-applying</value>
</data>
<data name="PatchingWizard_UpdatePrechecksPane" xml:space="preserve">
<value>updates-applying</value>
</data>
<data name="PatchingWizard_UploadPatchPane" xml:space="preserve">
<value>updates-applying</value>
<data name="PatchingWizard_xs" xml:space="preserve">
<value>updates-applying-xs</value>
</data>
<data name="PoolJoinAdConfiguring" xml:space="preserve">
<value>pools-add-host</value>
@ -1074,9 +1059,6 @@
<data name="UnknownCertificateDialog" xml:space="preserve">
<value>hosts-reconnect</value>
</data>
<data name="UpdatesDialog" xml:space="preserve">
<value>updates-applying</value>
</data>
<data name="VcpuWarningDialog" xml:space="preserve">
<value>vms-properties</value>
</data>
@ -1135,12 +1117,15 @@
<value>updates-xencenter</value>
</data>
<data name="XenServerPatchAlert" xml:space="preserve">
<value>updates-applying</value>
<value>updates-applying-ch</value>
</data>
<data name="XenServerUpdateAlert" xml:space="preserve">
<value>updates-applying</value>
<value>updates-applying-ch</value>
</data>
<data name="StorageReadCaching" xml:space="preserve">
<value>storage-readcaching</value>
</data>
</root>
<data name="YumRepoNotConfiguredAlert" xml:space="preserve">
<value>systemalerts</value>
</data>
</root>

View File

@ -1,8 +0,0 @@
#!/bin/sh
dir=$(dirname "$0")
cat $dir/HelpManager.resx | sed -e 's# ##g' | awk '
/data name="/ { FS="\""; NAME=$2; }
/<value>.*<\/value>/ { print "#define " NAME " " $1; }' |
sed -e 's# *<value># #g' | sed -e 's#</value>##g' | grep -v Icon1 | grep -v Bitmap1 | grep -v Name1 | sort -nk 3

View File

@ -1,8 +0,0 @@
#!/bin/sh
dir=$(dirname "$0")
cat $dir/HelpManager.resx | sed -e 's# ##g' | awk '
/data name="/ { FS="\""; NAME=$2; }
/<value>.*<\/value>/ { print NAME "," $1; }' |
sed -e 's# *<value># #g' | sed -e 's#</value>##g' | grep -v Icon1 | grep -v Bitmap1 | grep -v Name1 | sort -nk 3

View File

@ -2563,7 +2563,7 @@ namespace XenAdmin
foreach (var page in _notificationPages)
{
if (page.Visible)
return alertPage.HelpID;
return page.HelpID;
}
if (TheTabControl.SelectedTab.Controls.Count > 0 && TheTabControl.SelectedTab.Controls[0] is IControlWithHelp ctrl)

View File

@ -119,7 +119,7 @@ namespace XenAdmin.SettingsPanels
if (Helpers.GpusAvailable(Connection))
{
var vGpus = VGpus;
txt = vGpus.Count > 0 ? string.Join(",", vGpus.Select(v => v.VGpuTypeDescription())) : Messages.GPU_NONE;
txt = vGpus.Count > 0 ? string.Join(",", vGpus.Select(v => v.VGpuTypeDescription())) : Messages.NONE_UPPER;
}
return txt;

View File

@ -205,15 +205,18 @@ namespace XenAdmin.TabPages.CdnUpdates
SetValues(Host.Name(), Images.GetImage16For(Images.GetIconFor(Host)), channel: channel,
lastSync: lastSyncTime, lastUpdate: lastUpdateTime);
if (poolUpdateInfo != null && hostUpdateInfo != null)
if (poolUpdateInfo != null && hostUpdateInfo != null && hostUpdateInfo.UpdateIDs.Length > 0)
{
if (hostUpdateInfo.RecommendedGuidance.Length > 0)
if (hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.EvacuateHost) ||
hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RebootHost))
{
_childRows.Add(new PostUpdateActionRow(hostUpdateInfo.RecommendedGuidance));
_childRows.Add(new PreUpdateActionRow());
}
if (hostUpdateInfo.LivePatches.Length > 0 && !hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RebootHost))
_childRows.Add(new LivePatchActionRow());
}
_childRows.Add(new PostUpdateActionRow(hostUpdateInfo.RecommendedGuidance.Where(g => g != CdnGuidance.EvacuateHost).ToArray()));
if (hostUpdateInfo.LivePatches.Length > 0 && !hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RebootHost))
_childRows.Add(new LivePatchActionRow());
var categories = hostUpdateInfo.GetUpdateCategories(poolUpdateInfo);
@ -282,11 +285,23 @@ namespace XenAdmin.TabPages.CdnUpdates
}
}
internal class PreUpdateActionRow : CdnExpandableRow
{
public PreUpdateActionRow()
{
SetValues(Messages.HOTFIX_PRE_UPDATE_ACTIONS, Images.StaticImages.rightArrowLong_Blue_16);
}
}
internal class PostUpdateActionRow : CdnExpandableRow
{
public PostUpdateActionRow(CdnGuidance[] guidance)
{
var text = string.Format(Messages.HOTFIX_POST_UPDATE_ACTIONS, string.Join(Environment.NewLine, guidance.Select(Cdn.FriendlyInstruction)));
var guidanceString = guidance.Length > 0
? string.Join(Environment.NewLine, guidance.Select(Cdn.FriendlyInstruction))
: Messages.NONE_UPPER;
var text = string.Format(Messages.HOTFIX_POST_UPDATE_ACTIONS, guidanceString);
SetValues(text, Images.StaticImages.rightArrowLong_Blue_16);
}
}

View File

@ -211,7 +211,7 @@ namespace XenAdmin.TabPages
else
{
buttonDisableHa.Visible = false;
labelStatus.Text = String.Format(Messages.HAPANEL_BLURB, Helpers.GetName(pool).Ellipsise(30));
labelStatus.Text = String.Format(Messages.HA_PANEL_BLURB, Helpers.GetName(pool).Ellipsise(30));
}
if ( xenObject is SR sr)

View File

@ -94,7 +94,7 @@ namespace XenAdmin.TabPages
Updates.CdnUpdateInfoChanged -= Cdn_UpdateInfoChanged;
}
public override string HelpID => "ManageUpdatesDialog";
public override string HelpID => "ManageCdnUpdatesTabPage";
public override NotificationsSubMode NotificationsSubMode => NotificationsSubMode.UpdatesFromCdn;

View File

@ -120,7 +120,7 @@ namespace XenAdmin.TabPages
Updates.CheckForServerUpdatesCompleted -= CheckForUpdates_CheckForUpdatesCompleted;
}
public override string HelpID => "ManageUpdatesDialog";
public override string HelpID => "ManageUpdatesTabPage";
public override NotificationsSubMode NotificationsSubMode => NotificationsSubMode.Updates;

View File

@ -293,6 +293,11 @@ namespace XenAdmin.Wizards.PatchingWizard
base.FinishWizard();
}
protected override string WizardPaneHelpID()
{
return PatchingWizard_FirstPage.IsNewGeneration ? "PatchingWizard_xs" : "PatchingWizard_ch";
}
private void CleanUploadedPatches(bool forceCleanSelectedPatch = false)
{
var list = new List<AsyncAction>();

View File

@ -32,6 +32,7 @@ using System.Collections.Generic;
using XenAPI;
using System.Linq;
using System.Text;
using XenAdmin.Actions;
using XenAdmin.Core;
using XenAdmin.Alerts;
using XenAdmin.Wizards.PatchingWizard.PlanActions;
@ -61,8 +62,6 @@ namespace XenAdmin.Wizards.PatchingWizard
public override string PageTitle => Messages.PATCHINGWIZARD_AUTOUPDATINGPAGE_TITLE;
public override string HelpID => string.Empty;
#endregion
#region AutomatedUpdatesBesePage overrides
@ -172,28 +171,49 @@ namespace XenAdmin.Wizards.PatchingWizard
private HostPlan GetCdnUpdatePlanActionsForHost(Host host, CdnPoolUpdateInfo poolUpdateInfo, CdnHostUpdateInfo hostUpdateInfo)
{
// pre-update tasks and, last in the list, the update itself
var planActionsPerHost = new List<PlanAction>();
// post-update tasks
var delayedActionsPerHost = new List<PlanAction>();
if (hostUpdateInfo.RecommendedGuidance.Length > 0 && PostUpdateTasksAutomatically)
// hostUpdateInfo.RecommendedGuidance is what's prescribed by the metadata,
// host.pending_guidances is what's left there from previous updates
// evacuate host is a pre-update task and needs to be done either the user has
// opted to carry out the post-update tasks automatically or manually, see CA-381225
// restart toolstack should run before other post-update tasks, see CA-381718
if (hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RestartToolstack) ||
host.pending_guidances.Contains(update_guidances.restart_toolstack))
{
if (hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RebootHost))
{
planActionsPerHost.Add(new EvacuateHostPlanAction(host));
delayedActionsPerHost.Add(new RestartHostPlanAction(host, host.GetRunningVMs()));
}
else if (hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RestartToolstack))
{
if (PostUpdateTasksAutomatically)
delayedActionsPerHost.Add(new RestartAgentPlanAction(host));
}
else if (hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.EvacuateHost))
{
planActionsPerHost.Add(new EvacuateHostPlanAction(host));
}
else if (hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RestartDeviceModel))
{
}
if (hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RebootHost) ||
host.pending_guidances.Contains(update_guidances.reboot_host) ||
host.pending_guidances.Contains(update_guidances.reboot_host_on_livepatch_failure))
{
planActionsPerHost.Add(new EvacuateHostPlanAction(host));
if (PostUpdateTasksAutomatically)
delayedActionsPerHost.Add(new RestartHostPlanAction(host, host.GetRunningVMs()));
}
if (hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.EvacuateHost) &&
!planActionsPerHost.Any(a => a is EvacuateHostPlanAction))
{
planActionsPerHost.Add(new EvacuateHostPlanAction(host));
}
if (PostUpdateTasksAutomatically)
delayedActionsPerHost.Add(new EnableHostPlanAction(host));
if (hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RestartDeviceModel) ||
host.pending_guidances.Contains(update_guidances.restart_device_model))
{
if (PostUpdateTasksAutomatically)
delayedActionsPerHost.Add(new RebootVMsPlanAction(host, host.GetRunningVMs()));
}
}
planActionsPerHost.Add(new ApplyCdnUpdatesPlanAction(host, poolUpdateInfo));

View File

@ -64,8 +64,6 @@ namespace XenAdmin.Wizards.PatchingWizard
public override string PageTitle => Messages.BEFORE_YOU_START;
public override string HelpID => "Beforeyoustart";
public bool IsNewGeneration
{
get => radioButtonCdn.Checked;

View File

@ -57,8 +57,6 @@ namespace XenAdmin.Wizards.PatchingWizard
public override string PageTitle => Messages.PATCHINGWIZARD_MODEPAGE_TITLE;
public override string HelpID => "UpdateMode";
public override bool EnablePrevious()
{
return true;
@ -293,24 +291,37 @@ namespace XenAdmin.Wizards.PatchingWizard
foreach (var hostUpdateInfo in poolUpdateInfo.HostsWithUpdates)
{
if (hostUpdateInfo.RecommendedGuidance.Length > 0)
var host = pool.Connection.Resolve(new XenRef<Host>(hostUpdateInfo.HostOpaqueRef));
if (host != null)
{
var host = pool.Connection.Resolve(new XenRef<Host>(hostUpdateInfo.HostOpaqueRef));
if (host != null)
var hostSb = new StringBuilder();
var msg = host.IsCoordinator() ? $"{host.Name()} ({Messages.COORDINATOR})" : host.Name();
hostSb.AppendIndented(msg).AppendLine();
//evacuate host is a pre-update task and will be done regardless the mode selected
if (hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RestartToolstack) ||
host.pending_guidances.Contains(update_guidances.restart_toolstack))
{
var hostSb = new StringBuilder();
var msg = host.IsCoordinator() ? $"{host.Name()} ({Messages.COORDINATOR})" : host.Name();
hostSb.AppendIndented(msg).AppendLine();
foreach (var g in hostUpdateInfo.RecommendedGuidance)
hostSb.AppendIndented(Cdn.FriendlyInstruction(g), 4).AppendLine();
if (hostUpdateInfo.LivePatches.Length > 0 && !hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RebootHost))
hostSb.AppendIndented(Messages.HOTFIX_POST_UPDATE_LIVEPATCH_ACTIONS, 4).AppendLine();
hostDict[host] = hostSb;
hostSb.AppendIndented(Cdn.FriendlyInstruction(CdnGuidance.RestartToolstack), 4).AppendLine();
}
if (hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RebootHost) ||
host.pending_guidances.Contains(update_guidances.reboot_host) ||
host.pending_guidances.Contains(update_guidances.reboot_host_on_livepatch_failure))
{
hostSb.AppendIndented(Cdn.FriendlyInstruction(CdnGuidance.RebootHost), 4).AppendLine();
}
if (hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RestartDeviceModel) ||
host.pending_guidances.Contains(update_guidances.restart_device_model))
hostSb.AppendIndented(Cdn.FriendlyInstruction(CdnGuidance.RestartDeviceModel), 4).AppendLine();
if (hostUpdateInfo.LivePatches.Length > 0 && !hostUpdateInfo.RecommendedGuidance.Contains(CdnGuidance.RebootHost))
hostSb.AppendIndented(Messages.HOTFIX_POST_UPDATE_LIVEPATCH_ACTIONS, 4).AppendLine();
hostDict[host] = hostSb;
}
}

View File

@ -83,11 +83,6 @@ namespace XenAdmin.Wizards.PatchingWizard
}
}
public override string HelpID
{
get { return "InstallUpdate"; }
}
#endregion
#region AutomatedUpdatesBesePage overrides

View File

@ -104,8 +104,6 @@ namespace XenAdmin.Wizards.PatchingWizard
public override string Text => Messages.PATCHINGWIZARD_PRECHECKPAGE_TEXT;
public override string HelpID => "UpdatePrechecks";
private void Connection_ConnectionStateChanged(IXenConnection conn)
{
Program.Invoke(this, RefreshRechecks);
@ -364,11 +362,9 @@ namespace XenAdmin.Wizards.PatchingWizard
//HA checks
var haChecks = new List<Check>();
foreach (Host host in SelectedServers)
{
if (Helpers.HostIsCoordinator(host))
haChecks.Add(new HAOffCheck(host));
}
foreach (Pool pool in SelectedPools)
haChecks.Add(new HaWlbOffCheck(pool));
groups.Add(new CheckGroup(Messages.CHECKING_HA_STATUS, haChecks));
//PBDsPluggedCheck

View File

@ -216,8 +216,6 @@ namespace XenAdmin.Wizards.PatchingWizard
public override string PageTitle => Messages.PATCHINGWIZARD_SELECTPATCHPAGE_TITLE;
public override string HelpID => "SelectUpdate";
protected override void PageLoadedCore(PageLoadedDirection direction)
{
RegisterEvents();

View File

@ -72,8 +72,6 @@ namespace XenAdmin.Wizards.PatchingWizard
public override string PageTitle => Messages.PATCHINGWIZARD_SELECTSERVERPAGE_TITLE;
public override string HelpID => "SelectServers";
protected override void PageLoadedCore(PageLoadedDirection direction)
{
poolSelectionOnly = WizardMode == WizardMode.AutomatedUpdates ||

View File

@ -120,14 +120,9 @@ namespace XenAdmin.Wizards.PatchingWizard
#region XenTabPage overrides
public override string Text { get { return Messages.PATCHINGWIZARD_UPLOADPAGE_TEXT; } }
public override string Text => Messages.PATCHINGWIZARD_UPLOADPAGE_TEXT;
public override string PageTitle
{
get { return Messages.PATCHINGWIZARD_UPLOADPAGE_TITLE_ONLY_UPLOAD; }
}
public override string HelpID { get { return "UploadPatch"; } }
public override string PageTitle => Messages.PATCHINGWIZARD_UPLOADPAGE_TITLE_ONLY_UPLOAD;
public override bool EnableNext()
{

View File

@ -57,6 +57,7 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
log.DebugFormat("Disabling host {0}", host.Name());
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_ENTERING_MAINTENANCE_MODE, host.Name()));
Host.disable(session, HostXenRef.opaque_ref);
Connection.WaitFor(() => !host.enabled, null);
}
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_APPLYING_UPDATES_FROM_CDN, host.Name()));

View File

@ -1,48 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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 XenAPI;
namespace XenAdmin.Wizards.PatchingWizard.PlanActions
{
public class EvacuateHostPlanAction : HostPlanAction
{
public EvacuateHostPlanAction(Host host)
: base(host)
{
}
protected override void RunWithSession(ref Session session)
{
EvacuateHost(ref session);
}
}
}

View File

@ -67,6 +67,7 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_ENTERING_MAINTENANCE_MODE, hostObj.Name()));
log.DebugFormat("Disabling host {0}", hostObj.Name());
Host.disable(session, HostXenRef.opaque_ref);
Connection.WaitFor(() => !hostObj.enabled, null);
}
if (vms.Count > 0)
@ -225,4 +226,51 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
}
}
}
public class BringBabiesBackAction : HostPlanAction
{
private readonly List<XenRef<VM>> _vms;
private readonly bool _enableOnly;
public BringBabiesBackAction(List<XenRef<VM>> vms, Host host, bool enableOnly)
: base(host)
{
_vms = vms;
_enableOnly = enableOnly;
}
protected override void RunWithSession(ref Session session)
{
BringBabiesBack(ref session, _vms, _enableOnly);
}
}
public class EvacuateHostPlanAction : HostPlanAction
{
public EvacuateHostPlanAction(Host host)
: base(host)
{
}
protected override void RunWithSession(ref Session session)
{
EvacuateHost(ref session);
}
}
public class EnableHostPlanAction : HostPlanAction
{
public EnableHostPlanAction(Host host)
: base(host)
{
}
protected override void RunWithSession(ref Session session)
{
WaitForHostToBecomeEnabled(session, true);
}
}
}

View File

@ -260,9 +260,8 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard
groups.Add(new CheckGroup(Messages.CHECKING_PV_GUESTS, pvChecks));
//HA checks - for each pool
var haChecks = (from Host server in SelectedCoordinators
select new HAOffCheck(server) as Check).ToList();
var haChecks = (from Pool pool in SelectedPools
select new HaWlbOffCheck(pool) as Check).ToList();
if (haChecks.Count > 0)
groups.Add(new CheckGroup(Messages.CHECKING_HA_STATUS, haChecks));

View File

@ -711,7 +711,7 @@
<Compile Include="Core\History.cs" />
<Compile Include="Core\Registry.cs" />
<Compile Include="Core\Updates.cs" />
<Compile Include="Diagnostics\Checks\HAOffCheck.cs" />
<Compile Include="Diagnostics\Checks\HaWlbOffCheck.cs" />
<Compile Include="Diagnostics\Problems\VMProblem\CannotMigrateVM.cs" />
<Compile Include="Diagnostics\Problems\PoolProblem\HAEnabledProblem.cs" />
<Compile Include="Dialogs\BondProperties.cs">
@ -4246,7 +4246,6 @@
<DependentUpon>PatchingWizard_FirstPage.cs</DependentUpon>
</Compile>
<Compile Include="Wizards\PatchingWizard\PlanActions\ApplyPatchPlanAction.cs" />
<Compile Include="Wizards\PatchingWizard\PlanActions\BringBabiesBackAction.cs" />
<Compile Include="Wizards\PatchingWizard\PatchingWizard.cs">
<SubType>Form</SubType>
</Compile>
@ -4283,7 +4282,6 @@
<Compile Include="Wizards\PatchingWizard\PatchingWizard_SelectServers.Designer.cs">
<DependentUpon>PatchingWizard_SelectServers.cs</DependentUpon>
</Compile>
<Compile Include="Wizards\PatchingWizard\PlanActions\EvacuateHostPlanAction.cs" />
<Compile Include="Wizards\PatchingWizard\PlanActions\PlanAction.cs" />
<Compile Include="Wizards\PatchingWizard\PlanActions\PlanActionWithSession.cs" />
<Compile Include="Wizards\PatchingWizard\PlanActions\RebootPlanAction.cs" />

View File

@ -18517,15 +18517,6 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to None.
/// </summary>
public static string GPU_NONE {
get {
return ResourceManager.GetString("GPU_NONE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to On {0}:.
/// </summary>
@ -18898,15 +18889,6 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to HA and WLB check.
/// </summary>
public static string HA_CHECK_DESCRIPTION {
get {
return ResourceManager.GetString("HA_CHECK_DESCRIPTION", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Choose a heartbeat SR.
/// </summary>
@ -19429,6 +19411,17 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to HA is not currently enabled for pool &apos;{0}&apos;.
///
///Click Configure HA to enable HA for this pool and allow your virtual machines to be automatically restarted in the event of unexpected server failure..
/// </summary>
public static string HA_PANEL_BLURB {
get {
return ResourceManager.GetString("HA_PANEL_BLURB", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to HA restart priority.
/// </summary>
@ -19560,13 +19553,11 @@ namespace XenAdmin {
}
/// <summary>
/// Looks up a localized string similar to HA is not currently enabled for pool &apos;{0}&apos;.
///
///Click Configure HA to enable HA for this pool and allow your virtual machines to be automatically restarted in the event of unexpected server failure..
/// Looks up a localized string similar to HA and WLB check.
/// </summary>
public static string HAPANEL_BLURB {
public static string HA_WLB_CHECK_DESCRIPTION {
get {
return ResourceManager.GetString("HAPANEL_BLURB", resourceCulture);
return ResourceManager.GetString("HA_WLB_CHECK_DESCRIPTION", resourceCulture);
}
}
@ -20540,6 +20531,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to This server will be evacuated prior to installing updates.
/// </summary>
public static string HOTFIX_PRE_UPDATE_ACTIONS {
get {
return ResourceManager.GetString("HOTFIX_PRE_UPDATE_ACTIONS", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to {0} packages will be updated.
/// </summary>
@ -28628,6 +28628,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to None.
/// </summary>
public static string NONE_UPPER {
get {
return ResourceManager.GetString("NONE_UPPER", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The VM is not using a shared network. Restart cannot be guaranteed..
/// </summary>
@ -30775,15 +30784,6 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to None.
/// </summary>
public static string PIF_NONE {
get {
return ResourceManager.GetString("PIF_NONE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Static.
/// </summary>
@ -42323,15 +42323,6 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to None.
/// </summary>
public static string WLB_OPT_REASON_NONE {
get {
return ResourceManager.GetString("WLB_OPT_REASON_NONE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Release Resource.
/// </summary>

View File

@ -6466,9 +6466,6 @@ Would you like to eject these ISOs before continuing?</value>
<data name="GPU_GROUP_NAME_AND_NO_OF_GPUS_ONE" xml:space="preserve">
<value>{0} (1 GPU)</value>
</data>
<data name="GPU_NONE" xml:space="preserve">
<value>None</value>
</data>
<data name="GPU_ON_HOST_LABEL" xml:space="preserve">
<value>On {0}:</value>
</data>
@ -6601,9 +6598,6 @@ not currently live:
<data name="HA_CANNOT_EVACUATE_COORDINATOR" xml:space="preserve">
<value>Server '{0}' cannot be placed in Maintenance Mode because it is the coordinator of an HA-enabled pool.</value>
</data>
<data name="HA_CHECK_DESCRIPTION" xml:space="preserve">
<value>HA and WLB check</value>
</data>
<data name="HA_CHOOSESR_PAGE_PAGETITLE" xml:space="preserve">
<value>Choose a heartbeat SR</value>
</data>
@ -6790,6 +6784,11 @@ Reduce protection levels, or bring more servers online to increase the maximum s
<data name="HA_PAGE_ENABLING" xml:space="preserve">
<value>HA is currently being enabled for '{0}'.</value>
</data>
<data name="HA_PANEL_BLURB" xml:space="preserve">
<value>HA is not currently enabled for pool '{0}'.
Click Configure HA to enable HA for this pool and allow your virtual machines to be automatically restarted in the event of unexpected server failure.</value>
</data>
<data name="HA_RESTART_PRIORITY" xml:space="preserve">
<value>HA restart priority</value>
</data>
@ -6836,10 +6835,8 @@ Click Configure HA to alter the settings displayed below.</value>
<data name="HA_WIZARD_FINISH_PAGE_TITLE" xml:space="preserve">
<value>Review configuration and activate HA</value>
</data>
<data name="HAPANEL_BLURB" xml:space="preserve">
<value>HA is not currently enabled for pool '{0}'.
Click Configure HA to enable HA for this pool and allow your virtual machines to be automatically restarted in the event of unexpected server failure.</value>
<data name="HA_WLB_CHECK_DESCRIPTION" xml:space="preserve">
<value>HA and WLB check</value>
</data>
<data name="HAS_CUSTOM_FIELDS" xml:space="preserve">
<value>Has any custom field</value>
@ -7170,6 +7167,9 @@ This might result in failure to migrate VMs to this server during the RPU or to
<data name="HOTFIX_POST_UPDATE_LIVEPATCH_ACTIONS" xml:space="preserve">
<value>This server will be live patched. If live patch fails, a server reboot will be required.</value>
</data>
<data name="HOTFIX_PRE_UPDATE_ACTIONS" xml:space="preserve">
<value>This server will be evacuated prior to installing updates</value>
</data>
<data name="HOTFIX_RPMS_TO_INSTALL" xml:space="preserve">
<value>{0} packages will be updated</value>
</data>
@ -9942,6 +9942,9 @@ When you configure an NFS storage repository, you simply provide the host name o
<data name="NONE_PARENS" xml:space="preserve">
<value>(None)</value>
</data>
<data name="NONE_UPPER" xml:space="preserve">
<value>None</value>
</data>
<data name="NOT_AGILE_NETWORK_NOT_SHARED" xml:space="preserve">
<value>The VM is not using a shared network. Restart cannot be guaranteed.</value>
</data>
@ -10666,9 +10669,6 @@ This will cancel the upload process.</value>
<data name="PIF_NIC" xml:space="preserve">
<value>NIC {0}</value>
</data>
<data name="PIF_NONE" xml:space="preserve">
<value>None</value>
</data>
<data name="PIF_STATIC" xml:space="preserve">
<value>Static</value>
</data>
@ -14585,9 +14585,6 @@ A {1} user cannot alter the Workload Balancing settings.</value>
<data name="WLB_OPT_REASON_NETWORKWRITE" xml:space="preserve">
<value>Network Writes</value>
</data>
<data name="WLB_OPT_REASON_NONE" xml:space="preserve">
<value>None</value>
</data>
<data name="WLB_OPT_REASON_POWEROFF" xml:space="preserve">
<value>Release Resource</value>
</data>

View File

@ -362,7 +362,7 @@ namespace XenAPI
switch (ip_configuration_mode)
{
case ip_configuration_mode.None:
return Messages.PIF_NONE;
return Messages.NONE_UPPER;
case ip_configuration_mode.DHCP:
return Messages.PIF_DHCP;
case ip_configuration_mode.Static:

View File

@ -203,7 +203,7 @@ sha256sum ${OUTPUT_DIR}/${BRANDING_BRAND_CONSOLE_NO_SPACE}-source.zip > ${OUTPUT
echo "INFO: Generating XCUpdates.xml"
# UPDATE_URL points at the updates XML, we need to point to the MSI
msi_url="${UPDATES_URL/XCUpdates.xml/$BRANDING_BRAND_CONSOLE_NO_SPACE.msi}"
msi_url="${XC_UPDATES_URL/XCUpdates.xml/$BRANDING_BRAND_CONSOLE_NO_SPACE.msi}"
output_xml="<?xml version=\"1.0\" ?>
<patchdata>