mirror of
https://github.com/xcp-ng/xenadmin.git
synced 2024-11-25 06:16:37 +01:00
Merge pull request #338 from MihaelaStoica/CP-10625
CP-10625: Provide Xencenter user interface to enable/disable integrated GPU passthrough
This commit is contained in:
commit
b78d9ff87a
@ -208,10 +208,10 @@ namespace XenAdmin.Dialogs
|
||||
if (is_pool && Helpers.MidnightRideOrGreater(xenObject.Connection))
|
||||
ShowTab(PoolPowerONEditPage = new PoolPowerONEditPage());
|
||||
|
||||
if (is_pool_or_standalone)
|
||||
if ((is_pool_or_standalone && Helpers.VGpuCapability(xenObjectCopy.Connection))
|
||||
|| (is_host && ((Host)xenObjectCopy).CanEnableDisableIntegratedGpu))
|
||||
{
|
||||
if (Helpers.VGpuCapability(xenObjectCopy.Connection))
|
||||
ShowTab(PoolGpuEditPage = new PoolGpuEditPage());
|
||||
ShowTab(PoolGpuEditPage = new PoolGpuEditPage());
|
||||
}
|
||||
|
||||
if (is_network)
|
||||
|
109
XenAdmin/SettingsPanels/PoolGpuEditPage.Designer.cs
generated
109
XenAdmin/SettingsPanels/PoolGpuEditPage.Designer.cs
generated
@ -29,12 +29,27 @@
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PoolGpuEditPage));
|
||||
this.labelRubric = new System.Windows.Forms.Label();
|
||||
this.labelRubric = new XenAdmin.Controls.Common.AutoHeightLabel();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.radioButtonMixture = new System.Windows.Forms.RadioButton();
|
||||
this.radioButtonDepth = new System.Windows.Forms.RadioButton();
|
||||
this.radioButtonBreadth = new System.Windows.Forms.RadioButton();
|
||||
this.tableLayoutPanelMain = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.groupBoxPlacementPolicy = new System.Windows.Forms.GroupBox();
|
||||
this.groupBoxIntedratedGpu = new System.Windows.Forms.GroupBox();
|
||||
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.radioButtonDisable = new System.Windows.Forms.RadioButton();
|
||||
this.autoHeightLabel3 = new XenAdmin.Controls.Common.AutoHeightLabel();
|
||||
this.labelCurrentState = new XenAdmin.Controls.Common.AutoHeightLabel();
|
||||
this.autoHeightLabel1 = new XenAdmin.Controls.Common.AutoHeightLabel();
|
||||
this.radioButtonEnable = new System.Windows.Forms.RadioButton();
|
||||
this.optionsLayoutPanel = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.tableLayoutPanelMain.SuspendLayout();
|
||||
this.groupBoxPlacementPolicy.SuspendLayout();
|
||||
this.groupBoxIntedratedGpu.SuspendLayout();
|
||||
this.tableLayoutPanel2.SuspendLayout();
|
||||
this.optionsLayoutPanel.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// labelRubric
|
||||
@ -45,8 +60,8 @@
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
|
||||
this.tableLayoutPanel1.Controls.Add(this.radioButtonMixture, 0, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.labelRubric, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.radioButtonMixture, 0, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.radioButtonDepth, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.radioButtonBreadth, 0, 2);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
@ -72,24 +87,110 @@
|
||||
this.radioButtonBreadth.TabStop = true;
|
||||
this.radioButtonBreadth.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tableLayoutPanelMain
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanelMain, "tableLayoutPanelMain");
|
||||
this.tableLayoutPanelMain.Controls.Add(this.groupBoxPlacementPolicy, 0, 0);
|
||||
this.tableLayoutPanelMain.Controls.Add(this.groupBoxIntedratedGpu, 0, 1);
|
||||
this.tableLayoutPanelMain.Name = "tableLayoutPanelMain";
|
||||
//
|
||||
// groupBoxPlacementPolicy
|
||||
//
|
||||
resources.ApplyResources(this.groupBoxPlacementPolicy, "groupBoxPlacementPolicy");
|
||||
this.groupBoxPlacementPolicy.Controls.Add(this.tableLayoutPanel1);
|
||||
this.groupBoxPlacementPolicy.Name = "groupBoxPlacementPolicy";
|
||||
this.groupBoxPlacementPolicy.TabStop = false;
|
||||
//
|
||||
// groupBoxIntedratedGpu
|
||||
//
|
||||
resources.ApplyResources(this.groupBoxIntedratedGpu, "groupBoxIntedratedGpu");
|
||||
this.groupBoxIntedratedGpu.Controls.Add(this.tableLayoutPanel2);
|
||||
this.groupBoxIntedratedGpu.Name = "groupBoxIntedratedGpu";
|
||||
this.groupBoxIntedratedGpu.TabStop = false;
|
||||
//
|
||||
// tableLayoutPanel2
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2");
|
||||
this.tableLayoutPanel2.Controls.Add(this.optionsLayoutPanel, 0, 3);
|
||||
this.tableLayoutPanel2.Controls.Add(this.autoHeightLabel3, 0, 2);
|
||||
this.tableLayoutPanel2.Controls.Add(this.labelCurrentState, 0, 1);
|
||||
this.tableLayoutPanel2.Controls.Add(this.autoHeightLabel1, 0, 0);
|
||||
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
|
||||
//
|
||||
// radioButtonDisable
|
||||
//
|
||||
resources.ApplyResources(this.radioButtonDisable, "radioButtonDisable");
|
||||
this.radioButtonDisable.Name = "radioButtonDisable";
|
||||
this.radioButtonDisable.TabStop = true;
|
||||
this.radioButtonDisable.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// autoHeightLabel3
|
||||
//
|
||||
resources.ApplyResources(this.autoHeightLabel3, "autoHeightLabel3");
|
||||
this.autoHeightLabel3.Name = "autoHeightLabel3";
|
||||
//
|
||||
// labelCurrentState
|
||||
//
|
||||
resources.ApplyResources(this.labelCurrentState, "labelCurrentState");
|
||||
this.labelCurrentState.Name = "labelCurrentState";
|
||||
//
|
||||
// autoHeightLabel1
|
||||
//
|
||||
resources.ApplyResources(this.autoHeightLabel1, "autoHeightLabel1");
|
||||
this.autoHeightLabel1.Name = "autoHeightLabel1";
|
||||
//
|
||||
// radioButtonEnable
|
||||
//
|
||||
resources.ApplyResources(this.radioButtonEnable, "radioButtonEnable");
|
||||
this.radioButtonEnable.Name = "radioButtonEnable";
|
||||
this.radioButtonEnable.TabStop = true;
|
||||
this.radioButtonEnable.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// optionsLayoutPanel
|
||||
//
|
||||
resources.ApplyResources(this.optionsLayoutPanel, "optionsLayoutPanel");
|
||||
this.optionsLayoutPanel.Controls.Add(this.radioButtonEnable);
|
||||
this.optionsLayoutPanel.Controls.Add(this.radioButtonDisable);
|
||||
this.optionsLayoutPanel.Name = "optionsLayoutPanel";
|
||||
//
|
||||
// PoolGpuEditPage
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Controls.Add(this.tableLayoutPanelMain);
|
||||
this.Name = "PoolGpuEditPage";
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
this.tableLayoutPanelMain.ResumeLayout(false);
|
||||
this.tableLayoutPanelMain.PerformLayout();
|
||||
this.groupBoxPlacementPolicy.ResumeLayout(false);
|
||||
this.groupBoxPlacementPolicy.PerformLayout();
|
||||
this.groupBoxIntedratedGpu.ResumeLayout(false);
|
||||
this.groupBoxIntedratedGpu.PerformLayout();
|
||||
this.tableLayoutPanel2.ResumeLayout(false);
|
||||
this.tableLayoutPanel2.PerformLayout();
|
||||
this.optionsLayoutPanel.ResumeLayout(false);
|
||||
this.optionsLayoutPanel.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label labelRubric;
|
||||
private XenAdmin.Controls.Common.AutoHeightLabel labelRubric;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.RadioButton radioButtonDepth;
|
||||
private System.Windows.Forms.RadioButton radioButtonBreadth;
|
||||
private System.Windows.Forms.RadioButton radioButtonMixture;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanelMain;
|
||||
private System.Windows.Forms.GroupBox groupBoxPlacementPolicy;
|
||||
private System.Windows.Forms.GroupBox groupBoxIntedratedGpu;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
|
||||
private System.Windows.Forms.RadioButton radioButtonDisable;
|
||||
private Controls.Common.AutoHeightLabel autoHeightLabel3;
|
||||
private Controls.Common.AutoHeightLabel labelCurrentState;
|
||||
private Controls.Common.AutoHeightLabel autoHeightLabel1;
|
||||
private System.Windows.Forms.RadioButton radioButtonEnable;
|
||||
private System.Windows.Forms.FlowLayoutPanel optionsLayoutPanel;
|
||||
}
|
||||
}
|
||||
|
@ -29,6 +29,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
@ -45,6 +46,13 @@ namespace XenAdmin.SettingsPanels
|
||||
private GPU_group[] gpu_groups;
|
||||
private allocation_algorithm currentAllocationAlgorithm;
|
||||
|
||||
private bool showIntegratedGpu;
|
||||
private bool showPlacementPolicy;
|
||||
|
||||
private Host host;
|
||||
private bool integratedGpuCurrentlyEnabled;
|
||||
private bool integratedGpuCurrentlyEnabledOnNextReboot;
|
||||
|
||||
public PoolGpuEditPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
@ -60,6 +68,14 @@ namespace XenAdmin.SettingsPanels
|
||||
}
|
||||
}
|
||||
|
||||
public bool EnableIntegratedGpuOnNextReboot
|
||||
{
|
||||
get
|
||||
{
|
||||
return radioButtonEnable.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
#region Implementation of VerticalTab
|
||||
|
||||
public override string Text
|
||||
@ -69,10 +85,26 @@ namespace XenAdmin.SettingsPanels
|
||||
|
||||
public string SubText
|
||||
{
|
||||
get
|
||||
{
|
||||
return radioButtonDepth.Checked ? Messages.GPU_PLACEMENT_POLICY_MAX_DENSITY :
|
||||
radioButtonBreadth.Checked ? Messages.GPU_PLACEMENT_POLICY_MAX_PERFORMANCE : Messages.GPU_PLACEMENT_POLICY_MIXED; }
|
||||
get
|
||||
{
|
||||
var text = "";
|
||||
if (showPlacementPolicy)
|
||||
{
|
||||
text = radioButtonDepth.Checked
|
||||
? Messages.GPU_PLACEMENT_POLICY_MAX_DENSITY
|
||||
: radioButtonBreadth.Checked
|
||||
? Messages.GPU_PLACEMENT_POLICY_MAX_PERFORMANCE
|
||||
: Messages.GPU_PLACEMENT_POLICY_MIXED;
|
||||
}
|
||||
if (showIntegratedGpu)
|
||||
{
|
||||
var integratedGpuText = integratedGpuCurrentlyEnabled
|
||||
? Messages.INTEGRATED_GPU_PASSTHROUGH_ENABLED_SHORT
|
||||
: Messages.INTEGRATED_GPU_PASSTHROUGH_DISABLED_SHORT;
|
||||
text = showPlacementPolicy ? string.Join("; ", text, integratedGpuText) : integratedGpuText;
|
||||
}
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
public Image Image
|
||||
@ -86,7 +118,18 @@ namespace XenAdmin.SettingsPanels
|
||||
|
||||
public AsyncAction SaveSettings()
|
||||
{
|
||||
return new SetGpuPlacementPolicyAction(pool, AllocationAlgorithm);
|
||||
List<AsyncAction> actions = new List<AsyncAction>();
|
||||
|
||||
if (HasPlacementPolicyChanged)
|
||||
actions.Add(new SetGpuPlacementPolicyAction(pool, AllocationAlgorithm));
|
||||
|
||||
if (HasIntegratedGpuChanged && host != null)
|
||||
actions.Add(new UpdateIntegratedGpuPassthroughAction(host, EnableIntegratedGpuOnNextReboot, true));
|
||||
|
||||
if (actions.Count == 0)
|
||||
return null;
|
||||
|
||||
return actions.Count == 1 ? actions[0] : new MultipleAction(pool.Connection, "", "", "", actions, true);
|
||||
}
|
||||
|
||||
public void SetXenObjects(IXenObject orig, IXenObject clone)
|
||||
@ -95,6 +138,13 @@ namespace XenAdmin.SettingsPanels
|
||||
|
||||
pool = Helpers.GetPoolOfOne(clone.Connection);
|
||||
gpu_groups = pool.Connection.Cache.GPU_groups;
|
||||
|
||||
bool isPoolOrStandaloneHost = clone is Pool || Helpers.GetPool(clone.Connection) == null;
|
||||
showPlacementPolicy = isPoolOrStandaloneHost && Helpers.VGpuCapability(clone.Connection);
|
||||
|
||||
host = clone as Host; // can be null, if we are on a Pool
|
||||
showIntegratedGpu = host != null && host.CanEnableDisableIntegratedGpu;
|
||||
|
||||
PopulatePage();
|
||||
}
|
||||
|
||||
@ -114,9 +164,19 @@ namespace XenAdmin.SettingsPanels
|
||||
}
|
||||
|
||||
public bool HasChanged
|
||||
{
|
||||
get { return HasPlacementPolicyChanged || HasIntegratedGpuChanged; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private bool HasPlacementPolicyChanged
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!showPlacementPolicy)
|
||||
return false;
|
||||
|
||||
var allocationAlgorithm = radioButtonDepth.Checked ?
|
||||
allocation_algorithm.depth_first :
|
||||
radioButtonBreadth.Checked ? allocation_algorithm.breadth_first : allocation_algorithm.unknown;
|
||||
@ -125,9 +185,29 @@ namespace XenAdmin.SettingsPanels
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
private bool HasIntegratedGpuChanged
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!showIntegratedGpu)
|
||||
return false;
|
||||
|
||||
return EnableIntegratedGpuOnNextReboot != integratedGpuCurrentlyEnabledOnNextReboot;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void PopulatePage()
|
||||
{
|
||||
groupBoxPlacementPolicy.Visible = showPlacementPolicy;
|
||||
groupBoxIntedratedGpu.Visible = showIntegratedGpu;
|
||||
if (showPlacementPolicy)
|
||||
PopulatePlacementPolicyPanel();
|
||||
if (showIntegratedGpu)
|
||||
PopulateIntegratedGpuPanel();
|
||||
}
|
||||
|
||||
private void PopulatePlacementPolicyPanel()
|
||||
{
|
||||
currentAllocationAlgorithm = allocation_algorithm.unknown;
|
||||
|
||||
@ -149,5 +229,30 @@ namespace XenAdmin.SettingsPanels
|
||||
radioButtonMixture.Visible = currentAllocationAlgorithm == allocation_algorithm.unknown;
|
||||
radioButtonMixture.Enabled = currentAllocationAlgorithm == allocation_algorithm.unknown;
|
||||
}
|
||||
|
||||
private void PopulateIntegratedGpuPanel()
|
||||
{
|
||||
if (host == null)
|
||||
return;
|
||||
var currentHostDisplay = host.display;
|
||||
var systemDisplayDeviceGpu = host.SystemDisplayDevice;
|
||||
var currentPgpuDom0Access = systemDisplayDeviceGpu != null ? systemDisplayDeviceGpu.dom0_access : pgpu_dom0_access.unknown;
|
||||
|
||||
bool hostCurrentlyEnabled = currentHostDisplay == host_display.enabled || currentHostDisplay == host_display.disable_on_reboot;
|
||||
bool hostEnabledOnNextReboot = currentHostDisplay == host_display.enabled || currentHostDisplay == host_display.enable_on_reboot;
|
||||
|
||||
bool gpuCurrentlyEnabled = currentPgpuDom0Access == pgpu_dom0_access.enabled || currentPgpuDom0Access == pgpu_dom0_access.disable_on_reboot;
|
||||
bool gpuEnabledOnNextReboot = currentPgpuDom0Access == pgpu_dom0_access.enabled || currentPgpuDom0Access == pgpu_dom0_access.enable_on_reboot;
|
||||
|
||||
integratedGpuCurrentlyEnabled = hostCurrentlyEnabled && gpuCurrentlyEnabled;
|
||||
integratedGpuCurrentlyEnabledOnNextReboot = hostEnabledOnNextReboot && gpuEnabledOnNextReboot;
|
||||
|
||||
labelCurrentState.Text = (integratedGpuCurrentlyEnabled)
|
||||
? Messages.INTEGRATED_GPU_PASSTHROUGH_ENABLED
|
||||
: Messages.INTEGRATED_GPU_PASSTHROUGH_DISABLED;
|
||||
|
||||
radioButtonEnable.Checked = integratedGpuCurrentlyEnabledOnNextReboot;
|
||||
radioButtonDisable.Checked = !integratedGpuCurrentlyEnabledOnNextReboot;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -112,23 +112,23 @@
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="labelRubric.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="labelRubric.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="labelRubric.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="labelRubric.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 0</value>
|
||||
</data>
|
||||
@ -136,7 +136,7 @@
|
||||
<value>0, 3, 0, 10</value>
|
||||
</data>
|
||||
<data name="labelRubric.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>412, 39</value>
|
||||
<value>528, 39</value>
|
||||
</data>
|
||||
<data name="labelRubric.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
@ -148,13 +148,19 @@
|
||||
<value>labelRubric</value>
|
||||
</data>
|
||||
<data name=">>labelRubric.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>labelRubric.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>labelRubric.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
@ -172,7 +178,7 @@
|
||||
<value>3, 88</value>
|
||||
</data>
|
||||
<data name="radioButtonMixture.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>412, 17</value>
|
||||
<value>528, 17</value>
|
||||
</data>
|
||||
<data name="radioButtonMixture.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
@ -184,13 +190,13 @@
|
||||
<value>radioButtonMixture</value>
|
||||
</data>
|
||||
<data name=">>radioButtonMixture.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>radioButtonMixture.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>radioButtonMixture.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="radioButtonDepth.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
@ -202,7 +208,7 @@
|
||||
<value>3, 42</value>
|
||||
</data>
|
||||
<data name="radioButtonDepth.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>412, 17</value>
|
||||
<value>528, 17</value>
|
||||
</data>
|
||||
<data name="radioButtonDepth.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
@ -214,7 +220,7 @@
|
||||
<value>radioButtonDepth</value>
|
||||
</data>
|
||||
<data name=">>radioButtonDepth.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>radioButtonDepth.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
@ -232,7 +238,7 @@
|
||||
<value>3, 65</value>
|
||||
</data>
|
||||
<data name="radioButtonBreadth.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>412, 17</value>
|
||||
<value>528, 17</value>
|
||||
</data>
|
||||
<data name="radioButtonBreadth.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
@ -244,7 +250,7 @@
|
||||
<value>radioButtonBreadth</value>
|
||||
</data>
|
||||
<data name=">>radioButtonBreadth.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>radioButtonBreadth.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel1</value>
|
||||
@ -256,13 +262,16 @@
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
<value>3, 16</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>6, 3, 6, 3</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>418, 289</value>
|
||||
<value>534, 108</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
@ -271,30 +280,381 @@
|
||||
<value>tableLayoutPanel1</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
<value>groupBoxPlacementPolicy</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
|
||||
<value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="radioButtonMixture" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelRubric" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="radioButtonDepth" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="radioButtonBreadth" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,50" /></TableLayoutSettings></value>
|
||||
<value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelRubric" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="radioButtonMixture" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="radioButtonDepth" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="radioButtonBreadth" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,50" /></TableLayoutSettings></value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<data name="tableLayoutPanelMain.ColumnCount" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="groupBoxPlacementPolicy.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="groupBoxPlacementPolicy.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="groupBoxPlacementPolicy.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="groupBoxPlacementPolicy.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 3</value>
|
||||
</data>
|
||||
<data name="groupBoxPlacementPolicy.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>3, 3, 3, 6</value>
|
||||
</data>
|
||||
<data name="groupBoxPlacementPolicy.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>540, 130</value>
|
||||
</data>
|
||||
<data name="groupBoxPlacementPolicy.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="groupBoxPlacementPolicy.Text" xml:space="preserve">
|
||||
<value>Placement policy</value>
|
||||
</data>
|
||||
<data name=">>groupBoxPlacementPolicy.Name" xml:space="preserve">
|
||||
<value>groupBoxPlacementPolicy</value>
|
||||
</data>
|
||||
<data name=">>groupBoxPlacementPolicy.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>groupBoxPlacementPolicy.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanelMain</value>
|
||||
</data>
|
||||
<data name=">>groupBoxPlacementPolicy.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="groupBoxIntedratedGpu.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="groupBoxIntedratedGpu.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="optionsLayoutPanel.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="optionsLayoutPanel.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
|
||||
<value>GrowAndShrink</value>
|
||||
</data>
|
||||
<data name="radioButtonEnable.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="radioButtonEnable.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="radioButtonEnable.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 3</value>
|
||||
</data>
|
||||
<data name="radioButtonEnable.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>226, 19</value>
|
||||
</data>
|
||||
<data name="radioButtonEnable.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="radioButtonEnable.Text" xml:space="preserve">
|
||||
<value>This server will use the integrated GPU</value>
|
||||
</data>
|
||||
<data name=">>radioButtonEnable.Name" xml:space="preserve">
|
||||
<value>radioButtonEnable</value>
|
||||
</data>
|
||||
<data name=">>radioButtonEnable.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>radioButtonEnable.Parent" xml:space="preserve">
|
||||
<value>optionsLayoutPanel</value>
|
||||
</data>
|
||||
<data name=">>radioButtonEnable.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="radioButtonDisable.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="radioButtonDisable.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="radioButtonDisable.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 28</value>
|
||||
</data>
|
||||
<data name="radioButtonDisable.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>247, 19</value>
|
||||
</data>
|
||||
<data name="radioButtonDisable.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="radioButtonDisable.Text" xml:space="preserve">
|
||||
<value>This server will not use the integrated GPU</value>
|
||||
</data>
|
||||
<data name=">>radioButtonDisable.Name" xml:space="preserve">
|
||||
<value>radioButtonDisable</value>
|
||||
</data>
|
||||
<data name=">>radioButtonDisable.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>radioButtonDisable.Parent" xml:space="preserve">
|
||||
<value>optionsLayoutPanel</value>
|
||||
</data>
|
||||
<data name=">>radioButtonDisable.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="optionsLayoutPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="optionsLayoutPanel.FlowDirection" type="System.Windows.Forms.FlowDirection, System.Windows.Forms">
|
||||
<value>TopDown</value>
|
||||
</data>
|
||||
<data name="optionsLayoutPanel.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>Segoe UI, 9pt</value>
|
||||
</data>
|
||||
<data name="optionsLayoutPanel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 73</value>
|
||||
</data>
|
||||
<data name="optionsLayoutPanel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>528, 50</value>
|
||||
</data>
|
||||
<data name="optionsLayoutPanel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name=">>optionsLayoutPanel.Name" xml:space="preserve">
|
||||
<value>optionsLayoutPanel</value>
|
||||
</data>
|
||||
<data name=">>optionsLayoutPanel.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>optionsLayoutPanel.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>optionsLayoutPanel.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel3.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 51</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel3.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>0, 3, 0, 3</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>528, 19</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel3.Text" xml:space="preserve">
|
||||
<value>After next reboot:</value>
|
||||
</data>
|
||||
<data name=">>autoHeightLabel3.Name" xml:space="preserve">
|
||||
<value>autoHeightLabel3</value>
|
||||
</data>
|
||||
<data name=">>autoHeightLabel3.Type" xml:space="preserve">
|
||||
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>autoHeightLabel3.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>autoHeightLabel3.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="labelCurrentState.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="labelCurrentState.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="labelCurrentState.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="labelCurrentState.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 32</value>
|
||||
</data>
|
||||
<data name="labelCurrentState.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>0, 3, 0, 3</value>
|
||||
</data>
|
||||
<data name="labelCurrentState.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>528, 19</value>
|
||||
</data>
|
||||
<data name="labelCurrentState.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="labelCurrentState.Text" xml:space="preserve">
|
||||
<value>This server is currently using the integrated GPU.</value>
|
||||
</data>
|
||||
<data name=">>labelCurrentState.Name" xml:space="preserve">
|
||||
<value>labelCurrentState</value>
|
||||
</data>
|
||||
<data name=">>labelCurrentState.Type" xml:space="preserve">
|
||||
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>labelCurrentState.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>labelCurrentState.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 0</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>0, 3, 0, 3</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>528, 32</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="autoHeightLabel1.Text" xml:space="preserve">
|
||||
<value>Choose whether to enable this server to use the integrated GPU. When a server is using the integrated GPU, that GPU cannot be passed through to a VM.</value>
|
||||
</data>
|
||||
<data name=">>autoHeightLabel1.Name" xml:space="preserve">
|
||||
<value>autoHeightLabel1</value>
|
||||
</data>
|
||||
<data name=">>autoHeightLabel1.Type" xml:space="preserve">
|
||||
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>autoHeightLabel1.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>autoHeightLabel1.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 16</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>6, 3, 6, 3</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>534, 126</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel2.Name" xml:space="preserve">
|
||||
<value>tableLayoutPanel2</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel2.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel2.Parent" xml:space="preserve">
|
||||
<value>groupBoxIntedratedGpu</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel2.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
|
||||
<value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="optionsLayoutPanel" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="autoHeightLabel3" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelCurrentState" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="autoHeightLabel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20,Absolute,20" /></TableLayoutSettings></value>
|
||||
</data>
|
||||
<data name="groupBoxIntedratedGpu.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="groupBoxIntedratedGpu.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 139</value>
|
||||
</data>
|
||||
<data name="groupBoxIntedratedGpu.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>3, 3, 3, 6</value>
|
||||
</data>
|
||||
<data name="groupBoxIntedratedGpu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>540, 148</value>
|
||||
</data>
|
||||
<data name="groupBoxIntedratedGpu.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="groupBoxIntedratedGpu.Text" xml:space="preserve">
|
||||
<value>Integrated GPU passthrough</value>
|
||||
</data>
|
||||
<data name=">>groupBoxIntedratedGpu.Name" xml:space="preserve">
|
||||
<value>groupBoxIntedratedGpu</value>
|
||||
</data>
|
||||
<data name=">>groupBoxIntedratedGpu.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>groupBoxIntedratedGpu.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanelMain</value>
|
||||
</data>
|
||||
<data name=">>groupBoxIntedratedGpu.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanelMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanelMain.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanelMain.RowCount" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanelMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>546, 382</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanelMain.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanelMain.Name" xml:space="preserve">
|
||||
<value>tableLayoutPanelMain</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanelMain.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanelMain.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanelMain.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tableLayoutPanelMain.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
|
||||
<value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="groupBoxPlacementPolicy" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="groupBoxIntedratedGpu" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings></value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>96, 96</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>418, 289</value>
|
||||
<value>546, 382</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>PoolGpuEditPage</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
@ -0,0 +1,71 @@
|
||||
/* 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 XenAPI;
|
||||
|
||||
|
||||
namespace XenAdmin.Actions
|
||||
{
|
||||
public class UpdateIntegratedGpuPassthroughAction : PureAsyncAction
|
||||
{
|
||||
private bool enable;
|
||||
|
||||
public UpdateIntegratedGpuPassthroughAction(Host host, bool enableOnNextReboot, bool suppressHistory)
|
||||
: base(host.Connection, string.Format(Messages.ACTION_UPDATE_INTEGRATED_GPU_PASSTHROUGH_TITLE, host.Name), null, suppressHistory)
|
||||
{
|
||||
Host = host;
|
||||
enable = enableOnNextReboot;
|
||||
}
|
||||
|
||||
protected override void Run()
|
||||
{
|
||||
this.Description = Messages.UPDATING_PROPERTIES;
|
||||
|
||||
RelatedTask = enable
|
||||
? Host.async_enable_display(Session, Host.opaque_ref)
|
||||
: Host.async_disable_display(Session, Host.opaque_ref);
|
||||
|
||||
PollToCompletion(0, 50);
|
||||
|
||||
var pGpu = Host.SystemDisplayDevice;
|
||||
if (pGpu != null)
|
||||
{
|
||||
RelatedTask = enable
|
||||
? PGPU.async_enable_dom0_access(Session, pGpu.opaque_ref)
|
||||
: PGPU.async_disable_dom0_access(Session, pGpu.opaque_ref);
|
||||
PollToCompletion(50, 100);
|
||||
}
|
||||
PercentComplete = 100;
|
||||
Description = Messages.UPDATED_PROPERTIES;
|
||||
}
|
||||
}
|
||||
}
|
45
XenModel/Messages.Designer.cs
generated
45
XenModel/Messages.Designer.cs
generated
@ -2310,6 +2310,15 @@ namespace XenAdmin {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Updating integrated GPU passthrough on '{0}'.
|
||||
/// </summary>
|
||||
public static string ACTION_UPDATE_INTEGRATED_GPU_PASSTHROUGH_TITLE {
|
||||
get {
|
||||
return ResourceManager.GetString("ACTION_UPDATE_INTEGRATED_GPU_PASSTHROUGH_TITLE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Virtual disk created.
|
||||
/// </summary>
|
||||
@ -17786,6 +17795,42 @@ namespace XenAdmin {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to This server is currently not using the integrated GPU..
|
||||
/// </summary>
|
||||
public static string INTEGRATED_GPU_PASSTHROUGH_DISABLED {
|
||||
get {
|
||||
return ResourceManager.GetString("INTEGRATED_GPU_PASSTHROUGH_DISABLED", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Not using the integrated GPU.
|
||||
/// </summary>
|
||||
public static string INTEGRATED_GPU_PASSTHROUGH_DISABLED_SHORT {
|
||||
get {
|
||||
return ResourceManager.GetString("INTEGRATED_GPU_PASSTHROUGH_DISABLED_SHORT", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to This server is currently using the integrated GPU..
|
||||
/// </summary>
|
||||
public static string INTEGRATED_GPU_PASSTHROUGH_ENABLED {
|
||||
get {
|
||||
return ResourceManager.GetString("INTEGRATED_GPU_PASSTHROUGH_ENABLED", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Using the integrated GPU.
|
||||
/// </summary>
|
||||
public static string INTEGRATED_GPU_PASSTHROUGH_ENABLED_SHORT {
|
||||
get {
|
||||
return ResourceManager.GetString("INTEGRATED_GPU_PASSTHROUGH_ENABLED_SHORT", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Interfaces: {0}.
|
||||
/// </summary>
|
||||
|
@ -867,6 +867,9 @@
|
||||
<data name="ACTION_TOOLSTACK_RESTART_ON" xml:space="preserve">
|
||||
<value>Restart toolstack on '{0}'</value>
|
||||
</data>
|
||||
<data name="ACTION_UPDATE_INTEGRATED_GPU_PASSTHROUGH_TITLE" xml:space="preserve">
|
||||
<value>Updating integrated GPU passthrough on '{0}'</value>
|
||||
</data>
|
||||
<data name="ACTION_VDI_CREATED" xml:space="preserve">
|
||||
<value>Virtual disk created</value>
|
||||
</data>
|
||||
@ -6194,6 +6197,18 @@ Click Configure HA to alter the settings displayed below.</value>
|
||||
<data name="INSTANT_VM_CREATE_TITLE" xml:space="preserve">
|
||||
<value>Instant VM create</value>
|
||||
</data>
|
||||
<data name="INTEGRATED_GPU_PASSTHROUGH_DISABLED" xml:space="preserve">
|
||||
<value>This server is currently not using the integrated GPU.</value>
|
||||
</data>
|
||||
<data name="INTEGRATED_GPU_PASSTHROUGH_DISABLED_SHORT" xml:space="preserve">
|
||||
<value>Not using the integrated GPU</value>
|
||||
</data>
|
||||
<data name="INTEGRATED_GPU_PASSTHROUGH_ENABLED" xml:space="preserve">
|
||||
<value>This server is currently using the integrated GPU.</value>
|
||||
</data>
|
||||
<data name="INTEGRATED_GPU_PASSTHROUGH_ENABLED_SHORT" xml:space="preserve">
|
||||
<value>Using the integrated GPU</value>
|
||||
</data>
|
||||
<data name="INTERFACES_COUNT" xml:space="preserve">
|
||||
<value>Interfaces: {0}</value>
|
||||
</data>
|
||||
|
@ -32,6 +32,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using Citrix.XenCenter;
|
||||
using XenAdmin;
|
||||
@ -418,6 +419,16 @@ namespace XenAPI
|
||||
return h._RestrictVgpu;
|
||||
}
|
||||
|
||||
private bool _RestrictIntegratedGpuPassthrough
|
||||
{
|
||||
get { return BoolKeyPreferTrue(license_params, "restrict_integrated_gpu_passthrough"); }
|
||||
}
|
||||
|
||||
public static bool RestrictIntegratedGpuPassthrough(Host h)
|
||||
{
|
||||
return h._RestrictIntegratedGpuPassthrough;
|
||||
}
|
||||
|
||||
private bool _RestrictExportResourceData
|
||||
{
|
||||
get
|
||||
@ -1538,6 +1549,31 @@ namespace XenAPI
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// The PGPU that is the system display device or null
|
||||
/// </summary>
|
||||
public PGPU SystemDisplayDevice
|
||||
{
|
||||
get
|
||||
{
|
||||
var pGpus = Connection.ResolveAll(PGPUs);
|
||||
return pGpus.FirstOrDefault(pGpu => pGpu.is_system_display_device);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Is the host allowed to enable/disable integrated GPU passthrough or is the feature unavailable/restricted?
|
||||
/// </summary>
|
||||
public bool CanEnableDisableIntegratedGpu
|
||||
{
|
||||
get
|
||||
{
|
||||
return Helpers.CreamOrGreater(Connection)
|
||||
&& Helpers.GpuCapability(Connection)
|
||||
&& !Helpers.FeatureForbidden(Connection, RestrictIntegratedGpuPassthrough);
|
||||
}
|
||||
}
|
||||
|
||||
#region IEquatable<Host> Members
|
||||
|
||||
/// <summary>
|
||||
|
@ -95,7 +95,8 @@ namespace XenAPI
|
||||
Dictionary<string, string> chipset_info,
|
||||
List<XenRef<PCI>> PCIs,
|
||||
List<XenRef<PGPU>> PGPUs,
|
||||
Dictionary<string, string> guest_VCPUs_params)
|
||||
Dictionary<string, string> guest_VCPUs_params,
|
||||
host_display display)
|
||||
{
|
||||
this.uuid = uuid;
|
||||
this.name_label = name_label;
|
||||
@ -145,6 +146,7 @@ namespace XenAPI
|
||||
this.PCIs = PCIs;
|
||||
this.PGPUs = PGPUs;
|
||||
this.guest_VCPUs_params = guest_VCPUs_params;
|
||||
this.display = display;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -206,6 +208,7 @@ namespace XenAPI
|
||||
PCIs = update.PCIs;
|
||||
PGPUs = update.PGPUs;
|
||||
guest_VCPUs_params = update.guest_VCPUs_params;
|
||||
display = update.display;
|
||||
}
|
||||
|
||||
internal void UpdateFromProxy(Proxy_Host proxy)
|
||||
@ -258,6 +261,7 @@ namespace XenAPI
|
||||
PCIs = proxy.PCIs == null ? null : XenRef<PCI>.Create(proxy.PCIs);
|
||||
PGPUs = proxy.PGPUs == null ? null : XenRef<PGPU>.Create(proxy.PGPUs);
|
||||
guest_VCPUs_params = proxy.guest_VCPUs_params == null ? null : Maps.convert_from_proxy_string_string(proxy.guest_VCPUs_params);
|
||||
display = proxy.display == null ? (host_display) 0 : (host_display)Helper.EnumParseDefault(typeof(host_display), (string)proxy.display);
|
||||
}
|
||||
|
||||
public Proxy_Host ToProxy()
|
||||
@ -311,6 +315,7 @@ namespace XenAPI
|
||||
result_.PCIs = (PCIs != null) ? Helper.RefListToStringArray(PCIs) : new string[] {};
|
||||
result_.PGPUs = (PGPUs != null) ? Helper.RefListToStringArray(PGPUs) : new string[] {};
|
||||
result_.guest_VCPUs_params = Maps.convert_to_proxy_string_string(guest_VCPUs_params);
|
||||
result_.display = host_display_helper.ToString(display);
|
||||
return result_;
|
||||
}
|
||||
|
||||
@ -368,6 +373,7 @@ namespace XenAPI
|
||||
PCIs = Marshalling.ParseSetRef<PCI>(table, "PCIs");
|
||||
PGPUs = Marshalling.ParseSetRef<PGPU>(table, "PGPUs");
|
||||
guest_VCPUs_params = Maps.convert_from_proxy_string_string(Marshalling.ParseHashTable(table, "guest_VCPUs_params"));
|
||||
display = (host_display)Helper.EnumParseDefault(typeof(host_display), Marshalling.ParseString(table, "display"));
|
||||
}
|
||||
|
||||
public bool DeepEquals(Host other, bool ignoreCurrentOperations)
|
||||
@ -426,7 +432,8 @@ namespace XenAPI
|
||||
Helper.AreEqual2(this._chipset_info, other._chipset_info) &&
|
||||
Helper.AreEqual2(this._PCIs, other._PCIs) &&
|
||||
Helper.AreEqual2(this._PGPUs, other._PGPUs) &&
|
||||
Helper.AreEqual2(this._guest_VCPUs_params, other._guest_VCPUs_params);
|
||||
Helper.AreEqual2(this._guest_VCPUs_params, other._guest_VCPUs_params) &&
|
||||
Helper.AreEqual2(this._display, other._display);
|
||||
}
|
||||
|
||||
public override string SaveChanges(Session session, string opaqueRef, Host server)
|
||||
@ -482,6 +489,10 @@ namespace XenAPI
|
||||
{
|
||||
Host.set_guest_VCPUs_params(session, opaqueRef, _guest_VCPUs_params);
|
||||
}
|
||||
if (!Helper.AreEqual2(_display, server._display))
|
||||
{
|
||||
Host.set_display(session, opaqueRef, _display);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
@ -1047,6 +1058,17 @@ namespace XenAPI
|
||||
return Maps.convert_from_proxy_string_string(session.proxy.host_get_guest_vcpus_params(session.uuid, (_host != null) ? _host : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the display field of the given host.
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
/// <param name="session">The session</param>
|
||||
/// <param name="_host">The opaque_ref of the given host</param>
|
||||
public static host_display get_display(Session session, string _host)
|
||||
{
|
||||
return (host_display)Helper.EnumParseDefault(typeof(host_display), (string)session.proxy.host_get_display(session.uuid, (_host != null) ? _host : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the name/label field of the given host.
|
||||
/// First published in XenServer 4.0.
|
||||
@ -1303,6 +1325,18 @@ namespace XenAPI
|
||||
session.proxy.host_remove_from_guest_vcpus_params(session.uuid, (_host != null) ? _host : "", (_key != null) ? _key : "").parse();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the display field of the given host.
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
/// <param name="session">The session</param>
|
||||
/// <param name="_host">The opaque_ref of the given host</param>
|
||||
/// <param name="_display">New value to set</param>
|
||||
public static void set_display(Session session, string _host, host_display _display)
|
||||
{
|
||||
session.proxy.host_set_display(session.uuid, (_host != null) ? _host : "", host_display_helper.ToString(_display)).parse();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Puts the host into a state in which no new VMs can be started. Currently active VMs on the host continue to execute.
|
||||
/// First published in XenServer 4.0.
|
||||
@ -2280,6 +2314,50 @@ namespace XenAPI
|
||||
return XenRef<Task>.Create(session.proxy.async_host_declare_dead(session.uuid, (_host != null) ? _host : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enable console output to the physical display device next time this host boots
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
/// <param name="session">The session</param>
|
||||
/// <param name="_host">The opaque_ref of the given host</param>
|
||||
public static host_display enable_display(Session session, string _host)
|
||||
{
|
||||
return (host_display)Helper.EnumParseDefault(typeof(host_display), (string)session.proxy.host_enable_display(session.uuid, (_host != null) ? _host : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enable console output to the physical display device next time this host boots
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
/// <param name="session">The session</param>
|
||||
/// <param name="_host">The opaque_ref of the given host</param>
|
||||
public static XenRef<Task> async_enable_display(Session session, string _host)
|
||||
{
|
||||
return XenRef<Task>.Create(session.proxy.async_host_enable_display(session.uuid, (_host != null) ? _host : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Disable console output to the physical display device next time this host boots
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
/// <param name="session">The session</param>
|
||||
/// <param name="_host">The opaque_ref of the given host</param>
|
||||
public static host_display disable_display(Session session, string _host)
|
||||
{
|
||||
return (host_display)Helper.EnumParseDefault(typeof(host_display), (string)session.proxy.host_disable_display(session.uuid, (_host != null) ? _host : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Disable console output to the physical display device next time this host boots
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
/// <param name="session">The session</param>
|
||||
/// <param name="_host">The opaque_ref of the given host</param>
|
||||
public static XenRef<Task> async_disable_display(Session session, string _host)
|
||||
{
|
||||
return XenRef<Task>.Create(session.proxy.async_host_disable_display(session.uuid, (_host != null) ? _host : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return a list of all the hosts known to the system.
|
||||
/// First published in XenServer 4.0.
|
||||
@ -3181,5 +3259,24 @@ namespace XenAPI
|
||||
}
|
||||
}
|
||||
private Dictionary<string, string> _guest_VCPUs_params;
|
||||
|
||||
/// <summary>
|
||||
/// indicates whether the host is configured to output its console to a physical display device
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
public virtual host_display display
|
||||
{
|
||||
get { return _display; }
|
||||
set
|
||||
{
|
||||
if (!Helper.AreEqual(value, _display))
|
||||
{
|
||||
_display = value;
|
||||
Changed = true;
|
||||
NotifyPropertyChanged("display");
|
||||
}
|
||||
}
|
||||
}
|
||||
private host_display _display;
|
||||
}
|
||||
}
|
||||
|
@ -56,7 +56,9 @@ namespace XenAPI
|
||||
List<XenRef<VGPU_type>> supported_VGPU_types,
|
||||
List<XenRef<VGPU_type>> enabled_VGPU_types,
|
||||
List<XenRef<VGPU>> resident_VGPUs,
|
||||
Dictionary<XenRef<VGPU_type>, long> supported_VGPU_max_capacities)
|
||||
Dictionary<XenRef<VGPU_type>, long> supported_VGPU_max_capacities,
|
||||
pgpu_dom0_access dom0_access,
|
||||
bool is_system_display_device)
|
||||
{
|
||||
this.uuid = uuid;
|
||||
this.PCI = PCI;
|
||||
@ -67,6 +69,8 @@ namespace XenAPI
|
||||
this.enabled_VGPU_types = enabled_VGPU_types;
|
||||
this.resident_VGPUs = resident_VGPUs;
|
||||
this.supported_VGPU_max_capacities = supported_VGPU_max_capacities;
|
||||
this.dom0_access = dom0_access;
|
||||
this.is_system_display_device = is_system_display_device;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -89,6 +93,8 @@ namespace XenAPI
|
||||
enabled_VGPU_types = update.enabled_VGPU_types;
|
||||
resident_VGPUs = update.resident_VGPUs;
|
||||
supported_VGPU_max_capacities = update.supported_VGPU_max_capacities;
|
||||
dom0_access = update.dom0_access;
|
||||
is_system_display_device = update.is_system_display_device;
|
||||
}
|
||||
|
||||
internal void UpdateFromProxy(Proxy_PGPU proxy)
|
||||
@ -102,6 +108,8 @@ namespace XenAPI
|
||||
enabled_VGPU_types = proxy.enabled_VGPU_types == null ? null : XenRef<VGPU_type>.Create(proxy.enabled_VGPU_types);
|
||||
resident_VGPUs = proxy.resident_VGPUs == null ? null : XenRef<VGPU>.Create(proxy.resident_VGPUs);
|
||||
supported_VGPU_max_capacities = proxy.supported_VGPU_max_capacities == null ? null : Maps.convert_from_proxy_XenRefVGPU_type_long(proxy.supported_VGPU_max_capacities);
|
||||
dom0_access = proxy.dom0_access == null ? (pgpu_dom0_access) 0 : (pgpu_dom0_access)Helper.EnumParseDefault(typeof(pgpu_dom0_access), (string)proxy.dom0_access);
|
||||
is_system_display_device = (bool)proxy.is_system_display_device;
|
||||
}
|
||||
|
||||
public Proxy_PGPU ToProxy()
|
||||
@ -116,6 +124,8 @@ namespace XenAPI
|
||||
result_.enabled_VGPU_types = (enabled_VGPU_types != null) ? Helper.RefListToStringArray(enabled_VGPU_types) : new string[] {};
|
||||
result_.resident_VGPUs = (resident_VGPUs != null) ? Helper.RefListToStringArray(resident_VGPUs) : new string[] {};
|
||||
result_.supported_VGPU_max_capacities = Maps.convert_to_proxy_XenRefVGPU_type_long(supported_VGPU_max_capacities);
|
||||
result_.dom0_access = pgpu_dom0_access_helper.ToString(dom0_access);
|
||||
result_.is_system_display_device = is_system_display_device;
|
||||
return result_;
|
||||
}
|
||||
|
||||
@ -134,6 +144,8 @@ namespace XenAPI
|
||||
enabled_VGPU_types = Marshalling.ParseSetRef<VGPU_type>(table, "enabled_VGPU_types");
|
||||
resident_VGPUs = Marshalling.ParseSetRef<VGPU>(table, "resident_VGPUs");
|
||||
supported_VGPU_max_capacities = Maps.convert_from_proxy_XenRefVGPU_type_long(Marshalling.ParseHashTable(table, "supported_VGPU_max_capacities"));
|
||||
dom0_access = (pgpu_dom0_access)Helper.EnumParseDefault(typeof(pgpu_dom0_access), Marshalling.ParseString(table, "dom0_access"));
|
||||
is_system_display_device = Marshalling.ParseBool(table, "is_system_display_device");
|
||||
}
|
||||
|
||||
public bool DeepEquals(PGPU other)
|
||||
@ -151,7 +163,9 @@ namespace XenAPI
|
||||
Helper.AreEqual2(this._supported_VGPU_types, other._supported_VGPU_types) &&
|
||||
Helper.AreEqual2(this._enabled_VGPU_types, other._enabled_VGPU_types) &&
|
||||
Helper.AreEqual2(this._resident_VGPUs, other._resident_VGPUs) &&
|
||||
Helper.AreEqual2(this._supported_VGPU_max_capacities, other._supported_VGPU_max_capacities);
|
||||
Helper.AreEqual2(this._supported_VGPU_max_capacities, other._supported_VGPU_max_capacities) &&
|
||||
Helper.AreEqual2(this._dom0_access, other._dom0_access) &&
|
||||
Helper.AreEqual2(this._is_system_display_device, other._is_system_display_device);
|
||||
}
|
||||
|
||||
public override string SaveChanges(Session session, string opaqueRef, PGPU server)
|
||||
@ -296,6 +310,28 @@ namespace XenAPI
|
||||
return Maps.convert_from_proxy_XenRefVGPU_type_long(session.proxy.pgpu_get_supported_vgpu_max_capacities(session.uuid, (_pgpu != null) ? _pgpu : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the dom0_access field of the given PGPU.
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
/// <param name="session">The session</param>
|
||||
/// <param name="_pgpu">The opaque_ref of the given pgpu</param>
|
||||
public static pgpu_dom0_access get_dom0_access(Session session, string _pgpu)
|
||||
{
|
||||
return (pgpu_dom0_access)Helper.EnumParseDefault(typeof(pgpu_dom0_access), (string)session.proxy.pgpu_get_dom0_access(session.uuid, (_pgpu != null) ? _pgpu : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the is_system_display_device field of the given PGPU.
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
/// <param name="session">The session</param>
|
||||
/// <param name="_pgpu">The opaque_ref of the given pgpu</param>
|
||||
public static bool get_is_system_display_device(Session session, string _pgpu)
|
||||
{
|
||||
return (bool)session.proxy.pgpu_get_is_system_display_device(session.uuid, (_pgpu != null) ? _pgpu : "").parse();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the other_config field of the given PGPU.
|
||||
/// First published in XenServer 6.0.
|
||||
@ -453,6 +489,50 @@ namespace XenAPI
|
||||
return XenRef<Task>.Create(session.proxy.async_pgpu_get_remaining_capacity(session.uuid, (_pgpu != null) ? _pgpu : "", (_vgpu_type != null) ? _vgpu_type : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
/// <param name="session">The session</param>
|
||||
/// <param name="_pgpu">The opaque_ref of the given pgpu</param>
|
||||
public static pgpu_dom0_access enable_dom0_access(Session session, string _pgpu)
|
||||
{
|
||||
return (pgpu_dom0_access)Helper.EnumParseDefault(typeof(pgpu_dom0_access), (string)session.proxy.pgpu_enable_dom0_access(session.uuid, (_pgpu != null) ? _pgpu : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
/// <param name="session">The session</param>
|
||||
/// <param name="_pgpu">The opaque_ref of the given pgpu</param>
|
||||
public static XenRef<Task> async_enable_dom0_access(Session session, string _pgpu)
|
||||
{
|
||||
return XenRef<Task>.Create(session.proxy.async_pgpu_enable_dom0_access(session.uuid, (_pgpu != null) ? _pgpu : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
/// <param name="session">The session</param>
|
||||
/// <param name="_pgpu">The opaque_ref of the given pgpu</param>
|
||||
public static pgpu_dom0_access disable_dom0_access(Session session, string _pgpu)
|
||||
{
|
||||
return (pgpu_dom0_access)Helper.EnumParseDefault(typeof(pgpu_dom0_access), (string)session.proxy.pgpu_disable_dom0_access(session.uuid, (_pgpu != null) ? _pgpu : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
/// <param name="session">The session</param>
|
||||
/// <param name="_pgpu">The opaque_ref of the given pgpu</param>
|
||||
public static XenRef<Task> async_disable_dom0_access(Session session, string _pgpu)
|
||||
{
|
||||
return XenRef<Task>.Create(session.proxy.async_pgpu_disable_dom0_access(session.uuid, (_pgpu != null) ? _pgpu : "").parse());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return a list of all the PGPUs known to the system.
|
||||
/// First published in XenServer 6.0.
|
||||
@ -638,5 +718,43 @@ namespace XenAPI
|
||||
}
|
||||
}
|
||||
private Dictionary<XenRef<VGPU_type>, long> _supported_VGPU_max_capacities;
|
||||
|
||||
/// <summary>
|
||||
/// The accessibility of this device from dom0
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
public virtual pgpu_dom0_access dom0_access
|
||||
{
|
||||
get { return _dom0_access; }
|
||||
set
|
||||
{
|
||||
if (!Helper.AreEqual(value, _dom0_access))
|
||||
{
|
||||
_dom0_access = value;
|
||||
Changed = true;
|
||||
NotifyPropertyChanged("dom0_access");
|
||||
}
|
||||
}
|
||||
}
|
||||
private pgpu_dom0_access _dom0_access;
|
||||
|
||||
/// <summary>
|
||||
/// Is this device the system display device
|
||||
/// First published in .
|
||||
/// </summary>
|
||||
public virtual bool is_system_display_device
|
||||
{
|
||||
get { return _is_system_display_device; }
|
||||
set
|
||||
{
|
||||
if (!Helper.AreEqual(value, _is_system_display_device))
|
||||
{
|
||||
_is_system_display_device = value;
|
||||
Changed = true;
|
||||
NotifyPropertyChanged("is_system_display_device");
|
||||
}
|
||||
}
|
||||
}
|
||||
private bool _is_system_display_device;
|
||||
}
|
||||
}
|
||||
|
@ -2812,6 +2812,10 @@ namespace XenAPI
|
||||
Response<Object>
|
||||
host_get_guest_vcpus_params(string session, string _host);
|
||||
|
||||
[XmlRpcMethod("host.get_display")]
|
||||
Response<string>
|
||||
host_get_display(string session, string _host);
|
||||
|
||||
[XmlRpcMethod("host.set_name_label")]
|
||||
Response<string>
|
||||
host_set_name_label(string session, string _host, string _label);
|
||||
@ -2896,6 +2900,10 @@ namespace XenAPI
|
||||
Response<string>
|
||||
host_remove_from_guest_vcpus_params(string session, string _host, string _key);
|
||||
|
||||
[XmlRpcMethod("host.set_display")]
|
||||
Response<string>
|
||||
host_set_display(string session, string _host, string _display);
|
||||
|
||||
[XmlRpcMethod("host.disable")]
|
||||
Response<string>
|
||||
host_disable(string session, string _host);
|
||||
@ -3236,6 +3244,22 @@ namespace XenAPI
|
||||
Response<string>
|
||||
async_host_declare_dead(string session, string _host);
|
||||
|
||||
[XmlRpcMethod("host.enable_display")]
|
||||
Response<string>
|
||||
host_enable_display(string session, string _host);
|
||||
|
||||
[XmlRpcMethod("Async.host.enable_display")]
|
||||
Response<string>
|
||||
async_host_enable_display(string session, string _host);
|
||||
|
||||
[XmlRpcMethod("host.disable_display")]
|
||||
Response<string>
|
||||
host_disable_display(string session, string _host);
|
||||
|
||||
[XmlRpcMethod("Async.host.disable_display")]
|
||||
Response<string>
|
||||
async_host_disable_display(string session, string _host);
|
||||
|
||||
[XmlRpcMethod("host.get_all")]
|
||||
Response<string []>
|
||||
host_get_all(string session);
|
||||
@ -6220,6 +6244,14 @@ namespace XenAPI
|
||||
Response<Object>
|
||||
pgpu_get_supported_vgpu_max_capacities(string session, string _pgpu);
|
||||
|
||||
[XmlRpcMethod("PGPU.get_dom0_access")]
|
||||
Response<string>
|
||||
pgpu_get_dom0_access(string session, string _pgpu);
|
||||
|
||||
[XmlRpcMethod("PGPU.get_is_system_display_device")]
|
||||
Response<bool>
|
||||
pgpu_get_is_system_display_device(string session, string _pgpu);
|
||||
|
||||
[XmlRpcMethod("PGPU.set_other_config")]
|
||||
Response<string>
|
||||
pgpu_set_other_config(string session, string _pgpu, Object _other_config);
|
||||
@ -6272,6 +6304,22 @@ namespace XenAPI
|
||||
Response<string>
|
||||
async_pgpu_get_remaining_capacity(string session, string _pgpu, string _vgpu_type);
|
||||
|
||||
[XmlRpcMethod("PGPU.enable_dom0_access")]
|
||||
Response<string>
|
||||
pgpu_enable_dom0_access(string session, string _pgpu);
|
||||
|
||||
[XmlRpcMethod("Async.PGPU.enable_dom0_access")]
|
||||
Response<string>
|
||||
async_pgpu_enable_dom0_access(string session, string _pgpu);
|
||||
|
||||
[XmlRpcMethod("PGPU.disable_dom0_access")]
|
||||
Response<string>
|
||||
pgpu_disable_dom0_access(string session, string _pgpu);
|
||||
|
||||
[XmlRpcMethod("Async.PGPU.disable_dom0_access")]
|
||||
Response<string>
|
||||
async_pgpu_disable_dom0_access(string session, string _pgpu);
|
||||
|
||||
[XmlRpcMethod("PGPU.get_all")]
|
||||
Response<string []>
|
||||
pgpu_get_all(string session);
|
||||
@ -6855,6 +6903,7 @@ namespace XenAPI
|
||||
public string [] PCIs;
|
||||
public string [] PGPUs;
|
||||
public Object guest_VCPUs_params;
|
||||
public string display;
|
||||
}
|
||||
|
||||
[XmlRpcMissingMapping(MappingAction.Ignore)]
|
||||
@ -7285,6 +7334,8 @@ namespace XenAPI
|
||||
public string [] enabled_VGPU_types;
|
||||
public string [] resident_VGPUs;
|
||||
public Object supported_VGPU_max_capacities;
|
||||
public string dom0_access;
|
||||
public bool is_system_display_device;
|
||||
}
|
||||
|
||||
[XmlRpcMissingMapping(MappingAction.Ignore)]
|
||||
|
62
XenModel/XenAPI/host_display.cs
Normal file
62
XenModel/XenAPI/host_display.cs
Normal file
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* 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:
|
||||
*
|
||||
* 1) Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2) 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;
|
||||
using System.Collections.Generic;
|
||||
|
||||
|
||||
namespace XenAPI
|
||||
{
|
||||
public enum host_display
|
||||
{
|
||||
enabled, disable_on_reboot, disabled, enable_on_reboot, unknown
|
||||
}
|
||||
|
||||
public static class host_display_helper
|
||||
{
|
||||
public static string ToString(host_display x)
|
||||
{
|
||||
switch (x)
|
||||
{
|
||||
case host_display.enabled:
|
||||
return "enabled";
|
||||
case host_display.disable_on_reboot:
|
||||
return "disable_on_reboot";
|
||||
case host_display.disabled:
|
||||
return "disabled";
|
||||
case host_display.enable_on_reboot:
|
||||
return "enable_on_reboot";
|
||||
default:
|
||||
return "unknown";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
62
XenModel/XenAPI/pgpu_dom0_access.cs
Normal file
62
XenModel/XenAPI/pgpu_dom0_access.cs
Normal file
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* 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:
|
||||
*
|
||||
* 1) Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2) 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;
|
||||
using System.Collections.Generic;
|
||||
|
||||
|
||||
namespace XenAPI
|
||||
{
|
||||
public enum pgpu_dom0_access
|
||||
{
|
||||
enabled, disable_on_reboot, disabled, enable_on_reboot, unknown
|
||||
}
|
||||
|
||||
public static class pgpu_dom0_access_helper
|
||||
{
|
||||
public static string ToString(pgpu_dom0_access x)
|
||||
{
|
||||
switch (x)
|
||||
{
|
||||
case pgpu_dom0_access.enabled:
|
||||
return "enabled";
|
||||
case pgpu_dom0_access.disable_on_reboot:
|
||||
return "disable_on_reboot";
|
||||
case pgpu_dom0_access.disabled:
|
||||
return "disabled";
|
||||
case pgpu_dom0_access.enable_on_reboot:
|
||||
return "enable_on_reboot";
|
||||
default:
|
||||
return "unknown";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -76,6 +76,7 @@
|
||||
<Compile Include="Actions\Host\ShutdownHostAction.cs" />
|
||||
<Compile Include="Actions\Host\SystemStatusAction.cs" />
|
||||
<Compile Include="Actions\Host\TestLocationInstallerAction.cs" />
|
||||
<Compile Include="Actions\Host\UpdateIntegratedGpuPassthroughAction.cs" />
|
||||
<Compile Include="Actions\Message\DestroyMessageAction.cs" />
|
||||
<Compile Include="Actions\Host\HostBackupRestoreAction.cs" />
|
||||
<Compile Include="Actions\Host\SingleHostStatusAction.cs" />
|
||||
@ -321,10 +322,12 @@
|
||||
<Compile Include="XenAPI\bond_mode.cs" />
|
||||
<Compile Include="XenAPI\DR_task.cs" />
|
||||
<Compile Include="XenAPI\GPU_group.cs" />
|
||||
<Compile Include="XenAPI\host_display.cs" />
|
||||
<Compile Include="XenAPI\ipv6_configuration_mode.cs" />
|
||||
<Compile Include="XenAPI\network_default_locking_mode.cs" />
|
||||
<Compile Include="XenAPI\PCI.cs" />
|
||||
<Compile Include="XenAPI\PGPU.cs" />
|
||||
<Compile Include="XenAPI\pgpu_dom0_access.cs" />
|
||||
<Compile Include="XenAPI\primary_address_type.cs" />
|
||||
<Compile Include="XenAPI\VGPU.cs" />
|
||||
<Compile Include="XenAPI\VGPU_type.cs" />
|
||||
|
Loading…
Reference in New Issue
Block a user