CP-30251: Show a warning if the feature is experimental

Use two separate feature flags, `guefi` and `guefi-secureboot`, with the following rules:
- If the feature is disabled, then the option is hidden in XenCenter.
- If the feature is enabled and experimental, then the option is visible and a warning is displayed in XenCenter (in the New Vm and Import wizards).

Also show the reason why a boot mode option is greyed out (when the uefi/uefi-secure boot mode is not supported in the selected template).

(On the Page_InstallationMedia control, I moved the BootModeContol and PvBootBox controls inside the TableLayoutPanel, to allow better alignment and for better visibility in the design mode)

Signed-off-by: Mihaela Stoica <mihaela.stoica@citrix.com>
This commit is contained in:
Mihaela Stoica 2018-12-18 15:56:27 +00:00
parent d90340efbe
commit 138e5884b6
9 changed files with 645 additions and 322 deletions

View File

@ -36,8 +36,16 @@ namespace XenAdmin.Wizards
this.radioButtonUEFISecureBoot = new System.Windows.Forms.RadioButton();
this.radioButtonBIOSBoot = new System.Windows.Forms.RadioButton();
this.radioButtonUEFIBoot = new System.Windows.Forms.RadioButton();
this.warningsTable = new System.Windows.Forms.TableLayoutPanel();
this.imgExperimental = new System.Windows.Forms.PictureBox();
this.labelExperimental = new System.Windows.Forms.Label();
this.imgUnsupported = new System.Windows.Forms.PictureBox();
this.labelUnsupported = new System.Windows.Forms.Label();
this.groupBoxBootMode.SuspendLayout();
this.tableLayoutPanelBootMode.SuspendLayout();
this.warningsTable.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.imgExperimental)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.imgUnsupported)).BeginInit();
this.SuspendLayout();
//
// groupBoxBootMode
@ -73,18 +81,57 @@ namespace XenAdmin.Wizards
this.radioButtonUEFIBoot.Name = "radioButtonUEFIBoot";
this.radioButtonUEFIBoot.UseVisualStyleBackColor = true;
//
// warningsTable
//
resources.ApplyResources(this.warningsTable, "warningsTable");
this.warningsTable.Controls.Add(this.labelUnsupported, 1, 0);
this.warningsTable.Controls.Add(this.imgExperimental, 0, 1);
this.warningsTable.Controls.Add(this.labelExperimental, 1, 1);
this.warningsTable.Controls.Add(this.imgUnsupported, 0, 0);
this.warningsTable.Name = "warningsTable";
//
// imgExperimental
//
this.imgExperimental.Image = global::XenAdmin.Properties.Resources._000_Alert2_h32bit_16;
resources.ApplyResources(this.imgExperimental, "imgExperimental");
this.imgExperimental.Name = "imgExperimental";
this.imgExperimental.TabStop = false;
//
// labelExperimental
//
resources.ApplyResources(this.labelExperimental, "labelExperimental");
this.labelExperimental.Name = "labelExperimental";
//
// imgUnsupported
//
resources.ApplyResources(this.imgUnsupported, "imgUnsupported");
this.imgUnsupported.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16;
this.imgUnsupported.Name = "imgUnsupported";
this.imgUnsupported.TabStop = false;
//
// labelUnsupported
//
resources.ApplyResources(this.labelUnsupported, "labelUnsupported");
this.labelUnsupported.Name = "labelUnsupported";
//
// BootModesControl
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.BackColor = System.Drawing.SystemColors.Control;
this.Controls.Add(this.warningsTable);
this.Controls.Add(this.groupBoxBootMode);
this.DoubleBuffered = true;
this.Name = "BootModesControl";
this.groupBoxBootMode.ResumeLayout(false);
this.tableLayoutPanelBootMode.ResumeLayout(false);
this.tableLayoutPanelBootMode.PerformLayout();
this.warningsTable.ResumeLayout(false);
this.warningsTable.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.imgExperimental)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.imgUnsupported)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
@ -95,5 +142,10 @@ namespace XenAdmin.Wizards
private System.Windows.Forms.RadioButton radioButtonUEFISecureBoot;
private System.Windows.Forms.RadioButton radioButtonBIOSBoot;
private System.Windows.Forms.RadioButton radioButtonUEFIBoot;
private System.Windows.Forms.TableLayoutPanel warningsTable;
private System.Windows.Forms.PictureBox imgExperimental;
private System.Windows.Forms.Label labelExperimental;
private System.Windows.Forms.PictureBox imgUnsupported;
private System.Windows.Forms.Label labelUnsupported;
}
}

