CP-10079: Implement new licensing requirements in XenCenter

- new license types
- new options in the license manager

Signed-off-by: Mihaela Stoica <mihaela.stoica@citrix.com>
This commit is contained in:
Mihaela Stoica 2014-10-28 16:42:27 +00:00
parent b3cb970842
commit 571ed9241a
10 changed files with 618 additions and 51 deletions

View File

@ -47,6 +47,11 @@ namespace XenAdmin.Dialogs
this.enterpriseRadioButton = new System.Windows.Forms.RadioButton();
this.platinumRadioButton = new System.Windows.Forms.RadioButton();
this.xenDesktopEnterpriseRadioButton = new System.Windows.Forms.RadioButton();
this.enterprisePerSocketRadioButton = new System.Windows.Forms.RadioButton();
this.enterprisePerUserRadioButton = new System.Windows.Forms.RadioButton();
this.xenDesktopPlatimuntRadioButton = new System.Windows.Forms.RadioButton();
this.standardPerUsertRadioButton = new System.Windows.Forms.RadioButton();
this.standardPerSocketRadioButton = new System.Windows.Forms.RadioButton();
this.buttonsLayoutPanel = new System.Windows.Forms.FlowLayoutPanel();
this.mainLayoutPanel.SuspendLayout();
this.licenseServerLayoutPanel.SuspendLayout();
@ -127,6 +132,11 @@ namespace XenAdmin.Dialogs
this.editionLayoutPanel.Controls.Add(this.enterpriseRadioButton);
this.editionLayoutPanel.Controls.Add(this.platinumRadioButton);
this.editionLayoutPanel.Controls.Add(this.xenDesktopEnterpriseRadioButton);
this.editionLayoutPanel.Controls.Add(this.enterprisePerSocketRadioButton);
this.editionLayoutPanel.Controls.Add(this.enterprisePerUserRadioButton);
this.editionLayoutPanel.Controls.Add(this.standardPerSocketRadioButton);
this.editionLayoutPanel.Controls.Add(this.standardPerUsertRadioButton);
this.editionLayoutPanel.Controls.Add(this.xenDesktopPlatimuntRadioButton);
this.editionLayoutPanel.Name = "editionLayoutPanel";
//
// perSocketRadioButton
@ -161,6 +171,36 @@ namespace XenAdmin.Dialogs
this.xenDesktopEnterpriseRadioButton.Name = "xenDesktopEnterpriseRadioButton";
this.xenDesktopEnterpriseRadioButton.UseVisualStyleBackColor = true;
//
// enterprisePerSocketRadioButton
//
resources.ApplyResources(this.enterprisePerSocketRadioButton, "enterprisePerSocketRadioButton");
this.enterprisePerSocketRadioButton.Name = "enterprisePerSocketRadioButton";
this.enterprisePerSocketRadioButton.UseVisualStyleBackColor = true;
//
// enterprisePerUserRadioButton
//
resources.ApplyResources(this.enterprisePerUserRadioButton, "enterprisePerUserRadioButton");
this.enterprisePerUserRadioButton.Name = "enterprisePerUserRadioButton";
this.enterprisePerUserRadioButton.UseVisualStyleBackColor = true;
//
// xenDesktopPlatimuntRadioButton
//
resources.ApplyResources(this.xenDesktopPlatimuntRadioButton, "xenDesktopPlatimuntRadioButton");
this.xenDesktopPlatimuntRadioButton.Name = "xenDesktopPlatimuntRadioButton";
this.xenDesktopPlatimuntRadioButton.UseVisualStyleBackColor = true;
//
// standardPerUsertRadioButton
//
resources.ApplyResources(this.standardPerUsertRadioButton, "standardPerUsertRadioButton");
this.standardPerUsertRadioButton.Name = "standardPerUsertRadioButton";
this.standardPerUsertRadioButton.UseVisualStyleBackColor = true;
//
// standardPerSocketRadioButton
//
resources.ApplyResources(this.standardPerSocketRadioButton, "standardPerSocketRadioButton");
this.standardPerSocketRadioButton.Name = "standardPerSocketRadioButton";
this.standardPerSocketRadioButton.UseVisualStyleBackColor = true;
//
// buttonsLayoutPanel
//
resources.ApplyResources(this.buttonsLayoutPanel, "buttonsLayoutPanel");
@ -209,5 +249,10 @@ namespace XenAdmin.Dialogs
private System.Windows.Forms.RadioButton enterpriseRadioButton;
private System.Windows.Forms.RadioButton platinumRadioButton;
private System.Windows.Forms.RadioButton xenDesktopEnterpriseRadioButton;
private System.Windows.Forms.RadioButton enterprisePerSocketRadioButton;
private System.Windows.Forms.RadioButton enterprisePerUserRadioButton;
private System.Windows.Forms.RadioButton xenDesktopPlatimuntRadioButton;
private System.Windows.Forms.RadioButton standardPerUsertRadioButton;
private System.Windows.Forms.RadioButton standardPerSocketRadioButton;
}
}

View File

