mirror of
https://github.com/xcp-ng/xenadmin.git
synced 2025-01-20 15:29:26 +01:00
CP-39933: Show the names of the PV guests preventing upgrade if any are detected.
Signed-off-by: Konstantina Chremmou <konstantina.chremmou@citrix.com>
This commit is contained in:
parent
1b259814bf
commit
fd627e687f
@ -30,13 +30,14 @@
|
||||
*/
|
||||
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using XenAdmin.Core;
|
||||
using XenAPI;
|
||||
using XenAdmin.Diagnostics.Hotfixing;
|
||||
using XenAdmin.Diagnostics.Problems;
|
||||
using XenAdmin.Diagnostics.Problems.PoolProblem;
|
||||
using System.Collections.Generic;
|
||||
using XenAdmin.Diagnostics.Hotfixing;
|
||||
using XenAdmin.Diagnostics.Problems.HostProblem;
|
||||
using XenAPI;
|
||||
|
||||
|
||||
namespace XenAdmin.Diagnostics.Checks
|
||||
{
|
||||
@ -45,6 +46,7 @@ namespace XenAdmin.Diagnostics.Checks
|
||||
private readonly Pool _pool;
|
||||
private readonly bool _manualUpgrade;
|
||||
private readonly Dictionary<string, string> _installMethodConfig;
|
||||
private List<VM> _pvGuests = new List<VM>();
|
||||
|
||||
public PVGuestsCheck(Host coordinator, bool manualUpgrade = false, Dictionary<string, string> installMethodConfig = null)
|
||||
: base(coordinator)
|
||||
@ -59,7 +61,11 @@ namespace XenAdmin.Diagnostics.Checks
|
||||
if (Helpers.YangtzeOrGreater(Host))
|
||||
return false;
|
||||
|
||||
if (_pool == null || !_pool.Connection.Cache.VMs.Any(vm => vm.IsPvVm()))
|
||||
if (_pool == null)
|
||||
return false;
|
||||
|
||||
_pvGuests = _pool.Connection.Cache.VMs.Where(vm => vm.IsPvVm()).ToList();
|
||||
if (_pvGuests.Count <= 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@ -82,13 +88,13 @@ namespace XenAdmin.Diagnostics.Checks
|
||||
// we don't know the upgrade version, so add warning
|
||||
// (this is the case of the manual upgrade or when the rpu plugin doesn't have the function)
|
||||
if (string.IsNullOrEmpty(upgradePlatformVersion))
|
||||
return new PoolHasPVGuestWarningUrl(this, _pool);
|
||||
return new PoolHasPVGuestWarningUrl(this, _pool, _pvGuests);
|
||||
|
||||
if (Helpers.YangtzeOrGreater(upgradePlatformVersion))
|
||||
return new PoolHasPVGuestProblem(this, _pool);
|
||||
return new PoolHasPVGuestProblem(this, _pool, _pvGuests);
|
||||
|
||||
if (Helpers.QuebecOrGreater(upgradePlatformVersion))
|
||||
return new PoolHasPVGuestWarningUrl(this, _pool);
|
||||
return new PoolHasPVGuestWarningUrl(this, _pool, _pvGuests);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
@ -29,55 +29,70 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using XenAdmin.Diagnostics.Checks;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using XenAdmin.Core;
|
||||
using XenAdmin.Diagnostics.Checks;
|
||||
using XenAPI;
|
||||
|
||||
namespace XenAdmin.Diagnostics.Problems.PoolProblem
|
||||
{
|
||||
class PoolHasPVGuestWarningUrl : WarningWithInformationUrl
|
||||
class PoolHasPVGuestWarningUrl : WarningWithMoreInfo
|
||||
{
|
||||
private readonly Pool _pool;
|
||||
private readonly List<VM> _pvGuests;
|
||||
|
||||
public PoolHasPVGuestWarningUrl(Check check, Pool pool)
|
||||
public PoolHasPVGuestWarningUrl(Check check, Pool pool, List<VM> pvGuests)
|
||||
: base(check)
|
||||
{
|
||||
_pool = pool;
|
||||
_pvGuests = pvGuests;
|
||||
}
|
||||
|
||||
private string PVGuestCheckUrl => string.Format(InvisibleMessages.PV_GUESTS_CHECK_URL);
|
||||
public override Uri UriToLaunch => new Uri(PVGuestCheckUrl);
|
||||
public override string Title => Description;
|
||||
public override string Title => Check.Description;
|
||||
|
||||
public override string Description =>
|
||||
string.Format(Messages.POOL_HAS_PV_GUEST_WARNING, _pool.Name(),
|
||||
string.Format(Messages.STRING_SPACE_STRING, BrandManager.ProductBrand, BrandManager.ProductVersion81));
|
||||
|
||||
public override string HelpMessage => LinkText;
|
||||
public override string HelpMessage => Messages.MORE_INFO;
|
||||
|
||||
public override string Message =>
|
||||
string.Format(Messages.POOL_HAS_PV_GUEST_WARNING_DETAIL,
|
||||
string.Join(", ", _pvGuests.Select(g => g.Name())),
|
||||
string.Format(Messages.STRING_SPACE_STRING, BrandManager.ProductBrand, BrandManager.ProductVersion81));
|
||||
|
||||
public override string LinkText => Messages.LEARN_MORE;
|
||||
public override string LinkData => InvisibleMessages.PV_GUESTS_CHECK_URL;
|
||||
}
|
||||
|
||||
|
||||
class PoolHasPVGuestProblem : ProblemWithInformationUrl
|
||||
class PoolHasPVGuestProblem : ProblemWithMoreInfo
|
||||
{
|
||||
private readonly Pool _pool;
|
||||
private readonly List<VM> _pvGuests;
|
||||
|
||||
public PoolHasPVGuestProblem(Check check, Pool pool)
|
||||
public PoolHasPVGuestProblem(Check check, Pool pool, List<VM> pvGuests)
|
||||
: base(check)
|
||||
{
|
||||
_pool = pool;
|
||||
_pvGuests = pvGuests;
|
||||
}
|
||||
|
||||
private string PVGuestCheckUrl => string.Format(InvisibleMessages.PV_GUESTS_CHECK_URL);
|
||||
public override Uri UriToLaunch => new Uri(PVGuestCheckUrl);
|
||||
public override string Title => Description;
|
||||
public override string Title => Check.Description;
|
||||
|
||||
public override string Description =>
|
||||
string.Format(Messages.POOL_HAS_PV_GUEST_WARNING, _pool.Name(),
|
||||
string.Format(Messages.STRING_SPACE_STRING, BrandManager.ProductBrand, BrandManager.ProductVersion81));
|
||||
|
||||
public override string HelpMessage => LinkText;
|
||||
public override string HelpMessage => Messages.MORE_INFO;
|
||||
|
||||
public override string Message =>
|
||||
string.Format(Messages.POOL_HAS_PV_GUEST_WARNING_DETAIL,
|
||||
string.Join(", ", _pvGuests.Select(g => g.Name())),
|
||||
string.Format(Messages.STRING_SPACE_STRING, BrandManager.ProductBrand, BrandManager.ProductVersion81));
|
||||
|
||||
public override string LinkText => Messages.LEARN_MORE;
|
||||
public override string LinkData => InvisibleMessages.PV_GUESTS_CHECK_URL;
|
||||
}
|
||||
}
|
||||
|
15
XenModel/Messages.Designer.cs
generated
15
XenModel/Messages.Designer.cs
generated
@ -31082,7 +31082,7 @@ namespace XenAdmin {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0}: Support for paravirtualized (PV) guests has been removed in {1}. Click Learn more to see the list of supported guest operating systems..
|
||||
/// Looks up a localized string similar to {0}: Support for paravirtualized (PV) guests has been removed in {1}..
|
||||
/// </summary>
|
||||
public static string POOL_HAS_PV_GUEST_WARNING {
|
||||
get {
|
||||
@ -31090,6 +31090,19 @@ namespace XenAdmin {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The following VMs are paravirtualized (PV):
|
||||
///
|
||||
///{0}
|
||||
///
|
||||
///Support for PV guests has been removed in {1}. Click Learn more to see the list of supported guest operating systems..
|
||||
/// </summary>
|
||||
public static string POOL_HAS_PV_GUEST_WARNING_DETAIL {
|
||||
get {
|
||||
return ResourceManager.GetString("POOL_HAS_PV_GUEST_WARNING_DETAIL", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The pool is partially licensed.
|
||||
/// </summary>
|
||||
|
@ -10787,7 +10787,14 @@ Please reconnect the host and try again</value>
|
||||
<value>This pool has no shared storage</value>
|
||||
</data>
|
||||
<data name="POOL_HAS_PV_GUEST_WARNING" xml:space="preserve">
|
||||
<value>{0}: Support for paravirtualized (PV) guests has been removed in {1}. Click Learn more to see the list of supported guest operating systems.</value>
|
||||
<value>{0}: Support for paravirtualized (PV) guests has been removed in {1}.</value>
|
||||
</data>
|
||||
<data name="POOL_HAS_PV_GUEST_WARNING_DETAIL" xml:space="preserve">
|
||||
<value>The following VMs are paravirtualized (PV):
|
||||
|
||||
{0}
|
||||
|
||||
Support for PV guests has been removed in {1}. Click Learn more to see the list of supported guest operating systems.</value>
|
||||
</data>
|
||||
<data name="POOL_IS_PARTIALLY_LICENSED" xml:space="preserve">
|
||||
<value>The pool is partially licensed</value>
|
||||
|
Loading…
Reference in New Issue
Block a user