View File

@ -31,6 +31,8 @@
using System.ComponentModel;
using System.Windows.Forms;
using XenAdmin.Core;
using XenAdmin.Network;
using XenAPI;
using BootMode = XenAdmin.Actions.VMActions.BootMode;
@ -53,29 +55,31 @@ namespace XenAdmin.Wizards
return;
_templateVM = value;
if (_templateVM != null && _templateVM.IsHVM())
{
radioButtonUEFIBoot.Enabled = _templateVM.CanSupportUEFIBoot();
radioButtonUEFISecureBoot.Enabled = _templateVM.CanSupportUEFISecureBoot();
if (_templateVM.IsUEFIEnabled())
if (_templateVM.IsSecureBootEnabled())
radioButtonUEFISecureBoot.Checked = true;
else
radioButtonUEFIBoot.Checked = true;
else
radioButtonBIOSBoot.Checked = true;
}
else
if (_templateVM != null)
{
radioButtonBIOSBoot.Checked = false;
radioButtonUEFIBoot.Checked = false;
radioButtonUEFISecureBoot.Checked = false;
_connection = _templateVM.Connection;
}
UpdateControls();
}
}
private VM _templateVM;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public IXenConnection Connection
{
get { return _connection; }
set
{
if (_connection == value)
return;
_connection = value;
UpdateControls();
}
}
private IXenConnection _connection;
public BootMode SelectedOption
{
get { return radioButtonUEFISecureBoot.Checked ? BootMode.UEFI_SECURE_BOOT : (radioButtonUEFIBoot.Checked ? BootMode.UEFI_BOOT : BootMode.BIOS_BOOT); }
@ -85,5 +89,86 @@ namespace XenAdmin.Wizards
{
radioButtonBIOSBoot.Checked = true;
}
private void UpdateControls()
{
radioButtonUEFIBoot.Visible = !Helpers.FeatureForbidden(_connection, Host.UefiBootDisabled);
radioButtonUEFISecureBoot.Visible = !Helpers.FeatureForbidden(_connection, Host.UefiSecureBootDisabled);
// ensure that a visible option is selected
if (radioButtonUEFIBoot.Checked && !radioButtonUEFIBoot.Visible)
radioButtonBIOSBoot.Checked = true;
if (radioButtonUEFISecureBoot.Checked && !radioButtonUEFISecureBoot.Visible)
radioButtonBIOSBoot.Checked = true;
// show the experimental message
ShowExperimentalWarning();
if (_templateVM != null)
{
radioButtonUEFIBoot.Enabled = _templateVM.CanSupportUEFIBoot();
radioButtonUEFISecureBoot.Enabled = _templateVM.CanSupportUEFISecureBoot();
if (_templateVM.IsUEFIEnabled())
if (_templateVM.IsSecureBootEnabled())
radioButtonUEFISecureBoot.Checked = true;
else
radioButtonUEFIBoot.Checked = true;
else
radioButtonBIOSBoot.Checked = true;
}
else
{
radioButtonBIOSBoot.Checked = true;
radioButtonUEFIBoot.Checked = false;
radioButtonUEFISecureBoot.Checked = false;
}
ShowTemplateWarning();
}
private void ShowExperimentalWarning()
{
var uefiExperimental = Helpers.FeatureForbidden(_connection, Host.UefiBootExperimental);
var uefiSecureExperimental = Helpers.FeatureForbidden(_connection, Host.UefiSecureBootExperimental);
if (uefiExperimental || uefiSecureExperimental)
{
imgExperimental.Visible = labelExperimental.Visible = true;
labelExperimental.Text = uefiExperimental && uefiSecureExperimental
? Messages.GUEFI_BOOT_MODES_EXPERIMENTAL_WARNING
: uefiExperimental
? Messages.GUEFI_BOOT_MODE_EXPERIMENTAL_WARNING
: Messages.GUEFI_SECUREBOOT_MODE_EXPERIMENTAL_WARNING;
}
else
{
imgExperimental.Visible = labelExperimental.Visible = false;
}
}
private void ShowTemplateWarning()
{
if (_templateVM == null)
{
imgUnsupported.Visible = labelUnsupported.Visible = false;
return;
}
var uefiNotSupported = radioButtonUEFIBoot.Visible && !radioButtonUEFIBoot.Enabled;
var uefiSecureNotSupported = radioButtonUEFISecureBoot.Visible && !radioButtonUEFISecureBoot.Enabled;
if (uefiNotSupported || uefiSecureNotSupported)
{
imgUnsupported.Visible = labelUnsupported.Visible = true;
labelUnsupported.Text = uefiNotSupported && uefiSecureNotSupported
? Messages.GUEFI_BOOT_MODES_UNSUPPORTED_WARNING
: uefiNotSupported
? Messages.GUEFI_BOOT_MODE_UNSUPPORTED_WARNING
: Messages.GUEFI_SECUREBOOT_MODE_UNSUPPORTED_WARNING;
}
else
{
imgUnsupported.Visible = labelUnsupported.Visible = false;
}
}
}
}