@ -104,17 +104,39 @@ namespace XenAdmin.Dialogs
/// </summary>
private void SetOptionsForClearwaterAndNewer()
{
if(xos.TrueForAll(x=> Helpers.ClearwaterOrGreater(x.Connection)))
if (xos.TrueForAll(x => Helpers.CreedenceOrGreater(x.Connection)))
{
platinumRadioButton.Visible = false;
enterpriseRadioButton.Visible = false;
advancedRadioButton.Visible = false;
perSocketRadioButton.Visible = false;
xenDesktopEnterpriseRadioButton.Visible = false;
enterprisePerSocketRadioButton.Checked = true;
enterprisePerSocketRadioButton.Text = String.Format(Messages.ENTERPRISE_PERSOCKET_LICENSES_X_REQUIRED,
xos.Sum(x => x.Connection.Cache.Hosts.Sum(h => h.CpuSockets)));
standardPerSocketRadioButton.Text = String.Format(Messages.STANDARD_PERSOCKET_LICENSES_X_REQUIRED,
xos.Sum(x => x.Connection.Cache.Hosts.Sum(h => h.CpuSockets)));
} else if(xos.TrueForAll(x=> Helpers.ClearwaterOrGreater(x.Connection)))
{
platinumRadioButton.Visible = false;
enterpriseRadioButton.Visible = false;
advancedRadioButton.Visible = false;
enterprisePerSocketRadioButton.Visible = false;
enterprisePerUserRadioButton.Visible = false;
standardPerSocketRadioButton.Visible = false;
standardPerUsertRadioButton.Visible = false;
xenDesktopPlatimuntRadioButton.Visible = false;
perSocketRadioButton.Text = String.Format(Messages.PERSOCKET_LICENSES_X_REQUIRED,
xos.Sum(x => x.Connection.Cache.Hosts.Sum(h=>h.CpuSockets)));
}
else
{
perSocketRadioButton.Visible = false;
enterprisePerSocketRadioButton.Visible = false;
enterprisePerUserRadioButton.Visible = false;
standardPerSocketRadioButton.Visible = false;
standardPerUsertRadioButton.Visible = false;
xenDesktopPlatimuntRadioButton.Visible = false;
advancedRadioButton.Checked = true;
}
}
@ -133,7 +155,22 @@ namespace XenAdmin.Dialogs
if(advancedRadioButton.Checked)
return Host.Edition.Advanced;
return Host.Edition.PerSocket;
if (perSocketRadioButton.Checked)
return Host.Edition.PerSocket;
if (enterprisePerSocketRadioButton.Checked)
return Host.Edition.EnterprisePerSocket;
if (enterprisePerUserRadioButton.Checked)
return Host.Edition.EnterprisePerUser;
if (xenDesktopPlatimuntRadioButton.Checked)
return Host.Edition.XenDesktopPlatinum;
if (standardPerSocketRadioButton.Checked)
return Host.Edition.StandardPerSocket;
return Host.Edition.StandardPerUser;
}
private void okButton_Click(object sender, EventArgs e)

View File

