Merge pull request #1878 from serencorbett1/REQ-477

CP-25563: Added Clustering page
This commit is contained in:
Mihaela Stoica 2017-12-01 15:04:38 +00:00 committed by GitHub
commit 764d31f728
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 2009 additions and 73 deletions

View File

@ -79,6 +79,7 @@ namespace XenAdmin.Dialogs
private SecurityEditPage SecurityEditPage;
private LivePatchingEditPage LivePatchingEditPage;
private NetworkOptionsEditPage NetworkOptionsEditPage;
private ClusteringEditPage ClusteringEditPage;
#endregion
private IXenObject xenObject, xenObjectBefore, xenObjectCopy;
@ -206,6 +207,9 @@ namespace XenAdmin.Dialogs
if (is_pool_or_standalone && !Helpers.FeatureForbidden(xenObject.Connection, Host.RestrictIGMPSnooping) && Helpers.GetMaster(pool).vSwitchNetworkBackend())
ShowTab(NetworkOptionsEditPage = new NetworkOptionsEditPage());
if (is_pool_or_standalone && !Helpers.FeatureForbidden(xenObject.Connection, Host.RestrictGfs2))
ShowTab(ClusteringEditPage = new ClusteringEditPage());
if (is_network)
ShowTab(editNetworkPage = new EditNetworkPage());

View File

@ -0,0 +1,130 @@
namespace XenAdmin.SettingsPanels
{
partial class ClusteringEditPage
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ClusteringEditPage));
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.labelTitle = new XenAdmin.Controls.Common.AutoHeightLabel();
this.CheckBoxEnableClustering = new System.Windows.Forms.CheckBox();
this.labelNetwork = new System.Windows.Forms.Label();
this.flowLayoutInfo = new System.Windows.Forms.FlowLayoutPanel();
this.pictureBoxInfo = new System.Windows.Forms.PictureBox();
this.labelWarning = new System.Windows.Forms.Label();
this.comboBoxNetwork = new XenAdmin.Controls.NetworkComboBox();
this.tableLayoutPanel1.SuspendLayout();
this.flowLayoutInfo.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxInfo)).BeginInit();
this.SuspendLayout();
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.labelTitle, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.CheckBoxEnableClustering, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.labelNetwork, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.flowLayoutInfo, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.comboBoxNetwork, 1, 2);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// labelTitle
//
resources.ApplyResources(this.labelTitle, "labelTitle");
this.tableLayoutPanel1.SetColumnSpan(this.labelTitle, 2);
this.labelTitle.Name = "labelTitle";
//
// CheckBoxEnableClustering
//
resources.ApplyResources(this.CheckBoxEnableClustering, "CheckBoxEnableClustering");
this.tableLayoutPanel1.SetColumnSpan(this.CheckBoxEnableClustering, 2);
this.CheckBoxEnableClustering.Name = "CheckBoxEnableClustering";
this.CheckBoxEnableClustering.UseVisualStyleBackColor = true;
//
// labelNetwork
//
resources.ApplyResources(this.labelNetwork, "labelNetwork");
this.labelNetwork.Name = "labelNetwork";
//
// flowLayoutInfo
//
resources.ApplyResources(this.flowLayoutInfo, "flowLayoutInfo");
this.tableLayoutPanel1.SetColumnSpan(this.flowLayoutInfo, 2);
this.flowLayoutInfo.Controls.Add(this.pictureBoxInfo);
this.flowLayoutInfo.Controls.Add(this.labelWarning);
this.flowLayoutInfo.Name = "flowLayoutInfo";
//
// pictureBoxInfo
//
this.pictureBoxInfo.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16;
resources.ApplyResources(this.pictureBoxInfo, "pictureBoxInfo");
this.pictureBoxInfo.Name = "pictureBoxInfo";
this.pictureBoxInfo.TabStop = false;
//
// labelWarning
//
resources.ApplyResources(this.labelWarning, "labelWarning");
this.labelWarning.Name = "labelWarning";
//
// comboBoxNetwork
//
this.comboBoxNetwork.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxNetwork.FormattingEnabled = true;
this.comboBoxNetwork.IncludeOnlyEnabledNetworksInComboBox = false;
this.comboBoxNetwork.IncludeOnlyNetworksWithIPAddresses = false;
this.comboBoxNetwork.IncludePoolNameInComboBox = false;
resources.ApplyResources(this.comboBoxNetwork, "comboBoxNetwork");
this.comboBoxNetwork.Name = "comboBoxNetwork";
//
// ClusteringEditPage
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.tableLayoutPanel1);
this.Name = "ClusteringEditPage";
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.flowLayoutInfo.ResumeLayout(false);
this.flowLayoutInfo.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxInfo)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private Controls.Common.AutoHeightLabel labelTitle;
private System.Windows.Forms.CheckBox CheckBoxEnableClustering;
private System.Windows.Forms.Label labelNetwork;
private System.Windows.Forms.PictureBox pictureBoxInfo;
private System.Windows.Forms.Label labelWarning;
private System.Windows.Forms.FlowLayoutPanel flowLayoutInfo;
private Controls.NetworkComboBox comboBoxNetwork;
}
}

View File