View File

@ -223,7 +223,7 @@
<value>3</value>
</data>
<data name="tableLayoutPanelBootMode.Size" type="System.Drawing.Size, System.Drawing">
<value>138, 80</value>
<value>465, 80</value>
</data>
<data name="tableLayoutPanelBootMode.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -244,13 +244,13 @@
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="radioButtonUEFISecureBoot" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="radioButtonBIOSBoot" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="radioButtonUEFIBoot" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="groupBoxBootMode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
<value>Top</value>
</data>
<data name="groupBoxBootMode.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="groupBoxBootMode.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 99</value>
<value>471, 99</value>
</data>
<data name="groupBoxBootMode.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -268,8 +268,170 @@
<value>$this</value>
</data>
<data name="&gt;&gt;groupBoxBootMode.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="warningsTable.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="warningsTable.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="warningsTable.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelUnsupported.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="labelUnsupported.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelUnsupported.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelUnsupported.Location" type="System.Drawing.Point, System.Drawing">
<value>25, 13</value>
</data>
<data name="labelUnsupported.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 10</value>
</data>
<data name="labelUnsupported.Size" type="System.Drawing.Size, System.Drawing">
<value>443, 13</value>
</data>
<data name="labelUnsupported.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="&gt;&gt;labelUnsupported.Name" xml:space="preserve">
<value>labelUnsupported</value>
</data>
<data name="&gt;&gt;labelUnsupported.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelUnsupported.Parent" xml:space="preserve">
<value>warningsTable</value>
</data>
<data name="&gt;&gt;labelUnsupported.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="imgExperimental.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="imgExperimental.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 39</value>
</data>
<data name="imgExperimental.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 16</value>
</data>
<data name="imgExperimental.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="&gt;&gt;imgExperimental.Name" xml:space="preserve">
<value>imgExperimental</value>
</data>
<data name="&gt;&gt;imgExperimental.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;imgExperimental.Parent" xml:space="preserve">
<value>warningsTable</value>
</data>
<data name="&gt;&gt;imgExperimental.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="labelExperimental.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="labelExperimental.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelExperimental.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelExperimental.Location" type="System.Drawing.Point, System.Drawing">
<value>25, 39</value>
</data>
<data name="labelExperimental.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 10</value>
</data>
<data name="labelExperimental.Size" type="System.Drawing.Size, System.Drawing">
<value>443, 13</value>
</data>
<data name="labelExperimental.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;labelExperimental.Name" xml:space="preserve">
<value>labelExperimental</value>
</data>
<data name="&gt;&gt;labelExperimental.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelExperimental.Parent" xml:space="preserve">
<value>warningsTable</value>
</data>
<data name="&gt;&gt;labelExperimental.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="imgUnsupported.ErrorImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="imgUnsupported.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="imgUnsupported.InitialImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="imgUnsupported.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 13</value>
</data>
<data name="imgUnsupported.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 16</value>
</data>
<data name="imgUnsupported.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="&gt;&gt;imgUnsupported.Name" xml:space="preserve">
<value>imgUnsupported</value>
</data>
<data name="&gt;&gt;imgUnsupported.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;imgUnsupported.Parent" xml:space="preserve">
<value>warningsTable</value>
</data>
<data name="&gt;&gt;imgUnsupported.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="warningsTable.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="warningsTable.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 102</value>
</data>
<data name="warningsTable.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 10, 0, 0</value>
</data>
<data name="warningsTable.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="warningsTable.Size" type="System.Drawing.Size, System.Drawing">
<value>471, 62</value>
</data>
<data name="warningsTable.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;warningsTable.Name" xml:space="preserve">
<value>warningsTable</value>
</data>
<data name="&gt;&gt;warningsTable.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="&gt;&gt;warningsTable.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;warningsTable.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="warningsTable.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="labelUnsupported" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="imgExperimental" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelExperimental" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="imgUnsupported" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,Absolute,20" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@ -286,7 +448,7 @@
<value>3, 3, 3, 3</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 105</value>
<value>477, 165</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>BootModesControl</value>