@ -112,22 +112,26 @@
<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.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="okButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="okButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="okButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="okButton.Size" type="System.Drawing.Size, System.Drawing">
<value>87, 27</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="okButton.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
@ -138,7 +142,7 @@
<value>okButton</value>
</data>
<data name="&gt;&gt;okButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;okButton.Parent" xml:space="preserve">
<value>buttonsLayoutPanel</value>
@ -149,6 +153,9 @@
<data name="cancelButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="cancelButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="cancelButton.Location" type="System.Drawing.Point, System.Drawing">
<value>96, 3</value>
</data>
@ -165,7 +172,7 @@
<value>cancelButton</value>
</data>
<data name="&gt;&gt;cancelButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cancelButton.Parent" xml:space="preserve">
<value>buttonsLayoutPanel</value>
@ -176,7 +183,6 @@
<data name="mainLayoutPanel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="mainLayoutPanel.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
@ -223,7 +229,7 @@
<value>licenseServerNameLabel</value>
</data>
<data name="&gt;&gt;licenseServerNameLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;licenseServerNameLabel.Parent" xml:space="preserve">
<value>licenseServerLayoutPanel</value>
@ -247,7 +253,7 @@
<value>licenseServerNameTextBox</value>
</data>
<data name="&gt;&gt;licenseServerNameTextBox.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;licenseServerNameTextBox.Parent" xml:space="preserve">
<value>licenseServerLayoutPanel</value>
@ -274,7 +280,7 @@
<value>licenseServerPortTextBox</value>
</data>
<data name="&gt;&gt;licenseServerPortTextBox.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;licenseServerPortTextBox.Parent" xml:space="preserve">
<value>licenseServerLayoutPanel</value>
@ -310,7 +316,7 @@
<value>colonLabel</value>
</data>
<data name="&gt;&gt;colonLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;colonLabel.Parent" xml:space="preserve">
<value>licenseServerLayoutPanel</value>
@ -334,7 +340,7 @@
<value>1</value>
</data>
<data name="licenseServerLayoutPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>501, 45</value>
<value>525, 45</value>
</data>
<data name="licenseServerLayoutPanel.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@ -343,7 +349,7 @@
<value>licenseServerLayoutPanel</value>
</data>
<data name="&gt;&gt;licenseServerLayoutPanel.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="&gt;&gt;licenseServerLayoutPanel.Parent" xml:space="preserve">
<value>mainLayoutPanel</value>
@ -360,11 +366,14 @@
<data name="mainLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="mainLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="mainLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>11, 8</value>
</data>
<data name="mainLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>501, 30</value>
<value>525, 30</value>
</data>
<data name="mainLabel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -376,7 +385,7 @@
<value>mainLabel</value>
</data>
<data name="&gt;&gt;mainLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;mainLabel.Parent" xml:space="preserve">
<value>mainLayoutPanel</value>
@ -406,7 +415,7 @@
<value>NoControl</value>
</data>
<data name="perSocketRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
<value>7, 3</value>
</data>
<data name="perSocketRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 19</value>
@ -421,7 +430,7 @@
<value>perSocketRadioButton</value>
</data>
<data name="&gt;&gt;perSocketRadioButton.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="&gt;&gt;perSocketRadioButton.Parent" xml:space="preserve">
<value>editionLayoutPanel</value>
@ -439,7 +448,7 @@
<value>NoControl</value>
</data>
<data name="advancedRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 28</value>
<value>7, 28</value>
</data>
<data name="advancedRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 19</value>
@ -454,7 +463,7 @@
<value>advancedRadioButton</value>
</data>
<data name="&gt;&gt;advancedRadioButton.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="&gt;&gt;advancedRadioButton.Parent" xml:space="preserve">
<value>editionLayoutPanel</value>
@ -472,7 +481,7 @@
<value>NoControl</value>
</data>
<data name="enterpriseRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 53</value>
<value>7, 53</value>
</data>
<data name="enterpriseRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>202, 19</value>
@ -487,7 +496,7 @@
<value>enterpriseRadioButton</value>
</data>
<data name="&gt;&gt;enterpriseRadioButton.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="&gt;&gt;enterpriseRadioButton.Parent" xml:space="preserve">
<value>editionLayoutPanel</value>
@ -505,7 +514,7 @@
<value>NoControl</value>
</data>
<data name="platinumRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 78</value>
<value>7, 78</value>
</data>
<data name="platinumRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>198, 19</value>
@ -520,7 +529,7 @@
<value>platinumRadioButton</value>
</data>
<data name="&gt;&gt;platinumRadioButton.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="&gt;&gt;platinumRadioButton.Parent" xml:space="preserve">
<value>editionLayoutPanel</value>
@ -538,7 +547,7 @@
<value>NoControl</value>
</data>
<data name="xenDesktopEnterpriseRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 103</value>
<value>7, 103</value>
</data>
<data name="xenDesktopEnterpriseRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 19</value>
@ -553,7 +562,7 @@
<value>xenDesktopEnterpriseRadioButton</value>
</data>
<data name="&gt;&gt;xenDesktopEnterpriseRadioButton.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="&gt;&gt;xenDesktopEnterpriseRadioButton.Parent" xml:space="preserve">
<value>editionLayoutPanel</value>
@ -561,6 +570,177 @@
<data name="&gt;&gt;xenDesktopEnterpriseRadioButton.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="enterprisePerSocketRadioButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="enterprisePerSocketRadioButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="enterprisePerSocketRadioButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="enterprisePerSocketRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 128</value>
</data>
<data name="enterprisePerSocketRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 19</value>
</data>
<data name="enterprisePerSocketRadioButton.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="enterprisePerSocketRadioButton.Text" xml:space="preserve">
<value>XenServer &amp;Enterprise Per-Socket</value>
</data>
<data name="&gt;&gt;enterprisePerSocketRadioButton.Name" xml:space="preserve">
<value>enterprisePerSocketRadioButton</value>
</data>
<data name="&gt;&gt;enterprisePerSocketRadioButton.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;enterprisePerSocketRadioButton.Parent" xml:space="preserve">
<value>editionLayoutPanel</value>
</data>
<data name="&gt;&gt;enterprisePerSocketRadioButton.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="enterprisePerUserRadioButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="enterprisePerUserRadioButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="enterprisePerUserRadioButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="enterprisePerUserRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 153</value>
</data>
<data name="enterprisePerUserRadioButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 10</value>
</data>
<data name="enterprisePerUserRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>180, 29</value>
</data>
<data name="enterprisePerUserRadioButton.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="enterprisePerUserRadioButton.Text" xml:space="preserve">
<value>XenServer E&amp;nterprise Per-User</value>
</data>
<data name="&gt;&gt;enterprisePerUserRadioButton.Name" xml:space="preserve">
<value>enterprisePerUserRadioButton</value>
</data>
<data name="&gt;&gt;enterprisePerUserRadioButton.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;enterprisePerUserRadioButton.Parent" xml:space="preserve">
<value>editionLayoutPanel</value>
</data>
<data name="&gt;&gt;enterprisePerUserRadioButton.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="standardPerSocketRadioButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="standardPerSocketRadioButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="standardPerSocketRadioButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="standardPerSocketRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 188</value>
</data>
<data name="standardPerSocketRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 19</value>
</data>
<data name="standardPerSocketRadioButton.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="standardPerSocketRadioButton.Text" xml:space="preserve">
<value>XenServer &amp;Standard Per-Socket</value>
</data>
<data name="&gt;&gt;standardPerSocketRadioButton.Name" xml:space="preserve">
<value>standardPerSocketRadioButton</value>
</data>
<data name="&gt;&gt;standardPerSocketRadioButton.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;standardPerSocketRadioButton.Parent" xml:space="preserve">
<value>editionLayoutPanel</value>
</data>
<data name="&gt;&gt;standardPerSocketRadioButton.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="standardPerUsertRadioButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="standardPerUsertRadioButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="standardPerUsertRadioButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="standardPerUsertRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 213</value>
</data>
<data name="standardPerUsertRadioButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 10</value>
</data>
<data name="standardPerUsertRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 29</value>
</data>
<data name="standardPerUsertRadioButton.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="standardPerUsertRadioButton.Text" xml:space="preserve">
<value>XenServer S&amp;tandard Per-User</value>
</data>
<data name="&gt;&gt;standardPerUsertRadioButton.Name" xml:space="preserve">
<value>standardPerUsertRadioButton</value>
</data>
<data name="&gt;&gt;standardPerUsertRadioButton.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;standardPerUsertRadioButton.Parent" xml:space="preserve">
<value>editionLayoutPanel</value>
</data>
<data name="&gt;&gt;standardPerUsertRadioButton.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="xenDesktopPlatimuntRadioButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="xenDesktopPlatimuntRadioButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="xenDesktopPlatimuntRadioButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="xenDesktopPlatimuntRadioButton.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 248</value>
</data>
<data name="xenDesktopPlatimuntRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>139, 19</value>
</data>
<data name="xenDesktopPlatimuntRadioButton.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="xenDesktopPlatimuntRadioButton.Text" xml:space="preserve">
<value>&amp;XenDesktop Platinum</value>
</data>
<data name="&gt;&gt;xenDesktopPlatimuntRadioButton.Name" xml:space="preserve">
<value>xenDesktopPlatimuntRadioButton</value>
</data>
<data name="&gt;&gt;xenDesktopPlatimuntRadioButton.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;xenDesktopPlatimuntRadioButton.Parent" xml:space="preserve">
<value>editionLayoutPanel</value>
</data>
<data name="&gt;&gt;xenDesktopPlatimuntRadioButton.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="editionLayoutPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
@ -573,8 +753,11 @@
<data name="editionLayoutPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 19</value>
</data>
<data name="editionLayoutPanel.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 4</value>
</data>
<data name="editionLayoutPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>495, 125</value>
<value>519, 274</value>
</data>
<data name="editionLayoutPanel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -583,7 +766,7 @@
<value>editionLayoutPanel</value>
</data>
<data name="&gt;&gt;editionLayoutPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;editionLayoutPanel.Parent" xml:space="preserve">
<value>editionsGroupBox</value>
@ -601,7 +784,7 @@
<value>11, 92</value>
</data>
<data name="editionsGroupBox.Size" type="System.Drawing.Size, System.Drawing">
<value>501, 147</value>
<value>525, 296</value>
</data>
<data name="editionsGroupBox.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
@ -613,7 +796,7 @@
<value>editionsGroupBox</value>
</data>
<data name="&gt;&gt;editionsGroupBox.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;editionsGroupBox.Parent" xml:space="preserve">
<value>mainLayoutPanel</value>
@ -634,7 +817,7 @@
<value>Segoe UI, 9pt</value>
</data>
<data name="buttonsLayoutPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>326, 250</value>
<value>350, 399</value>
</data>
<data name="buttonsLayoutPanel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 8, 3, 3</value>
@ -649,7 +832,7 @@
<value>buttonsLayoutPanel</value>
</data>
<data name="&gt;&gt;buttonsLayoutPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;buttonsLayoutPanel.Parent" xml:space="preserve">
<value>mainLayoutPanel</value>
@ -673,7 +856,7 @@
<value>6</value>
</data>
<data name="mainLayoutPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>523, 292</value>
<value>547, 442</value>
</data>
<data name="mainLayoutPanel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -682,7 +865,7 @@
<value>mainLayoutPanel</value>
</data>
<data name="&gt;&gt;mainLayoutPanel.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="&gt;&gt;mainLayoutPanel.Parent" xml:space="preserve">
<value>$this</value>
@ -693,7 +876,7 @@
<data name="mainLayoutPanel.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="licenseServerLayoutPanel" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="mainLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="editionsGroupBox" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="buttonsLayoutPanel" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,Absolute,20" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<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">
@ -706,11 +889,184 @@
<value>GrowAndShrink</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>523, 292</value>
<value>547, 442</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAYAICAQAAAAAADoAgAAZgAAABAQEAAAAAAAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA
CABoBQAAHg0AACAgAAABACAAqBAAAIYSAAAQEAAAAQAgAGgEAAAuIwAAKAAAACAAAABAAAAAAQAEAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA
/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIoiI
iIiIiIiIiIiIiIiIiIiCIigiIiIozMzMzMzMyCIogiIoIiIiKM7m5ubm5sgiKIIiKCIiIijObm5ubm7I
IiiCIigiIiIozubm5ubmyCIogiIoIiIiKM5ubm5ubsgiKIIiKCIiIijO5ubm5ubIIiiIiIiIiIiIzm5u
bm5uyCIogRERERERGM7u7u7u7sgiKIHZWVlZWRjMzMzMzMzIIiiB1ZWVlZUYiIiIiIiIiIiIgdlZWVlZ
GDMzMzMzMzMzOIHVlZWVlRg/uLi4uLi4uDiB2VlZWVkYP7uLi4uLi4s4gdWVlZWVGD+4uLi4uLi4OIHZ
WVlZWRg/u4uLi4uLiziB1ZWVlZUYP7i4uLi4uLg4gdlZWVlZGD+7i4uLi4uLOIHVlZWVlRg/uLi4uLi4
uDiB3d3d3d0YP7uLi4uLi4s4gRERERERGD+4uLi4uLi4OIiIiIiIiIg/u4uLi4uLiziCIiIiIiIoP7i4
uLi4uLg4giIiIiIiKD+7i4uLi4uLOIIiIiIiIig/uLi4uLi4uDiCIiIiIiIoP7u7u7u7u7s4giIiIiIi
KD//////////OIIiIiIiIigzMzMzMzMzMziIiIiIiIiIiIiIiIiIiIiIIiIiIiIiIiIiIiIiIiIiIv//
////////AAAAAHv4AA57+AAOe/gADnv4AA57+AAOe/gADgAAAA4AAAAOAAAADgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/4AAB/+AAAf/gAAH/4AAB/+AAAf/gAAAAA
AAD/////KAAAABAAAAAgAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACA
gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAiIiIiIiIiIoiI
iIiIiIiIgigijMzMyCiCKCKM5mbIKIiIiIzu7sgogRERjMzMyCiB2ZGIiIiIiIHZkYMzMzM4gdmRg/u7
uziB3dGD+7u7OIEREYP7u7s4iIiIg/u7uziCIiKD+7u7OIIiIoP///84giIigzMzMziIiIiIiIiIiP//
KCIAACjObALm5mwCIigAAoiIAAKIzgAAbm4AACIoAAAREQAAGM4AAO7uAAAiKHwAWVl8ABjMfADMzAAA
IigoAAAAIAAAAEAAAAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA
AACAAIAAgIAAAICAgADA3MAA8MqmAKo/KgD/PyoAAF8qAFVfKgCqXyoA/18qAAB/KgBVfyoAqn8qAP9/
KgAAnyoAVZ8qAKqfKgD/nyoAAL8qAFW/KgCqvyoA/78qAADfKgBV3yoAqt8qAP/fKgAA/yoAVf8qAKr/
KgD//yoAAABVAFUAVQCqAFUA/wBVAAAfVQBVH1UAqh9VAP8fVQAAP1UAVT9VAKo/VQD/P1UAAF9VAFVf
VQCqX1UA/19VAAB/VQBVf1UAqn9VAP9/VQAAn1UAVZ9VAKqfVQD/n1UAAL9VAFW/VQCqv1UA/79VAADf
VQBV31UAqt9VAP/fVQAA/1UAVf9VAKr/VQD//1UAAAB/AFUAfwCqAH8A/wB/AAAffwBVH38Aqh9/AP8f
fwAAP38AVT9/AKo/fwD/P38AAF9/AFVffwCqX38A/19/AAB/fwBVf38Aqn9/AP9/fwAAn38AVZ9/AKqf
fwD/n38AAL9/AFW/fwCqv38A/79/AADffwBV338Aqt9/AP/ffwAA/38AVf9/AKr/fwD//38AAACqAFUA
qgCqAKoA/wCqAAAfqgBVH6oAqh+qAP8fqgAAP6oAVT+qAKo/qgD/P6oAAF+qAFVfqgCqX6oA/1+qAAB/
qgBVf6oAqn+qAP9/qgAAn6oAVZ+qAKqfqgD/n6oAAL+qAFW/qgCqv6oA/7+qAADfqgBV36oAqt+qAP/f
qgAA/6oAVf+qAKr/qgD//6oAAADUAFUA1ACqANQA/wDUAAAf1ABVH9QAqh/UAP8f1AAAP9QAVT/UAKo/
1AD/P9QAAF/UAFVf1ACqX9QA/1/UAAB/1ABVf9QAqn/UAP9/1AAAn9QAVZ/UAKqf1AD/n9QAAL/UAFW/
1ACqv9QA/7/UAADf1ABV39QAqt/UAP/f1AAA/9QAVf/UAKr/1AD//9QAVQD/AKoA/wAAH/8AVR//AKof
/wD/H/8AAD//AFU//wCqP/8A/z//AABf/wBVX/8Aql//AP9f/wAAf/8AVX//AKp//wD/f/8AAJ//AFWf
/wCqn/8A/5//AAC//wBVv/8Aqr//AP+//wAA3/8AVd//AKrf/wD/3/8AVf//AKr//wD/zMwA/8z/AP//
MwD//2YA//+ZAP//zAAAfwAAVX8AAKp/AAD/fwAAAJ8AAFWfAACqnwAA/58AAAC/AABVvwAAqr8AAP+/
AAAA3wAAVd8AAKrfAAD/3wAAVf8AAKr/AAAAACoAVQAqAKoAKgD/ACoAAB8qAFUfKgCqHyoA/x8qAAA/
KgBVPyoA8Pv/AKSgoACAgIAAAAD/AAD/AAAA//8A/wAAAAAAAAD//wAA////AP39/f39/f39/f39/f39
/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39
/f39/f39/f39/f39/f39/f39/f39/f39qoYIqoYIhqoIqgiqCaoIqgiqhqqGhoYIhoYIqv39/f0I/f39
/ar9/f39/YY2Ng4yDg4ODgoOCgoKCgqG/f39/Yb9/f39CP39/f39qjY7Ozs3Nzc3NjMSMjIOCqr9/f39
qv39/f2G/f39/f0IN19fOzs3Nzc3NjcODg4KCP39/f0I/f39/ar9/f39/ao6X19fXzs7Ozc3NzY3NgqG
/f39/Yb9/f39CP39/f39hl9jY19jX187Ozs7Nzc3Dqr9/f39qv39/f2G/f39/f0IOodjh19jX19fXztf
OzcOCP39/f0ICAmqCAiqCKoICapfCYdjh2ODY19fXzs7Ow6q/f39/QhITEwoSCUoKSQoqmMJCYcJCWNj
Y2NfY19fNgj9/f39qkyZmZmYmJRwlCmqX19fXl9fX186WzY3Njc2gv39/f0JcJ2dmZmZlJmUJAmqCaoJ
hggIqggICKoIqggI/f39/YZwnp2dnZmZmJVMqnx8fHx8fFR8VHhUVFRUVKr9/f39CHChoZ2dnZ2ZmUwJ
fKSkxqSkxqSkpKSkpKBUCP39/f2qcKLDoqGdnZ2ZTKp8ysakxqSkxqSkxqSkpFSq/f39/QiUpqbDoqHE
nZ1Mq3ykqMakyqSkxqSkpKSkVAj9/f39hpTIyKbHoqGhoXAIfMrLpMqkxqSkxqTGpKRUqv39/f0IlMym
yKbIpcShcAh8y6jKpMqkxsqkpKSkxlQI/f39/aqUzMzMyKbIpqJwqnzLy8qpxsqkpMakxqSkeAj9/f39
CJSUlJSUlJSUlJQJgMupy8qpysqkyqSkxqRUqv39/f2GCKoIqgiqCKoIhgigrcvPqcuoy8qkxsqkxnyG
/f39/ar9/f39/f39/f39qnzPz6nLy8uoyqnKpKTKVAj9/f39CP39/f39/f39/f0IfNDPz8+py8upyqjG
yqR8hv39/f2G/f39/f39/f39/Qik0K7P0M+ty8vLy6jKpXyq/f39/ar9/f39/f39/f39CHzQ09Ctz8/P
qcupy6jKeAj9/f39CP39/f39/f39/f2qoNPQ0NPQ0M/Qz8vLy6l8CP39/f2G/f39/f39/f39/QmkfKR8
oHx8fHx8fHx8fHyG/f39/aoIqgiqCKoIqgiqCKoIqgiqCKoIqgiqCKoIqgj9/f39/f39/f39/f39/f39
/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3/////////////
///AAAAD3vgAA974AAPe+AAD3vgAA974AAPe+AADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA
AAPAAAADwAAAA8AAAAPAAAADwAAAA9/4AAPf+AAD3/gAA9/4AAPf+AAD3/gAA8AAAAP//////////ygA
AAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAA
gACAgAAAgICAAMDcwADwyqYAqj8qAP8/KgAAXyoAVV8qAKpfKgD/XyoAAH8qAFV/KgCqfyoA/38qAACf
KgBVnyoAqp8qAP+fKgAAvyoAVb8qAKq/KgD/vyoAAN8qAFXfKgCq3yoA/98qAAD/KgBV/yoAqv8qAP//
KgAAAFUAVQBVAKoAVQD/AFUAAB9VAFUfVQCqH1UA/x9VAAA/VQBVP1UAqj9VAP8/VQAAX1UAVV9VAKpf
VQD/X1UAAH9VAFV/VQCqf1UA/39VAACfVQBVn1UAqp9VAP+fVQAAv1UAVb9VAKq/VQD/v1UAAN9VAFXf
VQCq31UA/99VAAD/VQBV/1UAqv9VAP//VQAAAH8AVQB/AKoAfwD/AH8AAB9/AFUffwCqH38A/x9/AAA/
fwBVP38Aqj9/AP8/fwAAX38AVV9/AKpffwD/X38AAH9/AFV/fwCqf38A/39/AACffwBVn38Aqp9/AP+f
fwAAv38AVb9/AKq/fwD/v38AAN9/AFXffwCq338A/99/AAD/fwBV/38Aqv9/AP//fwAAAKoAVQCqAKoA
qgD/AKoAAB+qAFUfqgCqH6oA/x+qAAA/qgBVP6oAqj+qAP8/qgAAX6oAVV+qAKpfqgD/X6oAAH+qAFV/
qgCqf6oA/3+qAACfqgBVn6oAqp+qAP+fqgAAv6oAVb+qAKq/qgD/v6oAAN+qAFXfqgCq36oA/9+qAAD/
qgBV/6oAqv+qAP//qgAAANQAVQDUAKoA1AD/ANQAAB/UAFUf1ACqH9QA/x/UAAA/1ABVP9QAqj/UAP8/
1AAAX9QAVV/UAKpf1AD/X9QAAH/UAFV/1ACqf9QA/3/UAACf1ABVn9QAqp/UAP+f1AAAv9QAVb/UAKq/
1AD/v9QAAN/UAFXf1ACq39QA/9/UAAD/1ABV/9QAqv/UAP//1ABVAP8AqgD/AAAf/wBVH/8Aqh//AP8f
/wAAP/8AVT//AKo//wD/P/8AAF//AFVf/wCqX/8A/1//AAB//wBVf/8Aqn//AP9//wAAn/8AVZ//AKqf
/wD/n/8AAL//AFW//wCqv/8A/7//AADf/wBV3/8Aqt//AP/f/wBV//8Aqv//AP/MzAD/zP8A//8zAP//
ZgD//5kA///MAAB/AABVfwAAqn8AAP9/AAAAnwAAVZ8AAKqfAAD/nwAAAL8AAFW/AACqvwAA/78AAADf
AABV3wAAqt8AAP/fAABV/wAAqv8AAAAAKgBVACoAqgAqAP8AKgAAHyoAVR8qAKofKgD/HyoAAD8qAFU/
KgDw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAAAAAAAP//AAD///8A/f39/f39/f39/f39/f39/f0I
hgiqCKoICKoICKaGCP39qv39hv2GNg4ODjII/ar9/Yb9/ar9qjdjXzsOCP2G/f0IhquGCAleCWNfNob9
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
bv+3d0n/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/FRqE/0dN1v8/RNL/Nz3Q/y40zv8nLcz/ISfK/xwh
yf8WHMf/GxJh/8K/wf/gr3r/4K96/+Cvev/gr3r/3614/9yqdf/apnL/16Nw/9Sea//Rmmj/zZZk/8qR
X//GjFz/w4dW/7+CUv/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8SHZD/WF3a/05U1/9FS9X/PUPS/zU7
0P8uM83/JyzL/yAmyf8aFGn/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/
wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/xAfnP9obt7/YGTc/1Zb
2f9NU9f/RUrU/ztB0v80OdD/LDHO/xgWcv/Cv8H/Dn+n/w18pP8MeqH/DHie/wt1m/8Kc5j/CXGV/wlv
k/8JbJD/CGqN/wdpi/8HZ4j/BmWH/wZkhf8GYoP/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/DiKp/3l+
4/9vdeH/Zmze/11i2/9UWtn/S1HW/0NI1P86P9H/Fhh9/8K/wf8Ogar/Barp/wGo6P8Apef/AKPm/wCi
5P8An+L/AJ7h/wCd3/8AnN7/AJnc/wCY2/8AmNn/AJbX/wZjhP/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/
wf8MJbX/iI7n/4CF5v93fOP/bnPg/2Vr3f9bYdv/UljY/0lP1v8UGoj/wr/B/w+Erf8Lrur/Bqvq/wOo
6f8Apuf/AKTm/wCi5f8AoOT/AJ/i/wCd4f8AnN//AJrd/wCZ2/8AmNr/BmWH/8K/wf8AAAAAAAAAAAAA
AAAAAAAAwr/B/wkowP+WnOz/jpTq/4aL6P9+hOX/dXri/2xx4P9jaN3/WV/b/xEek//Cv8H/EIaw/xay
7P8Or+z/Cavr/wWq6v8Bp+j/AKbn/wCj5f8AoeT/AJ/j/wCe4f8AnOD/AJve/wCa3f8HZ4n/wr/B/wAA
AAAAAAAAAAAAAAAAAADCv8H/CCrK/6Ko7/+coe7/lZrr/42T6f+Fiub/fIHl/3N54v9rcN//ECGg/8K/
wf8QiLP/I7nu/xq07f8Ssez/C63r/war6v8Cqen/AKbo/wCk5v8AouX/AKHk/wCf4f8AneH/AJzf/who
i//Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8GLNP/q7Hy/6as8P+hpu//mp/u/5OY6/+LkOj/g4nm/3qA
5P8NI6z/wr/B/xCKtv8xvvD/J7rv/x627f8Vsuz/Dq/s/wmr6/8Equn/Aafo/wCl5/8Ao+X/AKHk/wCf
4v8AnuH/CGqO/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wUu2/+vtPP/r7Tz/6qv8v+mq/D/oKXv/5me
7f+Sl+v/io/p/wsmt//Cv8H/Eo24/0HF8f82wfD/LLzv/yK47v8atO3/EbHs/wut6/8Gq+r/A6np/wCm
6P8Apeb/AKLl/wCh5P8IbJD/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/BC/h/wQv3/8FL9z/BS3Z/wYt
1v8GLNL/ByvP/wgqy/8IKcb/CSnC/8K/wf8Sjrv/Uszy/0fH8f87w/H/Mb7v/ye67/8et+7/FbPt/w6v
6/8IrOv/BKnp/wGo6P8Apef/AKPl/wluk//Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf/Cv8H/wr/B/8K/
wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/xKRvf9j0/P/WM/z/0zK8f9BxfH/N8Hw/yy8
7/8iuO7/GbTt/xGx7P8Lruv/Bqrq/wOo6f8Apuf/CnGV/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCv8H/E5LA/3Ta8/9q1fP/XtHz/1LM
8v9Hx/H/O8Pw/zG+7/8nu+//Hrbt/xay7f8Or+v/CKzq/wSq6f8Kc5j/wr/B/wAAAAAAAAAAAAAAAAAA
AADCv8H/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMK/wf8UlMH/hOD1/3rc
9f9v2PP/ZNTy/1jO8v9NyvH/Qsbx/zbB8P8svO//I7ju/xm07f8SsOz/C67r/wt2m//Cv8H/AAAAAAAA
AAAAAAAAAAAAAMK/wf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwr/B/xSW
w/+T5vb/iuL1/3/e9P912vT/adbz/13R8/9SzPL/R8jx/zzD8P8xvvD/J7rv/x627v8Vsuz/C3ie/8K/
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
</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Apply License</value>
</data>