@ -0,0 +1,165 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using XenAdmin.Actions;
using XenAdmin.Controls;
using XenAdmin.Core;
using XenAPI;
namespace XenAdmin.SettingsPanels
{
public partial class ClusteringEditPage : UserControl, IEditPage
{
private Pool pool;
private bool clusteringEnabled;
public ClusteringEditPage()
{
InitializeComponent();
Text = Messages.CLUSTERING;
}
public string SubText
{
get { return CheckBoxEnableClustering.Checked ? Messages.ENABLED : Messages.DISABLED; }
}
public Image Image
{
get { return Properties.Resources._000_Storage_h32bit_16; }
}
public AsyncAction SaveSettings()
{
if (CheckBoxEnableClustering.Checked)
{
var network = ((NetworkComboBoxItem)comboBoxNetwork.SelectedItem).Network;
if (network != null)
{
return new EnableClusteringAction(pool, network);
}
}
else
{
return new DisableClusteringAction(pool);
}
return null;
}
public void SetXenObjects(IXenObject orig, IXenObject clone)
{
pool = Helpers.GetPoolOfOne(clone.Connection);
var master = Helpers.GetMaster(clone.Connection);
flowLayoutInfo.Visible = false;
clusteringEnabled = pool.Connection.Cache.Cluster_hosts.Any(cluster => cluster.host.opaque_ref == master.opaque_ref && cluster.enabled);
var existingCluster = pool.Connection.Cache.Clusters.FirstOrDefault();
CheckBoxEnableClustering.Checked = clusteringEnabled;
LoadNetworks(existingCluster);
if (clusteringEnabled)
{
comboBoxNetwork.Enabled = labelNetwork.Enabled = false;
}
var gfs2Attached = clone.Connection.Cache.SRs.Any(sr => sr.type.ToLower() == "gfs2" && !sr.IsDetached());
if (clusteringEnabled && gfs2Attached)
{
DisableControls(Messages.GFS2_SR_ATTACHED);
}
if (!clusteringEnabled && pool.ha_enabled)
{
DisableControls(Messages.GFS2_HA_ENABLED);
}
}
public bool ValidToSave { get { return true; }}
public void ShowLocalValidationMessages()
{
}
public void Cleanup()
{
}
public bool HasChanged
{
get
{
return clusteringEnabled != CheckBoxEnableClustering.Checked;
}
}
#region PrivateMethods
private void LoadNetworks(Cluster cluster)
{
comboBoxNetwork.IncludeOnlyEnabledNetworksInComboBox = false;
comboBoxNetwork.IncludeOnlyNetworksWithIPAddresses = true;
comboBoxNetwork.PopulateComboBox(pool.Connection);
if (comboBoxNetwork.Items.Count == 0)
{
DisableControls(Messages.GFS2_NO_NETWORK);
}
if (cluster != null)
{
foreach (NetworkComboBoxItem item in comboBoxNetwork.Items.Cast<NetworkComboBoxItem>())
{
if (item.Network.opaque_ref == cluster.network.opaque_ref)
{
comboBoxNetwork.SelectedItem = item;
break;
}
}
}
}
private void DisableControls(string message)
{
comboBoxNetwork.Enabled = labelNetwork.Enabled = CheckBoxEnableClustering.Enabled = false;
flowLayoutInfo.Visible = true;
labelWarning.Text = message;
}
#endregion
}
}

View File

