diff --git a/XenAdmin/Commands/ChangeControlDomainMemoryCommand.cs b/XenAdmin/Commands/ChangeControlDomainMemoryCommand.cs
new file mode 100644
index 000000000..b2a5b520d
--- /dev/null
+++ b/XenAdmin/Commands/ChangeControlDomainMemoryCommand.cs
@@ -0,0 +1,98 @@
+/* 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;
+using System.Collections.Generic;
+using System.Text;
+using XenAPI;
+using XenAdmin.Core;
+using XenAdmin.Network;
+using XenAdmin.Wizards.NewVMWizard;
+using XenAdmin.Properties;
+using System.Drawing;
+using System.Collections.ObjectModel;
+using System.Windows.Forms;
+using XenAdmin.Dialogs;
+using XenAdmin.Actions;
+
+
+namespace XenAdmin.Commands
+{
+ ///
+ /// Launches the Control Domain Memory dialog.
+ ///
+ internal class ChangeControlDomainMemoryCommand : Command
+ {
+ ///
+ /// Initializes a new instance of this Command. The parameter-less constructor is required if
+ /// this Command is to be attached to a ToolStrip menu item or button. It should not be used in any other scenario.
+ ///
+ public ChangeControlDomainMemoryCommand()
+ {
+ }
+
+ public ChangeControlDomainMemoryCommand(IMainWindow mainWindow, IEnumerable selection)
+ : base(mainWindow, selection)
+ {
+ }
+
+
+ protected override void ExecuteCore(SelectedItemCollection selection)
+ {
+ Host host = selection[0].HostAncestor;
+ using (var dlg = new ControlDomainMemoryDialog(host))
+ dlg.ShowDialog(Program.MainWindow);
+ }
+
+ protected override bool ConfirmationRequired
+ {
+ get { return false; }
+ }
+
+ private bool CanExecute(Host host)
+ {
+ return host != null && host.IsLive && Helpers.ElyOrGreater(host);
+ }
+
+ protected override bool CanExecuteCore(SelectedItemCollection selection)
+ {
+ return selection.ContainsOneItemOfType() && selection.AtLeastOneXenObjectCan(CanExecute);
+ }
+
+ public override string MenuText
+ {
+ get
+ {
+ return Messages.HOST_MENU_CONTROL_DOMAIN_MEMORY;
+ }
+ }
+ }
+}
diff --git a/XenAdmin/Controls/Ballooning/BallooningColors.cs b/XenAdmin/Controls/Ballooning/BallooningColors.cs
index 4e9a1d187..0d418f9c7 100644
--- a/XenAdmin/Controls/Ballooning/BallooningColors.cs
+++ b/XenAdmin/Controls/Ballooning/BallooningColors.cs
@@ -39,7 +39,8 @@ namespace XenAdmin.Controls.Ballooning
public static Color VMShinyBar_Unused = Color.Black;
public static Color VMShinyBar_Text = Color.White;
- public static Color HostShinyBar_Control = Color.DimGray;
+ public static Color HostShinyBar_Xen = Color.DarkGray;
+ public static Color HostShinyBar_ControlDomain = Color.DimGray;
public static Color[] HostShinyBar_VMs = { Color.MidnightBlue, Color.SteelBlue };
public static Color HostShinyBar_Unused = Color.Black;
public static Color HostShinyBar_Text = Color.White;
diff --git a/XenAdmin/Controls/Ballooning/HostMemoryControls.Designer.cs b/XenAdmin/Controls/Ballooning/HostMemoryControls.Designer.cs
index 2d6773c86..da83dcfb8 100644
--- a/XenAdmin/Controls/Ballooning/HostMemoryControls.Designer.cs
+++ b/XenAdmin/Controls/Ballooning/HostMemoryControls.Designer.cs
@@ -39,9 +39,10 @@ namespace XenAdmin.Controls.Ballooning
this.valueTotDynMax = new System.Windows.Forms.Label();
this.unitsTotal = new System.Windows.Forms.Label();
this.unitsUsed = new System.Windows.Forms.Label();
- this.unitsAvail = new System.Windows.Forms.Label();
this.unitsTotDynMax = new System.Windows.Forms.Label();
this.labelOvercommit = new System.Windows.Forms.Label();
+ this.labelControlDomain = new System.Windows.Forms.Label();
+ this.valueControlDomain = new System.Windows.Forms.LinkLabel();
this.hostShinyBar = new XenAdmin.Controls.Ballooning.HostShinyBar();
this.SuspendLayout();
//
@@ -95,11 +96,6 @@ namespace XenAdmin.Controls.Ballooning
resources.ApplyResources(this.unitsUsed, "unitsUsed");
this.unitsUsed.Name = "unitsUsed";
//
- // unitsAvail
- //
- resources.ApplyResources(this.unitsAvail, "unitsAvail");
- this.unitsAvail.Name = "unitsAvail";
- //
// unitsTotDynMax
//
resources.ApplyResources(this.unitsTotDynMax, "unitsTotDynMax");
@@ -110,6 +106,18 @@ namespace XenAdmin.Controls.Ballooning
resources.ApplyResources(this.labelOvercommit, "labelOvercommit");
this.labelOvercommit.Name = "labelOvercommit";
//
+ // labelControlDomain
+ //
+ resources.ApplyResources(this.labelControlDomain, "labelControlDomain");
+ this.labelControlDomain.Name = "labelControlDomain";
+ //
+ // valueControlDomain
+ //
+ resources.ApplyResources(this.valueControlDomain, "valueControlDomain");
+ this.valueControlDomain.DisabledLinkColor = System.Drawing.SystemColors.ControlText;
+ this.valueControlDomain.Name = "valueControlDomain";
+ this.valueControlDomain.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.valueControlDomain_LinkClicked);
+ //
// hostShinyBar
//
resources.ApplyResources(this.hostShinyBar, "hostShinyBar");
@@ -119,9 +127,10 @@ namespace XenAdmin.Controls.Ballooning
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
+ this.Controls.Add(this.valueControlDomain);
+ this.Controls.Add(this.labelControlDomain);
this.Controls.Add(this.labelOvercommit);
this.Controls.Add(this.unitsTotDynMax);
- this.Controls.Add(this.unitsAvail);
this.Controls.Add(this.unitsUsed);
this.Controls.Add(this.unitsTotal);
this.Controls.Add(this.valueTotDynMax);
@@ -152,8 +161,9 @@ namespace XenAdmin.Controls.Ballooning
private System.Windows.Forms.Label valueTotDynMax;
private System.Windows.Forms.Label unitsTotal;
private System.Windows.Forms.Label unitsUsed;
- private System.Windows.Forms.Label unitsAvail;
private System.Windows.Forms.Label unitsTotDynMax;
private System.Windows.Forms.Label labelOvercommit;
+ private System.Windows.Forms.Label labelControlDomain;
+ private System.Windows.Forms.LinkLabel valueControlDomain;
}
}
diff --git a/XenAdmin/Controls/Ballooning/HostMemoryControls.cs b/XenAdmin/Controls/Ballooning/HostMemoryControls.cs
index abe881405..cd22442df 100644
--- a/XenAdmin/Controls/Ballooning/HostMemoryControls.cs
+++ b/XenAdmin/Controls/Ballooning/HostMemoryControls.cs
@@ -37,6 +37,8 @@ using System.Data;
using System.Text;
using System.Windows.Forms;
using XenAPI;
+using XenAdmin.Dialogs;
+using XenAdmin.Core;
namespace XenAdmin.Controls.Ballooning
@@ -67,6 +69,16 @@ namespace XenAdmin.Controls.Ballooning
if (metrics != null)
metrics.PropertyChanged += vm_metrics_PropertyChanged;
}
+ if (Helpers.ElyOrGreater(_host))
+ {
+ valueControlDomain.LinkBehavior = LinkBehavior.AlwaysUnderline;
+ valueControlDomain.Links[0].Enabled = true;
+ }
+ else
+ {
+ valueControlDomain.LinkBehavior = LinkBehavior.NeverUnderline;
+ valueControlDomain.Links[0].Enabled = false;
+ }
}
}
@@ -81,13 +93,14 @@ namespace XenAdmin.Controls.Ballooning
long xen_memory = host.xen_memory_calc;
long avail = host.memory_available_calc;
long tot_dyn_max = host.tot_dyn_max + xen_memory;
+ long dom0 = host.dom0_memory;
long overcommit = total > 0
? (long)Math.Round((double)tot_dyn_max / (double)total * 100.0)
: 0;
// Initialize the shiny bar
- hostShinyBar.Initialize(host, xen_memory);
+ hostShinyBar.Initialize(host, xen_memory, dom0);
// Set the text values
valueTotal.Text = Util.MemorySizeStringSuitableUnits(total, true);
@@ -95,6 +108,7 @@ namespace XenAdmin.Controls.Ballooning
valueAvail.Text = Util.MemorySizeStringSuitableUnits(avail, true);
valueTotDynMax.Text = Util.MemorySizeStringSuitableUnits(tot_dyn_max, true);
labelOvercommit.Text = string.Format(Messages.OVERCOMMIT, overcommit);
+ valueControlDomain.Text = Util.MemorySizeStringSuitableUnits(dom0, true);
}
void vm_PropertyChanged(object sender, PropertyChangedEventArgs e)
@@ -114,5 +128,11 @@ namespace XenAdmin.Controls.Ballooning
if (e.PropertyName == "memory_actual")
this.Refresh();
}
+
+ private void valueControlDomain_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ using (var dlg = new ControlDomainMemoryDialog(host))
+ dlg.ShowDialog(Program.MainWindow);
+ }
}
}
diff --git a/XenAdmin/Controls/Ballooning/HostMemoryControls.resx b/XenAdmin/Controls/Ballooning/HostMemoryControls.resx
index ce2753b45..392e8bc7a 100644
--- a/XenAdmin/Controls/Ballooning/HostMemoryControls.resx
+++ b/XenAdmin/Controls/Ballooning/HostMemoryControls.resx
@@ -132,7 +132,7 @@
0, 0, 0, 0
- 111, 18
+ 123, 18
@@ -154,7 +154,7 @@
$this
- 12
+ 13
Top, Right
@@ -169,7 +169,7 @@
0, 0, 0, 0
- 111, 18
+ 123, 18
2
@@ -190,7 +190,7 @@
$this
- 11
+ 12
Top, Right
@@ -199,13 +199,13 @@
NoControl
- 490, 36
+ 490, 54
0, 0, 0, 0
- 111, 18
+ 123, 18
3
@@ -226,7 +226,7 @@
$this
- 10
+ 11
Top, Right
@@ -235,13 +235,13 @@
NoControl
- 490, 54
+ 490, 72
0, 0, 0, 0
- 111, 18
+ 123, 18
4
@@ -262,7 +262,7 @@
$this
- 9
+ 10
Top, Right
@@ -271,7 +271,7 @@
NoControl
- 605, 0
+ 646, 0
0, 0, 0, 0
@@ -295,7 +295,7 @@
$this
- 8
+ 9
Top, Right
@@ -304,7 +304,7 @@
NoControl
- 605, 18
+ 646, 18
0, 0, 0, 0
@@ -328,7 +328,7 @@
$this
- 7
+ 8
Top, Right
@@ -337,7 +337,7 @@
NoControl
- 605, 36
+ 646, 54
0, 0, 0, 0
@@ -361,7 +361,7 @@
$this
- 6
+ 7
Top, Right
@@ -370,7 +370,7 @@
NoControl
- 605, 54
+ 646, 72
0, 0, 0, 0
@@ -394,28 +394,19 @@
$this
- 5
-
-
- Top, Right
+ 6
NoControl
- 674, 0
-
-
- 0, 0, 0, 0
+ 0, 0
- 26, 18
+ 100, 23
- 11
-
-
- MiddleCenter
+ 21
unitsTotal
@@ -427,28 +418,19 @@
$this
- 4
-
-
- Top, Right
+ 5
NoControl
- 674, 18
-
-
- 0, 0, 0, 0
+ 0, 0
- 26, 18
+ 100, 23
- 12
-
-
- MiddleCenter
+ 20
unitsUsed
@@ -460,61 +442,19 @@
$this
- 3
-
-
- Top, Right
-
-
- NoControl
-
-
- 674, 36
-
-
- 0, 0, 0, 0
-
-
- 26, 18
-
-
- 13
-
-
- MiddleCenter
-
-
- unitsAvail
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 2
-
-
- Top, Right
+ 4
NoControl
- 674, 54
-
-
- 0, 0, 0, 0
+ 0, 0
- 26, 18
+ 100, 23
- 14
-
-
- MiddleCenter
+ 19
unitsTotDynMax
@@ -526,7 +466,7 @@
$this
- 1
+ 3
Top, Right
@@ -535,7 +475,7 @@
NoControl
- 490, 72
+ 490, 90
0, 0, 0, 0
@@ -559,6 +499,72 @@
$this
+ 2
+
+
+ Top, Right
+
+
+ NoControl
+
+
+ 490, 36
+
+
+ 0, 0, 0, 0
+
+
+ 143, 18
+
+
+ 16
+
+
+ Control domain memory
+
+
+ MiddleLeft
+
+
+ labelControlDomain
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 1
+
+
+ Top, Right
+
+
+ NoControl
+
+
+ 646, 36
+
+
+ 54, 18
+
+
+ 18
+
+
+ MiddleRight
+
+
+ valueControlDomain
+
+
+ System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
0
@@ -571,7 +577,7 @@
0, 0, 0, 0
- 420, 90
+ 420, 111
0
@@ -586,7 +592,7 @@
$this
- 13
+ 14
True
@@ -601,7 +607,7 @@
700, 90
- 700, 90
+ 700, 111
HostMemoryControls
diff --git a/XenAdmin/Controls/Ballooning/HostMemoryRow.Designer.cs b/XenAdmin/Controls/Ballooning/HostMemoryRow.Designer.cs
index c71b21077..1154d3cbf 100644
--- a/XenAdmin/Controls/Ballooning/HostMemoryRow.Designer.cs
+++ b/XenAdmin/Controls/Ballooning/HostMemoryRow.Designer.cs
@@ -47,14 +47,12 @@ namespace XenAdmin.Controls.Ballooning
//
resources.ApplyResources(this.hostMemoryControls, "hostMemoryControls");
this.hostMemoryControls.BackColor = System.Drawing.Color.Transparent;
- this.hostMemoryControls.MinimumSize = new System.Drawing.Size(700, 90);
this.hostMemoryControls.Name = "hostMemoryControls";
//
// memoryRowLabel
//
resources.ApplyResources(this.memoryRowLabel, "memoryRowLabel");
this.memoryRowLabel.BackColor = System.Drawing.Color.Transparent;
- this.memoryRowLabel.MinimumSize = new System.Drawing.Size(0, 26);
this.memoryRowLabel.Name = "memoryRowLabel";
//
// HostMemoryRow
@@ -64,7 +62,6 @@ namespace XenAdmin.Controls.Ballooning
this.BackColor = System.Drawing.Color.Transparent;
this.Controls.Add(this.panel);
this.DoubleBuffered = true;
- this.MinimumSize = new System.Drawing.Size(700, 118);
this.Name = "HostMemoryRow";
this.panel.ResumeLayout(false);
this.ResumeLayout(false);
diff --git a/XenAdmin/Controls/Ballooning/HostMemoryRow.resx b/XenAdmin/Controls/Ballooning/HostMemoryRow.resx
index 875bf2995..0edce9b94 100644
--- a/XenAdmin/Controls/Ballooning/HostMemoryRow.resx
+++ b/XenAdmin/Controls/Ballooning/HostMemoryRow.resx
@@ -112,29 +112,32 @@
2.0
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
Top, Bottom, Left, Right
Top, Left, Right
-
+
1, 27
0, 0, 0, 0
-
- 786, 90
+
+ 700, 90
-
+
+ 786, 111
+
+
1
@@ -159,6 +162,9 @@
0, 0, 0, 0
+
+ 0, 26
+
10, 5, 10, 5
@@ -187,7 +193,7 @@
0, 0, 0, 0
- 788, 118
+ 788, 139
2
@@ -204,7 +210,7 @@
0
-
+
True
@@ -213,13 +219,16 @@
0, 0, 0, 0
+
+ 700, 139
+
- 788, 118
+ 788, 139
HostMemoryRow
- System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
\ No newline at end of file
diff --git a/XenAdmin/Controls/Ballooning/HostShinyBar.cs b/XenAdmin/Controls/Ballooning/HostShinyBar.cs
index 0f61905e7..21ebcf7ac 100644
--- a/XenAdmin/Controls/Ballooning/HostShinyBar.cs
+++ b/XenAdmin/Controls/Ballooning/HostShinyBar.cs
@@ -53,12 +53,14 @@ namespace XenAdmin.Controls.Ballooning
List vms;
Dictionary vm_metrics;
long xen_memory;
+ long dom0_memory;
- public void Initialize(Host host, long xen_memory)
+ public void Initialize(Host host, long xen_memory, long dom0_memory)
{
this.host = host;
this.host_metrics = host.Connection.Resolve(host.metrics);
this.xen_memory = xen_memory;
+ this.dom0_memory = dom0_memory;
vms = host.Connection.ResolveAll(host.resident_VMs);
vm_metrics = new Dictionary();
foreach (VM vm in vms)
@@ -79,7 +81,10 @@ namespace XenAdmin.Controls.Ballooning
// A bar for Xen memory
double left = (double)barArea.Left;
- DrawSegment(g, xen_memory, bytesPerPixel, Messages.MEMORY_XEN, null, BallooningColors.HostShinyBar_Control, ref left);
+ DrawSegment(g, xen_memory - dom0_memory, bytesPerPixel, Messages.MEMORY_XEN, null, BallooningColors.HostShinyBar_Xen, ref left);
+
+ // A bar for Dom0 memory
+ DrawSegment(g, dom0_memory, bytesPerPixel, string.Format(Messages.CONTROL_DOM_ON_HOST, host.Name), null, BallooningColors.HostShinyBar_ControlDomain, ref left);
// A bar for each VM
int i = 0;
diff --git a/XenAdmin/Controls/Ballooning/MemorySpinner.Designer.cs b/XenAdmin/Controls/Ballooning/MemorySpinner.Designer.cs
index 44fa6fe0b..9aec2010e 100644
--- a/XenAdmin/Controls/Ballooning/MemorySpinner.Designer.cs
+++ b/XenAdmin/Controls/Ballooning/MemorySpinner.Designer.cs
@@ -64,7 +64,6 @@ namespace XenAdmin.Controls.Ballooning
// SpinnerUnits
//
resources.ApplyResources(this.SpinnerUnits, "SpinnerUnits");
- this.SpinnerUnits.BackColor = System.Drawing.SystemColors.Control;
this.SpinnerUnits.Name = "SpinnerUnits";
//
// MemorySpinner
diff --git a/XenAdmin/Controls/Ballooning/VMMemoryControlsNoEdit.Designer.cs b/XenAdmin/Controls/Ballooning/VMMemoryControlsNoEdit.Designer.cs
index 8df14ede7..b72c50399 100644
--- a/XenAdmin/Controls/Ballooning/VMMemoryControlsNoEdit.Designer.cs
+++ b/XenAdmin/Controls/Ballooning/VMMemoryControlsNoEdit.Designer.cs
@@ -37,9 +37,6 @@ namespace XenAdmin.Controls.Ballooning
this.valueDynMin = new System.Windows.Forms.Label();
this.valueDynMax = new System.Windows.Forms.Label();
this.valueStatMax = new System.Windows.Forms.Label();
- this.unitsDynMin = new System.Windows.Forms.Label();
- this.unitsDynMax = new System.Windows.Forms.Label();
- this.unitsStatMax = new System.Windows.Forms.Label();
this.editButton = new System.Windows.Forms.Button();
this.vmShinyBar = new XenAdmin.Controls.Ballooning.VMShinyBar();
((System.ComponentModel.ISupportInitialize)(this.iconBoxDynMin)).BeginInit();
@@ -98,24 +95,6 @@ namespace XenAdmin.Controls.Ballooning
this.valueStatMax.BackColor = System.Drawing.Color.Transparent;
this.valueStatMax.Name = "valueStatMax";
//
- // unitsDynMin
- //
- resources.ApplyResources(this.unitsDynMin, "unitsDynMin");
- this.unitsDynMin.BackColor = System.Drawing.Color.Transparent;
- this.unitsDynMin.Name = "unitsDynMin";
- //
- // unitsDynMax
- //
- resources.ApplyResources(this.unitsDynMax, "unitsDynMax");
- this.unitsDynMax.BackColor = System.Drawing.Color.Transparent;
- this.unitsDynMax.Name = "unitsDynMax";
- //
- // unitsStatMax
- //
- resources.ApplyResources(this.unitsStatMax, "unitsStatMax");
- this.unitsStatMax.BackColor = System.Drawing.Color.Transparent;
- this.unitsStatMax.Name = "unitsStatMax";
- //
// editButton
//
resources.ApplyResources(this.editButton, "editButton");
@@ -126,6 +105,7 @@ namespace XenAdmin.Controls.Ballooning
// vmShinyBar
//
resources.ApplyResources(this.vmShinyBar, "vmShinyBar");
+ this.vmShinyBar.Increment = 0D;
this.vmShinyBar.Name = "vmShinyBar";
//
// VMMemoryControlsNoEdit
@@ -133,9 +113,6 @@ namespace XenAdmin.Controls.Ballooning
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.editButton);
- this.Controls.Add(this.unitsStatMax);
- this.Controls.Add(this.unitsDynMax);
- this.Controls.Add(this.unitsDynMin);
this.Controls.Add(this.valueStatMax);
this.Controls.Add(this.valueDynMax);
this.Controls.Add(this.valueDynMin);
@@ -163,9 +140,6 @@ namespace XenAdmin.Controls.Ballooning
private System.Windows.Forms.Label valueDynMin;
private System.Windows.Forms.Label valueDynMax;
private System.Windows.Forms.Label valueStatMax;
- private System.Windows.Forms.Label unitsDynMin;
- private System.Windows.Forms.Label unitsDynMax;
- private System.Windows.Forms.Label unitsStatMax;
private System.Windows.Forms.Button editButton;
}
}
diff --git a/XenAdmin/Controls/Ballooning/VMMemoryControlsNoEdit.cs b/XenAdmin/Controls/Ballooning/VMMemoryControlsNoEdit.cs
index afc6b3ef8..8cb2a4ae6 100644
--- a/XenAdmin/Controls/Ballooning/VMMemoryControlsNoEdit.cs
+++ b/XenAdmin/Controls/Ballooning/VMMemoryControlsNoEdit.cs
@@ -87,7 +87,7 @@ namespace XenAdmin.Controls.Ballooning
valueDynMin.Text = Util.MemorySizeStringSuitableUnits(vm0.memory_dynamic_min, true);
valueDynMax.Text = Util.MemorySizeStringSuitableUnits(vm0.memory_dynamic_max, true);
if (vm0.memory_dynamic_max == vm0.memory_static_max)
- labelStatMax.Visible = valueStatMax.Visible = unitsStatMax.Visible = false;
+ labelStatMax.Visible = valueStatMax.Visible = false;
else
valueStatMax.Text = Util.MemorySizeStringSuitableUnits(vm0.memory_static_max, true);
}
@@ -97,8 +97,8 @@ namespace XenAdmin.Controls.Ballooning
iconBoxDynMin.Visible = false;
labelDynMin.Text = Messages.MEMORY;
- iconBoxDynMax.Visible = labelDynMax.Visible = valueDynMax.Visible = unitsDynMax.Visible = false;
- labelStatMax.Visible = valueStatMax.Visible = unitsStatMax.Visible = false;
+ iconBoxDynMax.Visible = labelDynMax.Visible = valueDynMax.Visible = false;
+ labelStatMax.Visible = valueStatMax.Visible = false;
}
}
diff --git a/XenAdmin/Controls/Ballooning/VMMemoryControlsNoEdit.resx b/XenAdmin/Controls/Ballooning/VMMemoryControlsNoEdit.resx
index 86508fac8..4416aa264 100644
--- a/XenAdmin/Controls/Ballooning/VMMemoryControlsNoEdit.resx
+++ b/XenAdmin/Controls/Ballooning/VMMemoryControlsNoEdit.resx
@@ -151,7 +151,7 @@
$this
- 11
+ 8
Top, Right
@@ -181,7 +181,7 @@
$this
- 10
+ 7
Top, Right
@@ -220,7 +220,7 @@
$this
- 9
+ 6
Top, Right
@@ -256,7 +256,7 @@
$this
- 8
+ 5
Top, Right
@@ -292,7 +292,7 @@
$this
- 7
+ 4
Top, Right
@@ -301,7 +301,7 @@
NoControl
- 605, 32
+ 646, 32
0, 0, 0, 0
@@ -325,7 +325,7 @@
$this
- 6
+ 3
Top, Right
@@ -334,7 +334,7 @@
NoControl
- 605, 51
+ 646, 51
0, 0, 0, 0
@@ -358,7 +358,7 @@
$this
- 5
+ 2
Top, Right
@@ -367,7 +367,7 @@
NoControl
- 605, 70
+ 646, 70
0, 0, 0, 0
@@ -391,105 +391,6 @@
$this
- 4
-
-
- Top, Right
-
-
- NoControl
-
-
- 674, 32
-
-
- 0, 0, 0, 0
-
-
- 26, 18
-
-
- 9
-
-
- MiddleCenter
-
-
- unitsDynMin
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 3
-
-
- Top, Right
-
-
- NoControl
-
-
- 674, 51
-
-
- 0, 0, 0, 0
-
-
- 26, 18
-
-
- 10
-
-
- MiddleCenter
-
-
- unitsDynMax
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 2
-
-
- Top, Right
-
-
- NoControl
-
-
- 674, 70
-
-
- 0, 0, 0, 0
-
-
- 26, 18
-
-
- 11
-
-
- MiddleCenter
-
-
- unitsStatMax
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
1
@@ -550,7 +451,7 @@
$this
- 12
+ 9
True
diff --git a/XenAdmin/Controls/DataGridViewEx/CollapsingPvsFarmServerDataGridView.Designer.cs b/XenAdmin/Controls/DataGridViewEx/CollapsingPvsSiteServerDataGridView.Designer.cs
similarity index 91%
rename from XenAdmin/Controls/DataGridViewEx/CollapsingPvsFarmServerDataGridView.Designer.cs
rename to XenAdmin/Controls/DataGridViewEx/CollapsingPvsSiteServerDataGridView.Designer.cs
index d2ea8e1a1..053812638 100644
--- a/XenAdmin/Controls/DataGridViewEx/CollapsingPvsFarmServerDataGridView.Designer.cs
+++ b/XenAdmin/Controls/DataGridViewEx/CollapsingPvsSiteServerDataGridView.Designer.cs
@@ -1,6 +1,6 @@
namespace XenAdmin.Controls.DataGridViewEx
{
- partial class CollapsingPvsFarmServerDataGridView
+ partial class CollapsingPvsSiteServerDataGridView
{
///
/// Required designer variable.
diff --git a/XenAdmin/Controls/DataGridViewEx/CollapsingPvsFarmServerDataGridView.cs b/XenAdmin/Controls/DataGridViewEx/CollapsingPvsSiteServerDataGridView.cs
similarity index 82%
rename from XenAdmin/Controls/DataGridViewEx/CollapsingPvsFarmServerDataGridView.cs
rename to XenAdmin/Controls/DataGridViewEx/CollapsingPvsSiteServerDataGridView.cs
index 318c48dd4..115d35190 100644
--- a/XenAdmin/Controls/DataGridViewEx/CollapsingPvsFarmServerDataGridView.cs
+++ b/XenAdmin/Controls/DataGridViewEx/CollapsingPvsSiteServerDataGridView.cs
@@ -34,14 +34,14 @@ using System.Windows.Forms;
namespace XenAdmin.Controls.DataGridViewEx
{
- public partial class CollapsingPvsFarmServerDataGridView : DataGridViewEx
+ public partial class CollapsingPvsSiteServerDataGridView : DataGridViewEx
{
- public CollapsingPvsFarmServerDataGridView()
+ public CollapsingPvsSiteServerDataGridView()
{
InitializeComponent();
}
- public CollapsingPvsFarmServerDataGridView(IContainer container)
+ public CollapsingPvsSiteServerDataGridView(IContainer container)
{
container.Add(this);
@@ -62,23 +62,23 @@ namespace XenAdmin.Controls.DataGridViewEx
public void ExpandCollapseClicked(int rowIndex)
{
- var farmRow = (CollapsingPvsFarmServerDataGridViewRow)Rows[rowIndex];
+ var siteRow = (CollapsingPvsSiteServerDataGridViewRow)Rows[rowIndex];
- if (farmRow.UnderlyingFarm != null)
+ if (siteRow.UnderlyingSite != null)
{
for (int i = rowIndex + 1; i < Rows.Count; i++)
{
- var row = (CollapsingPvsFarmServerDataGridViewRow)Rows[i];
+ var row = (CollapsingPvsSiteServerDataGridViewRow)Rows[i];
- if (row.IsFarmRow)
+ if (row.IsSiteRow)
break;
row.Visible = !row.Visible;
if (row.Visible)
- farmRow.SetCollapseIcon();
+ siteRow.SetCollapseIcon();
else
- farmRow.SetExpandIcon();
+ siteRow.SetExpandIcon();
}
}
}
diff --git a/XenAdmin/Controls/DataGridViewEx/CollapsingPvsFarmServerDataGridViewRow.cs b/XenAdmin/Controls/DataGridViewEx/CollapsingPvsSiteServerDataGridViewRow.cs
similarity index 78%
rename from XenAdmin/Controls/DataGridViewEx/CollapsingPvsFarmServerDataGridViewRow.cs
rename to XenAdmin/Controls/DataGridViewEx/CollapsingPvsSiteServerDataGridViewRow.cs
index c71f56c3b..2c63c4583 100644
--- a/XenAdmin/Controls/DataGridViewEx/CollapsingPvsFarmServerDataGridViewRow.cs
+++ b/XenAdmin/Controls/DataGridViewEx/CollapsingPvsSiteServerDataGridViewRow.cs
@@ -35,27 +35,27 @@ using XenAPI;
namespace XenAdmin.Controls.DataGridViewEx
{
- public class CollapsingPvsFarmServerDataGridViewRow : DataGridViewExRow
+ public class CollapsingPvsSiteServerDataGridViewRow : DataGridViewExRow
{
protected DataGridViewImageCell expansionCell;
- protected DataGridViewTextBoxCell farmCell;
+ protected DataGridViewTextBoxCell siteCell;
protected DataGridViewTextBoxCell ipAddressesCell;
protected DataGridViewTextBoxCell firstPortCell;
protected DataGridViewTextBoxCell lastPortCell;
- protected bool isPvsFarmRow;
+ protected bool isPvsSiteRow;
- public CollapsingPvsFarmServerDataGridViewRow(PVS_farm farm)
+ public CollapsingPvsSiteServerDataGridViewRow(PVS_site site)
{
- Tag = farm;
- isPvsFarmRow = true;
+ Tag = site;
+ isPvsSiteRow = true;
SetupCells();
}
- public CollapsingPvsFarmServerDataGridViewRow(PVS_server server)
+ public CollapsingPvsSiteServerDataGridViewRow(PVS_server server)
{
Tag = server;
- isPvsFarmRow = false;
+ isPvsSiteRow = false;
SetupCells();
}
@@ -63,13 +63,13 @@ namespace XenAdmin.Controls.DataGridViewEx
private void SetupCells()
{
expansionCell = new DataGridViewImageCell();
- farmCell = new DataGridViewTextBoxCell();
+ siteCell = new DataGridViewTextBoxCell();
ipAddressesCell = new DataGridViewTextBoxCell();
firstPortCell = new DataGridViewTextBoxCell();
lastPortCell = new DataGridViewTextBoxCell();
Cells.Add(expansionCell);
- Cells.Add(farmCell);
+ Cells.Add(siteCell);
Cells.Add(ipAddressesCell);
Cells.Add(firstPortCell);
Cells.Add(lastPortCell);
@@ -79,16 +79,16 @@ namespace XenAdmin.Controls.DataGridViewEx
protected void UpdateDetails()
{
- if (isPvsFarmRow)
+ if (isPvsSiteRow)
{
- PVS_farm farm = (PVS_farm)Tag;
+ PVS_site site = (PVS_site)Tag;
- if (farm.servers.Count == 0)
+ if (site.servers.Count == 0)
SetNoIcon();
else
SetCollapseIcon();
- farmCell.Value = farm.name;
+ siteCell.Value = site.name;
}
else
{
@@ -102,19 +102,19 @@ namespace XenAdmin.Controls.DataGridViewEx
}
}
- public bool IsFarmRow
+ public bool IsSiteRow
{
- get { return isPvsFarmRow; }
+ get { return isPvsSiteRow; }
}
public bool IsServerRow
{
- get { return !isPvsFarmRow; }
+ get { return !isPvsSiteRow; }
}
- public PVS_farm UnderlyingFarm
+ public PVS_site UnderlyingSite
{
- get { return Tag as PVS_farm; }
+ get { return Tag as PVS_site; }
}
public PVS_server UnderlyingServer
diff --git a/XenAdmin/Dialogs/ControlDomainMemoryDialog.Designer.cs b/XenAdmin/Dialogs/ControlDomainMemoryDialog.Designer.cs
new file mode 100644
index 000000000..5dab22fcc
--- /dev/null
+++ b/XenAdmin/Dialogs/ControlDomainMemoryDialog.Designer.cs
@@ -0,0 +1,159 @@
+namespace XenAdmin.Dialogs
+{
+ partial class ControlDomainMemoryDialog
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlDomainMemoryDialog));
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.panel1 = new System.Windows.Forms.FlowLayoutPanel();
+ this.CloseButton = new System.Windows.Forms.Button();
+ this.OkButton = new System.Windows.Forms.Button();
+ this.hostRebootWarningLabel = new System.Windows.Forms.Label();
+ this.hostRebootWarningImage = new System.Windows.Forms.PictureBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.maintenanceWarningImage = new System.Windows.Forms.PictureBox();
+ this.maintenanceWarningLabel = new System.Windows.Forms.Label();
+ this.memorySpinner = new XenAdmin.Controls.Ballooning.MemorySpinner();
+ this.maintenanceModeLinkLabel = new System.Windows.Forms.LinkLabel();
+ this.tableLayoutPanel1.SuspendLayout();
+ this.panel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.hostRebootWarningImage)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.maintenanceWarningImage)).BeginInit();
+ this.SuspendLayout();
+ //
+ // tableLayoutPanel1
+ //
+ resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
+ this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 5);
+ this.tableLayoutPanel1.Controls.Add(this.hostRebootWarningLabel, 1, 4);
+ this.tableLayoutPanel1.Controls.Add(this.hostRebootWarningImage, 0, 4);
+ this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.maintenanceWarningImage, 0, 2);
+ this.tableLayoutPanel1.Controls.Add(this.maintenanceWarningLabel, 1, 2);
+ this.tableLayoutPanel1.Controls.Add(this.memorySpinner, 0, 1);
+ this.tableLayoutPanel1.Controls.Add(this.maintenanceModeLinkLabel, 1, 3);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ //
+ // panel1
+ //
+ resources.ApplyResources(this.panel1, "panel1");
+ this.tableLayoutPanel1.SetColumnSpan(this.panel1, 2);
+ this.panel1.Controls.Add(this.CloseButton);
+ this.panel1.Controls.Add(this.OkButton);
+ this.panel1.Name = "panel1";
+ //
+ // CloseButton
+ //
+ resources.ApplyResources(this.CloseButton, "CloseButton");
+ this.CloseButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.CloseButton.Name = "CloseButton";
+ this.CloseButton.UseVisualStyleBackColor = true;
+ //
+ // OkButton
+ //
+ resources.ApplyResources(this.OkButton, "OkButton");
+ this.OkButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.OkButton.Name = "OkButton";
+ this.OkButton.UseVisualStyleBackColor = true;
+ this.OkButton.Click += new System.EventHandler(this.OkButton_Click);
+ //
+ // hostRebootWarningLabel
+ //
+ resources.ApplyResources(this.hostRebootWarningLabel, "hostRebootWarningLabel");
+ this.hostRebootWarningLabel.Name = "hostRebootWarningLabel";
+ //
+ // hostRebootWarningImage
+ //
+ resources.ApplyResources(this.hostRebootWarningImage, "hostRebootWarningImage");
+ this.hostRebootWarningImage.Image = global::XenAdmin.Properties.Resources._000_Alert2_h32bit_16;
+ this.hostRebootWarningImage.Name = "hostRebootWarningImage";
+ this.hostRebootWarningImage.TabStop = false;
+ //
+ // label1
+ //
+ resources.ApplyResources(this.label1, "label1");
+ this.tableLayoutPanel1.SetColumnSpan(this.label1, 2);
+ this.label1.Name = "label1";
+ //
+ // maintenanceWarningImage
+ //
+ resources.ApplyResources(this.maintenanceWarningImage, "maintenanceWarningImage");
+ this.maintenanceWarningImage.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16;
+ this.maintenanceWarningImage.Name = "maintenanceWarningImage";
+ this.maintenanceWarningImage.TabStop = false;
+ //
+ // maintenanceWarningLabel
+ //
+ resources.ApplyResources(this.maintenanceWarningLabel, "maintenanceWarningLabel");
+ this.maintenanceWarningLabel.Name = "maintenanceWarningLabel";
+ //
+ // memorySpinner
+ //
+ this.tableLayoutPanel1.SetColumnSpan(this.memorySpinner, 2);
+ resources.ApplyResources(this.memorySpinner, "memorySpinner");
+ this.memorySpinner.Increment = 0.1D;
+ this.memorySpinner.Name = "memorySpinner";
+ //
+ // maintenanceModeLinkLabel
+ //
+ resources.ApplyResources(this.maintenanceModeLinkLabel, "maintenanceModeLinkLabel");
+ this.maintenanceModeLinkLabel.Name = "maintenanceModeLinkLabel";
+ this.maintenanceModeLinkLabel.TabStop = true;
+ this.maintenanceModeLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.maintenanceModeLinkLabel_LinkClicked);
+ //
+ // ControlDomainMemoryDialog
+ //
+ resources.ApplyResources(this, "$this");
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
+ this.Controls.Add(this.tableLayoutPanel1);
+ this.Name = "ControlDomainMemoryDialog";
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ControlDomainMemoryDialog_FormClosing);
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ this.panel1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.hostRebootWarningImage)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.maintenanceWarningImage)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private System.Windows.Forms.Label hostRebootWarningLabel;
+ private System.Windows.Forms.PictureBox hostRebootWarningImage;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.PictureBox maintenanceWarningImage;
+ private System.Windows.Forms.Label maintenanceWarningLabel;
+ private Controls.Ballooning.MemorySpinner memorySpinner;
+ private System.Windows.Forms.FlowLayoutPanel panel1;
+ public System.Windows.Forms.Button CloseButton;
+ public System.Windows.Forms.Button OkButton;
+ private System.Windows.Forms.LinkLabel maintenanceModeLinkLabel;
+ }
+}
\ No newline at end of file
diff --git a/XenAdmin/Dialogs/ControlDomainMemoryDialog.cs b/XenAdmin/Dialogs/ControlDomainMemoryDialog.cs
new file mode 100644
index 000000000..348f0790d
--- /dev/null
+++ b/XenAdmin/Dialogs/ControlDomainMemoryDialog.cs
@@ -0,0 +1,171 @@
+/* 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;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using XenAdmin.Actions;
+using XenAdmin.Commands;
+using XenAPI;
+
+namespace XenAdmin.Dialogs
+{
+ public partial class ControlDomainMemoryDialog : XenDialogBase
+ {
+ private Host host;
+ private Host_metrics hostMetrics;
+ private double origMemory;
+
+ public const int MAXIMUM_DOM0_MEMORY_GB = 256;
+
+ public ControlDomainMemoryDialog(Host host)
+ : base(host.Connection)
+ {
+ if (host == null) throw new ArgumentNullException("host");
+
+ InitializeComponent();
+ this.host = host;
+ this.host.PropertyChanged += Server_PropertyChanged;
+ hostMetrics = connection.Resolve(this.host.metrics);
+ if (hostMetrics != null)
+ hostMetrics.PropertyChanged += Server_PropertyChanged;
+ Text = string.Format(Messages.CONTROL_DOMAIN_MEMORY_DIALOG_TITLE, this.host.Name);
+ Populate();
+ }
+
+ private void UpdateMaintenanceWarning()
+ {
+ Host_metrics metrics = host.Connection.Resolve(host.metrics);
+ bool maintenanceMode = host.MaintenanceMode || (metrics != null && !metrics.live);
+
+ maintenanceWarningImage.Visible = maintenanceWarningLabel.Visible = maintenanceModeLinkLabel.Visible = !maintenanceMode;
+ hostRebootWarningImage.Visible = hostRebootWarningLabel.Visible = maintenanceMode;
+
+ memorySpinner.Enabled = maintenanceMode;
+ }
+
+ private void Populate()
+ {
+ VM vm = host.ControlDomainZero;
+
+ // Since updates come in dribs and drabs, avoid error if new max and min arrive
+ // out of sync and maximum < minimum.
+ if (vm.memory_dynamic_max >= vm.memory_dynamic_min &&
+ vm.memory_static_max >= vm.memory_static_min)
+ {
+ double min = vm.memory_static_min;
+ double max = Math.Min(host.memory_available_calc, MAXIMUM_DOM0_MEMORY_GB * Util.BINARY_GIGA);
+ double value = vm.memory_dynamic_min;
+ // Avoid setting the range to exclude the current value: CA-40041
+ if (value > max)
+ max = value;
+ if (value < min)
+ min = value;
+ memorySpinner.Initialize(Messages.CONTROL_DOMAIN_MEMORY_LABEL, null, value, max);
+ memorySpinner.SetRange(min, max);
+ }
+ origMemory = memorySpinner.Value;
+ UpdateMaintenanceWarning();
+ }
+
+ private bool HasChanged()
+ {
+ return memorySpinner.Value != origMemory;
+ }
+
+ private bool SaveChanges()
+ {
+ if (!HasChanged())
+ return false;
+
+ var mem = memorySpinner.Value;
+
+ DialogResult dialogResult;
+ using (var dlg = new ThreeButtonDialog(
+ new ThreeButtonDialog.Details(SystemIcons.Warning, Messages.CONFIRM_CHANGE_CONTROL_DOMAIN_MEMORY, Messages.XENCENTER),
+ ThreeButtonDialog.ButtonYes,
+ ThreeButtonDialog.ButtonNo))
+ {
+ dialogResult = dlg.ShowDialog(this);
+ }
+
+ if (DialogResult.Yes != dialogResult)
+ return false;
+
+ var actions = new List();
+ var action = new ChangeControlDomainMemoryAction(host, (long)mem, false);
+ actions.Add(action);
+
+ actions.Add(new RebootHostAction(host, AddHostToPoolCommand.NtolDialog));
+
+ var multipleAction = new MultipleAction(connection,
+ string.Format(Messages.ACTION_CHANGE_CONTROL_DOMAIN_MEMORY, host.Name),
+ string.Format(Messages.ACTION_CHANGE_CONTROL_DOMAIN_MEMORY, host.Name),
+ Messages.COMPLETED, actions, true, false, true);
+
+ multipleAction.RunAsync();
+ return true;
+ }
+
+ private void Cleanup()
+ {
+ host.PropertyChanged -= Server_PropertyChanged;
+ if (hostMetrics != null)
+ hostMetrics.PropertyChanged -= Server_PropertyChanged;
+ }
+
+ private void Server_PropertyChanged(object sender, PropertyChangedEventArgs e)
+ {
+ Program.Invoke(this, Populate);
+ }
+
+ private void OkButton_Click(object sender, EventArgs e)
+ {
+ if (SaveChanges())
+ {
+ DialogResult = DialogResult.OK;
+ }
+ }
+
+ private void maintenanceModeLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ new HostMaintenanceModeCommand(Program.MainWindow, host, HostMaintenanceModeCommandParameter.Enter).Execute();
+ }
+
+ private void ControlDomainMemoryDialog_FormClosing(object sender, FormClosingEventArgs e)
+ {
+ Cleanup();
+ }
+ }
+}
diff --git a/XenAdmin/Dialogs/ControlDomainMemoryDialog.ja.resx b/XenAdmin/Dialogs/ControlDomainMemoryDialog.ja.resx
new file mode 100644
index 000000000..37b479966
--- /dev/null
+++ b/XenAdmin/Dialogs/ControlDomainMemoryDialog.ja.resx
@@ -0,0 +1,543 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ 2
+
+
+ True
+
+
+ CloseButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel1
+
+
+ 0
+
+
+ OkButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel1
+
+
+ 1
+
+
+
+ Bottom
+
+
+ RightToLeft
+
+
+
+ Segoe UI, 9pt
+
+
+ 3, 180
+
+
+ 433, 27
+
+
+ 21
+
+
+ panel1
+
+
+ System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 0
+
+
+ True
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 22, 160
+
+
+ 0, 20, 0, 0
+
+
+ 271, 15
+
+
+ 14
+
+
+ Changes to this setting will trigger a server reboot.
+
+
+ hostRebootWarningLabel
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 1
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 3, 158
+
+
+ 3, 18, 3, 3
+
+
+ 16, 16
+
+
+ AutoSize
+
+
+ 15
+
+
+ hostRebootWarningImage
+
+
+ System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 2
+
+
+ True
+
+
+ Fill
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 3, 3
+
+
+ 3, 3, 3, 20
+
+
+ 433, 30
+
+
+ 3
+
+
+ Specify the amount of memory to be allocated to the Control Domain on this server.
+
+
+ label1
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 3
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 3, 100
+
+
+ 3, 18, 3, 3
+
+
+ 16, 16
+
+
+ 1
+
+
+ maintenanceWarningImage
+
+
+ System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 4
+
+
+ True
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 22, 102
+
+
+ 0, 20, 0, 0
+
+
+ 332, 15
+
+
+ 2
+
+
+ This server must be in maintenance mode to edit this setting.
+
+
+ MiddleLeft
+
+
+ maintenanceWarningLabel
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 5
+
+
+ Segoe UI, 9pt
+
+
+ 0, 53
+
+
+ 0, 0, 0, 0
+
+
+ 293, 29
+
+
+ 16
+
+
+ memorySpinnerDynMin
+
+
+ XenAdmin.Controls.Ballooning.MemorySpinner, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
+
+ tableLayoutPanel1
+
+
+ 6
+
+
+ True
+
+
+ Segoe UI, 9pt
+
+
+ 25, 122
+
+
+ 3, 3, 3, 3
+
+
+ 149, 15
+
+
+ 22
+
+
+ Enter maintenance mode...
+
+
+ maintenanceModeLinkLabel
+
+
+ System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 7
+
+
+ Fill
+
+
+ Segoe UI, 9pt
+
+
+ 10, 10
+
+
+ 6
+
+
+ 439, 210
+
+
+ 6
+
+
+ tableLayoutPanel1
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 0
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="panel1" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="hostRebootWarningLabel" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="hostRebootWarningImage" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="maintenanceWarningImage" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="maintenanceWarningLabel" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="memorySpinnerDynMin" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="maintenanceModeLinkLabel" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,Absolute,20" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings>
+
+
+ Bottom, Right
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 355, 3
+
+
+ 75, 23
+
+
+ 1
+
+
+ Cancel
+
+
+ CloseButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel1
+
+
+ 0
+
+
+ Bottom, Right
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 274, 3
+
+
+ 75, 23
+
+
+ 0
+
+
+ OK
+
+
+ OkButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel1
+
+
+ 1
+
+
+ True
+
+
+ 96, 96
+
+
+ 459, 230
+
+
+ Segoe UI, 9pt
+
+
+ 10, 10, 10, 10
+
+
+
+
+
+ ControlDomainMemoryDialog
+
+
+ XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
+
\ No newline at end of file
diff --git a/XenAdmin/Dialogs/ControlDomainMemoryDialog.resx b/XenAdmin/Dialogs/ControlDomainMemoryDialog.resx
new file mode 100644
index 000000000..4b2d20d09
--- /dev/null
+++ b/XenAdmin/Dialogs/ControlDomainMemoryDialog.resx
@@ -0,0 +1,519 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ 2
+
+
+ True
+
+
+
+ Bottom, Right
+
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 355, 3
+
+
+ 75, 23
+
+
+ 1
+
+
+ Cancel
+
+
+ CloseButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel1
+
+
+ 0
+
+
+ Bottom, Right
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 274, 3
+
+
+ 75, 23
+
+
+ 0
+
+
+ OK
+
+
+ OkButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel1
+
+
+ 1
+
+
+ Bottom
+
+
+ RightToLeft
+
+
+ Segoe UI, 9pt
+
+
+ 3, 180
+
+
+ 433, 27
+
+
+ 21
+
+
+ panel1
+
+
+ System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 0
+
+
+ True
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 22, 160
+
+
+ 0, 20, 0, 0
+
+
+ 271, 15
+
+
+ 14
+
+
+ Changes to this setting will trigger a server reboot.
+
+
+ hostRebootWarningLabel
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 1
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 3, 158
+
+
+ 3, 18, 3, 3
+
+
+ 16, 16
+
+
+ AutoSize
+
+
+ 15
+
+
+ hostRebootWarningImage
+
+
+ System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 2
+
+
+ True
+
+
+ Fill
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 3, 3
+
+
+ 3, 3, 3, 20
+
+
+ 433, 30
+
+
+ 3
+
+
+ Specify the amount of memory to be allocated to the Control Domain on this server.
+
+
+ label1
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 3
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 3, 100
+
+
+ 3, 18, 3, 3
+
+
+ 16, 16
+
+
+ 1
+
+
+ maintenanceWarningImage
+
+
+ System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 4
+
+
+ True
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 22, 102
+
+
+ 0, 20, 0, 0
+
+
+ 332, 15
+
+
+ 2
+
+
+ This server must be in maintenance mode to edit this setting.
+
+
+ MiddleLeft
+
+
+ maintenanceWarningLabel
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 5
+
+
+ Segoe UI, 9pt
+
+
+ 0, 53
+
+
+ 0, 0, 0, 0
+
+
+ 293, 29
+
+
+ 16
+
+
+ memorySpinner
+
+
+ XenAdmin.Controls.Ballooning.MemorySpinner, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
+
+ tableLayoutPanel1
+
+
+ 6
+
+
+ True
+
+
+ Segoe UI, 9pt
+
+
+ 25, 122
+
+
+ 3, 3, 3, 3
+
+
+ 149, 15
+
+
+ 22
+
+
+ Enter maintenance mode...
+
+
+ maintenanceModeLinkLabel
+
+
+ System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 7
+
+
+ Fill
+
+
+ Segoe UI, 9pt
+
+
+ 10, 10
+
+
+ 6
+
+
+ 439, 210
+
+
+ 6
+
+
+ tableLayoutPanel1
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 0
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="panel1" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="hostRebootWarningLabel" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="hostRebootWarningImage" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="maintenanceWarningImage" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="maintenanceWarningLabel" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="memorySpinner" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="maintenanceModeLinkLabel" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,Absolute,20" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings>
+
+
+ True
+
+
+ 96, 96
+
+
+ 459, 230
+
+
+ Segoe UI, 9pt
+
+
+ 10, 10, 10, 10
+
+
+
+
+
+ ControlDomainMemoryDialog
+
+
+ XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
+
\ No newline at end of file
diff --git a/XenAdmin/Dialogs/ControlDomainMemoryDialog.zh-CN.resx b/XenAdmin/Dialogs/ControlDomainMemoryDialog.zh-CN.resx
new file mode 100644
index 000000000..37b479966
--- /dev/null
+++ b/XenAdmin/Dialogs/ControlDomainMemoryDialog.zh-CN.resx
@@ -0,0 +1,543 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ 2
+
+
+ True
+
+
+ CloseButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel1
+
+
+ 0
+
+
+ OkButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel1
+
+
+ 1
+
+
+
+ Bottom
+
+
+ RightToLeft
+
+
+
+ Segoe UI, 9pt
+
+
+ 3, 180
+
+
+ 433, 27
+
+
+ 21
+
+
+ panel1
+
+
+ System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 0
+
+
+ True
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 22, 160
+
+
+ 0, 20, 0, 0
+
+
+ 271, 15
+
+
+ 14
+
+
+ Changes to this setting will trigger a server reboot.
+
+
+ hostRebootWarningLabel
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 1
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 3, 158
+
+
+ 3, 18, 3, 3
+
+
+ 16, 16
+
+
+ AutoSize
+
+
+ 15
+
+
+ hostRebootWarningImage
+
+
+ System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 2
+
+
+ True
+
+
+ Fill
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 3, 3
+
+
+ 3, 3, 3, 20
+
+
+ 433, 30
+
+
+ 3
+
+
+ Specify the amount of memory to be allocated to the Control Domain on this server.
+
+
+ label1
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 3
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 3, 100
+
+
+ 3, 18, 3, 3
+
+
+ 16, 16
+
+
+ 1
+
+
+ maintenanceWarningImage
+
+
+ System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 4
+
+
+ True
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 22, 102
+
+
+ 0, 20, 0, 0
+
+
+ 332, 15
+
+
+ 2
+
+
+ This server must be in maintenance mode to edit this setting.
+
+
+ MiddleLeft
+
+
+ maintenanceWarningLabel
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 5
+
+
+ Segoe UI, 9pt
+
+
+ 0, 53
+
+
+ 0, 0, 0, 0
+
+
+ 293, 29
+
+
+ 16
+
+
+ memorySpinnerDynMin
+
+
+ XenAdmin.Controls.Ballooning.MemorySpinner, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
+
+ tableLayoutPanel1
+
+
+ 6
+
+
+ True
+
+
+ Segoe UI, 9pt
+
+
+ 25, 122
+
+
+ 3, 3, 3, 3
+
+
+ 149, 15
+
+
+ 22
+
+
+ Enter maintenance mode...
+
+
+ maintenanceModeLinkLabel
+
+
+ System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 7
+
+
+ Fill
+
+
+ Segoe UI, 9pt
+
+
+ 10, 10
+
+
+ 6
+
+
+ 439, 210
+
+
+ 6
+
+
+ tableLayoutPanel1
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 0
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="panel1" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="hostRebootWarningLabel" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="hostRebootWarningImage" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="maintenanceWarningImage" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="maintenanceWarningLabel" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="memorySpinnerDynMin" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="maintenanceModeLinkLabel" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,Absolute,20" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings>
+
+
+ Bottom, Right
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 355, 3
+
+
+ 75, 23
+
+
+ 1
+
+
+ Cancel
+
+
+ CloseButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel1
+
+
+ 0
+
+
+ Bottom, Right
+
+
+ Segoe UI, 9pt
+
+
+ NoControl
+
+
+ 274, 3
+
+
+ 75, 23
+
+
+ 0
+
+
+ OK
+
+
+ OkButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel1
+
+
+ 1
+
+
+ True
+
+
+ 96, 96
+
+
+ 459, 230
+
+
+ Segoe UI, 9pt
+
+
+ 10, 10, 10, 10
+
+
+
+
+
+ ControlDomainMemoryDialog
+
+
+ XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
+
\ No newline at end of file
diff --git a/XenAdmin/Dialogs/PvsFarmDialog.Designer.cs b/XenAdmin/Dialogs/PvsSiteDialog.Designer.cs
similarity index 89%
rename from XenAdmin/Dialogs/PvsFarmDialog.Designer.cs
rename to XenAdmin/Dialogs/PvsSiteDialog.Designer.cs
index ebde0a49c..4fdb278c1 100644
--- a/XenAdmin/Dialogs/PvsFarmDialog.Designer.cs
+++ b/XenAdmin/Dialogs/PvsSiteDialog.Designer.cs
@@ -1,6 +1,6 @@
namespace XenAdmin.Dialogs
{
- partial class PvsFarmDialog
+ partial class PvsSiteDialog
{
///
/// Required designer variable.
@@ -29,14 +29,14 @@ namespace XenAdmin.Dialogs
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PvsFarmDialog));
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PvsSiteDialog));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
this.closeButton = new System.Windows.Forms.Button();
this.bottomPanel = new System.Windows.Forms.Panel();
this.mainPanel = new System.Windows.Forms.Panel();
- this.gridView = new XenAdmin.Controls.DataGridViewEx.CollapsingPvsFarmServerDataGridView(this.components);
+ this.gridView = new XenAdmin.Controls.DataGridViewEx.CollapsingPvsSiteServerDataGridView(this.components);
this.expansionColumn = new System.Windows.Forms.DataGridViewImageColumn();
- this.farmColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.siteColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ipAddressesColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.firstPortColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.lastPortColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
@@ -72,7 +72,7 @@ namespace XenAdmin.Dialogs
this.gridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
this.gridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.expansionColumn,
- this.farmColumn,
+ this.siteColumn,
this.ipAddressesColumn,
this.firstPortColumn,
this.lastPortColumn});
@@ -98,13 +98,13 @@ namespace XenAdmin.Dialogs
this.expansionColumn.ReadOnly = true;
this.expansionColumn.Resizable = System.Windows.Forms.DataGridViewTriState.False;
//
- // farmColumn
+ // siteColumn
//
- this.farmColumn.FillWeight = 108.4123F;
- resources.ApplyResources(this.farmColumn, "farmColumn");
- this.farmColumn.Name = "farmColumn";
- this.farmColumn.ReadOnly = true;
- this.farmColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
+ this.siteColumn.FillWeight = 108.4123F;
+ resources.ApplyResources(this.siteColumn, "siteColumn");
+ this.siteColumn.Name = "siteColumn";
+ this.siteColumn.ReadOnly = true;
+ this.siteColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
//
// ipAddressesColumn
//
@@ -130,7 +130,7 @@ namespace XenAdmin.Dialogs
this.lastPortColumn.ReadOnly = true;
this.lastPortColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
//
- // PvsFarmDialog
+ // PvsSiteDialog
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
@@ -141,7 +141,7 @@ namespace XenAdmin.Dialogs
this.HelpButton = false;
this.MaximizeBox = true;
this.MinimizeBox = true;
- this.Name = "PvsFarmDialog";
+ this.Name = "PvsSiteDialog";
this.ShowInTaskbar = true;
this.bottomPanel.ResumeLayout(false);
this.mainPanel.ResumeLayout(false);
@@ -154,11 +154,11 @@ namespace XenAdmin.Dialogs
private System.Windows.Forms.Button closeButton;
private System.Windows.Forms.Panel bottomPanel;
private System.Windows.Forms.Panel mainPanel;
- private Controls.DataGridViewEx.CollapsingPvsFarmServerDataGridView gridView;
- private System.Windows.Forms.DataGridViewTextBoxColumn farmColumn;
+ private Controls.DataGridViewEx.CollapsingPvsSiteServerDataGridView gridView;
+ private System.Windows.Forms.DataGridViewImageColumn expansionColumn;
+ private System.Windows.Forms.DataGridViewTextBoxColumn siteColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn ipAddressesColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn firstPortColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn lastPortColumn;
- private System.Windows.Forms.DataGridViewImageColumn expansionColumn;
}
}
\ No newline at end of file
diff --git a/XenAdmin/Dialogs/PvsFarmDialog.cs b/XenAdmin/Dialogs/PvsSiteDialog.cs
similarity index 80%
rename from XenAdmin/Dialogs/PvsFarmDialog.cs
rename to XenAdmin/Dialogs/PvsSiteDialog.cs
index ba01ea45c..53e4de37a 100644
--- a/XenAdmin/Dialogs/PvsFarmDialog.cs
+++ b/XenAdmin/Dialogs/PvsSiteDialog.cs
@@ -38,19 +38,19 @@ using XenAPI;
namespace XenAdmin.Dialogs
{
- public partial class PvsFarmDialog : XenDialogBase
+ public partial class PvsSiteDialog : XenDialogBase
{
///
- /// Creates a dialog for viewing the PVS farms and PVS servers on a particular connection.
+ /// Creates a dialog for viewing the PVS sites and PVS servers on a particular connection.
///
/// May not be null.
- public PvsFarmDialog(IXenConnection _connection)
+ public PvsSiteDialog(IXenConnection _connection)
{
System.Diagnostics.Trace.Assert(_connection != null);
connection = _connection;
InitializeComponent();
- Text = string.Format(Messages.PVS_FARM_DIALOG_TITLE, this.connection.Name);
+ Text = string.Format(Messages.PVS_SITE_DIALOG_TITLE, this.connection.Name);
System.Diagnostics.Trace.Assert(gridView.Columns.Count > 0);
gridView.Columns[0].DefaultCellStyle.NullValue = null;
@@ -62,17 +62,17 @@ namespace XenAdmin.Dialogs
private void RegisterEventHandlers()
{
UnregisterEventHandlers();
- connection.Cache.RegisterBatchCollectionChanged(PvsFarmBatchCollectionChanged);
+ connection.Cache.RegisterBatchCollectionChanged(PvsSiteBatchCollectionChanged);
connection.Cache.RegisterBatchCollectionChanged(PvsServerBatchCollectionChanged);
}
private void UnregisterEventHandlers()
{
- connection.Cache.DeregisterBatchCollectionChanged(PvsFarmBatchCollectionChanged);
+ connection.Cache.DeregisterBatchCollectionChanged(PvsSiteBatchCollectionChanged);
connection.Cache.DeregisterBatchCollectionChanged(PvsServerBatchCollectionChanged);
}
- private void PvsFarmBatchCollectionChanged(object sender, EventArgs e)
+ private void PvsSiteBatchCollectionChanged(object sender, EventArgs e)
{
Program.Invoke(this, Rebuild);
}
@@ -98,17 +98,17 @@ namespace XenAdmin.Dialogs
gridView.SuspendLayout();
gridView.Rows.Clear();
- var pvsFarms = connection.Cache.PVS_farms.ToList();
- pvsFarms.Sort();
+ var pvsSites = connection.Cache.PVS_sites.ToList();
+ pvsSites.Sort();
- foreach (var pvsFarm in pvsFarms)
+ foreach (var pvsSite in pvsSites)
{
- var farmRow = new CollapsingPvsFarmServerDataGridViewRow(pvsFarm);
- gridView.Rows.Add(farmRow);
+ var siteRow = new CollapsingPvsSiteServerDataGridViewRow(pvsSite);
+ gridView.Rows.Add(siteRow);
- foreach (var pvsServer in connection.ResolveAll(pvsFarm.servers))
+ foreach (var pvsServer in connection.ResolveAll(pvsSite.servers))
{
- var serverRow = new CollapsingPvsFarmServerDataGridViewRow(pvsServer);
+ var serverRow = new CollapsingPvsSiteServerDataGridViewRow(pvsServer);
gridView.Rows.Add(serverRow);
}
}
diff --git a/XenAdmin/Dialogs/PvsFarmDialog.ja.resx b/XenAdmin/Dialogs/PvsSiteDialog.ja.resx
similarity index 97%
rename from XenAdmin/Dialogs/PvsFarmDialog.ja.resx
rename to XenAdmin/Dialogs/PvsSiteDialog.ja.resx
index 477993039..5d4c2769f 100644
--- a/XenAdmin/Dialogs/PvsFarmDialog.ja.resx
+++ b/XenAdmin/Dialogs/PvsSiteDialog.ja.resx
@@ -421,7 +421,7 @@
高可用性の構成
- PvsFarmDialog
+ PvsSiteDialog
XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
diff --git a/XenAdmin/Dialogs/PvsFarmDialog.resx b/XenAdmin/Dialogs/PvsSiteDialog.resx
similarity index 94%
rename from XenAdmin/Dialogs/PvsFarmDialog.resx
rename to XenAdmin/Dialogs/PvsSiteDialog.resx
index db7e7b38d..d4ac7a588 100644
--- a/XenAdmin/Dialogs/PvsFarmDialog.resx
+++ b/XenAdmin/Dialogs/PvsSiteDialog.resx
@@ -160,7 +160,7 @@
Segoe UI, 9pt
- 8, 324
+ 8, 325
602, 29
@@ -192,13 +192,13 @@
20
-
+
True
-
- PVS Farm
+
+ PVS Site
-
+
65
@@ -238,7 +238,7 @@
0, 0
- 602, 311
+ 602, 312
0
@@ -247,7 +247,7 @@
gridView
- XenAdmin.Controls.DataGridViewEx.CollapsingPvsFarmServerDataGridView, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ XenAdmin.Controls.DataGridViewEx.CollapsingPvsSiteServerDataGridView, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
mainPanel
@@ -268,7 +268,7 @@
0, 0, 0, 5
- 602, 316
+ 602, 317
7
@@ -292,7 +292,7 @@
96, 96
- 618, 361
+ 618, 362
Tahoma, 8pt
@@ -307,7 +307,7 @@
8, 8, 8, 8
- PVS Farms
+ PVS Sites
expansionColumn
@@ -315,10 +315,10 @@
System.Windows.Forms.DataGridViewImageColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- farmColumn
+
+ siteColumn
-
+
System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
@@ -340,7 +340,7 @@
System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- PvsFarmDialog
+ PvsSiteDialog
XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
diff --git a/XenAdmin/Dialogs/PvsFarmDialog.zh-CN.resx b/XenAdmin/Dialogs/PvsSiteDialog.zh-CN.resx
similarity index 97%
rename from XenAdmin/Dialogs/PvsFarmDialog.zh-CN.resx
rename to XenAdmin/Dialogs/PvsSiteDialog.zh-CN.resx
index c2d31d7f1..3f7794c61 100644
--- a/XenAdmin/Dialogs/PvsFarmDialog.zh-CN.resx
+++ b/XenAdmin/Dialogs/PvsSiteDialog.zh-CN.resx
@@ -421,7 +421,7 @@
配置高可用性
- PvsFarmDialog
+ PvsSiteDialog
XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
diff --git a/XenAdmin/MainWindow.Designer.cs b/XenAdmin/MainWindow.Designer.cs
index ceae6a079..de3135ffc 100644
--- a/XenAdmin/MainWindow.Designer.cs
+++ b/XenAdmin/MainWindow.Designer.cs
@@ -188,6 +188,7 @@ namespace XenAdmin
this.restoreFromBackupToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
this.toolStripSeparator23 = new System.Windows.Forms.ToolStripSeparator();
this.maintenanceModeToolStripMenuItem1 = new XenAdmin.Commands.CommandToolStripMenuItem();
+ this.controlDomainMemoryToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
this.RemoveCrashdumpsToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
this.HostPasswordToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
this.ChangeRootPasswordToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
@@ -1086,6 +1087,7 @@ namespace XenAdmin
this.restoreFromBackupToolStripMenuItem,
this.toolStripSeparator23,
this.maintenanceModeToolStripMenuItem1,
+ this.controlDomainMemoryToolStripMenuItem,
this.RemoveCrashdumpsToolStripMenuItem,
this.HostPasswordToolStripMenuItem,
this.toolStripSeparator25,
@@ -1219,6 +1221,12 @@ namespace XenAdmin
this.maintenanceModeToolStripMenuItem1.Name = "maintenanceModeToolStripMenuItem1";
resources.ApplyResources(this.maintenanceModeToolStripMenuItem1, "maintenanceModeToolStripMenuItem1");
//
+ // controlDomainMemoryToolStripMenuItem
+ //
+ this.controlDomainMemoryToolStripMenuItem.Command = new XenAdmin.Commands.ChangeControlDomainMemoryCommand();
+ this.controlDomainMemoryToolStripMenuItem.Name = "controlDomainMemoryToolStripMenuItem";
+ resources.ApplyResources(this.controlDomainMemoryToolStripMenuItem, "controlDomainMemoryToolStripMenuItem");
+ //
// RemoveCrashdumpsToolStripMenuItem
//
this.RemoveCrashdumpsToolStripMenuItem.Command = new XenAdmin.Commands.RemoveHostCrashDumpsCommand();
@@ -2125,6 +2133,7 @@ namespace XenAdmin
private TabPage TabPageADUpsell;
private TabPage TabPageCvmConsole;
private TabPage TabPagePvs;
+ private CommandToolStripMenuItem controlDomainMemoryToolStripMenuItem;
}
}
diff --git a/XenAdmin/MainWindow.cs b/XenAdmin/MainWindow.cs
index dc45c994e..dab6b6e39 100644
--- a/XenAdmin/MainWindow.cs
+++ b/XenAdmin/MainWindow.cs
@@ -1427,8 +1427,8 @@ namespace XenAdmin
ShowTab(ad_upsell ? TabPageADUpsell : TabPageAD, !multi && !SearchMode && (isPoolSelected || isHostSelected && isHostLive));
- bool hasPvsFarms = selectionConnection != null && selectionConnection.Cache.PVS_farms.Length > 0;
- ShowTab(TabPagePvs, !multi && !SearchMode && isPoolOrLiveStandaloneHost && hasPvsFarms && !Helpers.FeatureForbidden(SelectionManager.Selection.FirstAsXenObject, Host.RestrictPvsCache));
+ bool hasPvsSites = selectionConnection != null && selectionConnection.Cache.PVS_sites.Length > 0;
+ ShowTab(TabPagePvs, !multi && !SearchMode && isPoolOrLiveStandaloneHost && hasPvsSites && !Helpers.FeatureForbidden(SelectionManager.Selection.FirstAsXenObject, Host.RestrictPvsCache));
foreach (TabPageFeature f in pluginManager.GetAllFeatures(f => !f.IsConsoleReplacement && !multi && f.ShowTab))
ShowTab(f.TabPage, true);
diff --git a/XenAdmin/MainWindow.resx b/XenAdmin/MainWindow.resx
index 2eaa852d0..42b7fb2e9 100644
--- a/XenAdmin/MainWindow.resx
+++ b/XenAdmin/MainWindow.resx
@@ -2020,16 +2020,16 @@
&Pool
- 212, 22
+ 216, 22
&Add...
- 209, 6
+ 213, 6
- 212, 22
+ 216, 22
Reb&oot
@@ -2055,7 +2055,7 @@
- 212, 22
+ 216, 22
Power O&n
@@ -2083,19 +2083,19 @@
- 212, 22
+ 216, 22
S&hut Down
- 212, 22
+ 216, 22
Restart Toolstac&k
- 209, 6
+ 213, 6
155, 22
@@ -2131,37 +2131,37 @@
Di&sconnect All
- 212, 22
+ 216, 22
&Connect/Disconnect
- 212, 22
+ 216, 22
Add to &Pool
- 209, 6
+ 213, 6
- 212, 22
+ 216, 22
&Back Up...
- 212, 22
+ 216, 22
Restore From Back&up...
- 209, 6
+ 213, 6
- 212, 22
+ 216, 22
Enter &Maintenance Mode
@@ -2169,11 +2169,17 @@
Testing
+
+ 216, 22
+
+
+ Control &Domain Memory...
+
- 212, 22
+ 216, 22
- Remove Crash &Dump Files
+ Remove Crash Dump &Files
161, 22
@@ -2188,37 +2194,37 @@
&Forget Password
- 212, 22
+ 216, 22
Pass&word
- 209, 6
+ 213, 6
- 212, 22
+ 216, 22
D&estroy
- 212, 22
+ 216, 22
Remo&ve from [XenCenter]
- 209, 6
+ 213, 6
- 212, 22
+ 216, 22
PluginItemsPlaceHolder
- 212, 22
+ 216, 22
P&roperties
@@ -3312,6 +3318,12 @@
XenAdmin.Commands.CommandToolStripMenuItem, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
+ controlDomainMemoryToolStripMenuItem
+
+
+ XenAdmin.Commands.CommandToolStripMenuItem, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
RemoveCrashdumpsToolStripMenuItem
diff --git a/XenAdmin/TabPages/PvsPage.Designer.cs b/XenAdmin/TabPages/PvsPage.Designer.cs
index 18a29a2d2..0d9167ac7 100644
--- a/XenAdmin/TabPages/PvsPage.Designer.cs
+++ b/XenAdmin/TabPages/PvsPage.Designer.cs
@@ -44,17 +44,17 @@
this.ColumnSR = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnPrepopulation = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.label2 = new System.Windows.Forms.Label();
- this.dataGridViewFarms = new XenAdmin.Controls.DataGridViewEx.DataGridViewEx();
- this.ColumnFarm = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.dataGridViewSites = new XenAdmin.Controls.DataGridViewEx.DataGridViewEx();
+ this.ColumnSite = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnConfiguration = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnSRs = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ConfigureButton = new System.Windows.Forms.Button();
- this.ViewPvsFarmsButton = new System.Windows.Forms.Button();
+ this.ViewPvsSitesButton = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.pageContainerPanel.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridViewVms)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.dataGridViewFarms)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridViewSites)).BeginInit();
this.SuspendLayout();
//
// pageContainerPanel
@@ -68,9 +68,9 @@
this.tableLayoutPanel1.Controls.Add(this.button2, 0, 5);
this.tableLayoutPanel1.Controls.Add(this.dataGridViewVms, 0, 4);
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 3);
- this.tableLayoutPanel1.Controls.Add(this.dataGridViewFarms, 0, 1);
+ this.tableLayoutPanel1.Controls.Add(this.dataGridViewSites, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.ConfigureButton, 0, 2);
- this.tableLayoutPanel1.Controls.Add(this.ViewPvsFarmsButton, 1, 2);
+ this.tableLayoutPanel1.Controls.Add(this.ViewPvsSitesButton, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
@@ -144,32 +144,32 @@
this.tableLayoutPanel1.SetColumnSpan(this.label2, 2);
this.label2.Name = "label2";
//
- // dataGridViewFarms
+ // dataGridViewSites
//
- this.dataGridViewFarms.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
- this.dataGridViewFarms.BackgroundColor = System.Drawing.SystemColors.Window;
- this.dataGridViewFarms.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
- this.dataGridViewFarms.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
- this.dataGridViewFarms.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
- this.ColumnFarm,
+ this.dataGridViewSites.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
+ this.dataGridViewSites.BackgroundColor = System.Drawing.SystemColors.Window;
+ this.dataGridViewSites.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
+ this.dataGridViewSites.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+ this.dataGridViewSites.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+ this.ColumnSite,
this.ColumnConfiguration,
this.ColumnSRs});
- this.tableLayoutPanel1.SetColumnSpan(this.dataGridViewFarms, 2);
- resources.ApplyResources(this.dataGridViewFarms, "dataGridViewFarms");
- this.dataGridViewFarms.MultiSelect = true;
- this.dataGridViewFarms.Name = "dataGridViewFarms";
- this.dataGridViewFarms.ReadOnly = true;
+ this.tableLayoutPanel1.SetColumnSpan(this.dataGridViewSites, 2);
+ resources.ApplyResources(this.dataGridViewSites, "dataGridViewSites");
+ this.dataGridViewSites.MultiSelect = true;
+ this.dataGridViewSites.Name = "dataGridViewSites";
+ this.dataGridViewSites.ReadOnly = true;
//
- // ColumnFarm
+ // ColumnSite
//
- this.ColumnFarm.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.ColumnHeader;
+ this.ColumnSite.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.ColumnHeader;
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.TopLeft;
dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
- this.ColumnFarm.DefaultCellStyle = dataGridViewCellStyle5;
- this.ColumnFarm.FillWeight = 20F;
- resources.ApplyResources(this.ColumnFarm, "ColumnFarm");
- this.ColumnFarm.Name = "ColumnFarm";
- this.ColumnFarm.ReadOnly = true;
+ this.ColumnSite.DefaultCellStyle = dataGridViewCellStyle5;
+ this.ColumnSite.FillWeight = 20F;
+ resources.ApplyResources(this.ColumnSite, "ColumnSite");
+ this.ColumnSite.Name = "ColumnSite";
+ this.ColumnSite.ReadOnly = true;
//
// ColumnConfiguration
//
@@ -197,12 +197,12 @@
this.ConfigureButton.Name = "ConfigureButton";
this.ConfigureButton.UseVisualStyleBackColor = true;
//
- // ViewPvsFarmsButton
+ // ViewPvsSitesButton
//
- resources.ApplyResources(this.ViewPvsFarmsButton, "ViewPvsFarmsButton");
- this.ViewPvsFarmsButton.Name = "ViewPvsFarmsButton";
- this.ViewPvsFarmsButton.UseVisualStyleBackColor = true;
- this.ViewPvsFarmsButton.Click += new System.EventHandler(this.ViewPvsFarmsButton_Click);
+ resources.ApplyResources(this.ViewPvsSitesButton, "ViewPvsSitesButton");
+ this.ViewPvsSitesButton.Name = "ViewPvsSitesButton";
+ this.ViewPvsSitesButton.UseVisualStyleBackColor = true;
+ this.ViewPvsSitesButton.Click += new System.EventHandler(this.ViewPvsSitesButton_Click);
//
// label1
//
@@ -219,7 +219,7 @@
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridViewVms)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.dataGridViewFarms)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridViewSites)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -228,9 +228,9 @@
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
- private Controls.DataGridViewEx.DataGridViewEx dataGridViewFarms;
+ private Controls.DataGridViewEx.DataGridViewEx dataGridViewSites;
public System.Windows.Forms.Button ConfigureButton;
- public System.Windows.Forms.Button ViewPvsFarmsButton;
+ public System.Windows.Forms.Button ViewPvsSitesButton;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
public System.Windows.Forms.Button button2;
@@ -239,7 +239,7 @@
private System.Windows.Forms.DataGridViewTextBoxColumn columnCurrentlyCached;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnSR;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnPrepopulation;
- private System.Windows.Forms.DataGridViewTextBoxColumn ColumnFarm;
+ private System.Windows.Forms.DataGridViewTextBoxColumn ColumnSite;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnConfiguration;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnSRs;
}
diff --git a/XenAdmin/TabPages/PvsPage.cs b/XenAdmin/TabPages/PvsPage.cs
index 1069eb34f..118e3284c 100644
--- a/XenAdmin/TabPages/PvsPage.cs
+++ b/XenAdmin/TabPages/PvsPage.cs
@@ -61,7 +61,7 @@ namespace XenAdmin.TabPages
{
if (connection != null)
{
- connection.Cache.DeregisterBatchCollectionChanged(PvsFarmBatchCollectionChanged);
+ connection.Cache.DeregisterBatchCollectionChanged(PvsSiteBatchCollectionChanged);
connection.Cache.DeregisterBatchCollectionChanged(PvsProxyBatchCollectionChanged);
}
@@ -69,16 +69,16 @@ namespace XenAdmin.TabPages
if (connection != null)
{
- connection.Cache.RegisterBatchCollectionChanged(PvsFarmBatchCollectionChanged);
+ connection.Cache.RegisterBatchCollectionChanged(PvsSiteBatchCollectionChanged);
connection.Cache.RegisterBatchCollectionChanged(PvsProxyBatchCollectionChanged);
}
- LoadFarms();
+ LoadSites();
LoadVMs();
}
}
- private void LoadFarms()
+ private void LoadSites()
{
Program.AssertOnEventThread();
@@ -87,22 +87,22 @@ namespace XenAdmin.TabPages
try
{
- dataGridViewFarms.SuspendLayout();
- dataGridViewFarms.Rows.Clear();
+ dataGridViewSites.SuspendLayout();
+ dataGridViewSites.Rows.Clear();
var rowList = new List();
- foreach (var pvsFarm in Connection.Cache.PVS_farms)
- rowList.Add(NewPvsFarmRow(pvsFarm));
+ foreach (var pvsSite in Connection.Cache.PVS_sites)
+ rowList.Add(NewPvsSiteRow(pvsSite));
- dataGridViewFarms.Rows.AddRange(rowList.ToArray());
+ dataGridViewSites.Rows.AddRange(rowList.ToArray());
- if (dataGridViewFarms.SelectedRows.Count == 0 && dataGridViewFarms.Rows.Count > 0)
- dataGridViewFarms.Rows[0].Selected = true;
+ if (dataGridViewSites.SelectedRows.Count == 0 && dataGridViewSites.Rows.Count > 0)
+ dataGridViewSites.Rows[0].Selected = true;
}
finally
{
- dataGridViewFarms.ResumeLayout();
+ dataGridViewSites.ResumeLayout();
}
}
@@ -132,20 +132,20 @@ namespace XenAdmin.TabPages
}
}
- private DataGridViewRow NewPvsFarmRow(PVS_farm pvsFarm)
+ private DataGridViewRow NewPvsSiteRow(PVS_site pvsSite)
{
- var farmCell = new DataGridViewTextBoxCell {Value = pvsFarm.name};
+ var siteCell = new DataGridViewTextBoxCell {Value = pvsSite.name};
var configurationCell = new DataGridViewTextBoxCell
{
- Value = pvsFarm.cache_storage.Count > 0 ? Messages.PVS_CACHE_MEMORY_AND_DISK: Messages.PVS_CACHE_MEMORY_ONLY
+ Value = pvsSite.cache_storage.Count > 0 ? Messages.PVS_CACHE_MEMORY_AND_DISK: Messages.PVS_CACHE_MEMORY_ONLY
};
var cacheSrsCell = new DataGridViewTextBoxCell
{
- Value = string.Join(", ", Connection.ResolveAll(pvsFarm.cache_storage))
+ Value = string.Join(", ", Connection.ResolveAll(pvsSite.cache_storage))
};
- var newRow = new DataGridViewRow { Tag = pvsFarm };
- newRow.Cells.AddRange(farmCell, configurationCell, cacheSrsCell);
+ var newRow = new DataGridViewRow { Tag = pvsSite };
+ newRow.Cells.AddRange(siteCell, configurationCell, cacheSrsCell);
return newRow;
}
@@ -182,9 +182,9 @@ namespace XenAdmin.TabPages
}
}
- private void PvsFarmBatchCollectionChanged(object sender, EventArgs e)
+ private void PvsSiteBatchCollectionChanged(object sender, EventArgs e)
{
- Program.Invoke(this, LoadFarms);
+ Program.Invoke(this, LoadSites);
}
private void PvsProxyBatchCollectionChanged(object sender, EventArgs e)
@@ -208,9 +208,9 @@ namespace XenAdmin.TabPages
}
}
- private void ViewPvsFarmsButton_Click(object sender, EventArgs e)
+ private void ViewPvsSitesButton_Click(object sender, EventArgs e)
{
- Program.MainWindow.ShowPerConnectionWizard(connection, new PvsFarmDialog(connection));
+ Program.MainWindow.ShowPerConnectionWizard(connection, new PvsSiteDialog(connection));
}
}
}
diff --git a/XenAdmin/TabPages/PvsPage.ja.resx b/XenAdmin/TabPages/PvsPage.ja.resx
index 70ad390e8..b4289fa5b 100644
--- a/XenAdmin/TabPages/PvsPage.ja.resx
+++ b/XenAdmin/TabPages/PvsPage.ja.resx
@@ -131,7 +131,7 @@
- <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button2" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewVms" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewFarms" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="ConfigureButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings>
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button2" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewVms" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewSites" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="ConfigureButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings>
@@ -270,7 +270,7 @@
2
-
+
True
@@ -279,34 +279,34 @@
True
-
+
Top, Left, Right
-
+
Segoe UI, 9pt
-
+
0, 23
-
+
0, 0, 1, 5
-
+
718, 165
-
+
5
-
- dataGridViewFarms
+
+ dataGridViewSites
-
+
XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
-
+
tableLayoutPanel1
-
+
3
@@ -361,7 +361,7 @@
7
- &View PVS Farms...
+ &View PVS Sites...
button1
@@ -439,7 +439,7 @@
0
- <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button2" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewVms" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewFarms" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="ConfigureButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings>
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button2" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewVms" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewSites" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="ConfigureButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings>
True
@@ -474,13 +474,13 @@
Marked for prepopulation
-
+
True
-
- PVS Farm
+
+ PVS Site
-
+
80
@@ -534,10 +534,10 @@
System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- ColumnFarm
+
+ ColumnSite
-
+
System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
diff --git a/XenAdmin/TabPages/PvsPage.resx b/XenAdmin/TabPages/PvsPage.resx
index 08c69385f..fe0069485 100644
--- a/XenAdmin/TabPages/PvsPage.resx
+++ b/XenAdmin/TabPages/PvsPage.resx
@@ -267,16 +267,16 @@
2
-
+
True
-
- PVS Farm
+
+ PVS Site
-
+
80
-
+
82
@@ -300,34 +300,34 @@
80
-
+
Fill
-
+
Segoe UI, 9pt
-
+
0, 23
-
+
0, 0, 1, 5
-
+
561, 155
-
+
5
-
- dataGridViewFarms
+
+ dataGridViewSites
-
+
XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
-
+
tableLayoutPanel1
-
+
3
@@ -363,37 +363,37 @@
4
-
+
True
-
+
NoControl
-
+
131, 186
-
+
0, 3, 3, 3
-
+
104, 23
-
+
7
-
- View PVS &Farms...
+
+ View PVS &Sites...
-
- ViewPvsFarmsButton
+
+ ViewPvsSitesButton
-
+
System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
tableLayoutPanel1
-
+
5
@@ -460,7 +460,7 @@
0
- <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button2" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewVms" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewFarms" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="ConfigureButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="ViewPvsFarmsButton" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,Absolute,160,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings>
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button2" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewVms" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewSites" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="ConfigureButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="ViewPvsSitesButton" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,Absolute,160,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings>
0, 91
@@ -513,10 +513,10 @@
System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- ColumnFarm
+
+ ColumnSite
-
+
System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
diff --git a/XenAdmin/TabPages/PvsPage.zh-CN.resx b/XenAdmin/TabPages/PvsPage.zh-CN.resx
index 70ad390e8..b4289fa5b 100644
--- a/XenAdmin/TabPages/PvsPage.zh-CN.resx
+++ b/XenAdmin/TabPages/PvsPage.zh-CN.resx
@@ -131,7 +131,7 @@
- <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button2" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewVms" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewFarms" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="ConfigureButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings>
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button2" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewVms" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewSites" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="ConfigureButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings>
@@ -270,7 +270,7 @@
2
-
+
True
@@ -279,34 +279,34 @@
True
-
+
Top, Left, Right
-
+
Segoe UI, 9pt
-
+
0, 23
-
+
0, 0, 1, 5
-
+
718, 165
-
+
5
-
- dataGridViewFarms
+
+ dataGridViewSites
-
+
XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
-
+
tableLayoutPanel1
-
+
3
@@ -361,7 +361,7 @@
7
- &View PVS Farms...
+ &View PVS Sites...
button1
@@ -439,7 +439,7 @@
0
- <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button2" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewVms" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewFarms" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="ConfigureButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings>
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button2" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewVms" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="dataGridViewSites" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="ConfigureButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings>
True
@@ -474,13 +474,13 @@
Marked for prepopulation
-
+
True
-
- PVS Farm
+
+ PVS Site
-
+
80
@@ -534,10 +534,10 @@
System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- ColumnFarm
+
+ ColumnSite
-
+
System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
diff --git a/XenAdmin/XenAdmin.csproj b/XenAdmin/XenAdmin.csproj
index c4ee5f729..62c0e3de4 100644
--- a/XenAdmin/XenAdmin.csproj
+++ b/XenAdmin/XenAdmin.csproj
@@ -111,6 +111,7 @@
+
@@ -157,12 +158,12 @@
ConsolePanel.cs
-
-
+
+
Component
-
- CollapsingPvsFarmServerDataGridView.cs
+
+ CollapsingPvsSiteServerDataGridView.cs
Component
@@ -226,11 +227,17 @@
-
+
Form
-
- PvsFarmDialog.cs
+
+ PvsSiteDialog.cs
+
+
+ Form
+
+
+ ControlDomainMemoryDialog.cs
@@ -1542,6 +1549,15 @@
Designer
BallooningDialogAdvanced.cs
+
+ ControlDomainMemoryDialog.cs
+
+
+ ControlDomainMemoryDialog.cs
+
+
+ ControlDomainMemoryDialog.cs
+
Designer
DateFilterDialog.cs
@@ -1550,16 +1566,16 @@
Designer
AdPasswordPrompt.cs
-
- PvsFarmDialog.cs
+
+ PvsSiteDialog.cs
Designer
-
- PvsFarmDialog.cs
+
+ PvsSiteDialog.cs
Designer
-
- PvsFarmDialog.cs
+
+ PvsSiteDialog.cs
Designer
@@ -1864,9 +1880,11 @@
PvsPage.cs
+ Designer
PvsPage.cs
+ Designer
PvsPage.cs
diff --git a/XenAdminTests/TabsAndMenus/MainMenuGeorge.cs b/XenAdminTests/TabsAndMenus/MainMenuGeorge.cs
index a7f21429f..b950cf899 100644
--- a/XenAdminTests/TabsAndMenus/MainMenuGeorge.cs
+++ b/XenAdminTests/TabsAndMenus/MainMenuGeorge.cs
@@ -101,7 +101,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", false, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", false, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", false, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", false, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -210,7 +211,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", false, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", false, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", true, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", true, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -321,7 +323,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", true, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", true, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", true, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", true, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -432,7 +435,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", false, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", false, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", false, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", false, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -544,7 +548,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", false, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", vm.Home() != null, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", false, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", false, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -658,7 +663,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", false, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", sr.Home != null, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", false, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", false, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -773,7 +779,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", false, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", false, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", false, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", false, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -891,7 +898,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", false, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", false, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", false, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", false, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -1010,7 +1018,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", false, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", false, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", false, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", false, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -1130,7 +1139,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", false, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", false, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", false, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", false, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -1251,7 +1261,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", false, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", false, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", false, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", false, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -1367,7 +1378,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", true, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", true, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", true, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", true, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -1476,7 +1488,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", true, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", true, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", true, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", true, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -1587,7 +1600,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", false, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", true, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", false, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", false, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -1726,7 +1740,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", false, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", true, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", false, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", false, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
@@ -1851,7 +1866,8 @@ namespace XenAdminTests.TabsAndMenus
new ExpectedTextMenuItem("Restore From Back&up...", false, false ),
new ExpectedSeparator(),
new ExpectedTextMenuItem("Enter &Maintenance Mode...", false, false ),
- new ExpectedTextMenuItem("Remove Crash &Dump Files", false, false ),
+ new ExpectedTextMenuItem("Control &Domain Memory...", false, false ),
+ new ExpectedTextMenuItem("Remove Crash Dump &Files", false, false ),
new ExpectedTextMenuItem("Pass&word", false, false, new ExpectedMenuItem[]{
new ExpectedTextMenuItem("&Change...", false, false ),
new ExpectedTextMenuItem("&Forget Password", false, false )}),
diff --git a/XenModel/Actions/Host/ChangeControlDomainMemoryAction.cs b/XenModel/Actions/Host/ChangeControlDomainMemoryAction.cs
new file mode 100644
index 000000000..72c0a9284
--- /dev/null
+++ b/XenModel/Actions/Host/ChangeControlDomainMemoryAction.cs
@@ -0,0 +1,65 @@
+/* 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;
+using XenAPI;
+using XenAdmin.Actions.VMActions;
+
+
+namespace XenAdmin.Actions
+{
+ public class ChangeControlDomainMemoryAction : AsyncAction
+ {
+ long memory;
+
+ public ChangeControlDomainMemoryAction(Host host, long memory, bool suppressHistory)
+ : base(host.Connection, string.Format(Messages.ACTION_CHANGE_CONTROL_DOMAIN_MEMORY, host.Name), suppressHistory)
+ {
+ Host = host;
+ this.memory = memory;
+
+ #region RBAC Dependencies
+
+ ApiMethodsToRoleCheck.Add("vm.set_memory");
+
+ #endregion
+ }
+
+ protected override void Run()
+ {
+ VM vm = Host.ControlDomainZero;
+
+ XenAPI.VM.set_memory(Session, vm.opaque_ref, memory);
+
+ Description = Messages.COMPLETED;
+ }
+ }
+}
diff --git a/XenModel/Messages.Designer.cs b/XenModel/Messages.Designer.cs
index b22cd6d21..998916022 100755
--- a/XenModel/Messages.Designer.cs
+++ b/XenModel/Messages.Designer.cs
@@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
+// Runtime Version:4.0.30319.34209
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -78,6 +78,15 @@ namespace XenAdmin {
}
}
+ ///
+ /// Looks up a localized string similar to Changing control domain memory settings on '{0}'.
+ ///
+ public static string ACTION_CHANGE_CONTROL_DOMAIN_MEMORY {
+ get {
+ return ResourceManager.GetString("ACTION_CHANGE_CONTROL_DOMAIN_MEMORY", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Change disk size.
///
@@ -6912,6 +6921,17 @@ namespace XenAdmin {
}
}
+ ///
+ /// Looks up a localized string similar to Changing the Control Domain memory will cause the server to be rebooted.
+ ///
+ ///Do you want to continue?.
+ ///
+ public static string CONFIRM_CHANGE_CONTROL_DOMAIN_MEMORY {
+ get {
+ return ResourceManager.GetString("CONFIRM_CHANGE_CONTROL_DOMAIN_MEMORY", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Changing the maximum memory of these VMs will cause them to be rebooted.
///
@@ -8281,6 +8301,24 @@ namespace XenAdmin {
}
}
+ ///
+ /// Looks up a localized string similar to Control Domain Memory Settings - {0}.
+ ///
+ public static string CONTROL_DOMAIN_MEMORY_DIALOG_TITLE {
+ get {
+ return ResourceManager.GetString("CONTROL_DOMAIN_MEMORY_DIALOG_TITLE", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to &Control Domain Memory:.
+ ///
+ public static string CONTROL_DOMAIN_MEMORY_LABEL {
+ get {
+ return ResourceManager.GetString("CONTROL_DOMAIN_MEMORY_LABEL", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to &Convert.
///
@@ -17037,6 +17075,15 @@ namespace XenAdmin {
}
}
+ ///
+ /// Looks up a localized string similar to Control &Domain Memory....
+ ///
+ public static string HOST_MENU_CONTROL_DOMAIN_MEMORY {
+ get {
+ return ResourceManager.GetString("HOST_MENU_CONTROL_DOMAIN_MEMORY", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to &Migrate VM wizard....
///
@@ -20459,7 +20506,7 @@ namespace XenAdmin {
}
///
- /// Looks up a localized string similar to Remove Crash &Dump Files.
+ /// Looks up a localized string similar to Remove Crash Dump &Files.
///
public static string MAINWINDOW_REMOVE_HOST_CRASHDUMPS {
get {
@@ -27234,11 +27281,11 @@ namespace XenAdmin {
}
///
- /// Looks up a localized string similar to PVS Farms - '{0}'.
+ /// Looks up a localized string similar to PVS Sites - '{0}'.
///
- public static string PVS_FARM_DIALOG_TITLE {
+ public static string PVS_SITE_DIALOG_TITLE {
get {
- return ResourceManager.GetString("PVS_FARM_DIALOG_TITLE", resourceCulture);
+ return ResourceManager.GetString("PVS_SITE_DIALOG_TITLE", resourceCulture);
}
}
diff --git a/XenModel/Messages.ja.resx b/XenModel/Messages.ja.resx
index 626bbdbdb..2279511fb 100644
--- a/XenModel/Messages.ja.resx
+++ b/XenModel/Messages.ja.resx
@@ -9429,8 +9429,8 @@ VM が再起動したら、[[XenServer product] Tools のインストール] を
プロキシ サーバーはサポートされません。
-
- PVS Farms - '{0}'
+
+ PVS Sites - '{0}'
[XenServer product] Tools 未インストール
diff --git a/XenModel/Messages.resx b/XenModel/Messages.resx
index 97a58ae7c..6f0438d29 100755
--- a/XenModel/Messages.resx
+++ b/XenModel/Messages.resx
@@ -126,6 +126,9 @@
Disk size changed for '{0}'.
+
+ Changing control domain memory settings on '{0}'
+
Change disk size
@@ -2511,6 +2514,11 @@ Do you want to assign it to the policy '{2}' instead?
Configuring Workload Balancing on pool '{0}'
+
+ Changing the Control Domain memory will cause the server to be rebooted.
+
+Do you want to continue?
+
Changing the maximum memory of these VMs will cause them to be rebooted.
@@ -3009,6 +3017,12 @@ You can only connect to a single [Citrix] [XenServer product] Express Edition se
&Continue with export
+
+ Control Domain Memory Settings - {0}
+
+
+ &Control Domain Memory:
+
Control domain on host {0}
@@ -6003,6 +6017,9 @@ Click Configure HA to alter the settings displayed below.
(Error generating menu)
+
+ Control &Domain Memory...
+
&Migrate VM wizard...
@@ -7134,7 +7151,7 @@ This will permanently delete and reinitialize all local storage on the servers.
Remo&ve from [XenCenter]
- Remove Crash &Dump Files
+ Remove Crash Dump &Files
Remove Crash Dump &Files
@@ -9477,8 +9494,8 @@ Press OK to continue the wizard and return to the server and follow the instruct
Memory only
-
- PVS Farms - '{0}'
+
+ PVS Sites - '{0}'
PVS Read Cache
diff --git a/XenModel/Messages.zh-CN.resx b/XenModel/Messages.zh-CN.resx
index e7e975707..518d73fdb 100644
--- a/XenModel/Messages.zh-CN.resx
+++ b/XenModel/Messages.zh-CN.resx
@@ -9428,8 +9428,8 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并
不支持代理服务器。
-
- PVS Farms - '{0}'
+
+ PVS Sites - '{0}'
未安装 [XenServer product] Tools
diff --git a/XenModel/Network/Cache.cs b/XenModel/Network/Cache.cs
index f578b7fa3..22430c0f9 100644
--- a/XenModel/Network/Cache.cs
+++ b/XenModel/Network/Cache.cs
@@ -67,9 +67,10 @@ namespace XenAdmin.Network
private readonly ChangeableDictionary, PIF_metrics> _pif_metrics = new ChangeableDictionary, PIF_metrics>();
private readonly ChangeableDictionary, Pool> _pool = new ChangeableDictionary, Pool>();
private readonly ChangeableDictionary, Pool_patch> _pool_patch = new ChangeableDictionary, Pool_patch>();
- private readonly ChangeableDictionary, PVS_farm> _pvs_farm = new ChangeableDictionary, PVS_farm>();
- private readonly ChangeableDictionary, PVS_server> _pvs_server = new ChangeableDictionary, PVS_server>();
+ private readonly ChangeableDictionary, PVS_cache_storage> _pvs_cache_storage = new ChangeableDictionary, PVS_cache_storage>();
private readonly ChangeableDictionary, PVS_proxy> _pvs_proxy = new ChangeableDictionary, PVS_proxy>();
+ private readonly ChangeableDictionary, PVS_server> _pvs_server = new ChangeableDictionary, PVS_server>();
+ private readonly ChangeableDictionary, PVS_site> _pvs_site = new ChangeableDictionary, PVS_site>();
private readonly ChangeableDictionary, Role> _role = new ChangeableDictionary, Role>();
private readonly ChangeableDictionary, SM> _sm = new ChangeableDictionary, SM>();
private readonly ChangeableDictionary, SR> _sr = new ChangeableDictionary, SR>();
@@ -193,9 +194,9 @@ namespace XenAdmin.Network
get { return contents(_pool_patch); }
}
- public PVS_farm[] PVS_farms
+ public PVS_site[] PVS_sites
{
- get { return contents(_pvs_farm); }
+ get { return contents(_pvs_site); }
}
public PVS_server[] PVS_servers
diff --git a/XenModel/Network/ICache.cs b/XenModel/Network/ICache.cs
index 5d1d48f20..43b53707f 100644
--- a/XenModel/Network/ICache.cs
+++ b/XenModel/Network/ICache.cs
@@ -82,7 +82,7 @@ namespace XenAdmin.Network
VM[] VMs { get; }
IEnumerable XenSearchableObjects { get; }
DockerContainer[] DockerContainers { get; }
- PVS_farm[] PVS_farms { get; }
+ PVS_site[] PVS_sites { get; }
PVS_server[] PVS_servers { get; }
PVS_proxy[] PVS_proxies { get; }
void UpdateDockerContainersForVM(IList d, VM v);
diff --git a/XenModel/Utils/Helpers.cs b/XenModel/Utils/Helpers.cs
index 4287164c5..5fa039e7f 100755
--- a/XenModel/Utils/Helpers.cs
+++ b/XenModel/Utils/Helpers.cs
@@ -402,6 +402,25 @@ namespace XenAdmin.Core
HostBuildNumber(host) == CUSTOM_BUILD_NUMBER;
}
+ /// May be null, in which case true is returned.
+ public static bool ElyOrGreater(IXenConnection conn)
+ {
+ return conn == null ? true : ElyOrGreater(Helpers.GetMaster(conn));
+ }
+
+ /// Ely is ver. 2.1.1
+ /// May be null, in which case true is returned.
+ public static bool ElyOrGreater(Host host)
+ {
+ if (host == null)
+ return true;
+
+ string platform_version = HostPlatformVersion(host);
+ return
+ platform_version != null && productVersionCompare(platform_version, "2.1.1") >= 0 ||
+ HostBuildNumber(host) == CUSTOM_BUILD_NUMBER;
+ }
+
///
/// Cream (Creedence SP1) has API version 2.4
///
diff --git a/XenModel/XenAPI-Extensions/Host.cs b/XenModel/XenAPI-Extensions/Host.cs
index 72553a14c..60f2266b2 100644
--- a/XenModel/XenAPI-Extensions/Host.cs
+++ b/XenModel/XenAPI-Extensions/Host.cs
@@ -1249,6 +1249,22 @@ namespace XenAPI
}
}
+ public long dom0_memory
+ {
+ get
+ {
+ long dom0_mem = 0;
+ VM vm = ControlDomainZero;
+ if (vm != null)
+ {
+ VM_metrics vmMetrics = vm.Connection.Resolve(vm.metrics);
+ dom0_mem = vmMetrics != null ? vmMetrics.memory_actual : vm.memory_dynamic_min;
+ }
+ return dom0_mem;
+ }
+ }
+
+
///
/// Friendly string showing memory usage on the host
///
diff --git a/XenModel/XenAPI-Extensions/PVS_farm.cs b/XenModel/XenAPI-Extensions/PVS_site.cs
similarity index 94%
rename from XenModel/XenAPI-Extensions/PVS_farm.cs
rename to XenModel/XenAPI-Extensions/PVS_site.cs
index f8aa75ce9..736a4d1b0 100644
--- a/XenModel/XenAPI-Extensions/PVS_farm.cs
+++ b/XenModel/XenAPI-Extensions/PVS_site.cs
@@ -1,40 +1,40 @@
-/*
- * Copyright (c) Citrix Systems, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1) Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2) Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-namespace XenAPI
-{
- public partial class PVS_farm : XenObject
- {
+/*
+ * Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1) Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2) Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace XenAPI
+{
+ public partial class PVS_site : XenObject
+ {
public override string Name
{
get { return name; }
- }
- }
-}
+ }
+ }
+}
diff --git a/XenModel/XenAPI/FriendlyErrorNames.resx b/XenModel/XenAPI/FriendlyErrorNames.resx
index 4a0be547a..34072c6ab 100644
--- a/XenModel/XenAPI/FriendlyErrorNames.resx
+++ b/XenModel/XenAPI/FriendlyErrorNames.resx
@@ -861,17 +861,17 @@
The provision call can only be invoked on templates, not regular VMs.
-
- The PVS farm contains running proxies.
+
+ The PVS site contains running proxies.
-
- The PVS farm contains servers and cannot be forgotten.
+
+ The PVS site contains servers and cannot be forgotten.
-
- Trying to add a cache SR that is already associated with the farm
+
+ Trying to add a cache SR that is already associated with the site
-
- The SR is in use by the farm and cannot be removed.
+
+ The SR is in use by the site and cannot be removed.
Your current role is not authorized to perform this action.
@@ -1526,8 +1526,8 @@ Authorized Roles: {1}
The SR operation cannot be performed because the SR is not empty.
-
- The SR is not associated with the farm.
+
+ The SR is not associated with the site.
SR is not sharable
@@ -1697,6 +1697,9 @@ Authorized Roles: {1}
This VIF was not mapped to a destination network
+
+ Operation cannot be performed because this VLAN is already in use. Please check your network configuration.
+
You tried to create a VLAN, but the tag you gave ({0}) was invalid -- it must be between 0 and 4094.
@@ -1772,6 +1775,9 @@ Authorized Roles: {1}
The host does not have some of the CPU features that the VM is currently using
+
+ The VM is configured in a way that prevents it from being mobile.
+
The VM cannot be recovered on its own as it is part of a VM appliance.
diff --git a/XenModel/XenAPI/PVS_cache_storage.cs b/XenModel/XenAPI/PVS_cache_storage.cs
new file mode 100644
index 000000000..ea924e3fd
--- /dev/null
+++ b/XenModel/XenAPI/PVS_cache_storage.cs
@@ -0,0 +1,319 @@
+/*
+ * Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1) Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2) Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+using CookComputing.XmlRpc;
+
+
+namespace XenAPI
+{
+ ///
+ /// Describes the storage that is available to a PVS site for caching purposes
+ ///
+ public partial class PVS_cache_storage : XenObject
+ {
+ public PVS_cache_storage()
+ {
+ }
+
+ public PVS_cache_storage(string uuid,
+ XenRef site,
+ XenRef SR,
+ long size)
+ {
+ this.uuid = uuid;
+ this.site = site;
+ this.SR = SR;
+ this.size = size;
+ }
+
+ ///
+ /// Creates a new PVS_cache_storage from a Proxy_PVS_cache_storage.
+ ///
+ ///
+ public PVS_cache_storage(Proxy_PVS_cache_storage proxy)
+ {
+ this.UpdateFromProxy(proxy);
+ }
+
+ public override void UpdateFrom(PVS_cache_storage update)
+ {
+ uuid = update.uuid;
+ site = update.site;
+ SR = update.SR;
+ size = update.size;
+ }
+
+ internal void UpdateFromProxy(Proxy_PVS_cache_storage proxy)
+ {
+ uuid = proxy.uuid == null ? null : (string)proxy.uuid;
+ site = proxy.site == null ? null : XenRef.Create(proxy.site);
+ SR = proxy.SR == null ? null : XenRef.Create(proxy.SR);
+ size = proxy.size == null ? 0 : long.Parse((string)proxy.size);
+ }
+
+ public Proxy_PVS_cache_storage ToProxy()
+ {
+ Proxy_PVS_cache_storage result_ = new Proxy_PVS_cache_storage();
+ result_.uuid = (uuid != null) ? uuid : "";
+ result_.site = (site != null) ? site : "";
+ result_.SR = (SR != null) ? SR : "";
+ result_.size = size.ToString();
+ return result_;
+ }
+
+ ///
+ /// Creates a new PVS_cache_storage from a Hashtable.
+ ///
+ ///
+ public PVS_cache_storage(Hashtable table)
+ {
+ uuid = Marshalling.ParseString(table, "uuid");
+ site = Marshalling.ParseRef(table, "site");
+ SR = Marshalling.ParseRef(table, "SR");
+ size = Marshalling.ParseLong(table, "size");
+ }
+
+ public bool DeepEquals(PVS_cache_storage other)
+ {
+ if (ReferenceEquals(null, other))
+ return false;
+ if (ReferenceEquals(this, other))
+ return true;
+
+ return Helper.AreEqual2(this._uuid, other._uuid) &&
+ Helper.AreEqual2(this._site, other._site) &&
+ Helper.AreEqual2(this._SR, other._SR) &&
+ Helper.AreEqual2(this._size, other._size);
+ }
+
+ public override string SaveChanges(Session session, string opaqueRef, PVS_cache_storage server)
+ {
+ if (opaqueRef == null)
+ {
+ Proxy_PVS_cache_storage p = this.ToProxy();
+ return session.proxy.pvs_cache_storage_create(session.uuid, p).parse();
+ }
+ else
+ {
+ throw new InvalidOperationException("This type has no read/write properties");
+ }
+ }
+ ///
+ /// Get a record containing the current state of the given PVS_cache_storage.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_cache_storage
+ public static PVS_cache_storage get_record(Session session, string _pvs_cache_storage)
+ {
+ return new PVS_cache_storage((Proxy_PVS_cache_storage)session.proxy.pvs_cache_storage_get_record(session.uuid, (_pvs_cache_storage != null) ? _pvs_cache_storage : "").parse());
+ }
+
+ ///
+ /// Get a reference to the PVS_cache_storage instance with the specified UUID.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// UUID of object to return
+ public static XenRef get_by_uuid(Session session, string _uuid)
+ {
+ return XenRef.Create(session.proxy.pvs_cache_storage_get_by_uuid(session.uuid, (_uuid != null) ? _uuid : "").parse());
+ }
+
+ ///
+ /// Create a new PVS_cache_storage instance, and return its handle.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// All constructor arguments
+ public static XenRef create(Session session, PVS_cache_storage _record)
+ {
+ return XenRef.Create(session.proxy.pvs_cache_storage_create(session.uuid, _record.ToProxy()).parse());
+ }
+
+ ///
+ /// Create a new PVS_cache_storage instance, and return its handle.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// All constructor arguments
+ public static XenRef async_create(Session session, PVS_cache_storage _record)
+ {
+ return XenRef.Create(session.proxy.async_pvs_cache_storage_create(session.uuid, _record.ToProxy()).parse());
+ }
+
+ ///
+ /// Destroy the specified PVS_cache_storage instance.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_cache_storage
+ public static void destroy(Session session, string _pvs_cache_storage)
+ {
+ session.proxy.pvs_cache_storage_destroy(session.uuid, (_pvs_cache_storage != null) ? _pvs_cache_storage : "").parse();
+ }
+
+ ///
+ /// Destroy the specified PVS_cache_storage instance.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_cache_storage
+ public static XenRef async_destroy(Session session, string _pvs_cache_storage)
+ {
+ return XenRef.Create(session.proxy.async_pvs_cache_storage_destroy(session.uuid, (_pvs_cache_storage != null) ? _pvs_cache_storage : "").parse());
+ }
+
+ ///
+ /// Get the uuid field of the given PVS_cache_storage.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_cache_storage
+ public static string get_uuid(Session session, string _pvs_cache_storage)
+ {
+ return (string)session.proxy.pvs_cache_storage_get_uuid(session.uuid, (_pvs_cache_storage != null) ? _pvs_cache_storage : "").parse();
+ }
+
+ ///
+ /// Get the site field of the given PVS_cache_storage.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_cache_storage
+ public static XenRef get_site(Session session, string _pvs_cache_storage)
+ {
+ return XenRef.Create(session.proxy.pvs_cache_storage_get_site(session.uuid, (_pvs_cache_storage != null) ? _pvs_cache_storage : "").parse());
+ }
+
+ ///
+ /// Get the SR field of the given PVS_cache_storage.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_cache_storage
+ public static XenRef get_SR(Session session, string _pvs_cache_storage)
+ {
+ return XenRef.Create(session.proxy.pvs_cache_storage_get_sr(session.uuid, (_pvs_cache_storage != null) ? _pvs_cache_storage : "").parse());
+ }
+
+ ///
+ /// Get the size field of the given PVS_cache_storage.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_cache_storage
+ public static long get_size(Session session, string _pvs_cache_storage)
+ {
+ return long.Parse((string)session.proxy.pvs_cache_storage_get_size(session.uuid, (_pvs_cache_storage != null) ? _pvs_cache_storage : "").parse());
+ }
+
+ ///
+ /// Unique identifier/object reference
+ /// Experimental. First published in .
+ ///
+ public virtual string uuid
+ {
+ get { return _uuid; }
+ set
+ {
+ if (!Helper.AreEqual(value, _uuid))
+ {
+ _uuid = value;
+ Changed = true;
+ NotifyPropertyChanged("uuid");
+ }
+ }
+ }
+ private string _uuid;
+
+ ///
+ /// PVS site this proxy is part of
+ /// Experimental. First published in .
+ ///
+ public virtual XenRef site
+ {
+ get { return _site; }
+ set
+ {
+ if (!Helper.AreEqual(value, _site))
+ {
+ _site = value;
+ Changed = true;
+ NotifyPropertyChanged("site");
+ }
+ }
+ }
+ private XenRef _site;
+
+ ///
+ /// SR providing storage for the PVS cache
+ /// Experimental. First published in .
+ ///
+ public virtual XenRef SR
+ {
+ get { return _SR; }
+ set
+ {
+ if (!Helper.AreEqual(value, _SR))
+ {
+ _SR = value;
+ Changed = true;
+ NotifyPropertyChanged("SR");
+ }
+ }
+ }
+ private XenRef _SR;
+
+ ///
+ /// The size of the cache VDI (in bytes)
+ /// Experimental. First published in .
+ ///
+ public virtual long size
+ {
+ get { return _size; }
+ set
+ {
+ if (!Helper.AreEqual(value, _size))
+ {
+ _size = value;
+ Changed = true;
+ NotifyPropertyChanged("size");
+ }
+ }
+ }
+ private long _size;
+ }
+}
diff --git a/XenModel/XenAPI/PVS_proxy.cs b/XenModel/XenAPI/PVS_proxy.cs
index c8361fab1..e4091eec5 100644
--- a/XenModel/XenAPI/PVS_proxy.cs
+++ b/XenModel/XenAPI/PVS_proxy.cs
@@ -1,445 +1,445 @@
-/*
- * Copyright (c) Citrix Systems, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1) Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2) Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-using CookComputing.XmlRpc;
-
-
-namespace XenAPI
-{
- ///
- /// a proxy connects a VM/VIF with a PVS farm
- ///
- public partial class PVS_proxy : XenObject
- {
- public PVS_proxy()
- {
- }
-
- public PVS_proxy(string uuid,
- XenRef farm,
- XenRef VIF,
- bool prepopulate,
- bool currently_attached,
- XenRef cache_SR)
- {
- this.uuid = uuid;
- this.farm = farm;
- this.VIF = VIF;
- this.prepopulate = prepopulate;
- this.currently_attached = currently_attached;
- this.cache_SR = cache_SR;
- }
-
- ///
- /// Creates a new PVS_proxy from a Proxy_PVS_proxy.
- ///
- ///
- public PVS_proxy(Proxy_PVS_proxy proxy)
- {
- this.UpdateFromProxy(proxy);
- }
-
- public override void UpdateFrom(PVS_proxy update)
- {
- uuid = update.uuid;
- farm = update.farm;
- VIF = update.VIF;
- prepopulate = update.prepopulate;
- currently_attached = update.currently_attached;
- cache_SR = update.cache_SR;
- }
-
- internal void UpdateFromProxy(Proxy_PVS_proxy proxy)
- {
- uuid = proxy.uuid == null ? null : (string)proxy.uuid;
- farm = proxy.farm == null ? null : XenRef.Create(proxy.farm);
- VIF = proxy.VIF == null ? null : XenRef.Create(proxy.VIF);
- prepopulate = (bool)proxy.prepopulate;
- currently_attached = (bool)proxy.currently_attached;
- cache_SR = proxy.cache_SR == null ? null : XenRef.Create(proxy.cache_SR);
- }
-
- public Proxy_PVS_proxy ToProxy()
- {
- Proxy_PVS_proxy result_ = new Proxy_PVS_proxy();
- result_.uuid = (uuid != null) ? uuid : "";
- result_.farm = (farm != null) ? farm : "";
- result_.VIF = (VIF != null) ? VIF : "";
- result_.prepopulate = prepopulate;
- result_.currently_attached = currently_attached;
- result_.cache_SR = (cache_SR != null) ? cache_SR : "";
- return result_;
- }
-
- ///
- /// Creates a new PVS_proxy from a Hashtable.
- ///
- ///
- public PVS_proxy(Hashtable table)
- {
- uuid = Marshalling.ParseString(table, "uuid");
- farm = Marshalling.ParseRef(table, "farm");
- VIF = Marshalling.ParseRef(table, "VIF");
- prepopulate = Marshalling.ParseBool(table, "prepopulate");
- currently_attached = Marshalling.ParseBool(table, "currently_attached");
- cache_SR = Marshalling.ParseRef(table, "cache_SR");
- }
-
- public bool DeepEquals(PVS_proxy other)
- {
- if (ReferenceEquals(null, other))
- return false;
- if (ReferenceEquals(this, other))
- return true;
-
- return Helper.AreEqual2(this._uuid, other._uuid) &&
- Helper.AreEqual2(this._farm, other._farm) &&
- Helper.AreEqual2(this._VIF, other._VIF) &&
- Helper.AreEqual2(this._prepopulate, other._prepopulate) &&
- Helper.AreEqual2(this._currently_attached, other._currently_attached) &&
- Helper.AreEqual2(this._cache_SR, other._cache_SR);
- }
-
- public override string SaveChanges(Session session, string opaqueRef, PVS_proxy server)
- {
- if (opaqueRef == null)
- {
- System.Diagnostics.Debug.Assert(false, "Cannot create instances of this type on the server");
- return "";
- }
- else
- {
- if (!Helper.AreEqual2(_prepopulate, server._prepopulate))
- {
- PVS_proxy.set_prepopulate(session, opaqueRef, _prepopulate);
- }
-
- return null;
- }
- }
- ///
- /// Get a record containing the current state of the given PVS_proxy.
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_proxy
- public static PVS_proxy get_record(Session session, string _pvs_proxy)
- {
- return new PVS_proxy((Proxy_PVS_proxy)session.proxy.pvs_proxy_get_record(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse());
- }
-
- ///
- /// Get a reference to the PVS_proxy instance with the specified UUID.
- /// Experimental. First published in .
- ///
- /// The session
- /// UUID of object to return
- public static XenRef get_by_uuid(Session session, string _uuid)
- {
- return XenRef.Create(session.proxy.pvs_proxy_get_by_uuid(session.uuid, (_uuid != null) ? _uuid : "").parse());
- }
-
- ///
- /// Get the uuid field of the given PVS_proxy.
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_proxy
- public static string get_uuid(Session session, string _pvs_proxy)
- {
- return (string)session.proxy.pvs_proxy_get_uuid(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse();
- }
-
- ///
- /// Get the farm field of the given PVS_proxy.
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_proxy
- public static XenRef get_farm(Session session, string _pvs_proxy)
- {
- return XenRef.Create(session.proxy.pvs_proxy_get_farm(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse());
- }
-
- ///
- /// Get the VIF field of the given PVS_proxy.
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_proxy
- public static XenRef get_VIF(Session session, string _pvs_proxy)
- {
- return XenRef.Create(session.proxy.pvs_proxy_get_vif(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse());
- }
-
- ///
- /// Get the prepopulate field of the given PVS_proxy.
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_proxy
- public static bool get_prepopulate(Session session, string _pvs_proxy)
- {
- return (bool)session.proxy.pvs_proxy_get_prepopulate(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse();
- }
-
- ///
- /// Get the currently_attached field of the given PVS_proxy.
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_proxy
- public static bool get_currently_attached(Session session, string _pvs_proxy)
- {
- return (bool)session.proxy.pvs_proxy_get_currently_attached(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse();
- }
-
- ///
- /// Get the cache_SR field of the given PVS_proxy.
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_proxy
- public static XenRef get_cache_SR(Session session, string _pvs_proxy)
- {
- return XenRef.Create(session.proxy.pvs_proxy_get_cache_sr(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse());
- }
-
- ///
- /// Configure a VM/VIF to use a PVS proxy
- /// Experimental. First published in .
- ///
- /// The session
- /// PVS farm that we proxy for
- /// VIF for the VM that needs to be proxied
- /// if true, prefetch whole disk for VM
- public static XenRef create(Session session, string _farm, string _vif, bool _prepopulate)
- {
- return XenRef.Create(session.proxy.pvs_proxy_create(session.uuid, (_farm != null) ? _farm : "", (_vif != null) ? _vif : "", _prepopulate).parse());
- }
-
- ///
- /// Configure a VM/VIF to use a PVS proxy
- /// Experimental. First published in .
- ///
- /// The session
- /// PVS farm that we proxy for
- /// VIF for the VM that needs to be proxied
- /// if true, prefetch whole disk for VM
- public static XenRef async_create(Session session, string _farm, string _vif, bool _prepopulate)
- {
- return XenRef.Create(session.proxy.async_pvs_proxy_create(session.uuid, (_farm != null) ? _farm : "", (_vif != null) ? _vif : "", _prepopulate).parse());
- }
-
- ///
- /// remove (or switch off) a PVS proxy for this VM
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_proxy
- public static void destroy(Session session, string _pvs_proxy)
- {
- session.proxy.pvs_proxy_destroy(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse();
- }
-
- ///
- /// remove (or switch off) a PVS proxy for this VM
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_proxy
- public static XenRef async_destroy(Session session, string _pvs_proxy)
- {
- return XenRef.Create(session.proxy.async_pvs_proxy_destroy(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse());
- }
-
- ///
- /// change the value of the prepopulate field
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_proxy
- /// set to this value
- public static void set_prepopulate(Session session, string _pvs_proxy, bool _value)
- {
- session.proxy.pvs_proxy_set_prepopulate(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "", _value).parse();
- }
-
- ///
- /// change the value of the prepopulate field
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_proxy
- /// set to this value
- public static XenRef async_set_prepopulate(Session session, string _pvs_proxy, bool _value)
- {
- return XenRef.Create(session.proxy.async_pvs_proxy_set_prepopulate(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "", _value).parse());
- }
-
- ///
- /// Return a list of all the PVS_proxys known to the system.
- /// Experimental. First published in .
- ///
- /// The session
- public static List> get_all(Session session)
- {
- return XenRef.Create(session.proxy.pvs_proxy_get_all(session.uuid).parse());
- }
-
- ///
- /// Get all the PVS_proxy Records at once, in a single XML RPC call
- ///
- /// The session
- public static Dictionary, PVS_proxy> get_all_records(Session session)
- {
- return XenRef.Create(session.proxy.pvs_proxy_get_all_records(session.uuid).parse());
- }
-
- ///
- /// Unique identifier/object reference
- /// Experimental. First published in .
- ///
- public virtual string uuid
- {
- get { return _uuid; }
- set
- {
- if (!Helper.AreEqual(value, _uuid))
- {
- _uuid = value;
- Changed = true;
- NotifyPropertyChanged("uuid");
- }
- }
- }
- private string _uuid;
-
- ///
- /// PVS farm this proxy is part of
- /// Experimental. First published in .
- ///
- public virtual XenRef farm
- {
- get { return _farm; }
- set
- {
- if (!Helper.AreEqual(value, _farm))
- {
- _farm = value;
- Changed = true;
- NotifyPropertyChanged("farm");
- }
- }
- }
- private XenRef _farm;
-
- ///
- /// VIF of the VM using the proxy
- /// Experimental. First published in .
- ///
- public virtual XenRef VIF
- {
- get { return _VIF; }
- set
- {
- if (!Helper.AreEqual(value, _VIF))
- {
- _VIF = value;
- Changed = true;
- NotifyPropertyChanged("VIF");
- }
- }
- }
- private XenRef _VIF;
-
- ///
- /// true = proxy prefetches whole disk for the VM
- /// Experimental. First published in .
- ///
- public virtual bool prepopulate
- {
- get { return _prepopulate; }
- set
- {
- if (!Helper.AreEqual(value, _prepopulate))
- {
- _prepopulate = value;
- Changed = true;
- NotifyPropertyChanged("prepopulate");
- }
- }
- }
- private bool _prepopulate;
-
- ///
- /// true = VM is currently proxied
- /// Experimental. First published in .
- ///
- public virtual bool currently_attached
- {
- get { return _currently_attached; }
- set
- {
- if (!Helper.AreEqual(value, _currently_attached))
- {
- _currently_attached = value;
- Changed = true;
- NotifyPropertyChanged("currently_attached");
- }
- }
- }
- private bool _currently_attached;
-
- ///
- /// SR used by this proxy
- /// Experimental. First published in .
- ///
- public virtual XenRef cache_SR
- {
- get { return _cache_SR; }
- set
- {
- if (!Helper.AreEqual(value, _cache_SR))
- {
- _cache_SR = value;
- Changed = true;
- NotifyPropertyChanged("cache_SR");
- }
- }
- }
- private XenRef _cache_SR;
- }
-}
+/*
+ * Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1) Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2) Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+using CookComputing.XmlRpc;
+
+
+namespace XenAPI
+{
+ ///
+ /// a proxy connects a VM/VIF with a PVS site
+ ///
+ public partial class PVS_proxy : XenObject
+ {
+ public PVS_proxy()
+ {
+ }
+
+ public PVS_proxy(string uuid,
+ XenRef site,
+ XenRef VIF,
+ bool prepopulate,
+ bool currently_attached,
+ XenRef cache_SR)
+ {
+ this.uuid = uuid;
+ this.site = site;
+ this.VIF = VIF;
+ this.prepopulate = prepopulate;
+ this.currently_attached = currently_attached;
+ this.cache_SR = cache_SR;
+ }
+
+ ///
+ /// Creates a new PVS_proxy from a Proxy_PVS_proxy.
+ ///
+ ///
+ public PVS_proxy(Proxy_PVS_proxy proxy)
+ {
+ this.UpdateFromProxy(proxy);
+ }
+
+ public override void UpdateFrom(PVS_proxy update)
+ {
+ uuid = update.uuid;
+ site = update.site;
+ VIF = update.VIF;
+ prepopulate = update.prepopulate;
+ currently_attached = update.currently_attached;
+ cache_SR = update.cache_SR;
+ }
+
+ internal void UpdateFromProxy(Proxy_PVS_proxy proxy)
+ {
+ uuid = proxy.uuid == null ? null : (string)proxy.uuid;
+ site = proxy.site == null ? null : XenRef.Create(proxy.site);
+ VIF = proxy.VIF == null ? null : XenRef.Create(proxy.VIF);
+ prepopulate = (bool)proxy.prepopulate;
+ currently_attached = (bool)proxy.currently_attached;
+ cache_SR = proxy.cache_SR == null ? null : XenRef.Create(proxy.cache_SR);
+ }
+
+ public Proxy_PVS_proxy ToProxy()
+ {
+ Proxy_PVS_proxy result_ = new Proxy_PVS_proxy();
+ result_.uuid = (uuid != null) ? uuid : "";
+ result_.site = (site != null) ? site : "";
+ result_.VIF = (VIF != null) ? VIF : "";
+ result_.prepopulate = prepopulate;
+ result_.currently_attached = currently_attached;
+ result_.cache_SR = (cache_SR != null) ? cache_SR : "";
+ return result_;
+ }
+
+ ///
+ /// Creates a new PVS_proxy from a Hashtable.
+ ///
+ ///
+ public PVS_proxy(Hashtable table)
+ {
+ uuid = Marshalling.ParseString(table, "uuid");
+ site = Marshalling.ParseRef(table, "site");
+ VIF = Marshalling.ParseRef(table, "VIF");
+ prepopulate = Marshalling.ParseBool(table, "prepopulate");
+ currently_attached = Marshalling.ParseBool(table, "currently_attached");
+ cache_SR = Marshalling.ParseRef(table, "cache_SR");
+ }
+
+ public bool DeepEquals(PVS_proxy other)
+ {
+ if (ReferenceEquals(null, other))
+ return false;
+ if (ReferenceEquals(this, other))
+ return true;
+
+ return Helper.AreEqual2(this._uuid, other._uuid) &&
+ Helper.AreEqual2(this._site, other._site) &&
+ Helper.AreEqual2(this._VIF, other._VIF) &&
+ Helper.AreEqual2(this._prepopulate, other._prepopulate) &&
+ Helper.AreEqual2(this._currently_attached, other._currently_attached) &&
+ Helper.AreEqual2(this._cache_SR, other._cache_SR);
+ }
+
+ public override string SaveChanges(Session session, string opaqueRef, PVS_proxy server)
+ {
+ if (opaqueRef == null)
+ {
+ System.Diagnostics.Debug.Assert(false, "Cannot create instances of this type on the server");
+ return "";
+ }
+ else
+ {
+ if (!Helper.AreEqual2(_prepopulate, server._prepopulate))
+ {
+ PVS_proxy.set_prepopulate(session, opaqueRef, _prepopulate);
+ }
+
+ return null;
+ }
+ }
+ ///
+ /// Get a record containing the current state of the given PVS_proxy.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_proxy
+ public static PVS_proxy get_record(Session session, string _pvs_proxy)
+ {
+ return new PVS_proxy((Proxy_PVS_proxy)session.proxy.pvs_proxy_get_record(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse());
+ }
+
+ ///
+ /// Get a reference to the PVS_proxy instance with the specified UUID.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// UUID of object to return
+ public static XenRef get_by_uuid(Session session, string _uuid)
+ {
+ return XenRef.Create(session.proxy.pvs_proxy_get_by_uuid(session.uuid, (_uuid != null) ? _uuid : "").parse());
+ }
+
+ ///
+ /// Get the uuid field of the given PVS_proxy.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_proxy
+ public static string get_uuid(Session session, string _pvs_proxy)
+ {
+ return (string)session.proxy.pvs_proxy_get_uuid(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse();
+ }
+
+ ///
+ /// Get the site field of the given PVS_proxy.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_proxy
+ public static XenRef get_site(Session session, string _pvs_proxy)
+ {
+ return XenRef.Create(session.proxy.pvs_proxy_get_site(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse());
+ }
+
+ ///
+ /// Get the VIF field of the given PVS_proxy.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_proxy
+ public static XenRef get_VIF(Session session, string _pvs_proxy)
+ {
+ return XenRef.Create(session.proxy.pvs_proxy_get_vif(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse());
+ }
+
+ ///
+ /// Get the prepopulate field of the given PVS_proxy.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_proxy
+ public static bool get_prepopulate(Session session, string _pvs_proxy)
+ {
+ return (bool)session.proxy.pvs_proxy_get_prepopulate(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse();
+ }
+
+ ///
+ /// Get the currently_attached field of the given PVS_proxy.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_proxy
+ public static bool get_currently_attached(Session session, string _pvs_proxy)
+ {
+ return (bool)session.proxy.pvs_proxy_get_currently_attached(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse();
+ }
+
+ ///
+ /// Get the cache_SR field of the given PVS_proxy.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_proxy
+ public static XenRef get_cache_SR(Session session, string _pvs_proxy)
+ {
+ return XenRef.Create(session.proxy.pvs_proxy_get_cache_sr(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse());
+ }
+
+ ///
+ /// Configure a VM/VIF to use a PVS proxy
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// PVS site that we proxy for
+ /// VIF for the VM that needs to be proxied
+ /// if true, prefetch whole disk for VM
+ public static XenRef create(Session session, string _site, string _vif, bool _prepopulate)
+ {
+ return XenRef.Create(session.proxy.pvs_proxy_create(session.uuid, (_site != null) ? _site : "", (_vif != null) ? _vif : "", _prepopulate).parse());
+ }
+
+ ///
+ /// Configure a VM/VIF to use a PVS proxy
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// PVS site that we proxy for
+ /// VIF for the VM that needs to be proxied
+ /// if true, prefetch whole disk for VM
+ public static XenRef async_create(Session session, string _site, string _vif, bool _prepopulate)
+ {
+ return XenRef.Create(session.proxy.async_pvs_proxy_create(session.uuid, (_site != null) ? _site : "", (_vif != null) ? _vif : "", _prepopulate).parse());
+ }
+
+ ///
+ /// remove (or switch off) a PVS proxy for this VM
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_proxy
+ public static void destroy(Session session, string _pvs_proxy)
+ {
+ session.proxy.pvs_proxy_destroy(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse();
+ }
+
+ ///
+ /// remove (or switch off) a PVS proxy for this VM
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_proxy
+ public static XenRef async_destroy(Session session, string _pvs_proxy)
+ {
+ return XenRef.Create(session.proxy.async_pvs_proxy_destroy(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "").parse());
+ }
+
+ ///
+ /// change the value of the prepopulate field
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_proxy
+ /// set to this value
+ public static void set_prepopulate(Session session, string _pvs_proxy, bool _value)
+ {
+ session.proxy.pvs_proxy_set_prepopulate(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "", _value).parse();
+ }
+
+ ///
+ /// change the value of the prepopulate field
+ /// Experimental. First published in .
+ ///
+ /// The session
+ /// The opaque_ref of the given pvs_proxy
+ /// set to this value
+ public static XenRef async_set_prepopulate(Session session, string _pvs_proxy, bool _value)
+ {
+ return XenRef.Create(session.proxy.async_pvs_proxy_set_prepopulate(session.uuid, (_pvs_proxy != null) ? _pvs_proxy : "", _value).parse());
+ }
+
+ ///
+ /// Return a list of all the PVS_proxys known to the system.
+ /// Experimental. First published in .
+ ///
+ /// The session
+ public static List> get_all(Session session)
+ {
+ return XenRef.Create(session.proxy.pvs_proxy_get_all(session.uuid).parse());
+ }
+
+ ///
+ /// Get all the PVS_proxy Records at once, in a single XML RPC call
+ ///
+ /// The session
+ public static Dictionary, PVS_proxy> get_all_records(Session session)
+ {
+ return XenRef.Create(session.proxy.pvs_proxy_get_all_records(session.uuid).parse());
+ }
+
+ ///
+ /// Unique identifier/object reference
+ /// Experimental. First published in .
+ ///
+ public virtual string uuid
+ {
+ get { return _uuid; }
+ set
+ {
+ if (!Helper.AreEqual(value, _uuid))
+ {
+ _uuid = value;
+ Changed = true;
+ NotifyPropertyChanged("uuid");
+ }
+ }
+ }
+ private string _uuid;
+
+ ///
+ /// PVS site this proxy is part of
+ /// Experimental. First published in .
+ ///
+ public virtual XenRef site
+ {
+ get { return _site; }
+ set
+ {
+ if (!Helper.AreEqual(value, _site))
+ {
+ _site = value;
+ Changed = true;
+ NotifyPropertyChanged("site");
+ }
+ }
+ }
+ private XenRef _site;
+
+ ///
+ /// VIF of the VM using the proxy
+ /// Experimental. First published in .
+ ///
+ public virtual XenRef VIF
+ {
+ get { return _VIF; }
+ set
+ {
+ if (!Helper.AreEqual(value, _VIF))
+ {
+ _VIF = value;
+ Changed = true;
+ NotifyPropertyChanged("VIF");
+ }
+ }
+ }
+ private XenRef _VIF;
+
+ ///
+ /// true = proxy prefetches whole disk for the VM
+ /// Experimental. First published in .
+ ///
+ public virtual bool prepopulate
+ {
+ get { return _prepopulate; }
+ set
+ {
+ if (!Helper.AreEqual(value, _prepopulate))
+ {
+ _prepopulate = value;
+ Changed = true;
+ NotifyPropertyChanged("prepopulate");
+ }
+ }
+ }
+ private bool _prepopulate;
+
+ ///
+ /// true = VM is currently proxied
+ /// Experimental. First published in .
+ ///
+ public virtual bool currently_attached
+ {
+ get { return _currently_attached; }
+ set
+ {
+ if (!Helper.AreEqual(value, _currently_attached))
+ {
+ _currently_attached = value;
+ Changed = true;
+ NotifyPropertyChanged("currently_attached");
+ }
+ }
+ }
+ private bool _currently_attached;
+
+ ///
+ /// SR used by this proxy
+ /// Experimental. First published in .
+ ///
+ public virtual XenRef cache_SR
+ {
+ get { return _cache_SR; }
+ set
+ {
+ if (!Helper.AreEqual(value, _cache_SR))
+ {
+ _cache_SR = value;
+ Changed = true;
+ NotifyPropertyChanged("cache_SR");
+ }
+ }
+ }
+ private XenRef _cache_SR;
+ }
+}
diff --git a/XenModel/XenAPI/PVS_server.cs b/XenModel/XenAPI/PVS_server.cs
index 6dfbf3bee..9d41fdc36 100644
--- a/XenModel/XenAPI/PVS_server.cs
+++ b/XenModel/XenAPI/PVS_server.cs
@@ -1,381 +1,381 @@
-/*
- * Copyright (c) Citrix Systems, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1) Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2) Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-using CookComputing.XmlRpc;
-
-
-namespace XenAPI
-{
- ///
- /// individual machine serving provisioning (block) data
- ///
- public partial class PVS_server : XenObject
- {
- public PVS_server()
- {
- }
-
- public PVS_server(string uuid,
- string[] addresses,
- long first_port,
- long last_port,
- XenRef farm)
- {
- this.uuid = uuid;
- this.addresses = addresses;
- this.first_port = first_port;
- this.last_port = last_port;
- this.farm = farm;
- }
-
- ///
- /// Creates a new PVS_server from a Proxy_PVS_server.
- ///
- ///
- public PVS_server(Proxy_PVS_server proxy)
- {
- this.UpdateFromProxy(proxy);
- }
-
- public override void UpdateFrom(PVS_server update)
- {
- uuid = update.uuid;
- addresses = update.addresses;
- first_port = update.first_port;
- last_port = update.last_port;
- farm = update.farm;
- }
-
- internal void UpdateFromProxy(Proxy_PVS_server proxy)
- {
- uuid = proxy.uuid == null ? null : (string)proxy.uuid;
- addresses = proxy.addresses == null ? new string[] {} : (string [])proxy.addresses;
- first_port = proxy.first_port == null ? 0 : long.Parse((string)proxy.first_port);
- last_port = proxy.last_port == null ? 0 : long.Parse((string)proxy.last_port);
- farm = proxy.farm == null ? null : XenRef.Create(proxy.farm);
- }
-
- public Proxy_PVS_server ToProxy()
- {
- Proxy_PVS_server result_ = new Proxy_PVS_server();
- result_.uuid = (uuid != null) ? uuid : "";
- result_.addresses = addresses;
- result_.first_port = first_port.ToString();
- result_.last_port = last_port.ToString();
- result_.farm = (farm != null) ? farm : "";
- return result_;
- }
-
- ///
- /// Creates a new PVS_server from a Hashtable.
- ///
- ///
- public PVS_server(Hashtable table)
- {
- uuid = Marshalling.ParseString(table, "uuid");
- addresses = Marshalling.ParseStringArray(table, "addresses");
- first_port = Marshalling.ParseLong(table, "first_port");
- last_port = Marshalling.ParseLong(table, "last_port");
- farm = Marshalling.ParseRef(table, "farm");
- }
-
- public bool DeepEquals(PVS_server other)
- {
- if (ReferenceEquals(null, other))
- return false;
- if (ReferenceEquals(this, other))
- return true;
-
- return Helper.AreEqual2(this._uuid, other._uuid) &&
- Helper.AreEqual2(this._addresses, other._addresses) &&
- Helper.AreEqual2(this._first_port, other._first_port) &&
- Helper.AreEqual2(this._last_port, other._last_port) &&
- Helper.AreEqual2(this._farm, other._farm);
- }
-
- public override string SaveChanges(Session session, string opaqueRef, PVS_server server)
- {
- if (opaqueRef == null)
- {
- System.Diagnostics.Debug.Assert(false, "Cannot create instances of this type on the server");
- return "";
- }
- else
- {
- throw new InvalidOperationException("This type has no read/write properties");
- }
- }
- ///
- /// Get a record containing the current state of the given PVS_server.
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_server
- public static PVS_server get_record(Session session, string _pvs_server)
- {
- return new PVS_server((Proxy_PVS_server)session.proxy.pvs_server_get_record(session.uuid, (_pvs_server != null) ? _pvs_server : "").parse());
- }
-
- ///
- /// Get a reference to the PVS_server instance with the specified UUID.
- /// Experimental. First published in .
- ///
- /// The session
- /// UUID of object to return
- public static XenRef get_by_uuid(Session session, string _uuid)
- {
- return XenRef.Create(session.proxy.pvs_server_get_by_uuid(session.uuid, (_uuid != null) ? _uuid : "").parse());
- }
-
- ///
- /// Get the uuid field of the given PVS_server.
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_server
- public static string get_uuid(Session session, string _pvs_server)
- {
- return (string)session.proxy.pvs_server_get_uuid(session.uuid, (_pvs_server != null) ? _pvs_server : "").parse();
- }
-
- ///
- /// Get the addresses field of the given PVS_server.
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_server
- public static string[] get_addresses(Session session, string _pvs_server)
- {
- return (string [])session.proxy.pvs_server_get_addresses(session.uuid, (_pvs_server != null) ? _pvs_server : "").parse();
- }
-
- ///
- /// Get the first_port field of the given PVS_server.
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_server
- public static long get_first_port(Session session, string _pvs_server)
- {
- return long.Parse((string)session.proxy.pvs_server_get_first_port(session.uuid, (_pvs_server != null) ? _pvs_server : "").parse());
- }
-
- ///
- /// Get the last_port field of the given PVS_server.
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_server
- public static long get_last_port(Session session, string _pvs_server)
- {
- return long.Parse((string)session.proxy.pvs_server_get_last_port(session.uuid, (_pvs_server != null) ? _pvs_server : "").parse());
- }
-
- ///
- /// Get the farm field of the given PVS_server.
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_server
- public static XenRef get_farm(Session session, string _pvs_server)
- {
- return XenRef.Create(session.proxy.pvs_server_get_farm(session.uuid, (_pvs_server != null) ? _pvs_server : "").parse());
- }
-
- ///
- /// introduce new PVS server
- /// Experimental. First published in .
- ///
- /// The session
- /// IPv4 addresses of the server
- /// first UDP port accepted by this server
- /// last UDP port accepted by this server
- /// PVS farm this server is a part of
- public static XenRef introduce(Session session, string[] _addresses, long _first_port, long _last_port, string _farm)
- {
- return XenRef.Create(session.proxy.pvs_server_introduce(session.uuid, _addresses, _first_port.ToString(), _last_port.ToString(), (_farm != null) ? _farm : "").parse());
- }
-
- ///
- /// introduce new PVS server
- /// Experimental. First published in .
- ///
- /// The session
- /// IPv4 addresses of the server
- /// first UDP port accepted by this server
- /// last UDP port accepted by this server
- /// PVS farm this server is a part of
- public static XenRef async_introduce(Session session, string[] _addresses, long _first_port, long _last_port, string _farm)
- {
- return XenRef.Create(session.proxy.async_pvs_server_introduce(session.uuid, _addresses, _first_port.ToString(), _last_port.ToString(), (_farm != null) ? _farm : "").parse());
- }
-
- ///
- /// forget a PVS server
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_server
- public static void forget(Session session, string _pvs_server)
- {
- session.proxy.pvs_server_forget(session.uuid, (_pvs_server != null) ? _pvs_server : "").parse();
- }
-
- ///
- /// forget a PVS server
- /// Experimental. First published in .
- ///
- /// The session
- /// The opaque_ref of the given pvs_server
- public static XenRef async_forget(Session session, string _pvs_server)
- {
- return XenRef.Create(session.proxy.async_pvs_server_forget(session.uuid, (_pvs_server != null) ? _pvs_server : "").parse());
- }
-
- ///
- /// Return a list of all the PVS_servers known to the system.
- /// Experimental. First published in .
- ///
- /// The session
- public static List> get_all(Session session)
- {
- return XenRef.Create(session.proxy.pvs_server_get_all(session.uuid).parse());
- }
-
- ///
- /// Get all the PVS_server Records at once, in a single XML RPC call
- ///
- /// The session
- public static Dictionary, PVS_server> get_all_records(Session session)
- {
- return XenRef.Create(session.proxy.pvs_server_get_all_records(session.uuid).parse());
- }
-
- ///