View File

@ -145,12 +145,9 @@ namespace XenAdmin.Controls
protected override KeyValuePair<bool, string> DisableOtherRowsInContext(CheckableDataGridViewRow checkedRow, CheckableDataGridViewRow otherRow)
{
if(Helpers.ClearwaterOrGreater(checkedRow.XenObject.Connection))
{
return new KeyValuePair<bool, string>(!Helpers.ClearwaterOrGreater(otherRow.XenObject.Connection), Messages.SELECTION_CANNOT_BE_MIXED_WITH_CLEARWATER);
}
return new KeyValuePair<bool, string>(Helpers.ClearwaterOrGreater(otherRow.XenObject.Connection), Messages.SELECTION_CANNOT_BE_MIXED_WITH_CLEARWATER);
return new KeyValuePair<bool, string>(
LicenseStatus.GetLicensingModel(checkedRow.XenObject.Connection) != LicenseStatus.GetLicensingModel(otherRow.XenObject.Connection),
Messages.SELECTION_CANNOT_BE_MIXED_FOR_LICENSING);
}
}
}

View File

@ -33,6 +33,7 @@ using System;
using System.ComponentModel;
using System.Linq;
using XenAdmin.Core;
using XenAdmin.Network;
using XenAdmin.Utils;
using XenAPI;
@ -50,6 +51,7 @@ namespace XenAdmin.Dialogs
void BeginUpdate();
Host LicencedHost { get; }
bool IsUsingPerSocketGenerationLicenses { get; }
LicenseStatus.LicensingModel PoolLicensingModel { get; }
}
public class LicenseStatus : ILicenseStatus
@ -145,6 +147,7 @@ namespace XenAdmin.Dialogs
protected void CalculateLicenseState()
{
PoolLicensingModel = GetLicensingModel(XenObject.Connection);
LicenseExpiresExactlyIn = CalculateLicenceExpiresIn();
CurrentState = CalculateCurrentState();
Updated = true;
@ -321,6 +324,26 @@ namespace XenAdmin.Dialogs
}
}
public LicensingModel PoolLicensingModel { get; private set; }
#endregion
#region LicensingModel
public enum LicensingModel
{
PreClearwater,
Clearwater,
Creedence
}
public static LicensingModel GetLicensingModel(IXenConnection connection)
{
if (Helpers.CreedenceOrGreater(connection))
return LicensingModel.Creedence;
if (Helpers.ClearwaterOrGreater(connection))
return LicensingModel.Clearwater;
return LicensingModel.PreClearwater;
}
#endregion
#region IDisposable Members