@ -0,0 +1,381 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelTitle.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelTitle.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelTitle.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="labelTitle.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="labelTitle.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 3, 20</value>
</data>
<data name="labelTitle.Size" type="System.Drawing.Size, System.Drawing">
<value>484, 39</value>
</data>
<data name="labelTitle.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="labelTitle.Text" xml:space="preserve">
<value>Clustering allows you to create and use GFS2 storage repositories. Select whether you wish to enable clustering on this pool. When enabling clustering you need to provide a network which has an IP Address configured (the management interface or a secondary interface).</value>
</data>
<data name="&gt;&gt;labelTitle.Name" xml:space="preserve">
<value>labelTitle</value>
</data>
<data name="&gt;&gt;labelTitle.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelTitle.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelTitle.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="CheckBoxEnableClustering.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="CheckBoxEnableClustering.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="CheckBoxEnableClustering.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 62</value>
</data>
<data name="CheckBoxEnableClustering.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>7, 3, 3, 3</value>
</data>
<data name="CheckBoxEnableClustering.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 17</value>
</data>
<data name="CheckBoxEnableClustering.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="CheckBoxEnableClustering.Text" xml:space="preserve">
<value>&amp;Enable clustering</value>
</data>
<data name="&gt;&gt;CheckBoxEnableClustering.Name" xml:space="preserve">
<value>CheckBoxEnableClustering</value>
</data>
<data name="&gt;&gt;CheckBoxEnableClustering.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CheckBoxEnableClustering.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;CheckBoxEnableClustering.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="labelNetwork.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelNetwork.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelNetwork.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 87</value>
</data>
<data name="labelNetwork.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>22, 5, 3, 0</value>
</data>
<data name="labelNetwork.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 13</value>
</data>
<data name="labelNetwork.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelNetwork.Text" xml:space="preserve">
<value>&amp;Network:</value>
</data>
<data name="&gt;&gt;labelNetwork.Name" xml:space="preserve">
<value>labelNetwork</value>
</data>
<data name="&gt;&gt;labelNetwork.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;labelNetwork.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelNetwork.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="flowLayoutInfo.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="pictureBoxInfo.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxInfo.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 6</value>
</data>
<data name="pictureBoxInfo.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 6, 3, 3</value>
</data>
<data name="pictureBoxInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 16</value>
</data>
<data name="pictureBoxInfo.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="pictureBoxInfo.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;pictureBoxInfo.Name" xml:space="preserve">
<value>pictureBoxInfo</value>
</data>
<data name="&gt;&gt;pictureBoxInfo.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;pictureBoxInfo.Parent" xml:space="preserve">
<value>flowLayoutInfo</value>
</data>
<data name="&gt;&gt;pictureBoxInfo.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarning.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 6</value>
</data>
<data name="labelWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 6, 3, 0</value>
</data>
<data name="labelWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 13</value>
</data>
<data name="labelWarning.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;labelWarning.Name" xml:space="preserve">
<value>labelWarning</value>
</data>
<data name="&gt;&gt;labelWarning.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;labelWarning.Parent" xml:space="preserve">
<value>flowLayoutInfo</value>
</data>
<data name="&gt;&gt;labelWarning.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="flowLayoutInfo.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 119</value>
</data>
<data name="flowLayoutInfo.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 10, 3, 3</value>
</data>
<data name="flowLayoutInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>25, 25</value>
</data>
<data name="flowLayoutInfo.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.Name" xml:space="preserve">
<value>flowLayoutInfo</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="comboBoxNetwork.Location" type="System.Drawing.Point, System.Drawing">
<value>78, 85</value>
</data>
<data name="comboBoxNetwork.Size" type="System.Drawing.Size, System.Drawing">
<value>223, 21</value>
</data>
<data name="comboBoxNetwork.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;comboBoxNetwork.Name" xml:space="preserve">
<value>comboBoxNetwork</value>
</data>
<data name="&gt;&gt;comboBoxNetwork.Type" xml:space="preserve">
<value>XenAdmin.Controls.NetworkComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;comboBoxNetwork.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxNetwork.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>490, 318</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.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;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.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="labelTitle" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="CheckBoxEnableClustering" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="labelNetwork" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="flowLayoutInfo" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="comboBoxNetwork" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /&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>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>490, 318</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ClusteringEditPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -0,0 +1,381 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelTitle.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelTitle.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelTitle.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="labelTitle.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="labelTitle.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 3, 20</value>
</data>
<data name="labelTitle.Size" type="System.Drawing.Size, System.Drawing">
<value>484, 39</value>
</data>
<data name="labelTitle.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="labelTitle.Text" xml:space="preserve">
<value>Clustering allows you to create and use GFS2 storage repositories. Select whether you wish to enable clustering on this pool. When enabling clustering you need to provide a network which has an IP Address configured (the management interface or a secondary interface).</value>
</data>
<data name="&gt;&gt;labelTitle.Name" xml:space="preserve">
<value>labelTitle</value>
</data>
<data name="&gt;&gt;labelTitle.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelTitle.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelTitle.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="CheckBoxEnableClustering.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="CheckBoxEnableClustering.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="CheckBoxEnableClustering.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 62</value>
</data>
<data name="CheckBoxEnableClustering.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>7, 3, 3, 3</value>
</data>
<data name="CheckBoxEnableClustering.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 17</value>
</data>
<data name="CheckBoxEnableClustering.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="CheckBoxEnableClustering.Text" xml:space="preserve">
<value>&amp;Enable clustering</value>
</data>
<data name="&gt;&gt;CheckBoxEnableClustering.Name" xml:space="preserve">
<value>CheckBoxEnableClustering</value>
</data>
<data name="&gt;&gt;CheckBoxEnableClustering.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CheckBoxEnableClustering.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;CheckBoxEnableClustering.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="labelNetwork.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelNetwork.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelNetwork.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 87</value>
</data>
<data name="labelNetwork.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>22, 5, 3, 0</value>
</data>
<data name="labelNetwork.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 13</value>
</data>
<data name="labelNetwork.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelNetwork.Text" xml:space="preserve">
<value>&amp;Network:</value>
</data>
<data name="&gt;&gt;labelNetwork.Name" xml:space="preserve">
<value>labelNetwork</value>
</data>
<data name="&gt;&gt;labelNetwork.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;labelNetwork.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelNetwork.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="flowLayoutInfo.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="pictureBoxInfo.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxInfo.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 6</value>
</data>
<data name="pictureBoxInfo.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 6, 3, 3</value>
</data>
<data name="pictureBoxInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 16</value>
</data>
<data name="pictureBoxInfo.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="pictureBoxInfo.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;pictureBoxInfo.Name" xml:space="preserve">
<value>pictureBoxInfo</value>
</data>
<data name="&gt;&gt;pictureBoxInfo.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;pictureBoxInfo.Parent" xml:space="preserve">
<value>flowLayoutInfo</value>
</data>
<data name="&gt;&gt;pictureBoxInfo.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarning.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 6</value>
</data>
<data name="labelWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 6, 3, 0</value>
</data>
<data name="labelWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 13</value>
</data>
<data name="labelWarning.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;labelWarning.Name" xml:space="preserve">
<value>labelWarning</value>
</data>
<data name="&gt;&gt;labelWarning.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;labelWarning.Parent" xml:space="preserve">
<value>flowLayoutInfo</value>
</data>
<data name="&gt;&gt;labelWarning.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="flowLayoutInfo.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 119</value>
</data>
<data name="flowLayoutInfo.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 10, 3, 3</value>
</data>
<data name="flowLayoutInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>25, 25</value>
</data>
<data name="flowLayoutInfo.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.Name" xml:space="preserve">
<value>flowLayoutInfo</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="comboBoxNetwork.Location" type="System.Drawing.Point, System.Drawing">
<value>78, 85</value>
</data>
<data name="comboBoxNetwork.Size" type="System.Drawing.Size, System.Drawing">
<value>223, 21</value>
</data>
<data name="comboBoxNetwork.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;comboBoxNetwork.Name" xml:space="preserve">
<value>comboBoxNetwork</value>
</data>
<data name="&gt;&gt;comboBoxNetwork.Type" xml:space="preserve">
<value>XenAdmin.Controls.NetworkComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;comboBoxNetwork.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxNetwork.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>490, 318</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.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;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.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="labelTitle" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="CheckBoxEnableClustering" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="labelNetwork" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="flowLayoutInfo" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="comboBoxNetwork" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /&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>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>490, 318</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ClusteringEditPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -0,0 +1,381 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelTitle.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelTitle.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelTitle.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="labelTitle.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="labelTitle.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 3, 20</value>
</data>
<data name="labelTitle.Size" type="System.Drawing.Size, System.Drawing">
<value>484, 39</value>
</data>
<data name="labelTitle.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="labelTitle.Text" xml:space="preserve">
<value>Clustering allows you to create and use GFS2 storage repositories. Select whether you wish to enable clustering on this pool. When enabling clustering you need to provide a network which has an IP Address configured (the management interface or a secondary interface).</value>
</data>
<data name="&gt;&gt;labelTitle.Name" xml:space="preserve">
<value>labelTitle</value>
</data>
<data name="&gt;&gt;labelTitle.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelTitle.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelTitle.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="CheckBoxEnableClustering.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="CheckBoxEnableClustering.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="CheckBoxEnableClustering.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 62</value>
</data>
<data name="CheckBoxEnableClustering.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>7, 3, 3, 3</value>
</data>
<data name="CheckBoxEnableClustering.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 17</value>
</data>
<data name="CheckBoxEnableClustering.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="CheckBoxEnableClustering.Text" xml:space="preserve">
<value>&amp;Enable clustering</value>
</data>
<data name="&gt;&gt;CheckBoxEnableClustering.Name" xml:space="preserve">
<value>CheckBoxEnableClustering</value>
</data>
<data name="&gt;&gt;CheckBoxEnableClustering.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CheckBoxEnableClustering.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;CheckBoxEnableClustering.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="labelNetwork.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelNetwork.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelNetwork.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 87</value>
</data>
<data name="labelNetwork.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>22, 5, 3, 0</value>
</data>
<data name="labelNetwork.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 13</value>
</data>
<data name="labelNetwork.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelNetwork.Text" xml:space="preserve">
<value>&amp;Network:</value>
</data>
<data name="&gt;&gt;labelNetwork.Name" xml:space="preserve">
<value>labelNetwork</value>
</data>
<data name="&gt;&gt;labelNetwork.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;labelNetwork.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelNetwork.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="flowLayoutInfo.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="pictureBoxInfo.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxInfo.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 6</value>
</data>
<data name="pictureBoxInfo.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 6, 3, 3</value>
</data>
<data name="pictureBoxInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 16</value>
</data>
<data name="pictureBoxInfo.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="pictureBoxInfo.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;pictureBoxInfo.Name" xml:space="preserve">
<value>pictureBoxInfo</value>
</data>
<data name="&gt;&gt;pictureBoxInfo.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;pictureBoxInfo.Parent" xml:space="preserve">
<value>flowLayoutInfo</value>
</data>
<data name="&gt;&gt;pictureBoxInfo.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarning.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 6</value>
</data>
<data name="labelWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 6, 3, 0</value>
</data>
<data name="labelWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 13</value>
</data>
<data name="labelWarning.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;labelWarning.Name" xml:space="preserve">
<value>labelWarning</value>
</data>
<data name="&gt;&gt;labelWarning.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;labelWarning.Parent" xml:space="preserve">
<value>flowLayoutInfo</value>
</data>
<data name="&gt;&gt;labelWarning.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="flowLayoutInfo.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 119</value>
</data>
<data name="flowLayoutInfo.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 10, 3, 3</value>
</data>
<data name="flowLayoutInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>25, 25</value>
</data>
<data name="flowLayoutInfo.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.Name" xml:space="preserve">
<value>flowLayoutInfo</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="comboBoxNetwork.Location" type="System.Drawing.Point, System.Drawing">
<value>78, 85</value>
</data>
<data name="comboBoxNetwork.Size" type="System.Drawing.Size, System.Drawing">
<value>223, 21</value>
</data>
<data name="comboBoxNetwork.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;comboBoxNetwork.Name" xml:space="preserve">
<value>comboBoxNetwork</value>
</data>
<data name="&gt;&gt;comboBoxNetwork.Type" xml:space="preserve">
<value>XenAdmin.Controls.NetworkComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;comboBoxNetwork.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxNetwork.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>490, 318</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.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;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.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="labelTitle" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="CheckBoxEnableClustering" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="labelNetwork" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="flowLayoutInfo" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="comboBoxNetwork" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /&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>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>490, 318</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ClusteringEditPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -28,6 +28,7 @@
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ChooseSrProvisioningPage));
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.label1 = new System.Windows.Forms.Label();
this.radioButtonGfs2 = new System.Windows.Forms.RadioButton();
@ -36,131 +37,88 @@
this.label3 = new System.Windows.Forms.Label();
this.labelWarning = new System.Windows.Forms.Label();
this.pictureBoxInfo = new System.Windows.Forms.PictureBox();
this.flowLayoutInfo = new System.Windows.Forms.FlowLayoutPanel();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxInfo)).BeginInit();
this.flowLayoutInfo.SuspendLayout();
this.SuspendLayout();
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.radioButtonGfs2, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.labelGFS2, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.radioButtonLvm, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.label3, 0, 4);
this.tableLayoutPanel1.Controls.Add(this.labelWarning, 1, 5);
this.tableLayoutPanel1.Controls.Add(this.pictureBoxInfo, 0, 5);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(3, 10, 3, 3);
this.tableLayoutPanel1.Controls.Add(this.flowLayoutInfo, 0, 5);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 6;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(540, 336);
this.tableLayoutPanel1.TabIndex = 0;
//
// label1
//
this.label1.AutoSize = true;
resources.ApplyResources(this.label1, "label1");
this.tableLayoutPanel1.SetColumnSpan(this.label1, 2);
this.label1.Font = new System.Drawing.Font("Segoe UI", 9F);
this.label1.Location = new System.Drawing.Point(3, 3);
this.label1.Margin = new System.Windows.Forms.Padding(3, 3, 3, 10);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(340, 15);
this.label1.TabIndex = 0;
this.label1.Text = "Select the provisioning method for the new Storage Repository.";
//
// radioButtonGfs2
//
this.radioButtonGfs2.AutoSize = true;
resources.ApplyResources(this.radioButtonGfs2, "radioButtonGfs2");
this.radioButtonGfs2.Checked = true;
this.tableLayoutPanel1.SetColumnSpan(this.radioButtonGfs2, 2);
this.radioButtonGfs2.Font = new System.Drawing.Font("Segoe UI", 9F);
this.radioButtonGfs2.Location = new System.Drawing.Point(3, 34);
this.radioButtonGfs2.Margin = new System.Windows.Forms.Padding(3, 6, 3, 3);
this.radioButtonGfs2.Name = "radioButtonGfs2";
this.radioButtonGfs2.Size = new System.Drawing.Size(155, 19);
this.radioButtonGfs2.TabIndex = 1;
this.radioButtonGfs2.TabStop = true;
this.radioButtonGfs2.Text = "Thin provisioning (GFS2)";
this.radioButtonGfs2.UseVisualStyleBackColor = true;
//
// labelGFS2
//
this.labelGFS2.AutoSize = true;
resources.ApplyResources(this.labelGFS2, "labelGFS2");
this.tableLayoutPanel1.SetColumnSpan(this.labelGFS2, 2);
this.labelGFS2.Font = new System.Drawing.Font("Segoe UI", 9F);
this.labelGFS2.Location = new System.Drawing.Point(20, 59);
this.labelGFS2.Margin = new System.Windows.Forms.Padding(20, 3, 3, 3);
this.labelGFS2.Name = "labelGFS2";
this.labelGFS2.Size = new System.Drawing.Size(511, 15);
this.labelGFS2.TabIndex = 2;
this.labelGFS2.Text = "The SR will be formatted with the GFS2 cluster file system for hosting thinly pro" +
"visioned images.";
//
// radioButtonLvm
//
this.radioButtonLvm.AutoSize = true;
resources.ApplyResources(this.radioButtonLvm, "radioButtonLvm");
this.tableLayoutPanel1.SetColumnSpan(this.radioButtonLvm, 2);
this.radioButtonLvm.Font = new System.Drawing.Font("Segoe UI", 9F);
this.radioButtonLvm.Location = new System.Drawing.Point(3, 83);
this.radioButtonLvm.Margin = new System.Windows.Forms.Padding(3, 6, 3, 3);
this.radioButtonLvm.Name = "radioButtonLvm";
this.radioButtonLvm.Size = new System.Drawing.Size(147, 19);
this.radioButtonLvm.TabIndex = 3;
this.radioButtonLvm.Text = "Full provisioning (LVM)";
this.radioButtonLvm.UseVisualStyleBackColor = true;
//
// label3
//
this.label3.AutoSize = true;
resources.ApplyResources(this.label3, "label3");
this.tableLayoutPanel1.SetColumnSpan(this.label3, 2);
this.label3.Font = new System.Drawing.Font("Segoe UI", 9F);
this.label3.Location = new System.Drawing.Point(20, 108);
this.label3.Margin = new System.Windows.Forms.Padding(20, 3, 3, 3);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(400, 15);
this.label3.TabIndex = 4;
this.label3.Text = "This SR will be configured to host fully provisioned virtual disks using LVM.";
//
// labelWarning
//
this.labelWarning.AutoSize = true;
this.labelWarning.Font = new System.Drawing.Font("Segoe UI", 9F);
this.labelWarning.Location = new System.Drawing.Point(25, 141);
this.labelWarning.Margin = new System.Windows.Forms.Padding(0, 15, 3, 0);
resources.ApplyResources(this.labelWarning, "labelWarning");
this.labelWarning.Name = "labelWarning";
this.labelWarning.Size = new System.Drawing.Size(0, 15);
this.labelWarning.TabIndex = 6;
//
// pictureBoxInfo
//
this.pictureBoxInfo.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16;
this.pictureBoxInfo.Location = new System.Drawing.Point(3, 141);
this.pictureBoxInfo.Margin = new System.Windows.Forms.Padding(3, 15, 3, 3);
resources.ApplyResources(this.pictureBoxInfo, "pictureBoxInfo");
this.pictureBoxInfo.Name = "pictureBoxInfo";
this.pictureBoxInfo.Size = new System.Drawing.Size(19, 20);
this.pictureBoxInfo.TabIndex = 5;
this.pictureBoxInfo.TabStop = false;
//
// flowLayoutInfo
//
resources.ApplyResources(this.flowLayoutInfo, "flowLayoutInfo");
this.tableLayoutPanel1.SetColumnSpan(this.flowLayoutInfo, 2);
this.flowLayoutInfo.Controls.Add(this.pictureBoxInfo);
this.flowLayoutInfo.Controls.Add(this.labelWarning);
this.flowLayoutInfo.Name = "flowLayoutInfo";
//
// ChooseSrProvisioningPage
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.tableLayoutPanel1);
this.Name = "ChooseSrProvisioningPage";
this.Size = new System.Drawing.Size(540, 336);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxInfo)).EndInit();
this.flowLayoutInfo.ResumeLayout(false);
this.flowLayoutInfo.PerformLayout();
this.ResumeLayout(false);
}
@ -175,5 +133,6 @@
private System.Windows.Forms.Label label3;
private System.Windows.Forms.PictureBox pictureBoxInfo;
private System.Windows.Forms.Label labelWarning;
private System.Windows.Forms.FlowLayoutPanel flowLayoutInfo;
}
}