View File

@ -33,7 +33,8 @@ namespace XenAdmin.Wizards.ImportWizard
protected override void PageLoadedCore(PageLoadedDirection direction)
{
if (direction == PageLoadedDirection.Forward)
bootModesControl1.Connection = Connection;
}
public override void PopulatePage()

View File

@ -40,9 +40,9 @@ namespace XenAdmin.Wizards.NewVMWizard
this.CdDropDownBox = new XenAdmin.Controls.ISODropDownBox();
this.UrlTextBox = new System.Windows.Forms.TextBox();
this.panelInstallationMethod = new System.Windows.Forms.TableLayoutPanel();
this.bootModesControl1 = new XenAdmin.Wizards.BootModesControl();
this.linkLabelAttachNewIsoStore = new System.Windows.Forms.LinkLabel();
this.comboBoxToolTip = new System.Windows.Forms.ToolTip(this.components);
this.bootModesControl1 = new XenAdmin.Wizards.BootModesControl();
this.PvBootBox.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.panelInstallationMethod.SuspendLayout();
@ -73,6 +73,7 @@ namespace XenAdmin.Wizards.NewVMWizard
// PvBootBox
//
resources.ApplyResources(this.PvBootBox, "PvBootBox");
this.panelInstallationMethod.SetColumnSpan(this.PvBootBox, 2);
this.PvBootBox.Controls.Add(this.tableLayoutPanel2);
this.PvBootBox.Name = "PvBootBox";
this.PvBootBox.TabStop = false;
@ -115,6 +116,8 @@ namespace XenAdmin.Wizards.NewVMWizard
// panelInstallationMethod
//
resources.ApplyResources(this.panelInstallationMethod, "panelInstallationMethod");
this.panelInstallationMethod.Controls.Add(this.bootModesControl1, 0, 7);
this.panelInstallationMethod.Controls.Add(this.PvBootBox, 0, 6);
this.panelInstallationMethod.Controls.Add(this.CdRadioButton, 0, 1);
this.panelInstallationMethod.Controls.Add(this.UrlRadioButton, 0, 3);
this.panelInstallationMethod.Controls.Add(this.label1, 0, 0);
@ -123,6 +126,13 @@ namespace XenAdmin.Wizards.NewVMWizard
this.panelInstallationMethod.Controls.Add(this.linkLabelAttachNewIsoStore, 1, 2);
this.panelInstallationMethod.Name = "panelInstallationMethod";
//
// bootModesControl1
//
resources.ApplyResources(this.bootModesControl1, "bootModesControl1");
this.bootModesControl1.BackColor = System.Drawing.SystemColors.Control;
this.panelInstallationMethod.SetColumnSpan(this.bootModesControl1, 2);
this.bootModesControl1.Name = "bootModesControl1";
//
// linkLabelAttachNewIsoStore
//
resources.ApplyResources(this.linkLabelAttachNewIsoStore, "linkLabelAttachNewIsoStore");
@ -130,19 +140,11 @@ namespace XenAdmin.Wizards.NewVMWizard
this.linkLabelAttachNewIsoStore.TabStop = true;
this.linkLabelAttachNewIsoStore.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// bootModesControl1
//
this.bootModesControl1.BackColor = System.Drawing.SystemColors.Control;
resources.ApplyResources(this.bootModesControl1, "bootModesControl1");
this.bootModesControl1.Name = "bootModesControl1";
//
// Page_InstallationMedia
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.bootModesControl1);
this.Controls.Add(this.panelInstallationMethod);
this.Controls.Add(this.PvBootBox);
this.Name = "Page_InstallationMedia";
this.PvBootBox.ResumeLayout(false);
this.PvBootBox.PerformLayout();