View File

@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34209
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@ -735,6 +735,24 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Citrix XenServer Enterprise Per Socket Edition.
/// </summary>
public static string Label_host_edition_enterprise_per_socket {
get {
return ResourceManager.GetString("Label-host.edition-enterprise-per-socket", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Citrix XenServer Enterprise Per User Edition.
/// </summary>
public static string Label_host_edition_enterprise_per_user {
get {
return ResourceManager.GetString("Label-host.edition-enterprise-per-user", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Citrix XenServer for XenDesktop.
/// </summary>
@ -780,6 +798,24 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Citrix XenServer Standard Per Socket Edition.
/// </summary>
public static string Label_host_edition_standard_per_socket {
get {
return ResourceManager.GetString("Label-host.edition-standard-per-socket", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Citrix XenServer Standard Per User Edition.
/// </summary>
public static string Label_host_edition_standard_per_user {
get {
return ResourceManager.GetString("Label-host.edition-standard-per-user", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Citrix XenServer for XenDesktop.
/// </summary>
@ -789,6 +825,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Citrix XenDesktop Platinum.
/// </summary>
public static string Label_host_edition_xendesktop_platinum {
get {
return ResourceManager.GetString("Label-host.edition-xendesktop-platinum", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Enabled.
/// </summary>

View File

@ -1706,4 +1706,19 @@
<data name="Message.name-license_server_version_obsolete" xml:space="preserve">
<value>The license server is an out-of-date version.</value>
</data>
<data name="Label-host.edition-enterprise-per-socket" xml:space="preserve">
<value>Citrix XenServer Enterprise Per Socket Edition</value>
</data>
<data name="Label-host.edition-enterprise-per-user" xml:space="preserve">
<value>Citrix XenServer Enterprise Per User Edition</value>
</data>
<data name="Label-host.edition-standard-per-socket" xml:space="preserve">
<value>Citrix XenServer Standard Per Socket Edition</value>
</data>
<data name="Label-host.edition-standard-per-user" xml:space="preserve">
<value>Citrix XenServer Standard Per User Edition</value>
</data>
<data name="Label-host.edition-xendesktop-platinum" xml:space="preserve">
<value>Citrix XenDesktop Platinum</value>
</data>
</root>

View File

@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34209
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@ -11943,6 +11943,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to XenServer &amp;Enterprise Per-Socket ({0} required).
/// </summary>
public static string ENTERPRISE_PERSOCKET_LICENSES_X_REQUIRED {
get {
return ResourceManager.GetString("ENTERPRISE_PERSOCKET_LICENSES_X_REQUIRED", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Members.
/// </summary>
@ -27296,11 +27305,11 @@ namespace XenAdmin {
}
/// <summary>
/// Looks up a localized string similar to Pre-6.2 and post-6.2 XenServers must be licensed separately.
/// Looks up a localized string similar to Different versions of XenServer must be licensed separately.
/// </summary>
public static string SELECTION_CANNOT_BE_MIXED_WITH_CLEARWATER {
public static string SELECTION_CANNOT_BE_MIXED_FOR_LICENSING {
get {
return ResourceManager.GetString("SELECTION_CANNOT_BE_MIXED_WITH_CLEARWATER", resourceCulture);
return ResourceManager.GetString("SELECTION_CANNOT_BE_MIXED_FOR_LICENSING", resourceCulture);
}
}
@ -28637,6 +28646,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to XenServer &amp;Standard Per-Socket ({0} required).
/// </summary>
public static string STANDARD_PERSOCKET_LICENSES_X_REQUIRED {
get {
return ResourceManager.GetString("STANDARD_PERSOCKET_LICENSES_X_REQUIRED", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Start host.
/// </summary>

View File

@ -9467,8 +9467,8 @@ Upgrading VMs using StorageLink Gateway to XenServer 6.0 is only supported if th
<data name="SELECTED_HOST_POOL_NOT_CONNECTED" xml:space="preserve">
<value>The hosts or pools selected are not connected</value>
</data>
<data name="SELECTION_CANNOT_BE_MIXED_WITH_CLEARWATER" xml:space="preserve">
<value>Pre-6.2 and post-6.2 XenServers must be licensed separately</value>
<data name="SELECTION_CANNOT_BE_MIXED_FOR_LICENSING" xml:space="preserve">
<value>Different versions of XenServer must be licensed separately</value>
</data>
<data name="SELECT_A_FILTER" xml:space="preserve">
<value>Select a filter...</value>
@ -12252,4 +12252,10 @@ You will need to navigate to the Console on each of the selected VMs to complete
<data name="YOU_ARE_HERE" xml:space="preserve">
<value>You are here</value>
</data>
<data name="ENTERPRISE_PERSOCKET_LICENSES_X_REQUIRED" xml:space="preserve">
<value>XenServer &amp;Enterprise Per-Socket ({0} required)</value>
</data>
<data name="STANDARD_PERSOCKET_LICENSES_X_REQUIRED" xml:space="preserve">
<value>XenServer &amp;Standard Per-Socket ({0} required)</value>
</data>
</root>

View File

@ -53,7 +53,12 @@ namespace XenAPI
Platinum,
EnterpriseXD,
PerSocket, //Added in Clearwater (PR-1589)
XenDesktop //Added in Clearwater (PR-1589) and is new form of "EnterpriseXD"
XenDesktop, //Added in Clearwater (PR-1589) and is new form of "EnterpriseXD"
EnterprisePerSocket, // Added in Creedence (enterprise-per-socket)
EnterprisePerUser, // Added in Creedence (enterprise-per-user)
XenDesktopPlatinum, // Added in Creedence (xendesktop-platinum)
StandardPerSocket, // Added in Creedence (standard-per-socket)
StandardPerUser // Added in Creedence (standard-per-user)
}
public override string Name
@ -81,6 +86,16 @@ namespace XenAPI
return Edition.XenDesktop;
case "per-socket":
return Edition.PerSocket;
case "enterprise-per-socket":
return Edition.EnterprisePerSocket;
case "enterprise-per-user":
return Edition.EnterprisePerUser;
case "xendesktop-platinum":
return Edition.XenDesktopPlatinum;
case "standard-per-socket":
return Edition.StandardPerSocket;
case "standard-per-user":
return Edition.StandardPerUser;
default:
return Edition.Free;
}
@ -120,6 +135,16 @@ namespace XenAPI
return "xendesktop";
case Edition.PerSocket:
return "per-socket";
case Edition.EnterprisePerSocket:
return "enterprise-per-socket";
case Edition.EnterprisePerUser:
return "enterprise-per-user";
case Edition.XenDesktopPlatinum:
return "xendesktop-platinum";
case Edition.StandardPerSocket:
return "standard-per-socket";
case Edition.StandardPerUser:
return "standard-per-user";
default:
return "free";
}