View File

@ -29,14 +29,7 @@
* SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using XenAdmin.Controls;
using XenAdmin.Core;
using XenAPI;
@ -74,7 +67,7 @@ namespace XenAdmin.Wizards.NewSRWizard_Pages
var gfs2Allowed = !Helpers.FeatureForbidden(Connection, Host.RestrictGfs2) && Connection.Cache.Cluster_hosts.Any(cluster => cluster.host.opaque_ref == master.opaque_ref && cluster.enabled);
radioButtonGfs2.Enabled = labelGFS2.Enabled = gfs2Allowed;
pictureBoxInfo.Visible = labelWarning.Visible = radioButtonLvm.Checked = !gfs2Allowed;
flowLayoutInfo.Visible = radioButtonLvm.Checked = !gfs2Allowed;
labelWarning.Text = Helpers.FeatureForbidden(Connection, Host.RestrictGfs2)
? Messages.GFS2_INCORRECT_POOL_LICENSE
: Messages.GFS2_REQUIRES_CLUSTERING_ENABLED;

View File

@ -117,4 +117,301 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="label1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 10</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>340, 15</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Select the provisioning method for the new Storage Repository.</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>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="radioButtonGfs2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="radioButtonGfs2.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="radioButtonGfs2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 34</value>
</data>
<data name="radioButtonGfs2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 6, 3, 3</value>
</data>
<data name="radioButtonGfs2.Size" type="System.Drawing.Size, System.Drawing">
<value>155, 19</value>
</data>
<data name="radioButtonGfs2.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="radioButtonGfs2.Text" xml:space="preserve">
<value>Thin provisioning (GFS2)</value>
</data>
<data name="&gt;&gt;radioButtonGfs2.Name" xml:space="preserve">
<value>radioButtonGfs2</value>
</data>
<data name="&gt;&gt;radioButtonGfs2.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;radioButtonGfs2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;radioButtonGfs2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="labelGFS2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelGFS2.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelGFS2.Location" type="System.Drawing.Point, System.Drawing">
<value>20, 59</value>
</data>
<data name="labelGFS2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>20, 3, 3, 3</value>
</data>
<data name="labelGFS2.Size" type="System.Drawing.Size, System.Drawing">
<value>511, 15</value>
</data>
<data name="labelGFS2.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelGFS2.Text" xml:space="preserve">
<value>The SR will be formatted with the GFS2 cluster file system for hosting thinly provisioned images.</value>
</data>
<data name="&gt;&gt;labelGFS2.Name" xml:space="preserve">
<value>labelGFS2</value>
</data>
<data name="&gt;&gt;labelGFS2.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;labelGFS2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelGFS2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="radioButtonLvm.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="radioButtonLvm.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="radioButtonLvm.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 83</value>
</data>
<data name="radioButtonLvm.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 6, 3, 3</value>
</data>
<data name="radioButtonLvm.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 19</value>
</data>
<data name="radioButtonLvm.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="radioButtonLvm.Text" xml:space="preserve">
<value>Full provisioning (LVM)</value>
</data>
<data name="&gt;&gt;radioButtonLvm.Name" xml:space="preserve">
<value>radioButtonLvm</value>
</data>
<data name="&gt;&gt;radioButtonLvm.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;radioButtonLvm.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;radioButtonLvm.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label3.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>20, 108</value>
</data>
<data name="label3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>20, 3, 3, 3</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>400, 15</value>
</data>
<data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>This SR will be configured to host fully provisioned virtual disks using LVM.</value>
</data>
<data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value>
</data>
<data name="&gt;&gt;label3.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;label3.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="flowLayoutInfo.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="pictureBoxInfo.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 15</value>
</data>
<data name="pictureBoxInfo.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 15, 3, 3</value>
</data>
<data name="pictureBoxInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>19, 20</value>
</data>
<data name="pictureBoxInfo.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;pictureBoxInfo.Name" xml:space="preserve">
<value>pictureBoxInfo</value>
</data>
<data name="&gt;&gt;pictureBoxInfo.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;pictureBoxInfo.Parent" xml:space="preserve">
<value>flowLayoutInfo</value>
</data>
<data name="&gt;&gt;pictureBoxInfo.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarning.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>25, 15</value>
</data>
<data name="labelWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 15, 3, 0</value>
</data>
<data name="labelWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 15</value>
</data>
<data name="labelWarning.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;labelWarning.Name" xml:space="preserve">
<value>labelWarning</value>
</data>
<data name="&gt;&gt;labelWarning.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;labelWarning.Parent" xml:space="preserve">
<value>flowLayoutInfo</value>
</data>
<data name="&gt;&gt;labelWarning.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="flowLayoutInfo.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 129</value>
</data>
<data name="flowLayoutInfo.Size" type="System.Drawing.Size, System.Drawing">
<value>28, 38</value>
</data>
<data name="flowLayoutInfo.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.Name" xml:space="preserve">
<value>flowLayoutInfo</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutInfo.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 10, 3, 3</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>540, 336</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.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;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.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="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="radioButtonGfs2" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="labelGFS2" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="radioButtonLvm" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="label3" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="flowLayoutInfo" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /&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,Percent,100,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>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>96, 96</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>540, 336</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ChooseSrProvisioningPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Controls.XenTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -345,6 +345,12 @@
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="SettingsPanels\ClusteringEditPage.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="SettingsPanels\ClusteringEditPage.Designer.cs">
<DependentUpon>ClusteringEditPage.cs</DependentUpon>
</Compile>
<Compile Include="SettingsPanels\LivePatchingEditPage.cs">
<SubType>UserControl</SubType>
</Compile>
@ -1814,6 +1820,15 @@
<DependentUpon>TabPageCredentialsDialog.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="SettingsPanels\ClusteringEditPage.ja.resx">
<DependentUpon>ClusteringEditPage.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SettingsPanels\ClusteringEditPage.resx">
<DependentUpon>ClusteringEditPage.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SettingsPanels\ClusteringEditPage.zh-CN.resx">
<DependentUpon>ClusteringEditPage.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SettingsPanels\HostPowerONPages\HostPowerONEditPage.resx">
<SubType>Designer</SubType>
<DependentUpon>HostPowerONEditPage.cs</DependentUpon>
@ -2073,9 +2088,15 @@
<SubType>Designer</SubType>
<DependentUpon>RBACWarningPage.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Wizards\NewSRWizard_Pages\ChooseSrProvisioningPage.ja.resx">
<DependentUpon>ChooseSrProvisioningPage.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Wizards\NewSRWizard_Pages\ChooseSrProvisioningPage.resx">
<DependentUpon>ChooseSrProvisioningPage.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Wizards\NewSRWizard_Pages\ChooseSrProvisioningPage.zh-CN.resx">
<DependentUpon>ChooseSrProvisioningPage.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Wizards\NewSRWizard_Pages\Frontends\CIFSFrontend.ja.resx">
<DependentUpon>CIFSFrontend.cs</DependentUpon>
</EmbeddedResource>