View File

@ -125,190 +125,43 @@
<data name="panelInstallationMethod.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;CdRadioButton.Name" xml:space="preserve">
<value>CdRadioButton</value>
</data>
<data name="&gt;&gt;CdRadioButton.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="&gt;&gt;CdRadioButton.Parent" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;CdRadioButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;UrlRadioButton.Name" xml:space="preserve">
<value>UrlRadioButton</value>
</data>
<data name="&gt;&gt;UrlRadioButton.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="&gt;&gt;UrlRadioButton.Parent" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;UrlRadioButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;CdDropDownBox.Name" xml:space="preserve">
<value>CdDropDownBox</value>
</data>
<data name="&gt;&gt;CdDropDownBox.Type" xml:space="preserve">
<value>XenAdmin.Controls.ISODropDownBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;CdDropDownBox.Parent" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;CdDropDownBox.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;UrlTextBox.Name" xml:space="preserve">
<value>UrlTextBox</value>
</data>
<data name="&gt;&gt;UrlTextBox.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;UrlTextBox.Parent" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;UrlTextBox.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;linkLabelAttachNewIsoStore.Name" xml:space="preserve">
<value>linkLabelAttachNewIsoStore</value>
</data>
<data name="&gt;&gt;linkLabelAttachNewIsoStore.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;linkLabelAttachNewIsoStore.Parent" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;linkLabelAttachNewIsoStore.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="panelInstallationMethod.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
<data name="bootModesControl1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="panelInstallationMethod.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
<data name="bootModesControl1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 269</value>
</data>
<data name="panelInstallationMethod.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="panelInstallationMethod.RowCount" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="panelInstallationMethod.Size" type="System.Drawing.Size, System.Drawing">
<value>548, 176</value>
</data>
<data name="panelInstallationMethod.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;panelInstallationMethod.Name" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;panelInstallationMethod.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="&gt;&gt;panelInstallationMethod.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;panelInstallationMethod.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="panelInstallationMethod.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="CdRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="UrlRadioButton" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="CdDropDownBox" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="UrlTextBox" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="linkLabelAttachNewIsoStore" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="AutoSize,120,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="label1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<data name="bootModesControl1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>542, 40</value>
<data name="bootModesControl1.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>200, 104</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
<data name="bootModesControl1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Select the installation method for the operating system software you want to install on the new VM.</value>
<data name="bootModesControl1.Size" type="System.Drawing.Size, System.Drawing">
<value>542, 149</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
<data name="bootModesControl1.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="bootModesControl1.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<data name="&gt;&gt;bootModesControl1.Name" xml:space="preserve">
<value>bootModesControl1</value>
</data>
<data name="&gt;&gt;bootModesControl1.Type" xml:space="preserve">
<value>XenAdmin.Wizards.BootModesControl, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;bootModesControl1.Parent" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="CdRadioButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="CdRadioButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="CdRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 46</value>
</data>
<data name="CdRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 17</value>
</data>
<data name="CdRadioButton.TabIndex" type="System.Int32, mscorlib">
<data name="&gt;&gt;bootModesControl1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="CdRadioButton.Text" xml:space="preserve">
<value>Install from this &amp;DVD drive:</value>
</data>
<data name="&gt;&gt;CdRadioButton.Name" xml:space="preserve">
<value>CdRadioButton</value>
</data>
<data name="&gt;&gt;CdRadioButton.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="&gt;&gt;CdRadioButton.Parent" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;CdRadioButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="UrlRadioButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="UrlRadioButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="UrlRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 105</value>
</data>
<data name="UrlRadioButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 12, 3, 3</value>
</data>
<data name="UrlRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>122, 17</value>
</data>
<data name="UrlRadioButton.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="UrlRadioButton.Text" xml:space="preserve">
<value>Install from this &amp;URL:</value>
</data>
<data name="&gt;&gt;UrlRadioButton.Name" xml:space="preserve">
<value>UrlRadioButton</value>
</data>
<data name="&gt;&gt;UrlRadioButton.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="&gt;&gt;UrlRadioButton.Parent" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;UrlRadioButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="PvBootBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
@ -324,87 +177,6 @@
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;PvBootTextBox.Name" xml:space="preserve">
<value>PvBootTextBox</value>
</data>
<data name="&gt;&gt;PvBootTextBox.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;PvBootTextBox.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;PvBootTextBox.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>1</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>6, 19</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>532, 70</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;tableLayoutPanel2.Parent" xml:space="preserve">
<value>PvBootBox</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="PvBootTextBox" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label2" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="PvBootBox.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 182</value>
</data>
<data name="PvBootBox.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>6, 6, 6, 3</value>
</data>
<data name="PvBootBox.Size" type="System.Drawing.Size, System.Drawing">
<value>544, 92</value>
</data>
<data name="PvBootBox.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="PvBootBox.Text" xml:space="preserve">
<value>Advanced OS &amp;boot parameters</value>
</data>
<data name="&gt;&gt;PvBootBox.Name" xml:space="preserve">
<value>PvBootBox</value>
</data>
<data name="&gt;&gt;PvBootBox.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="&gt;&gt;PvBootBox.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;PvBootBox.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="PvBootTextBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
@ -412,7 +184,7 @@
<value>3, 19</value>
</data>
<data name="PvBootTextBox.Size" type="System.Drawing.Size, System.Drawing">
<value>526, 20</value>
<value>518, 20</value>
</data>
<data name="PvBootTextBox.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@ -445,7 +217,7 @@
<value>0, 0, 0, 3</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>532, 16</value>
<value>524, 16</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -465,6 +237,126 @@
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>1</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>6, 19</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>524, 70</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;tableLayoutPanel2.Parent" xml:space="preserve">
<value>PvBootBox</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="PvBootTextBox" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label2" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="PvBootBox.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 174</value>
</data>
<data name="PvBootBox.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>6, 6, 6, 3</value>
</data>
<data name="PvBootBox.Size" type="System.Drawing.Size, System.Drawing">
<value>536, 92</value>
</data>
<data name="PvBootBox.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="PvBootBox.Text" xml:space="preserve">
<value>Advanced OS &amp;boot parameters</value>
</data>
<data name="&gt;&gt;PvBootBox.Name" xml:space="preserve">
<value>PvBootBox</value>
</data>
<data name="&gt;&gt;PvBootBox.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="&gt;&gt;PvBootBox.Parent" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;PvBootBox.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="CdRadioButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="CdRadioButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="CdRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 46</value>
</data>
<data name="CdRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 17</value>
</data>
<data name="CdRadioButton.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="CdRadioButton.Text" xml:space="preserve">
<value>Install from this &amp;DVD drive:</value>
</data>
<data name="&gt;&gt;CdRadioButton.Name" xml:space="preserve">
<value>CdRadioButton</value>
</data>
<data name="&gt;&gt;CdRadioButton.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="&gt;&gt;CdRadioButton.Parent" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;CdRadioButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="UrlRadioButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="UrlRadioButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="UrlRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 105</value>
</data>
<data name="UrlRadioButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 12, 3, 3</value>
</data>
<data name="UrlRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>122, 17</value>
</data>
<data name="UrlRadioButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="UrlRadioButton.Text" xml:space="preserve">
<value>Install from this &amp;URL:</value>
</data>
<data name="&gt;&gt;UrlRadioButton.Name" xml:space="preserve">
<value>UrlRadioButton</value>
</data>
<data name="&gt;&gt;UrlRadioButton.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="&gt;&gt;UrlRadioButton.Parent" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;UrlRadioButton.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="CdDropDownBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
@ -490,7 +382,7 @@
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;CdDropDownBox.ZOrder" xml:space="preserve">
<value>3</value>
<value>5</value>
</data>
<data name="UrlTextBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
@ -505,7 +397,7 @@
<value>381, 20</value>
</data>
<data name="UrlTextBox.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
<value>4</value>
</data>
<data name="&gt;&gt;UrlTextBox.Name" xml:space="preserve">
<value>UrlTextBox</value>
@ -517,7 +409,7 @@
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;UrlTextBox.ZOrder" xml:space="preserve">
<value>4</value>
<value>6</value>
</data>
<data name="linkLabelAttachNewIsoStore.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -538,7 +430,7 @@
<value>123, 27</value>
</data>
<data name="linkLabelAttachNewIsoStore.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
<value>2</value>
</data>
<data name="linkLabelAttachNewIsoStore.Text" xml:space="preserve">
<value>New ISO library...</value>
@ -556,44 +448,71 @@
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;linkLabelAttachNewIsoStore.ZOrder" xml:space="preserve">
<value>5</value>
<value>7</value>
</data>
<data name="panelInstallationMethod.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="panelInstallationMethod.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="panelInstallationMethod.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="panelInstallationMethod.RowCount" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="panelInstallationMethod.Size" type="System.Drawing.Size, System.Drawing">
<value>548, 418</value>
</data>
<data name="panelInstallationMethod.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;panelInstallationMethod.Name" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;panelInstallationMethod.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="&gt;&gt;panelInstallationMethod.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;panelInstallationMethod.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="panelInstallationMethod.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="bootModesControl1" Row="7" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="PvBootBox" Row="6" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="CdRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="UrlRadioButton" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="CdDropDownBox" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="UrlTextBox" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="linkLabelAttachNewIsoStore" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="label1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>542, 40</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Select the installation method for the operating system software you want to install on the new VM.</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>panelInstallationMethod</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<metadata name="comboBoxToolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="bootModesControl1.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 179</value>
</data>
<data name="bootModesControl1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="bootModesControl1.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>200, 104</value>
</data>
<data name="bootModesControl1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="bootModesControl1.Size" type="System.Drawing.Size, System.Drawing">
<value>277, 104</value>
</data>
<data name="bootModesControl1.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="bootModesControl1.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;bootModesControl1.Name" xml:space="preserve">
<value>bootModesControl1</value>
</data>
<data name="&gt;&gt;bootModesControl1.Type" xml:space="preserve">
<value>XenAdmin.Wizards.BootModesControl, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;bootModesControl1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;bootModesControl1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@ -601,7 +520,7 @@
<value>96, 96</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>548, 297</value>
<value>548, 418</value>
</data>
<data name="&gt;&gt;comboBoxToolTip.Name" xml:space="preserve">
<value>comboBoxToolTip</value>

