mirror of
https://github.com/xcp-ng/xenadmin.git
synced 2024-11-23 12:30:50 +01:00
CP-43102: Removed Dundee code.
The check DundeeOrGreater always returns true since we disallow connection to anything earlier than Havana. Signed-off-by: Konstantina Chremmou <konstantina.chremmou@citrix.com>
This commit is contained in:
parent
26e4731b46
commit
82940850e9
@ -71,7 +71,7 @@ namespace XenAdmin.Commands
|
||||
var reasons = new Dictionary<IXenObject, string>();
|
||||
foreach (Host host in _hosts)
|
||||
{
|
||||
PoolJoinRules.Reason reason = PoolJoinRules.CanJoinPool(host.Connection, _pool.Connection, true, true, true, _hosts.Count);
|
||||
PoolJoinRules.Reason reason = PoolJoinRules.CanJoinPool(host.Connection, _pool.Connection, true, true, _hosts.Count);
|
||||
if (reason != PoolJoinRules.Reason.Allowed)
|
||||
reasons[host] = PoolJoinRules.ReasonMessage(reason);
|
||||
}
|
||||
@ -135,7 +135,7 @@ namespace XenAdmin.Commands
|
||||
// If so, we need to show upsell.
|
||||
Host coordinator = Helpers.GetCoordinator(_pool);
|
||||
if (null != _hosts.Find(host =>
|
||||
!PoolJoinRules.CompatibleCPUs(host, coordinator, false) &&
|
||||
!PoolJoinRules.CompatibleCPUs(host, coordinator) &&
|
||||
Helpers.FeatureForbidden(host, Host.RestrictCpuMasking) &&
|
||||
!PoolJoinRules.FreeHostPaidCoordinator(host, coordinator, false))) // in this case we can upgrade the license and then mask the CPU
|
||||
{
|
||||
@ -168,7 +168,7 @@ namespace XenAdmin.Commands
|
||||
}
|
||||
}
|
||||
|
||||
var hosts2 = _hosts.FindAll(host => !PoolJoinRules.CompatibleCPUs(host, coordinator, false));
|
||||
var hosts2 = _hosts.FindAll(host => !PoolJoinRules.CompatibleCPUs(host, coordinator));
|
||||
if (hosts2.Count > 0)
|
||||
{
|
||||
string msg = string.Format(hosts2.Count == 1
|
||||
@ -210,7 +210,7 @@ namespace XenAdmin.Commands
|
||||
foreach (Host host in _hosts)
|
||||
{
|
||||
string opaque_ref = host.opaque_ref;
|
||||
var action = new AddHostToPoolAction(_pool, host, GetAdPrompt, NtolDialog,
|
||||
var action = new AddHostToPoolAction(_pool, host, GetAdPrompt,
|
||||
(licenseFailures, exceptionMessage) =>
|
||||
{
|
||||
if (licenseFailures.Count > 0)
|
||||
|
@ -66,7 +66,7 @@ namespace XenAdmin.Commands
|
||||
{
|
||||
foreach (Host draggedHost in draggedHosts)
|
||||
{
|
||||
PoolJoinRules.Reason reason = PoolJoinRules.CanJoinPool(draggedHost.Connection, targetPool.Connection, true, true, true, draggedHosts.Count);
|
||||
PoolJoinRules.Reason reason = PoolJoinRules.CanJoinPool(draggedHost.Connection, targetPool.Connection, true, true, draggedHosts.Count);
|
||||
if (reason != PoolJoinRules.Reason.Allowed)
|
||||
{
|
||||
string reasonString = PoolJoinRules.ReasonMessage(reason);
|
||||
|
@ -83,8 +83,6 @@ namespace XenAdmin.Commands
|
||||
|
||||
if(vdi.Connection.ResolveAll(vdi.VBDs).Count == 0)
|
||||
return false;
|
||||
if (vdi.GetVMs().Any(vm => !vm.IsRunning()) && !Helpers.DundeeOrGreater(vdi.Connection))
|
||||
return false;
|
||||
|
||||
SR sr = vdi.Connection.Resolve(vdi.SR);
|
||||
if (sr == null || sr.HBALunPerVDI())
|
||||
@ -111,8 +109,6 @@ namespace XenAdmin.Commands
|
||||
return Messages.CANNOT_MOVE_CBT_ENABLED_VDI;
|
||||
if (vdi.IsMetadataForDR())
|
||||
return Messages.CANNOT_MOVE_DR_VD;
|
||||
if (vdi.GetVMs().Any(vm => !vm.IsRunning()) && !Helpers.DundeeOrGreater(vdi.Connection))
|
||||
return Messages.CANNOT_MIGRATE_VDI_NON_RUNNING_VM;
|
||||
|
||||
SR sr = vdi.Connection.Resolve(vdi.SR);
|
||||
if (sr == null)
|
||||
|
@ -169,17 +169,6 @@ namespace XenAdmin.Commands
|
||||
|
||||
public static bool VmCpuIncompatibleWithHost(Host targetHost, VM vm)
|
||||
{
|
||||
// check the CPU compatibility for Dundee and higher hosts
|
||||
if (!Helpers.DundeeOrGreater(targetHost))
|
||||
return false;
|
||||
|
||||
Host home = vm.Home();
|
||||
if (home != null && !Helpers.DundeeOrGreater(home))
|
||||
return false;
|
||||
|
||||
if (home == null && !Helpers.DundeeOrGreater(vm.Connection))
|
||||
return false;
|
||||
|
||||
// only for running or suspended VMs
|
||||
if (vm.power_state != vm_power_state.Running && vm.power_state != vm_power_state.Suspended)
|
||||
return false;
|
||||
|
@ -112,7 +112,7 @@ namespace XenAdmin.Controls
|
||||
|
||||
internal void Refresh()
|
||||
{
|
||||
reason = PoolJoinRules.CanJoinPool(Connection, coordinatorConnection, true, true, true);
|
||||
reason = PoolJoinRules.CanJoinPool(Connection, coordinatorConnection, true, true);
|
||||
this.Description = PoolJoinRules.ReasonMessage(reason);
|
||||
this.Enabled = (reason == PoolJoinRules.Reason.Allowed);
|
||||
this.CheckedIfdisabled = (reason == PoolJoinRules.Reason.WillBeCoordinator);
|
||||
|
@ -481,7 +481,7 @@ namespace XenAdmin.Core
|
||||
|
||||
public static bool GetPermissionForCpuFeatureLevelling(List<Host> hosts, Pool pool)
|
||||
{
|
||||
if (hosts == null || pool == null || !Helpers.DundeeOrGreater(pool.Connection))
|
||||
if (hosts == null || pool == null)
|
||||
return true;
|
||||
|
||||
List<Host> hostsWithFewerFeatures = hosts.Where(host => PoolJoinRules.HostHasFewerFeatures(host, pool)).ToList();
|
||||
|
@ -237,7 +237,7 @@ namespace XenAdmin.Diagnostics.Checks
|
||||
var gm = vm.Connection.Resolve(vm.guest_metrics);
|
||||
var status = vm.GetVirtualisationStatus(out _);
|
||||
|
||||
if (Helpers.DundeeOrGreater(vm.Connection) && vm.IsWindows())
|
||||
if (vm.IsWindows())
|
||||
{
|
||||
if (gm != null && !gm.PV_drivers_detected)
|
||||
{
|
||||
|
@ -77,7 +77,7 @@ namespace XenAdmin.Diagnostics.Checks
|
||||
{
|
||||
foreach (var host2 in pool.Connection.Cache.Hosts.Where(h => h.uuid != host1.uuid))
|
||||
{
|
||||
if (!PoolJoinRules.CompatibleCPUs(host1, host2, false))
|
||||
if (!PoolJoinRules.CompatibleCPUs(host1, host2))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ namespace XenAdmin.Diagnostics.Checks
|
||||
|
||||
protected override Problem RunHostCheck()
|
||||
{
|
||||
if (_pool != null && _pool.Connection.Cache.Hosts.Any(h => Helpers.DundeeOrGreater(h) && Host.RestrictBatchHotfixApply(h)))
|
||||
if (_pool != null && _pool.Connection.Cache.Hosts.Any(Host.RestrictBatchHotfixApply))
|
||||
return new NotLicensedForAutomatedUpdatesWarning(this, _pool);
|
||||
|
||||
return null;
|
||||
|
@ -163,7 +163,7 @@ namespace XenAdmin.Dialogs
|
||||
// Are there any hosts which are forbidden from masking their CPUs for licensing reasons?
|
||||
// If so, we need to show upsell.
|
||||
if (null != supporters.Find(host =>
|
||||
!PoolJoinRules.CompatibleCPUs(host, coordinator, false) &&
|
||||
!PoolJoinRules.CompatibleCPUs(host, coordinator) &&
|
||||
Helpers.FeatureForbidden(host, Host.RestrictCpuMasking) &&
|
||||
!PoolJoinRules.FreeHostPaidCoordinator(host, coordinator, false))) // in this case we can upgrade the license and then mask the CPU
|
||||
{
|
||||
@ -189,7 +189,7 @@ namespace XenAdmin.Dialogs
|
||||
}
|
||||
}
|
||||
|
||||
var hosts2 = supporters.FindAll(host => !PoolJoinRules.CompatibleCPUs(host, coordinator, false));
|
||||
var hosts2 = supporters.FindAll(host => !PoolJoinRules.CompatibleCPUs(host, coordinator));
|
||||
if (hosts2.Count > 0)
|
||||
{
|
||||
string msg = string.Format(hosts2.Count == 1
|
||||
@ -233,7 +233,6 @@ namespace XenAdmin.Dialogs
|
||||
);
|
||||
|
||||
new CreatePoolAction(coordinator, supporters, poolName, poolDescription, AddHostToPoolCommand.GetAdPrompt,
|
||||
AddHostToPoolCommand.NtolDialog,
|
||||
(licenseFailures, exceptionMessage) =>
|
||||
{
|
||||
if (licenseFailures.Count > 0)
|
||||
|
@ -77,9 +77,8 @@ namespace XenAdmin
|
||||
bool popupLicenseMgr = HiddenFeatures.LicenseNagVisible;
|
||||
|
||||
// If the host is Dundee or greater, then the license alerts are generated by the server, so XenCenter shouldn't create any license alerts
|
||||
bool createAlert = !Helpers.DundeeOrGreater(connection);
|
||||
|
||||
if (!popupLicenseMgr && !createAlert)
|
||||
if (!popupLicenseMgr)
|
||||
return false;
|
||||
|
||||
DateTime now = DateTime.UtcNow - connection.ServerTimeOffset;
|
||||
@ -91,7 +90,7 @@ namespace XenAdmin
|
||||
if (expiryDate < now)
|
||||
{
|
||||
// License has expired. Pop up the License Manager.
|
||||
Program.Invoke(Program.MainWindow, () => showLicenseSummaryExpired(host, now, expiryDate, createAlert, popupLicenseMgr));
|
||||
Program.Invoke(Program.MainWindow, () => showLicenseSummaryExpired(host, now, expiryDate, false, popupLicenseMgr));
|
||||
return true;
|
||||
}
|
||||
if (timeToExpiry < CONNECTION_WARN_THRESHOLD &&
|
||||
@ -101,7 +100,7 @@ namespace XenAdmin
|
||||
// If it's a periodic check, only warn if XC has been open for one day
|
||||
if (periodicCheck)
|
||||
lastPeriodicLicenseWarning = DateTime.UtcNow;
|
||||
Program.Invoke(Program.MainWindow, () => showLicenseSummaryWarning(Helpers.GetName(host), now, expiryDate, createAlert, popupLicenseMgr));
|
||||
Program.Invoke(Program.MainWindow, () => showLicenseSummaryWarning(Helpers.GetName(host), now, expiryDate, false, popupLicenseMgr));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -916,7 +916,7 @@ namespace XenAdmin
|
||||
var supporters = connection.Cache.Hosts.Where(h => h.opaque_ref != coordinator.opaque_ref);
|
||||
foreach (var supporter in supporters)
|
||||
{
|
||||
if (Helpers.DundeeOrGreater(supporter))
|
||||
if (Helpers.HavanaOrGreater(supporter))
|
||||
continue;
|
||||
|
||||
connection.EndConnect();
|
||||
|
@ -81,23 +81,20 @@ namespace XenAdmin.SettingsPanels
|
||||
private void InitializeControls()
|
||||
{
|
||||
_loading = true;
|
||||
trackbarCPUPriority.Value = GetSafeTrackbarValue(trackbarCPUPriority, _poolConfiguration.VmCpuUtilizationWeightHigh / TRACKBAR_INTERVAL);
|
||||
trackbarMemoryPriority.Value = GetSafeTrackbarValue(trackbarMemoryPriority, _poolConfiguration.VmMemoryWeightHigh / TRACKBAR_INTERVAL);
|
||||
trackbarNetReadPriority.Value = GetSafeTrackbarValue(trackbarNetReadPriority, _poolConfiguration.VmNetworkReadWeightHigh / TRACKBAR_INTERVAL);
|
||||
trackbarNetWritePriority.Value = GetSafeTrackbarValue(trackbarNetWritePriority, _poolConfiguration.VmNetworkWriteWeightHigh / TRACKBAR_INTERVAL);
|
||||
trackbarDiskReadPriority.Value = GetSafeTrackbarValue(trackbarDiskReadPriority, _poolConfiguration.VmDiskReadWeightHigh / TRACKBAR_INTERVAL);
|
||||
trackbarDiskWritePriority.Value = GetSafeTrackbarValue(trackbarDiskWritePriority, _poolConfiguration.VmDiskWriteWeightHigh / TRACKBAR_INTERVAL);
|
||||
// CA-194940:
|
||||
// Host disk read/write threshold and weight settings work since Dundee.
|
||||
// For previous XenServer, hide the host disk read/write settings.
|
||||
if (!Helpers.DundeeOrGreater(_connection))
|
||||
|
||||
try
|
||||
{
|
||||
trackbarDiskReadPriority.Visible = false;
|
||||
trackbarDiskWritePriority.Visible = false;
|
||||
label10.Visible = false;
|
||||
label11.Visible = false;
|
||||
trackbarCPUPriority.Value = GetSafeTrackbarValue(trackbarCPUPriority, _poolConfiguration.VmCpuUtilizationWeightHigh / TRACKBAR_INTERVAL);
|
||||
trackbarMemoryPriority.Value = GetSafeTrackbarValue(trackbarMemoryPriority, _poolConfiguration.VmMemoryWeightHigh / TRACKBAR_INTERVAL);
|
||||
trackbarNetReadPriority.Value = GetSafeTrackbarValue(trackbarNetReadPriority, _poolConfiguration.VmNetworkReadWeightHigh / TRACKBAR_INTERVAL);
|
||||
trackbarNetWritePriority.Value = GetSafeTrackbarValue(trackbarNetWritePriority, _poolConfiguration.VmNetworkWriteWeightHigh / TRACKBAR_INTERVAL);
|
||||
trackbarDiskReadPriority.Value = GetSafeTrackbarValue(trackbarDiskReadPriority, _poolConfiguration.VmDiskReadWeightHigh / TRACKBAR_INTERVAL);
|
||||
trackbarDiskWritePriority.Value = GetSafeTrackbarValue(trackbarDiskWritePriority, _poolConfiguration.VmDiskWriteWeightHigh / TRACKBAR_INTERVAL);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_loading = false;
|
||||
}
|
||||
_loading = false; ;
|
||||
}
|
||||
|
||||
private void trackbarValueChanged(object sender, EventArgs e)
|
||||
|
@ -81,33 +81,27 @@ namespace XenAdmin.SettingsPanels
|
||||
private void InitializeControls()
|
||||
{
|
||||
_loading = true;
|
||||
updownCPUCriticalPoint.Value = GetSafeUpDownValue(_poolConfiguration.HostCpuThresholdCritical, updownCPUCriticalPoint);
|
||||
updownMemoryCriticalPoint.Value = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostMemoryThresholdCritical), updownMemoryCriticalPoint);
|
||||
updownDiskReadCriticalPoint.Value = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostDiskReadThresholdCritical), updownDiskReadCriticalPoint);
|
||||
updownDiskWriteCriticalPoint.Value = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostDiskWriteThresholdCritical), updownDiskWriteCriticalPoint);
|
||||
updownNetworkReadCriticalPoint.Value = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostNetworkReadThresholdCritical), updownNetworkReadCriticalPoint);
|
||||
updownNetworkWriteCriticalPoint.Value = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostNetworkWriteThresholdCritical), updownNetworkWriteCriticalPoint);
|
||||
|
||||
labelCPUUnits.Text = string.Format(labelCPUUnits.Text, updownCPUCriticalPoint.Minimum, updownCPUCriticalPoint.Maximum);
|
||||
labelFreeMemoryUnits.Text = string.Format(labelFreeMemoryUnits.Text, updownMemoryCriticalPoint.Minimum, updownMemoryCriticalPoint.Maximum);
|
||||
labelDiskReadUnits.Text = string.Format(labelDiskReadUnits.Text, updownDiskReadCriticalPoint.Minimum, updownDiskReadCriticalPoint.Maximum);
|
||||
labelDiskWriteUnits.Text = string.Format(labelDiskWriteUnits.Text, updownDiskWriteCriticalPoint.Minimum, updownDiskWriteCriticalPoint.Maximum);
|
||||
labelNetworkReadUnits.Text = string.Format(labelNetworkReadUnits.Text, updownNetworkReadCriticalPoint.Minimum, updownNetworkReadCriticalPoint.Maximum);
|
||||
labelNetworkWriteUnits.Text = string.Format(labelNetworkWriteUnits.Text, updownNetworkWriteCriticalPoint.Minimum, updownNetworkWriteCriticalPoint.Maximum);
|
||||
|
||||
// CA-194940:
|
||||
// Host disk read/write threshold and weight settings work since Dundee.
|
||||
// For previous XenServer, hide the host disk read/write settings.
|
||||
if (!Helpers.DundeeOrGreater(_connection))
|
||||
try
|
||||
{
|
||||
updownDiskReadCriticalPoint.Visible = false;
|
||||
updownDiskWriteCriticalPoint.Visible = false;
|
||||
labelDiskReadUnits.Visible = false;
|
||||
labelDiskWriteUnits.Visible = false;
|
||||
labelDiskRead.Visible = false;
|
||||
label1DiskWrite.Visible = false;
|
||||
updownCPUCriticalPoint.Value = GetSafeUpDownValue(_poolConfiguration.HostCpuThresholdCritical, updownCPUCriticalPoint);
|
||||
updownMemoryCriticalPoint.Value = GetSafeUpDownValue(WlbConfigurationBase.ConvertToMB(_poolConfiguration.HostMemoryThresholdCritical), updownMemoryCriticalPoint);
|
||||
updownDiskReadCriticalPoint.Value = GetSafeUpDownValue(WlbConfigurationBase.ConvertToMB(_poolConfiguration.HostDiskReadThresholdCritical), updownDiskReadCriticalPoint);
|
||||
updownDiskWriteCriticalPoint.Value = GetSafeUpDownValue(WlbConfigurationBase.ConvertToMB(_poolConfiguration.HostDiskWriteThresholdCritical), updownDiskWriteCriticalPoint);
|
||||
updownNetworkReadCriticalPoint.Value = GetSafeUpDownValue(WlbConfigurationBase.ConvertToMB(_poolConfiguration.HostNetworkReadThresholdCritical), updownNetworkReadCriticalPoint);
|
||||
updownNetworkWriteCriticalPoint.Value = GetSafeUpDownValue(WlbConfigurationBase.ConvertToMB(_poolConfiguration.HostNetworkWriteThresholdCritical), updownNetworkWriteCriticalPoint);
|
||||
|
||||
labelCPUUnits.Text = string.Format(labelCPUUnits.Text, updownCPUCriticalPoint.Minimum, updownCPUCriticalPoint.Maximum);
|
||||
labelFreeMemoryUnits.Text = string.Format(labelFreeMemoryUnits.Text, updownMemoryCriticalPoint.Minimum, updownMemoryCriticalPoint.Maximum);
|
||||
labelDiskReadUnits.Text = string.Format(labelDiskReadUnits.Text, updownDiskReadCriticalPoint.Minimum, updownDiskReadCriticalPoint.Maximum);
|
||||
labelDiskWriteUnits.Text = string.Format(labelDiskWriteUnits.Text, updownDiskWriteCriticalPoint.Minimum, updownDiskWriteCriticalPoint.Maximum);
|
||||
labelNetworkReadUnits.Text = string.Format(labelNetworkReadUnits.Text, updownNetworkReadCriticalPoint.Minimum, updownNetworkReadCriticalPoint.Maximum);
|
||||
labelNetworkWriteUnits.Text = string.Format(labelNetworkWriteUnits.Text, updownNetworkWriteCriticalPoint.Minimum, updownNetworkWriteCriticalPoint.Maximum);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_loading = false;
|
||||
}
|
||||
_loading = false; ;
|
||||
}
|
||||
|
||||
private decimal GetSafeUpDownValue(decimal value, NumericUpDown thisControl)
|
||||
|
@ -170,7 +170,7 @@ namespace XenAdmin.TabPages
|
||||
}
|
||||
|
||||
//show the FCoE column for Dundee or higher hosts only
|
||||
ColumnFCoECapable.Visible = Helpers.DundeeOrGreater(host);
|
||||
ColumnFCoECapable.Visible = true;
|
||||
|
||||
//show the SR-IOV column for Kolkata or higher hosts only
|
||||
ColumnSriovCapable.Visible = Helpers.KolkataOrGreater(host);
|
||||
|
@ -210,7 +210,7 @@ namespace XenAdmin.Wizards.ImportWizard
|
||||
|
||||
private bool CheckDestinationSupportsVendorDevice()
|
||||
{
|
||||
var dundeeOrNewerHosts = Helpers.DundeeOrGreater(SelectedTargetPool.Connection) ? SelectedTargetPool.Connection.Cache.Hosts : new Host[] {};
|
||||
var dundeeOrNewerHosts = SelectedTargetPool.Connection.Cache.Hosts;
|
||||
|
||||
foreach (var setting in vendorDeviceSettings)
|
||||
{
|
||||
|
@ -95,7 +95,7 @@ namespace XenAdmin.Wizards.NewSRWizard_Pages
|
||||
{
|
||||
radioButtonCifs.Visible = !Helpers.FeatureForbidden(Connection, Host.RestrictCifs);
|
||||
|
||||
radioButtonFcoe.Visible = Helpers.DundeeOrGreater(Connection);
|
||||
radioButtonFcoe.Visible = true;
|
||||
|
||||
foreach (var radioButton in _radioButtons)
|
||||
{
|
||||
|
@ -257,12 +257,6 @@ namespace XenAdmin.Wizards.NewSRWizard_Pages.Frontends
|
||||
}
|
||||
}
|
||||
|
||||
public override string NextText(bool isLastPage)
|
||||
{
|
||||
// for Dundee or greater connections, we have "Storage provisioning settings" page after this page, so the Next button should say "Next", not "Create"
|
||||
return Helpers.DundeeOrGreater(Connection) ? Messages.WIZARD_BUTTON_NEXT : Messages.NEWSR_LVMOHBA_NEXT_TEXT;
|
||||
}
|
||||
|
||||
public override void SelectDefaultControl()
|
||||
{
|
||||
dataGridView.Select();
|
||||
|
@ -102,7 +102,7 @@ namespace XenAdmin.Wizards.NewSRWizard_Pages.Frontends
|
||||
this.NfsServerPathComboBox.Items.AddRange(add_srs.ToArray());
|
||||
|
||||
//Setting up visibility of the NFS Version controls
|
||||
nfsVersionLabel.Visible = nfsVersionTableLayoutPanel.Visible = Helpers.DundeeOrGreater(Connection);
|
||||
nfsVersionLabel.Visible = nfsVersionTableLayoutPanel.Visible = true;
|
||||
}
|
||||
|
||||
protected override void PageLoadedCore(PageLoadedDirection direction)
|
||||
|
@ -85,7 +85,7 @@ namespace XenAdmin.Wizards.NewSRWizard_Pages.Frontends
|
||||
listBoxNfsSRs.SetMustSelectUUID(SrWizardType.UUID);
|
||||
|
||||
//Setting visibility of NFS Version controls
|
||||
nfsVersionLabel.Visible = nfsVersionSelectorTableLayoutPanel.Visible = Helpers.DundeeOrGreater(Connection);
|
||||
nfsVersionLabel.Visible = nfsVersionSelectorTableLayoutPanel.Visible = true;
|
||||
}
|
||||
|
||||
public override void SelectDefaultControl()
|
||||
@ -136,22 +136,20 @@ namespace XenAdmin.Wizards.NewSRWizard_Pages.Frontends
|
||||
{
|
||||
NfsScanButton.Enabled = false;
|
||||
|
||||
// Perform an SR.probe to see if there is already an SR present
|
||||
Dictionary<String, String> dconf = new Dictionary<String, String>();
|
||||
string[] fullpath = NfsServerPathTextBox.Text.Trim().Split(new char[] { ':' });
|
||||
dconf[SERVER] = fullpath[0];
|
||||
if (fullpath.Length > 1)
|
||||
{
|
||||
dconf[SERVERPATH] = fullpath[1];
|
||||
}
|
||||
dconf[OPTIONS] = serverOptionsTextBox.Text;
|
||||
|
||||
Host coordinator = Helpers.GetCoordinator(Connection);
|
||||
if (coordinator == null)
|
||||
return;
|
||||
|
||||
if (Helpers.DundeeOrGreater(Connection))
|
||||
dconf[PROBEVERSION] = string.Empty; //this needs to be passed to the API in order to get back the NFS versions supported
|
||||
// Perform an SR.probe to see if there is already an SR present
|
||||
var dconf = new Dictionary<string, string>();
|
||||
string[] fullpath = NfsServerPathTextBox.Text.Trim().Split(':');
|
||||
dconf[SERVER] = fullpath[0];
|
||||
|
||||
if (fullpath.Length > 1)
|
||||
dconf[SERVERPATH] = fullpath[1];
|
||||
|
||||
dconf[OPTIONS] = serverOptionsTextBox.Text;
|
||||
dconf[PROBEVERSION] = string.Empty; //this needs to be passed to the API in order to get back the NFS versions supported
|
||||
|
||||
// Start probe
|
||||
SrProbeAction action = new SrProbeAction(Connection, coordinator, SR.SRTypes.nfs, dconf);
|
||||
|
@ -198,13 +198,7 @@ namespace XenAdmin.Wizards.PatchingWizard
|
||||
: Updates.GetMinimalPatches(host.Connection);
|
||||
if (minimalPatches == null) //version not supported or too new to have automated updates available
|
||||
{
|
||||
var versionSupportsAutomatedUpdates = WizardMode == WizardMode.NewVersion
|
||||
? Helpers.DundeeOrGreater(host)
|
||||
: Helpers.DundeeOrGreater(host.Connection);
|
||||
|
||||
tooltipText = versionSupportsAutomatedUpdates
|
||||
? Messages.PATCHINGWIZARD_SELECTSERVERPAGE_SERVER_UP_TO_DATE
|
||||
: string.Format(Messages.PATCHINGWIZARD_SELECTSERVERPAGE_AUTOMATED_UPDATES_NOT_SUPPORTED_HOST_VERSION, BrandManager.ProductBrand);
|
||||
tooltipText = Messages.PATCHINGWIZARD_SELECTSERVERPAGE_SERVER_UP_TO_DATE;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -40,24 +40,22 @@ namespace XenAdmin.Actions
|
||||
public class AddHostToPoolAction : PoolAbstractAction
|
||||
{
|
||||
private readonly List<Host> _hostsToRelicense;
|
||||
private readonly List<Host> _hostsToCpuMask;
|
||||
private readonly List<Host> _hostsToAdConfigure;
|
||||
|
||||
public AddHostToPoolAction(Pool poolToJoin, Host joiningHost, Func<Host, AdUserAndPassword> getAdCredentials,
|
||||
Func<HostAbstractAction, Pool, long, long, bool> acceptNTolChanges, Action<List<LicenseFailure>, string> doOnLicensingFailure)
|
||||
Action<List<LicenseFailure>, string> doOnLicensingFailure)
|
||||
: base(joiningHost.Connection, string.Format(Messages.ADDING_SERVER_TO_POOL, joiningHost.Name(), poolToJoin.Name()),
|
||||
getAdCredentials, acceptNTolChanges, doOnLicensingFailure)
|
||||
getAdCredentials, doOnLicensingFailure)
|
||||
{
|
||||
this.Pool = poolToJoin;
|
||||
this.Host = joiningHost;
|
||||
Host coordinator = Helpers.GetCoordinator(poolToJoin);
|
||||
_hostsToRelicense = new List<Host>();
|
||||
_hostsToCpuMask = new List<Host>();
|
||||
|
||||
_hostsToAdConfigure = new List<Host>();
|
||||
if (PoolJoinRules.FreeHostPaidCoordinator(joiningHost, coordinator, false))
|
||||
_hostsToRelicense.Add(joiningHost);
|
||||
if (!PoolJoinRules.CompatibleCPUs(joiningHost, coordinator, false))
|
||||
_hostsToCpuMask.Add(joiningHost);
|
||||
|
||||
if (!PoolJoinRules.CompatibleAdConfig(joiningHost, coordinator, false))
|
||||
_hostsToAdConfigure.Add(joiningHost);
|
||||
this.Description = Messages.WAITING;
|
||||
@ -76,7 +74,6 @@ namespace XenAdmin.Actions
|
||||
ApiMethodsToRoleCheck.Add("pool.remove_tags");
|
||||
ApiMethodsToRoleCheck.Add("pool.set_wlb_enabled");
|
||||
ApiMethodsToRoleCheck.Add("pool.set_wlb_verify_cert");
|
||||
|
||||
ApiMethodsToRoleCheck.Add("pool.join");
|
||||
}
|
||||
|
||||
@ -88,9 +85,6 @@ namespace XenAdmin.Actions
|
||||
{
|
||||
FixLicensing(Pool, _hostsToRelicense, DoOnLicensingFailure);
|
||||
FixAd(Pool, _hostsToAdConfigure, GetAdCredentials);
|
||||
bool fixedCpus = FixCpus(Pool, _hostsToCpuMask, AcceptNTolChanges);
|
||||
if (fixedCpus)
|
||||
Session = NewSession(); // We've rebooted the server, so we need to grab the new session
|
||||
|
||||
var coordinator = Pool.Connection.TryResolveWithTimeout(Pool.master);
|
||||
var address = coordinator != null ? coordinator.address : Pool.Connection.Hostname;
|
||||
|
@ -40,7 +40,7 @@ namespace XenAdmin.Actions
|
||||
{
|
||||
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
private readonly List<Host> _supporters, _hostsToRelicense, _hostsToCpuMask, _hostsToAdConfigure;
|
||||
private readonly List<Host> _supporters, _hostsToRelicense, _hostsToAdConfigure;
|
||||
private readonly string _name;
|
||||
private readonly string _description;
|
||||
|
||||
@ -51,20 +51,18 @@ namespace XenAdmin.Actions
|
||||
/// <param name="supporters"></param>
|
||||
/// <param name="name"></param>
|
||||
/// <param name="description"></param>
|
||||
/// <param name="acceptNTolChanges"></param>
|
||||
/// <param name="doOnLicensingFailure"></param>
|
||||
/// <param name="getAdCredentials"></param>
|
||||
public CreatePoolAction(Host coordinator, List<Host> supporters, string name, string description, Func<Host, AdUserAndPassword> getAdCredentials,
|
||||
Func<HostAbstractAction, Pool, long, long, bool> acceptNTolChanges, Action<List<LicenseFailure>, string> doOnLicensingFailure)
|
||||
Action<List<LicenseFailure>, string> doOnLicensingFailure)
|
||||
: base(coordinator.Connection, string.Format(Messages.CREATING_NAMED_POOL_WITH_COORDINATOR, name, coordinator.Name()),
|
||||
getAdCredentials, acceptNTolChanges, doOnLicensingFailure)
|
||||
getAdCredentials, doOnLicensingFailure)
|
||||
{
|
||||
System.Diagnostics.Trace.Assert(coordinator != null);
|
||||
|
||||
this.Host = coordinator;
|
||||
this._supporters = supporters;
|
||||
_hostsToRelicense = supporters.FindAll(h => PoolJoinRules.FreeHostPaidCoordinator(h, coordinator, false));
|
||||
_hostsToCpuMask = supporters.FindAll(h => !PoolJoinRules.CompatibleCPUs(h, coordinator, false));
|
||||
_hostsToAdConfigure = supporters.FindAll(h => !PoolJoinRules.CompatibleAdConfig(h, coordinator, false));
|
||||
this._name = name;
|
||||
this._description = description;
|
||||
@ -111,7 +109,6 @@ namespace XenAdmin.Actions
|
||||
|
||||
FixLicensing(coordinator_pool, _hostsToRelicense, DoOnLicensingFailure);
|
||||
FixAd(coordinator_pool, _hostsToAdConfigure, GetAdCredentials);
|
||||
FixCpus(coordinator_pool, _hostsToCpuMask, AcceptNTolChanges);
|
||||
|
||||
XenAPI.Pool.set_name_label(Session, coordinator_pool.opaque_ref, _name);
|
||||
XenAPI.Pool.set_name_description(Session, coordinator_pool.opaque_ref, _description);
|
||||
|
@ -40,22 +40,19 @@ namespace XenAdmin.Actions
|
||||
public abstract class PoolAbstractAction : AsyncAction
|
||||
{
|
||||
protected Func<Host, AdUserAndPassword> GetAdCredentials;
|
||||
protected Func<HostAbstractAction, Pool, long, long, bool> AcceptNTolChanges;
|
||||
protected Action<List<LicenseFailure>, string> DoOnLicensingFailure;
|
||||
|
||||
protected PoolAbstractAction(IXenConnection connection, string title, Func<Host, AdUserAndPassword> getAdCredentials,
|
||||
Func<HostAbstractAction, Pool, long, long, bool> acceptNTolChanges, Action<List<LicenseFailure>, string> doOnLicensingFailure)
|
||||
Action<List<LicenseFailure>, string> doOnLicensingFailure)
|
||||
: base(connection, title)
|
||||
{
|
||||
this.GetAdCredentials = getAdCredentials;
|
||||
this.AcceptNTolChanges = acceptNTolChanges;
|
||||
this.DoOnLicensingFailure = doOnLicensingFailure;
|
||||
GetAdCredentials = getAdCredentials;
|
||||
DoOnLicensingFailure = doOnLicensingFailure;
|
||||
}
|
||||
|
||||
protected void ClearAllDelegates()
|
||||
{
|
||||
GetAdCredentials = null;
|
||||
AcceptNTolChanges = null;
|
||||
DoOnLicensingFailure = null;
|
||||
}
|
||||
|
||||
@ -70,51 +67,6 @@ namespace XenAdmin.Actions
|
||||
action.RunSync(null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Mask the CPUs of any supporters that need masking to join the pool
|
||||
/// </summary>
|
||||
/// <returns>Whether any CPUs were masked</returns>
|
||||
protected static bool FixCpus(Pool pool, List<Host> hostsToCpuMask, Func<HostAbstractAction, Pool, long, long, bool> acceptNTolChanges)
|
||||
{
|
||||
if (hostsToCpuMask.Count == 0)
|
||||
return false;
|
||||
|
||||
Host poolCoordinator = Helpers.GetCoordinator(pool);
|
||||
List<RebootHostAction> rebootActions = new List<RebootHostAction>();
|
||||
|
||||
// Mask the CPUs, and reboot the hosts (simultaneously, as they must all be on separate connections)
|
||||
foreach (Host host in hostsToCpuMask)
|
||||
{
|
||||
// No CPU masking is needed for Dundee or greater hosts
|
||||
if (Helpers.DundeeOrGreater(host))
|
||||
{
|
||||
System.Diagnostics.Trace.Assert(false, "No CPU masking should be done for Dundee or greater hosts");
|
||||
continue;
|
||||
}
|
||||
|
||||
Host.set_cpu_features(host.Connection.Session, host.opaque_ref, poolCoordinator.cpu_info["features"]);
|
||||
RebootHostAction action = new RebootHostAction(host, acceptNTolChanges);
|
||||
rebootActions.Add(action);
|
||||
action.RunAsync();
|
||||
}
|
||||
|
||||
// Wait for all the actions to finish, checking every ten seconds
|
||||
while (true)
|
||||
{
|
||||
bool done = true;
|
||||
foreach (RebootHostAction action in rebootActions)
|
||||
{
|
||||
if (!action.IsCompleted)
|
||||
done = false;
|
||||
}
|
||||
if (done)
|
||||
break;
|
||||
System.Threading.Thread.Sleep(10000);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// If we're joining a pool that has a non-shared default/crash/suspend SR, then clear that
|
||||
/// pool's default SRs, since a pool with default SRs set to local storage is a confusing
|
||||
|
18
XenModel/Messages.Designer.cs
generated
18
XenModel/Messages.Designer.cs
generated
@ -6943,15 +6943,6 @@ namespace XenAdmin {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Cannot move this virtual disk because it is attached to a VM that is not running..
|
||||
/// </summary>
|
||||
public static string CANNOT_MIGRATE_VDI_NON_RUNNING_VM {
|
||||
get {
|
||||
return ResourceManager.GetString("CANNOT_MIGRATE_VDI_NON_RUNNING_VM", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to This virtual disk has CBT enabled. It cannot be moved to another storage repository..
|
||||
/// </summary>
|
||||
@ -29428,15 +29419,6 @@ namespace XenAdmin {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Automated updates are not supported on this {0} version.
|
||||
/// </summary>
|
||||
public static string PATCHINGWIZARD_SELECTSERVERPAGE_AUTOMATED_UPDATES_NOT_SUPPORTED_HOST_VERSION {
|
||||
get {
|
||||
return ResourceManager.GetString("PATCHINGWIZARD_SELECTSERVERPAGE_AUTOMATED_UPDATES_NOT_SUPPORTED_HOST_VERSION", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Automated updates are not supported on partially upgraded {0} pools.
|
||||
/// </summary>
|
||||
|
@ -2518,9 +2518,6 @@ This will cancel compilation of the status report.</value>
|
||||
<data name="CANNOT_FIND_SR_WIZARD_TYPE" xml:space="preserve">
|
||||
<value>You cannot configure an SR of type '{0}' using {1}.</value>
|
||||
</data>
|
||||
<data name="CANNOT_MIGRATE_VDI_NON_RUNNING_VM" xml:space="preserve">
|
||||
<value>Cannot move this virtual disk because it is attached to a VM that is not running.</value>
|
||||
</data>
|
||||
<data name="CANNOT_MOVE_CBT_ENABLED_VDI" xml:space="preserve">
|
||||
<value>This virtual disk has CBT enabled. It cannot be moved to another storage repository.</value>
|
||||
</data>
|
||||
@ -10226,9 +10223,6 @@ This will cancel the update process and may leave your system in an unstable sta
|
||||
<data name="PATCHINGWIZARD_SELECTSERVERPAGE_APPLY_UPDATES_MIXED" xml:space="preserve">
|
||||
<value>Also apply all released &updates on the new version (only on pools licensed for automated updates)</value>
|
||||
</data>
|
||||
<data name="PATCHINGWIZARD_SELECTSERVERPAGE_AUTOMATED_UPDATES_NOT_SUPPORTED_HOST_VERSION" xml:space="preserve">
|
||||
<value>Automated updates are not supported on this {0} version</value>
|
||||
</data>
|
||||
<data name="PATCHINGWIZARD_SELECTSERVERPAGE_AUTOMATED_UPDATES_NOT_SUPPORTED_PARTIALLY_UPGRADED" xml:space="preserve">
|
||||
<value>Automated updates are not supported on partially upgraded {0} pools</value>
|
||||
</data>
|
||||
|
@ -91,9 +91,8 @@ namespace XenAdmin.Core
|
||||
/// <param name="supporterConnection">The connection of the server that wants to join the pool</param>
|
||||
/// <param name="coordinatorConnection">The connection of the existing pool or of the proposed coordinator of a new pool</param>
|
||||
/// <param name="allowLicenseUpgrade">Whether we can upgrade a free host to a v6 license of the pool it's joining</param>
|
||||
/// <param name="allowCpuLevelling">Whether we can apply CPU levelling to the supporter before it joins the pool</param>
|
||||
/// <returns>The reason why the server can't join the pool, or Reason.Allowed if it's OK</returns>
|
||||
public static Reason CanJoinPool(IXenConnection supporterConnection, IXenConnection coordinatorConnection, bool allowLicenseUpgrade, bool allowCpuLevelling, bool allowSupporterAdConfig, int poolSizeIncrement = 1)
|
||||
public static Reason CanJoinPool(IXenConnection supporterConnection, IXenConnection coordinatorConnection, bool allowLicenseUpgrade, bool allowSupporterAdConfig, int poolSizeIncrement = 1)
|
||||
{
|
||||
if (supporterConnection == null || !supporterConnection.IsConnected)
|
||||
return Reason.NotConnected;
|
||||
@ -122,7 +121,7 @@ namespace XenAdmin.Core
|
||||
if (!RoleOK(coordinatorConnection))
|
||||
return Reason.WrongRoleOnCoordinator;
|
||||
|
||||
if (!CompatibleCPUs(supporterHost, coordinatorHost, allowCpuLevelling))
|
||||
if (!CompatibleCPUs(supporterHost, coordinatorHost))
|
||||
return Reason.DifferentCPUs;
|
||||
|
||||
if (DifferentServerVersion(supporterHost, coordinatorHost))
|
||||
@ -310,7 +309,7 @@ namespace XenAdmin.Core
|
||||
// If CompatibleCPUs(supporter, coordinator, false) is true, the CPUs can be pooled without masking first.
|
||||
// If CompatibleCPUs(supporter, coordinator, true) is true but CompatibleCPUs(supporter, coordinator, false) is false,
|
||||
// the CPUs can be pooled but only if they are masked first.
|
||||
public static bool CompatibleCPUs(Host supporter, Host coordinator, bool allowCpuLevelling)
|
||||
public static bool CompatibleCPUs(Host supporter, Host coordinator)
|
||||
{
|
||||
if (supporter == null || coordinator == null)
|
||||
return true;
|
||||
@ -326,23 +325,7 @@ namespace XenAdmin.Core
|
||||
return false;
|
||||
|
||||
// As of Dundee, feature levelling makes all CPUs from the same vendor compatible
|
||||
if (Helpers.DundeeOrGreater(coordinator) || Helpers.DundeeOrGreater(supporter))
|
||||
return true;
|
||||
|
||||
if (supporter_cpu_info["features"] == coordinator_cpu_info["features"])
|
||||
return true;
|
||||
|
||||
if (allowCpuLevelling)
|
||||
{
|
||||
string cpuid_feature_mask = null;
|
||||
Pool pool = Helpers.GetPoolOfOne(coordinator.Connection);
|
||||
if (pool != null && pool.other_config.ContainsKey("cpuid_feature_mask"))
|
||||
cpuid_feature_mask = pool.other_config["cpuid_feature_mask"];
|
||||
|
||||
return MaskableTo(supporter_cpu_info["maskable"], supporter_cpu_info["physical_features"], coordinator_cpu_info["features"], cpuid_feature_mask);
|
||||
}
|
||||
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Host.cpu_info not supported: use the old method which compares vendor, family, model and flags
|
||||
|
@ -167,28 +167,6 @@ namespace XenAdmin.Core
|
||||
|
||||
#region Versions
|
||||
|
||||
/// <summary>
|
||||
/// Dundee platform version is 2.0.0
|
||||
/// </summary>
|
||||
/// <param name="conn">May be null, in which case true is returned.</param>
|
||||
public static bool DundeeOrGreater(IXenConnection conn)
|
||||
{
|
||||
return conn == null || DundeeOrGreater(GetCoordinator(conn));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Dundee platform version is 2.0.0
|
||||
/// </summary>
|
||||
/// <param name="host">May be null, in which case true is returned.</param>
|
||||
public static bool DundeeOrGreater(Host host)
|
||||
{
|
||||
if (host == null)
|
||||
return true;
|
||||
|
||||
string platformVersion = HostPlatformVersion(host);
|
||||
return platformVersion != null && ProductVersionCompare(platformVersion, "2.0.0") >= 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ely platform version is 2.1.1
|
||||
/// </summary>
|
||||
|
@ -222,7 +222,7 @@ namespace XenAdmin.Core
|
||||
|
||||
public static bool CrossPoolMigrationRestrictedWithWlb(IXenConnection conn)
|
||||
{
|
||||
return WlbEnabledAndConfigured(conn) && !DundeeOrGreater(conn);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
@ -415,9 +415,7 @@ namespace XenAPI
|
||||
/// </summary>
|
||||
public static bool RestrictSslLegacySwitch(Host h)
|
||||
{
|
||||
return Helpers.DundeeOrGreater(h)
|
||||
? BoolKey(h.license_params, "restrict_ssl_legacy_switch")
|
||||
: BoolKeyPreferTrue(h.license_params, "restrict_ssl_legacy_switch");
|
||||
return BoolKey(h.license_params, "restrict_ssl_legacy_switch");
|
||||
}
|
||||
|
||||
public static bool RestrictLivePatching(Host h)
|
||||
|
@ -729,7 +729,7 @@ namespace XenAPI
|
||||
/// </summary>
|
||||
public bool HasNewVirtualisationStates()
|
||||
{
|
||||
return IsWindows() && Helpers.DundeeOrGreater(Connection);
|
||||
return IsWindows();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
Loading…
Reference in New Issue
Block a user