View File

@ -0,0 +1,52 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using XenAPI;
namespace XenAdmin.Actions
{
public class DisableClusteringAction : AsyncAction
{
public DisableClusteringAction(Pool pool)
: base(pool.Connection, Messages.DISABLE_CLUSTERING_ON_POOL,
string.Format(Messages.DISABLING_CLUSTERING_ON_POOL, pool.Name()), true)
{
#region RBAC Dependencies
//ApiMethodsToRoleCheck.Add("pif.set_disallow_unplug");
#endregion
}
protected override void Run()
{
}
}
}

View File

@ -0,0 +1,62 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using XenAPI;
namespace XenAdmin.Actions
{
public class EnableClusteringAction : AsyncAction
{
private XenAPI.Network network;
public EnableClusteringAction(Pool pool, XenAPI.Network network)
: base(pool.Connection, Messages.ENABLE_CLUSTERING_ON_POOL,
string.Format(Messages.ENABLING_CLUSTERING_ON_POOL, pool.Name()), true)
{
this.network = network;
#region RBAC Dependencies
ApiMethodsToRoleCheck.Add("cluster.pool_create");
ApiMethodsToRoleCheck.Add("pif.set_disallow_unplug");
#endregion
}
protected override void Run()
{
foreach (var pif in Connection.ResolveAll(network.PIFs))
{
PIF.set_disallow_unplug(Session, pif.opaque_ref, true);
}
Cluster.pool_create(Session, Pool.opaque_ref, "corosync", network.opaque_ref);
Description = string.Format(Messages.ENABLED_CLUSTERING_ON_POOL, Pool.Name());
}
}
}