View File

@ -16687,6 +16687,60 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to The UEFI boot mode is experimental, and is currently not suitable for production use..
/// </summary>
public static string GUEFI_BOOT_MODE_EXPERIMENTAL_WARNING {
get {
return ResourceManager.GetString("GUEFI_BOOT_MODE_EXPERIMENTAL_WARNING", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The UEFI boot mode is not supported with the selected template..
/// </summary>
public static string GUEFI_BOOT_MODE_UNSUPPORTED_WARNING {
get {
return ResourceManager.GetString("GUEFI_BOOT_MODE_UNSUPPORTED_WARNING", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The UEFI and UEFI secure boot modes are experimental, and are currently not suitable for production use..
/// </summary>
public static string GUEFI_BOOT_MODES_EXPERIMENTAL_WARNING {
get {
return ResourceManager.GetString("GUEFI_BOOT_MODES_EXPERIMENTAL_WARNING", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The UEFI and UEFI secure boot modes are not supported with the selected template..
/// </summary>
public static string GUEFI_BOOT_MODES_UNSUPPORTED_WARNING {
get {
return ResourceManager.GetString("GUEFI_BOOT_MODES_UNSUPPORTED_WARNING", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The UEFI secure boot mode is experimental, and is currently not suitable for production use..
/// </summary>
public static string GUEFI_SECUREBOOT_MODE_EXPERIMENTAL_WARNING {
get {
return ResourceManager.GetString("GUEFI_SECUREBOOT_MODE_EXPERIMENTAL_WARNING", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The UEFI secure boot mode is not supported with the selected template..
/// </summary>
public static string GUEFI_SECUREBOOT_MODE_UNSUPPORTED_WARNING {
get {
return ResourceManager.GetString("GUEFI_SECUREBOOT_MODE_UNSUPPORTED_WARNING", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to This version of [XenCenter] is out of date and cannot connect to {0}.
///

View File

@ -5838,6 +5838,24 @@ Note: Any custom color selections will remain unchanged</value>
<data name="GROUP_ROLES" xml:space="preserve">
<value>Group Roles</value>
</data>
<data name="GUEFI_BOOT_MODES_EXPERIMENTAL_WARNING" xml:space="preserve">
<value>The UEFI and UEFI secure boot modes are experimental, and are currently not suitable for production use.</value>
</data>
<data name="GUEFI_BOOT_MODES_UNSUPPORTED_WARNING" xml:space="preserve">
<value>The UEFI and UEFI secure boot modes are not supported with the selected template.</value>
</data>
<data name="GUEFI_BOOT_MODE_EXPERIMENTAL_WARNING" xml:space="preserve">
<value>The UEFI boot mode is experimental, and is currently not suitable for production use.</value>
</data>
<data name="GUEFI_BOOT_MODE_UNSUPPORTED_WARNING" xml:space="preserve">
<value>The UEFI boot mode is not supported with the selected template.</value>
</data>
<data name="GUEFI_SECUREBOOT_MODE_EXPERIMENTAL_WARNING" xml:space="preserve">
<value>The UEFI secure boot mode is experimental, and is currently not suitable for production use.</value>
</data>
<data name="GUEFI_SECUREBOOT_MODE_UNSUPPORTED_WARNING" xml:space="preserve">
<value>The UEFI secure boot mode is not supported with the selected template.</value>
</data>
<data name="GUI_OUT_OF_DATE" xml:space="preserve">
<value>This version of [XenCenter] is out of date and cannot connect to {0}.

View File

@ -468,6 +468,26 @@ namespace XenAPI
return RestrictSriovNetwork(h) && FeatureDisabled(h, "network_sriov");
}
public static bool UefiBootDisabled(Host h)
{
return FeatureDisabled(h, "guefi");
}
public static bool UefiSecureBootDisabled(Host h)
{
return FeatureDisabled(h, "guefi-secureboot");
}
public static bool UefiBootExperimental(Host h)
{
return FeatureExperimental(h, "guefi");
}
public static bool UefiSecureBootExperimental(Host h)
{
return FeatureExperimental(h, "guefi-secureboot");
}
public static bool FeatureDisabled(Host h, string featureName)
{
foreach (var feature in h.Connection.ResolveAll(h.features))
@ -478,6 +498,16 @@ namespace XenAPI
return false;
}
public static bool FeatureExperimental(Host h, string featureName)
{
foreach (var feature in h.Connection.ResolveAll(h.features))
{
if (feature.name_label.Equals(featureName, StringComparison.OrdinalIgnoreCase))
return feature.enabled && feature.experimental;
}
return false;
}
#endregion
public bool HasPBDTo(SR sr)