View File

@ -7001,6 +7001,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Clustering.
/// </summary>
public static string CLUSTERING {
get {
return ResourceManager.GetString("CLUSTERING", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to &amp;Collapse Children.
/// </summary>
@ -11060,6 +11069,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Disable clustering..
/// </summary>
public static string DISABLE_CLUSTERING_ON_POOL {
get {
return ResourceManager.GetString("DISABLE_CLUSTERING_ON_POOL", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Disable HA.
/// </summary>
@ -11186,6 +11204,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Disabling clustering on {0}..
/// </summary>
public static string DISABLING_CLUSTERING_ON_POOL {
get {
return ResourceManager.GetString("DISABLING_CLUSTERING_ON_POOL", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Disabling HA.
/// </summary>
@ -13368,6 +13395,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Enable clustering..
/// </summary>
public static string ENABLE_CLUSTERING_ON_POOL {
get {
return ResourceManager.GetString("ENABLE_CLUSTERING_ON_POOL", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to &amp;Enable HA....
/// </summary>
@ -13440,6 +13476,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Enabled clustering on {0}..
/// </summary>
public static string ENABLED_CLUSTERING_ON_POOL {
get {
return ResourceManager.GetString("ENABLED_CLUSTERING_ON_POOL", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Snapshot schedule &apos;{0}&apos; enabled..
/// </summary>
@ -13476,6 +13521,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Enabling clustering on {0}..
/// </summary>
public static string ENABLING_CLUSTERING_ON_POOL {
get {
return ResourceManager.GetString("ENABLING_CLUSTERING_ON_POOL", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Enabling HA.
/// </summary>
@ -15844,6 +15898,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to You must disable HA before clustering can be enabled..
/// </summary>
public static string GFS2_HA_ENABLED {
get {
return ResourceManager.GetString("GFS2_HA_ENABLED", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Your pool license does not allow GFS2..
/// </summary>
@ -15853,6 +15916,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Clustering cannot be enabled because there are no suitable networks..
/// </summary>
public static string GFS2_NO_NETWORK {
get {
return ResourceManager.GetString("GFS2_NO_NETWORK", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to GFS2 requires clustering to be enabled on the pool..
/// </summary>
@ -15862,6 +15934,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Clustering cannot be disabled because there are GFS2 storage repositories attached to this pool..
/// </summary>
public static string GFS2_SR_ATTACHED {
get {
return ResourceManager.GetString("GFS2_SR_ATTACHED", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to GPU.
/// </summary>

View File

@ -2540,6 +2540,9 @@ Do you want to assign it to the schedule '{2}' instead?</value>
<data name="CLOSE_WIZARD_CLICK_FINISH" xml:space="preserve">
<value>To close this wizard, click Finish</value>
</data>
<data name="CLUSTERING" xml:space="preserve">
<value>Clustering</value>
</data>
<data name="COLLAPSE_CHILDREN" xml:space="preserve">
<value>&amp;Collapse Children</value>
</data>
@ -3958,6 +3961,9 @@ This will also delete its subfolders.</value>
<data name="DISABLED_VMSS" xml:space="preserve">
<value>Snapshot schedule '{0}' disabled.</value>
</data>
<data name="DISABLE_CLUSTERING_ON_POOL" xml:space="preserve">
<value>Disable clustering.</value>
</data>
<data name="DISABLE_HA" xml:space="preserve">
<value>Disable HA</value>
</data>
@ -3991,6 +3997,9 @@ This will also delete its subfolders.</value>
<data name="DISABLING_AD_ON" xml:space="preserve">
<value>Disabling Active Directory Authentication on pool '{0}'</value>
</data>
<data name="DISABLING_CLUSTERING_ON_POOL" xml:space="preserve">
<value>Disabling clustering on {0}.</value>
</data>
<data name="DISABLING_HA" xml:space="preserve">
<value>Disabling HA</value>
</data>
@ -4730,9 +4739,15 @@ Would you like to eject these ISOs before continuing?</value>
<data name="ENABLED" xml:space="preserve">
<value>Enabled</value>
</data>
<data name="ENABLED_CLUSTERING_ON_POOL" xml:space="preserve">
<value>Enabled clustering on {0}.</value>
</data>
<data name="ENABLED_VMSS" xml:space="preserve">
<value>Snapshot schedule '{0}' enabled.</value>
</data>
<data name="ENABLE_CLUSTERING_ON_POOL" xml:space="preserve">
<value>Enable clustering.</value>
</data>
<data name="ENABLE_HA_ELLIPSIS" xml:space="preserve">
<value>&amp;Enable HA...</value>
</data>
@ -4763,6 +4778,9 @@ Would you like to eject these ISOs before continuing?</value>
<data name="ENABLING_AD_ON" xml:space="preserve">
<value>Enabling Active Directory Authentication on pool '{0}'</value>
</data>
<data name="ENABLING_CLUSTERING_ON_POOL" xml:space="preserve">
<value>Enabling clustering on {0}.</value>
</data>
<data name="ENABLING_HA" xml:space="preserve">
<value>Enabling HA</value>
</data>
@ -5553,12 +5571,21 @@ Would you like to eject these ISOs before continuing?</value>
<data name="GETPASSWORD" xml:space="preserve">
<value>Get Password</value>
</data>
<data name="GFS2_HA_ENABLED" xml:space="preserve">
<value>You must disable HA before clustering can be enabled.</value>
</data>
<data name="GFS2_INCORRECT_POOL_LICENSE" xml:space="preserve">
<value>Your pool license does not allow GFS2.</value>
</data>
<data name="GFS2_NO_NETWORK" xml:space="preserve">
<value>Clustering cannot be enabled because there are no suitable networks.</value>
</data>
<data name="GFS2_REQUIRES_CLUSTERING_ENABLED" xml:space="preserve">
<value>GFS2 requires clustering to be enabled on the pool.</value>
</data>
<data name="GFS2_SR_ATTACHED" xml:space="preserve">
<value>Clustering cannot be disabled because there are GFS2 storage repositories attached to this pool.</value>
</data>
<data name="GPU" xml:space="preserve">
<value>GPU</value>
</data>

View File

@ -98,6 +98,8 @@
<Compile Include="Actions\ParallelAction.cs" />
<Compile Include="Actions\Pool\AddHostToPoolAction.cs" />
<Compile Include="Actions\Pool\CreatePoolAction.cs" />
<Compile Include="Actions\Pool\DisableClusteringAction.cs" />
<Compile Include="Actions\Pool\EnableClusteringAction.cs" />
<Compile Include="Actions\Pool\PoolAction.cs" />
<Compile Include="Actions\Pool\SetGpuPlacementPolicyAction.cs" />
<Compile Include="Actions\Pool\SetSslLegacyAction.cs" />