Merge pull request #236 from stephen-turner/master

Merge xs64bit to master
This commit is contained in:
Stephen Turner 2014-10-01 17:30:01 +01:00
commit f806228923
56 changed files with 514 additions and 282 deletions

View File

@ -71,11 +71,13 @@ namespace XenAdmin.Commands
protected override void ExecuteCore(SelectedItemCollection selection) protected override void ExecuteCore(SelectedItemCollection selection)
{ {
ApplyLicenseEditionAction action = new ApplyLicenseEditionAction(xos, _edition, _licenseServerAddress, _licenseServerPort, ShowLicensingFailureDialog); ApplyLicenseEditionAction action = new ApplyLicenseEditionAction(xos, _edition, _licenseServerAddress, _licenseServerPort, null);
ActionProgressDialog actionProgress = new ActionProgressDialog(action, ProgressBarStyle.Marquee); ActionProgressDialog actionProgress = new ActionProgressDialog(action, ProgressBarStyle.Marquee);
// close dialog even when there's an error as this action shows its own error dialog box. // close dialog even when there's an error as this action shows its own error dialog box.
action.Completed += s => Program.Invoke(Program.MainWindow, () => action.Completed += s =>
{
Program.Invoke(Program.MainWindow, () =>
{ {
Failure f = action.Exception as Failure; Failure f = action.Exception as Failure;
if (f != null && f.ErrorDescription[0] == Failure.RBAC_PERMISSION_DENIED_FRIENDLY) if (f != null && f.ErrorDescription[0] == Failure.RBAC_PERMISSION_DENIED_FRIENDLY)
@ -83,6 +85,12 @@ namespace XenAdmin.Commands
actionProgress.Close(); actionProgress.Close();
}); });
if (action.Exception != null)
{
ShowLicensingFailureDialog(action.LicenseFailures, action.Exception.Message, Parent);
}
};
actionProgress.ShowDialog(Parent); actionProgress.ShowDialog(Parent);
if (actionProgress.action.Succeeded) if (actionProgress.action.Succeeded)
@ -92,6 +100,11 @@ namespace XenAdmin.Commands
} }
public static void ShowLicensingFailureDialog(List<LicenseFailure> licenseFailures, string exceptionMessage) public static void ShowLicensingFailureDialog(List<LicenseFailure> licenseFailures, string exceptionMessage)
{
ShowLicensingFailureDialog(licenseFailures, exceptionMessage, Program.MainWindow);
}
public static void ShowLicensingFailureDialog(List<LicenseFailure> licenseFailures, string exceptionMessage, Control parent)
{ {
Debug.Assert(licenseFailures.Count > 0); Debug.Assert(licenseFailures.Count > 0);
@ -101,7 +114,7 @@ namespace XenAdmin.Commands
Program.Invoke(Program.MainWindow, () => new ThreeButtonDialog( Program.Invoke(Program.MainWindow, () => new ThreeButtonDialog(
new ThreeButtonDialog.Details(SystemIcons.Error, licenseFailures[0].AlertText, new ThreeButtonDialog.Details(SystemIcons.Error, licenseFailures[0].AlertText,
Messages.LICENSE_ERROR_TITLE), Messages.LICENSE_ERROR_TITLE),
ThreeButtonDialog.ButtonOK).ShowDialog(Program.MainWindow)); ThreeButtonDialog.ButtonOK).ShowDialog(parent));
} }
else else
{ {
@ -114,7 +127,7 @@ namespace XenAdmin.Commands
Program.Invoke(Program.MainWindow, () => new CommandErrorDialog( Program.Invoke(Program.MainWindow, () => new CommandErrorDialog(
Messages.LICENSE_ERROR_TITLE, exceptionMessage, Messages.LICENSE_ERROR_TITLE, exceptionMessage,
failureDic).ShowDialog(Program.MainWindow)); failureDic).ShowDialog(parent));
} }
} }
} }

View File

@ -109,6 +109,9 @@ namespace XenAdmin.Commands
/// </summary> /// </summary>
public event EventHandler SelectionChanged; public event EventHandler SelectionChanged;
public abstract void SaveAndClearSelection();
public abstract void RestoreSavedSelection();
#region IDisposable Members #region IDisposable Members
/// <summary> /// <summary>

View File

@ -42,6 +42,8 @@ namespace XenAdmin.Commands
internal class SelectionManager : SelectionBroadcaster internal class SelectionManager : SelectionBroadcaster
{ {
private SelectedItemCollection _selection = new SelectedItemCollection(); private SelectedItemCollection _selection = new SelectedItemCollection();
private SelectedItemCollection savedSelection = null;
private bool saved = false;
/// <summary> /// <summary>
/// Sets the main selection for XenCenter. /// Sets the main selection for XenCenter.
@ -49,20 +51,26 @@ namespace XenAdmin.Commands
/// <param name="selection">The selection.</param> /// <param name="selection">The selection.</param>
public void SetSelection(IEnumerable<SelectedItem> selection) public void SetSelection(IEnumerable<SelectedItem> selection)
{ {
Program.AssertOnEventThread();
Util.ThrowIfParameterNull(selection, "selection"); Util.ThrowIfParameterNull(selection, "selection");
int count = 0;
foreach (SelectedItem item in selection) foreach (SelectedItem item in selection)
{ {
if (item == null) if (item == null)
{
throw new ArgumentException("Null SelectedItem found.", "selection"); throw new ArgumentException("Null SelectedItem found.", "selection");
} count++;
} }
if (saved && // We have a saved selection: update it instead (CA-147401)
count != 0) // although if the new selection is empty, we're just refreshing the view via RefreshSelection(): don't save that
savedSelection = new SelectedItemCollection(selection);
else
{
_selection = new SelectedItemCollection(selection); _selection = new SelectedItemCollection(selection);
OnSelectionChanged(EventArgs.Empty); OnSelectionChanged(EventArgs.Empty);
} }
}
/// <summary> /// <summary>
/// Sets the main selection for XenCenter. /// Sets the main selection for XenCenter.
@ -86,5 +94,24 @@ namespace XenAdmin.Commands
{ {
SetSelection(Selection); SetSelection(Selection);
} }
public override void SaveAndClearSelection()
{
Program.AssertOnEventThread();
savedSelection = _selection;
SetSelection(new SelectedItemCollection());
saved = true;
}
public override void RestoreSavedSelection()
{
Program.AssertOnEventThread();
if (saved)
{
saved = false;
SetSelection(savedSelection);
savedSelection = null;
}
}
} }
} }

View File

@ -57,7 +57,9 @@ namespace XenAdmin.Commands
_host = host; _host = host;
_menuText = _host.Name.EscapeAmpersands(); _menuText = _host.Name.EscapeAmpersands();
_secondImage = Resources._000_host_0_star;
//Default or failure case, there is no score/star rating actually, just don't display star
_secondImage = null;
_menuImage = Resources._000_ServerDisconnected_h32bit_16; _menuImage = Resources._000_ServerDisconnected_h32bit_16;
_recommendation = recommendation; _recommendation = recommendation;

View File

@ -60,6 +60,7 @@ namespace XenAdmin.ConsoleView
private readonly VNCView parentVNCView; private readonly VNCView parentVNCView;
private readonly VM source; private readonly VM source;
private readonly Host targetHost; private readonly Host targetHost;
private VM_guest_metrics guestMetrics = null;
private Form fullscreenForm = null; private Form fullscreenForm = null;
private Form fullscreenHint = null; private Form fullscreenHint = null;
private Size LastDesktopSize; private Size LastDesktopSize;
@ -75,6 +76,8 @@ namespace XenAdmin.ConsoleView
internal readonly ConsoleKeyHandler KeyHandler = new ConsoleKeyHandler(); internal readonly ConsoleKeyHandler KeyHandler = new ConsoleKeyHandler();
private bool hasRDP { get { return source != null ? source.HasRDP : false; } }
public VNCTabView(VNCView parent, VM source, string elevatedUsername, string elevatedPassword) public VNCTabView(VNCView parent, VM source, string elevatedUsername, string elevatedPassword)
{ {
Program.AssertOnEventThread(); Program.AssertOnEventThread();
@ -139,7 +142,7 @@ namespace XenAdmin.ConsoleView
this.vncScreen = new XSVNCScreen(source, new EventHandler(RDPorVNCResizeHandler), this, elevatedUsername, elevatedPassword); this.vncScreen = new XSVNCScreen(source, new EventHandler(RDPorVNCResizeHandler), this, elevatedUsername, elevatedPassword);
ShowGpuWarningIfRequired(); ShowGpuWarningIfRequired();
if (source.is_control_domain) if (source.is_control_domain || source.IsHVM && !hasRDP) //Linux HVM guests should only have one console: the console switch button vanishes altogether.
{ {
toggleConsoleButton.Visible = false; toggleConsoleButton.Visible = false;
} }
@ -250,6 +253,9 @@ namespace XenAdmin.ConsoleView
source.PropertyChanged -= new PropertyChangedEventHandler(Server_PropertyChanged); source.PropertyChanged -= new PropertyChangedEventHandler(Server_PropertyChanged);
source.Connection.Cache.DeregisterCollectionChanged<VM>(VM_CollectionChangedWithInvoke); source.Connection.Cache.DeregisterCollectionChanged<VM>(VM_CollectionChangedWithInvoke);
if (this.guestMetrics != null)
this.guestMetrics.PropertyChanged -= guestMetrics_PropertyChanged;
if (source.is_control_domain) if (source.is_control_domain)
{ {
Host host = source.Connection.Resolve<Host>(source.resident_on); Host host = source.Connection.Resolve<Host>(source.resident_on);
@ -468,6 +474,21 @@ namespace XenAdmin.ConsoleView
//The CD device may have changed //The CD device may have changed
Program.Invoke(this, setupCD); Program.Invoke(this, setupCD);
} }
else if (e.PropertyName == "guest_metrics")
{
var newGuestMetrics = source.Connection.Resolve(source.guest_metrics);
//unsubscribing from the previous instance's event
if (this.guestMetrics != null)
this.guestMetrics.PropertyChanged -= guestMetrics_PropertyChanged;
this.guestMetrics = newGuestMetrics;
if (this.guestMetrics != null)
guestMetrics.PropertyChanged += guestMetrics_PropertyChanged;
EnableRDPIfCapable();
}
if (source.is_control_domain && e.PropertyName == "name_label") if (source.is_control_domain && e.PropertyName == "name_label")
{ {
HostLabel.Text = string.Format(Messages.CONSOLE_HOST, source.AffinityServerString); HostLabel.Text = string.Format(Messages.CONSOLE_HOST, source.AffinityServerString);
@ -476,6 +497,40 @@ namespace XenAdmin.ConsoleView
} }
} }
private void guestMetrics_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "other")
{
EnableRDPIfCapable();
}
}
private void EnableRDPIfCapable()
{
if (!toggleConsoleButton.Visible && hasRDP)
{
// The toogle button is not visible now, because RDP had not been enabled on the VM when we started the console.
// However, the current guest_metrics indicates that RDP is now supported (HasRDP==true). (eg. XenTools has been installed in the meantime.)
// This means that now we should show and enable the toogle RDP button and start polling (if allowed) RDP as well.
log.DebugFormat( "'{0}' console: Enabling RDP button, because RDP capability has appeared.", source);
if (Properties.Settings.Default.EnableRDPPolling)
{
log.DebugFormat("'{0}' console: Starting RDP polling. (RDP polling is enabled in settings.)", source);
toggleConsoleButton.Visible = true;
toggleConsoleButton.Enabled = false;
ThreadPool.QueueUserWorkItem(TryToConnectRDP);
}
else
{
log.DebugFormat("'{0}' console: Not starting polling. (RDP polling is diabled in settings.)", source);
toggleConsoleButton.Visible = true;
toggleConsoleButton.Enabled = true;
}
}
}
private void Server_EnabledPropertyChanged(object sender, PropertyChangedEventArgs e) private void Server_EnabledPropertyChanged(object sender, PropertyChangedEventArgs e)
{ {
if (e.PropertyName != "enabled" || source.is_control_domain) if (e.PropertyName != "enabled" || source.is_control_domain)

View File

@ -86,7 +86,6 @@ namespace XenAdmin.ConsoleView
private Timer connectionPoller = null; private Timer connectionPoller = null;
private VM sourceVM = null; private VM sourceVM = null;
private bool sourceIsPV = false;
private readonly Object hostedConsolesLock = new Object(); private readonly Object hostedConsolesLock = new Object();
private List<XenRef<Console>> hostedConsoles = null; private List<XenRef<Console>> hostedConsoles = null;
@ -119,6 +118,8 @@ namespace XenAdmin.ConsoleView
[DefaultValue(false)] [DefaultValue(false)]
public bool UserWantsToSwitchProtocol { get; set; } public bool UserWantsToSwitchProtocol { get; set; }
private bool hasRDP { get { return Source != null ? Source.HasRDP : false; } }
/// <summary> /// <summary>
/// Whether we have tried to login without providing a password (covers the case where the user /// Whether we have tried to login without providing a password (covers the case where the user
/// has configured VNC not to require a login password). If no password is saved, passwordless /// has configured VNC not to require a login password). If no password is saved, passwordless
@ -286,7 +287,7 @@ namespace XenAdmin.ConsoleView
private void PollRDPPort(Object Sender) private void PollRDPPort(Object Sender)
{ {
if (!sourceIsPV && !Properties.Settings.Default.EnableRDPPolling) if (hasRDP && !Properties.Settings.Default.EnableRDPPolling)
{ {
if (connectionPoller != null) if (connectionPoller != null)
connectionPoller.Change(Timeout.Infinite, Timeout.Infinite); connectionPoller.Change(Timeout.Infinite, Timeout.Infinite);
@ -537,7 +538,7 @@ namespace XenAdmin.ConsoleView
if (RemoteConsole != null && RemoteConsole.ConsoleControl != null) if (RemoteConsole != null && RemoteConsole.ConsoleControl != null)
{ {
RemoteConsole.KeyHandler = this.KeyHandler; RemoteConsole.KeyHandler = this.KeyHandler;
RemoteConsole.SendScanCodes = !this.sourceIsPV; RemoteConsole.SendScanCodes = hasRDP;
RemoteConsole.Scaling = Scaling; RemoteConsole.Scaling = Scaling;
RemoteConsole.DisplayBorder = this.displayFocusRectangle; RemoteConsole.DisplayBorder = this.displayFocusRectangle;
SetKeyboardAndMouseCapture(autoCaptureKeyboardAndMouse); SetKeyboardAndMouseCapture(autoCaptureKeyboardAndMouse);
@ -654,8 +655,6 @@ namespace XenAdmin.ConsoleView
{ {
value.PropertyChanged += new PropertyChangedEventHandler(VM_PropertyChanged); value.PropertyChanged += new PropertyChangedEventHandler(VM_PropertyChanged);
sourceIsPV = !value.IsHVM;
startPolling(); startPolling();
lock (hostedConsolesLock) lock (hostedConsolesLock)
@ -692,10 +691,14 @@ namespace XenAdmin.ConsoleView
//Start the polling again //Start the polling again
if (Source != null && !Source.is_control_domain) if (Source != null && !Source.is_control_domain)
{ {
connectionPoller = if (!Source.IsHVM)
new Timer( {
sourceIsPV ? (TimerCallback)PollVNCPort : (TimerCallback)PollRDPPort, connectionPoller = new Timer(PollVNCPort, null, RETRY_SLEEP_TIME, RDP_POLL_INTERVAL);
null, RETRY_SLEEP_TIME, RDP_POLL_INTERVAL); }
else if (hasRDP)
{
connectionPoller = new Timer(PollRDPPort, null, RETRY_SLEEP_TIME, RDP_POLL_INTERVAL);
}
} }
} }
@ -1006,7 +1009,7 @@ namespace XenAdmin.ConsoleView
} }
else else
{ {
v.SendScanCodes = UseSource && !sourceIsPV; v.SendScanCodes = UseSource && hasRDP;
v.SourceVM = sourceVM; v.SourceVM = sourceVM;
v.Console = console; v.Console = console;
v.connect(stream, this.vncPassword); v.connect(stream, this.vncPassword);

View File

@ -278,11 +278,15 @@ namespace XenAdmin.Controls.MainWindowControls
{ {
if (currentMode == NavigationMode.Notifications) if (currentMode == NavigationMode.Notifications)
{ {
SelectionManager.SaveAndClearSelection();
//restore the last selected view //restore the last selected view
SwitchToNotificationsView(lastNotificationsMode); SwitchToNotificationsView(lastNotificationsMode);
} }
else else
{ {
SelectionManager.RestoreSavedSelection();
//show the navigationView first and then hide the notificationsView //show the navigationView first and then hide the notificationsView
//to avoid instantaneous appearance of empty panels //to avoid instantaneous appearance of empty panels
navigationView.Visible = true; navigationView.Visible = true;
@ -296,6 +300,7 @@ namespace XenAdmin.Controls.MainWindowControls
if (navigationView.SelectionManager.Selection.Count < 1) if (navigationView.SelectionManager.Selection.Count < 1)
navigationView.SelectObject(null, false); navigationView.SelectObject(null, false);
navigationView.ForceTreeViewSelectionsChanged();
} }
if (NavigationModeChanged != null) if (NavigationModeChanged != null)

View File

@ -306,6 +306,11 @@ namespace XenAdmin.Controls.MainWindowControls
treeView.Focus(); treeView.Focus();
} }
public void ForceTreeViewSelectionsChanged()
{
treeView.ForceSelectionsChanged();
}
public void RequestRefreshTreeView() public void RequestRefreshTreeView()
{ {
Program.BeginInvoke(this, treeViewUpdateManager.RequestUpdate); Program.BeginInvoke(this, treeViewUpdateManager.RequestUpdate);

View File

@ -455,7 +455,7 @@ namespace XenAdmin.Controls
/// <summary> /// <summary>
/// Forces the SelectionsChanged event to fire. /// Forces the SelectionsChanged event to fire.
/// </summary> /// </summary>
protected void ForceSelectionsChanged() public void ForceSelectionsChanged()
{ {
EventHandler handler = SelectionsChanged; EventHandler handler = SelectionsChanged;

View File

@ -1052,7 +1052,7 @@ namespace XenAdmin.Controls.Wlb
// and this is the first section of report, // and this is the first section of report,
// change the run button text back to "Run Report", // change the run button text back to "Run Report",
// or disable the run report button and just keep the later report button. // or disable the run report button and just keep the later report button.
if(btnLaterReport.Visible == true) if(btnLaterReport.Visible)
{ {
this.btnRunReport.Enabled = false; this.btnRunReport.Enabled = false;
} }
@ -1067,12 +1067,17 @@ namespace XenAdmin.Controls.Wlb
{ {
this.btnLaterReport.Visible = true; this.btnLaterReport.Visible = true;
this.btnLaterReport.Enabled = true; this.btnLaterReport.Enabled = true;
if (!this.btnRunReport.Enabled)
{
this.btnLaterReport.Select();
}
} }
else if (_currentReportSection == 1 && else if (_currentReportSection == 1 &&
this.btnRunReport.Text == Messages.FETCH_EARLIER_DATA) this.btnRunReport.Text == Messages.FETCH_EARLIER_DATA)
{ {
this.btnLaterReport.Visible = true; this.btnLaterReport.Visible = true;
this.btnLaterReport.Enabled = false; this.btnLaterReport.Enabled = false;
this.btnRunReport.Select();
} }
else else
{ {
@ -1525,9 +1530,12 @@ namespace XenAdmin.Controls.Wlb
#endregion //Event Handler #endregion //Event Handler
private void comboBox_SelectionChanged(object sender, EventArgs e) private void comboBox_SelectionChanged(object sender, EventArgs e)
{
if(_isAuditReport)
{ {
InitializeAuditReport(); InitializeAuditReport();
} }
}
private void InitializeAuditReport() private void InitializeAuditReport()
{ {
@ -1537,6 +1545,7 @@ namespace XenAdmin.Controls.Wlb
_endLine = _lineLimit; _endLine = _lineLimit;
_currentReportSection = 0; _currentReportSection = 0;
btnRunReport.Text = Messages.RUN_REPORT; btnRunReport.Text = Messages.RUN_REPORT;
btnRunReport.Enabled = true;
btnLaterReport.Visible = false; btnLaterReport.Visible = false;
} }

View File

@ -304,7 +304,7 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="labelStartDate.Location" type="System.Drawing.Point, System.Drawing"> <data name="labelStartDate.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 7</value> <value>3, 7</value>
</data> </data>
<data name="labelStartDate.Size" type="System.Drawing.Size, System.Drawing"> <data name="labelStartDate.Size" type="System.Drawing.Size, System.Drawing">
<value>61, 13</value> <value>61, 13</value>

View File

@ -33,7 +33,6 @@ namespace XenAdmin.Dialogs
this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.VersionLabel = new System.Windows.Forms.Label(); this.VersionLabel = new System.Windows.Forms.Label();
this.OkButton = new System.Windows.Forms.Button(); this.OkButton = new System.Windows.Forms.Button();
this.labelMarathonBlurb = new System.Windows.Forms.Label();
this.linkLabel1 = new System.Windows.Forms.LinkLabel(); this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
@ -68,11 +67,6 @@ namespace XenAdmin.Dialogs
this.OkButton.UseVisualStyleBackColor = true; this.OkButton.UseVisualStyleBackColor = true;
this.OkButton.Click += new System.EventHandler(this.OkButton_Click); this.OkButton.Click += new System.EventHandler(this.OkButton_Click);
// //
// labelMarathonBlurb
//
resources.ApplyResources(this.labelMarathonBlurb, "labelMarathonBlurb");
this.labelMarathonBlurb.Name = "labelMarathonBlurb";
//
// linkLabel1 // linkLabel1
// //
resources.ApplyResources(this.linkLabel1, "linkLabel1"); resources.ApplyResources(this.linkLabel1, "linkLabel1");
@ -87,7 +81,6 @@ namespace XenAdmin.Dialogs
this.tableLayoutPanel1.Controls.Add(this.OkButton, 0, 4); this.tableLayoutPanel1.Controls.Add(this.OkButton, 0, 4);
this.tableLayoutPanel1.Controls.Add(this.linkLabel1, 0, 3); this.tableLayoutPanel1.Controls.Add(this.linkLabel1, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 1); this.tableLayoutPanel1.Controls.Add(this.label2, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.labelMarathonBlurb, 0, 2);
this.tableLayoutPanel1.Name = "tableLayoutPanel1"; this.tableLayoutPanel1.Name = "tableLayoutPanel1";
// //
// AboutDialog // AboutDialog
@ -115,7 +108,6 @@ namespace XenAdmin.Dialogs
private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label VersionLabel; private System.Windows.Forms.Label VersionLabel;
private System.Windows.Forms.Button OkButton; private System.Windows.Forms.Button OkButton;
private System.Windows.Forms.Label labelMarathonBlurb;
private System.Windows.Forms.LinkLabel linkLabel1; private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
} }

View File

@ -112,23 +112,23 @@
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label2.AutoSize" type="System.Boolean, mscorlib"> <data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="label2.Font" type="System.Drawing.Font, System.Drawing"> <data name="label2.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value> <value>Segoe UI, 9pt</value>
</data> </data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing"> <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>14, 46</value> <value>14, 46</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="label2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>14, 3, 14, 5</value> <value>14, 3, 14, 5</value>
</data> </data>
@ -145,7 +145,7 @@
<value>label2</value> <value>label2</value>
</data> </data>
<data name="&gt;&gt;label2.Type" xml:space="preserve"> <data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve"> <data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value> <value>tableLayoutPanel1</value>
@ -178,7 +178,7 @@
<value>pictureBox1</value> <value>pictureBox1</value>
</data> </data>
<data name="&gt;&gt;pictureBox1.Type" xml:space="preserve"> <data name="&gt;&gt;pictureBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;pictureBox1.Parent" xml:space="preserve"> <data name="&gt;&gt;pictureBox1.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -214,7 +214,7 @@
<value>VersionLabel</value> <value>VersionLabel</value>
</data> </data>
<data name="&gt;&gt;VersionLabel.Type" xml:space="preserve"> <data name="&gt;&gt;VersionLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;VersionLabel.Parent" xml:space="preserve"> <data name="&gt;&gt;VersionLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value> <value>tableLayoutPanel1</value>
@ -232,7 +232,7 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="OkButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="OkButton.Location" type="System.Drawing.Point, System.Drawing">
<value>336, 118</value> <value>336, 95</value>
</data> </data>
<data name="OkButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="OkButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 12, 12</value> <value>0, 3, 12, 12</value>
@ -250,7 +250,7 @@
<value>OkButton</value> <value>OkButton</value>
</data> </data>
<data name="&gt;&gt;OkButton.Type" xml:space="preserve"> <data name="&gt;&gt;OkButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;OkButton.Parent" xml:space="preserve"> <data name="&gt;&gt;OkButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value> <value>tableLayoutPanel1</value>
@ -258,38 +258,8 @@
<data name="&gt;&gt;OkButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;OkButton.ZOrder" xml:space="preserve">
<value>1</value> <value>1</value>
</data> </data>
<data name="labelMarathonBlurb.AutoSize" type="System.Boolean, mscorlib"> <data name="linkLabel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>True</value> <value>Bottom, Left</value>
</data>
<data name="labelMarathonBlurb.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelMarathonBlurb.Location" type="System.Drawing.Point, System.Drawing">
<value>14, 69</value>
</data>
<data name="labelMarathonBlurb.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>14, 3, 14, 5</value>
</data>
<data name="labelMarathonBlurb.Size" type="System.Drawing.Size, System.Drawing">
<value>341, 15</value>
</data>
<data name="labelMarathonBlurb.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="labelMarathonBlurb.Text" xml:space="preserve">
<value>Citrix® XenServer™ High Availability is powered by Marathon®</value>
</data>
<data name="&gt;&gt;labelMarathonBlurb.Name" xml:space="preserve">
<value>labelMarathonBlurb</value>
</data>
<data name="&gt;&gt;labelMarathonBlurb.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelMarathonBlurb.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelMarathonBlurb.ZOrder" xml:space="preserve">
<value>4</value>
</data> </data>
<data name="linkLabel1.AutoSize" type="System.Boolean, mscorlib"> <data name="linkLabel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@ -298,7 +268,7 @@
<value>Segoe UI, 9pt</value> <value>Segoe UI, 9pt</value>
</data> </data>
<data name="linkLabel1.Location" type="System.Drawing.Point, System.Drawing"> <data name="linkLabel1.Location" type="System.Drawing.Point, System.Drawing">
<value>14, 100</value> <value>14, 77</value>
</data> </data>
<data name="linkLabel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="linkLabel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>14, 11, 14, 0</value> <value>14, 11, 14, 0</value>
@ -316,7 +286,7 @@
<value>linkLabel1</value> <value>linkLabel1</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.Type" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.Parent" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value> <value>tableLayoutPanel1</value>
@ -330,6 +300,9 @@
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib"> <data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
<data name="tableLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib"> <data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value> <value>1</value>
</data> </data>
@ -343,7 +316,7 @@
<value>5</value> <value>5</value>
</data> </data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>423, 153</value> <value>423, 130</value>
</data> </data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib"> <data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>19</value> <value>19</value>
@ -352,7 +325,7 @@
<value>tableLayoutPanel1</value> <value>tableLayoutPanel1</value>
</data> </data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve"> <data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve"> <data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -361,9 +334,9 @@
<value>0</value> <value>0</value>
</data> </data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms"> <data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="VersionLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="OkButton" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="linkLabel1" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelMarathonBlurb" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value> <value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="VersionLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="OkButton" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="linkLabel1" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data> </data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing"> <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
@ -372,8 +345,11 @@
<data name="$this.AutoSize" type="System.Boolean, mscorlib"> <data name="$this.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
<data name="$this.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>423, 232</value> <value>423, 208</value>
</data> </data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing"> <data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value> <value>Tahoma, 8pt</value>

View File

@ -112,20 +112,20 @@
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label2.AutoSize" type="System.Boolean, mscorlib"> <data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="label2.Font" type="System.Drawing.Font, System.Drawing"> <data name="label2.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value> <value>Segoe UI, 9pt</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
</data> </data>
@ -148,7 +148,7 @@
<value>label2</value> <value>label2</value>
</data> </data>
<data name="&gt;&gt;label2.Type" xml:space="preserve"> <data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve"> <data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -181,7 +181,7 @@
<value>label1</value> <value>label1</value>
</data> </data>
<data name="&gt;&gt;label1.Type" xml:space="preserve"> <data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve"> <data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -205,19 +205,19 @@
<value>5, 5, 5, 5</value> <value>5, 5, 5, 5</value>
</data> </data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing"> <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>352, 15</value> <value>308, 15</value>
</data> </data>
<data name="label3.TabIndex" type="System.Int32, mscorlib"> <data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>4</value> <value>4</value>
</data> </data>
<data name="label3.Text" xml:space="preserve"> <data name="label3.Text" xml:space="preserve">
<value>This software includes the following third-party software libraries:</value> <value>This software includes the following third-party software:</value>
</data> </data>
<data name="&gt;&gt;label3.Name" xml:space="preserve"> <data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value> <value>label3</value>
</data> </data>
<data name="&gt;&gt;label3.Type" xml:space="preserve"> <data name="&gt;&gt;label3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve"> <data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -244,7 +244,9 @@
<value>5</value> <value>5</value>
</data> </data>
<data name="textBox1.Text" xml:space="preserve"> <data name="textBox1.Text" xml:space="preserve">
<value>XML-RPC.NET: Copyright © 2001-2006 Charles Cook. <value>everRun is a registered trademark of Stratus Technologies Bermuda Limited.
XML-RPC.NET: Copyright © 2001-2006 Charles Cook.
Log4Net: Developed by The Apache Software Foundation (http://www.apache.org/) as part of the Apache Logging Services project (http://logging.apache.org/log4net/), and released under the Apache software license. Log4Net: Developed by The Apache Software Foundation (http://www.apache.org/) as part of the Apache Logging Services project (http://logging.apache.org/log4net/), and released under the Apache software license.
To learn more about the Apache software license, please visit http://www.apache.org/licenses/LICENSE-2.0. To learn more about the Apache software license, please visit http://www.apache.org/licenses/LICENSE-2.0.
@ -332,7 +334,7 @@ Unless required by applicable law or agreed to in writing, software distributed
<value>textBox1</value> <value>textBox1</value>
</data> </data>
<data name="&gt;&gt;textBox1.Type" xml:space="preserve"> <data name="&gt;&gt;textBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;textBox1.Parent" xml:space="preserve"> <data name="&gt;&gt;textBox1.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -359,7 +361,7 @@ Unless required by applicable law or agreed to in writing, software distributed
<value>button1</value> <value>button1</value>
</data> </data>
<data name="&gt;&gt;button1.Type" xml:space="preserve"> <data name="&gt;&gt;button1.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;button1.Parent" xml:space="preserve"> <data name="&gt;&gt;button1.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -367,7 +369,7 @@ Unless required by applicable law or agreed to in writing, software distributed
<data name="&gt;&gt;button1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;button1.ZOrder" xml:space="preserve">
<value>0</value> <value>0</value>
</data> </data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing"> <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">

View File

@ -119,12 +119,7 @@ namespace XenAdmin.Dialogs
private void checkableDataGridView_RowUpdated(object sender, CheckableDataGridViewRowEventArgs e) private void checkableDataGridView_RowUpdated(object sender, CheckableDataGridViewRowEventArgs e)
{ {
LicenseCheckableDataGridView senderGrid = sender as LicenseCheckableDataGridView; LicenseCheckableDataGridView senderGrid = sender as LicenseCheckableDataGridView;
if (senderGrid == null) if (senderGrid == null || e.RowIndex >= senderGrid.Rows.Count || e.RowIndex < 0)
return;
Program.Invoke(this, delegate
{
if (e.RowIndex >= senderGrid.Rows.Count || e.RowIndex < 0)
return; return;
LicenseDataGridViewRow lRow = senderGrid.Rows[e.RowIndex] as LicenseDataGridViewRow; LicenseDataGridViewRow lRow = senderGrid.Rows[e.RowIndex] as LicenseDataGridViewRow;
@ -133,11 +128,11 @@ namespace XenAdmin.Dialogs
Controller.SetStatusIcon(e.RowIndex, lRow.RowStatus); Controller.SetStatusIcon(e.RowIndex, lRow.RowStatus);
if (senderGrid.SelectedRows.Count > 0 && senderGrid.SelectedRows[0].Index == e.RowIndex) if (!e.RefreshGrid && senderGrid.SelectedRows.Count > 0 && senderGrid.SelectedRows[0].Index == e.RowIndex)
{ {
Controller.SummariseSelectedRow(checkableDataGridView.GetCheckableRow(e.RowIndex)); Controller.SummariseSelectedRow(checkableDataGridView.GetCheckableRow(e.RowIndex));
} }
});
if (e.RefreshGrid) if (e.RefreshGrid)
senderGrid.SortAndRefresh(); senderGrid.SortAndRefresh();
} }

View File

@ -521,7 +521,7 @@ namespace XenAdmin.Dialogs
public void SelectPoolGpuEditPage() public void SelectPoolGpuEditPage()
{ {
SelectPage(GpuEditPage); SelectPage(PoolGpuEditPage);
} }
public void SelectStorageLinkPage() public void SelectStorageLinkPage()

View File

@ -60,42 +60,6 @@ namespace XenAdmin.Dialogs.Wlb
this.wlbThresholdsPage, this.wlbThresholdsPage,
this.wlbMetricWeightingPage, this.wlbMetricWeightingPage,
this.wlbHostExclusionPage, this.wlbHostExclusionPage,
this.wlbAdvancedSettingsPage,
this.wlbOptimizationModePage,
this.wlbAutomationPage,
this.wlbThresholdsPage,
this.wlbMetricWeightingPage,
this.wlbHostExclusionPage,
this.wlbAdvancedSettingsPage,
this.wlbOptimizationModePage,
this.wlbAutomationPage,
this.wlbThresholdsPage,
this.wlbMetricWeightingPage,
this.wlbHostExclusionPage,
this.wlbAdvancedSettingsPage,
this.wlbOptimizationModePage,
this.wlbAutomationPage,
this.wlbThresholdsPage,
this.wlbMetricWeightingPage,
this.wlbHostExclusionPage,
this.wlbAdvancedSettingsPage,
this.wlbOptimizationModePage,
this.wlbAutomationPage,
this.wlbThresholdsPage,
this.wlbMetricWeightingPage,
this.wlbHostExclusionPage,
this.wlbAdvancedSettingsPage,
this.wlbOptimizationModePage,
this.wlbAutomationPage,
this.wlbThresholdsPage,
this.wlbMetricWeightingPage,
this.wlbHostExclusionPage,
this.wlbAdvancedSettingsPage,
this.wlbOptimizationModePage,
this.wlbAutomationPage,
this.wlbThresholdsPage,
this.wlbMetricWeightingPage,
this.wlbHostExclusionPage,
this.wlbAdvancedSettingsPage}); this.wlbAdvancedSettingsPage});
resources.ApplyResources(this.verticalTabs, "verticalTabs"); resources.ApplyResources(this.verticalTabs, "verticalTabs");
// //
@ -167,6 +131,7 @@ namespace XenAdmin.Dialogs.Wlb
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.Name = "WlbConfigurationDialog"; this.Name = "WlbConfigurationDialog";
this.SizeChanged += new System.EventHandler(this.WlbConfigurationDialog_SizeChanged);
this.Controls.SetChildIndex(this.cancelButton, 0); this.Controls.SetChildIndex(this.cancelButton, 0);
this.Controls.SetChildIndex(this.okButton, 0); this.Controls.SetChildIndex(this.okButton, 0);
this.Controls.SetChildIndex(this.splitContainer, 0); this.Controls.SetChildIndex(this.splitContainer, 0);

View File

@ -215,5 +215,15 @@ namespace XenAdmin.Dialogs.Wlb
} }
} }
private void WlbConfigurationDialog_SizeChanged(object sender, EventArgs e)
{
// When the size of configuration dialog is changed,
// the SplitContainer panels should expand and contract correspondingly.
// Originally the dialog height is 750, SplitContainer height is 674,
// the difference is 76.
// The SplitContainer height must track the change of the dialog height.
splitContainer.Height = this.Height - 76;
}
} }
} }

View File

@ -331,10 +331,10 @@
<value>0</value> <value>0</value>
</data> </data>
<data name="cancelButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="cancelButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left</value> <value>Bottom, Right</value>
</data> </data>
<data name="cancelButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="cancelButton.Location" type="System.Drawing.Point, System.Drawing">
<value>738, 725</value> <value>738, 682</value>
</data> </data>
<data name="&gt;&gt;cancelButton.Name" xml:space="preserve"> <data name="&gt;&gt;cancelButton.Name" xml:space="preserve">
<value>cancelButton</value> <value>cancelButton</value>
@ -349,10 +349,10 @@
<value>3</value> <value>3</value>
</data> </data>
<data name="okButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="okButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left</value> <value>Bottom, Right</value>
</data> </data>
<data name="okButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="okButton.Location" type="System.Drawing.Point, System.Drawing">
<value>647, 725</value> <value>647, 682</value>
</data> </data>
<data name="&gt;&gt;okButton.Name" xml:space="preserve"> <data name="&gt;&gt;okButton.Name" xml:space="preserve">
<value>okButton</value> <value>okButton</value>
@ -535,7 +535,7 @@
<value>96, 96</value> <value>96, 96</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>834, 755</value> <value>834, 712</value>
</data> </data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing"> <data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value> <value>Tahoma, 8pt</value>

View File

@ -331,10 +331,10 @@
<value>0</value> <value>0</value>
</data> </data>
<data name="cancelButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="cancelButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left</value> <value>Bottom, Right</value>
</data> </data>
<data name="cancelButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="cancelButton.Location" type="System.Drawing.Point, System.Drawing">
<value>738, 725</value> <value>738, 682</value>
</data> </data>
<data name="&gt;&gt;cancelButton.Name" xml:space="preserve"> <data name="&gt;&gt;cancelButton.Name" xml:space="preserve">
<value>cancelButton</value> <value>cancelButton</value>
@ -349,10 +349,10 @@
<value>3</value> <value>3</value>
</data> </data>
<data name="okButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="okButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left</value> <value>Bottom, Right</value>
</data> </data>
<data name="okButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="okButton.Location" type="System.Drawing.Point, System.Drawing">
<value>647, 725</value> <value>647, 682</value>
</data> </data>
<data name="&gt;&gt;okButton.Name" xml:space="preserve"> <data name="&gt;&gt;okButton.Name" xml:space="preserve">
<value>okButton</value> <value>okButton</value>
@ -535,7 +535,7 @@
<value>96, 96</value> <value>96, 96</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>834, 755</value> <value>834, 712</value>
</data> </data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing"> <data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value> <value>Tahoma, 8pt</value>

View File

@ -1042,6 +1042,6 @@
<value>9901</value> <value>9901</value>
</data> </data>
<data name="FileSystemUsageMessageAlert" xml:space="preserve"> <data name="FileSystemUsageMessageAlert" xml:space="preserve">
<value>9854</value> <value>9857</value>
</data> </data>
</root> </root>

Binary file not shown.

View File

@ -434,16 +434,6 @@ namespace XenAdmin
{ {
if (meddlingAction == null) if (meddlingAction == null)
SetStatusBar(Properties.Resources._000_error_h32bit_16, action.Exception.Message); SetStatusBar(Properties.Resources._000_error_h32bit_16, action.Exception.Message);
IXenObject model =
(IXenObject)action.VM ??
(IXenObject)action.Host ??
(IXenObject)action.Pool ??
(IXenObject)action.SR;
if (model != null)
model.InError = true;
RequestRefreshTreeView();
} }
else if (meddlingAction == null) else if (meddlingAction == null)
{ {
@ -1747,11 +1737,46 @@ namespace XenAdmin
} }
else if (objectsView != null) else if (objectsView != null)
{ {
GroupingTag gt = SelectionManager.Selection.First as GroupingTag //We are in Objects View
?? SelectionManager.Selection.GroupAncestor; GroupingTag gt = null;
if (SelectionManager.Selection.Count == 1)
{
gt = SelectionManager.Selection.First as GroupingTag
?? SelectionManager.Selection[0].GroupAncestor;
}
else
{
//If multiple items have been selected we count the number of the grouping tags in the selection
var selectedGroups = SelectionManager.Selection.Where(s => s.GroupingTag != null);
//if exactly one grouping tag has been selected we show the search view for that one tag, but only if all the other items in the selection belong to this group/tag
if (selectedGroups.Count() == 1)
{
var groupingTag = selectedGroups.First().GroupingTag;
if (SelectionManager.Selection.Where(s => s.GroupingTag == null).All(s => s.GroupAncestor == groupingTag))
gt = groupingTag;
else
gt = null;
}
else
{
gt = SelectionManager.Selection.GroupAncestor;
}
}
//if there has been a grouping tag determined above we use that
//if not we show the search view for the root node
if (gt != null)
{
SearchPage.Search = Search.SearchForNonVappGroup(gt.Grouping, gt.Parent, gt.Group); SearchPage.Search = Search.SearchForNonVappGroup(gt.Grouping, gt.Parent, gt.Group);
} }
else
{
SearchPage.Search = Search.SearchForNonVappGroup(rootNodeGrouping.Grouping, rootNodeGrouping.Parent, rootNodeGrouping.Group);
}
}
else if (foldersView != null) else if (foldersView != null)
{ {
SearchPage.Search = Search.SearchForFolderGroup(rootNodeGrouping.Grouping, SearchPage.Search = Search.SearchForFolderGroup(rootNodeGrouping.Grouping,
@ -1765,6 +1790,18 @@ namespace XenAdmin
} }
else else
{ {
// Infrastructure View:
// If XenCenter node or a disconnected host is selected, show the default search
// Otherwise, find the top-level parent (= pool or standalone server) and show the search restricted to that
// In the case of multiselect, if all the selections are within one pool (or standalone server), then show that report.
// Otherwise show everything, as on the XenCenter node.
var connection = SelectionManager.Selection.GetConnectionOfAllItems(); // null for cross-pool selection
if (connection != null)
{
var pool = Helpers.GetPool(connection);
SearchPage.XenObject = pool ?? (IXenObject)Helpers.GetMaster(connection); // pool or standalone server
}
else
SearchPage.XenObject = null; SearchPage.XenObject = null;
} }
} }
@ -2692,12 +2729,7 @@ namespace XenAdmin
if (eventsPage.Visible) if (eventsPage.Visible)
{ {
// Unmark node if user has now seen error in log tab
if (SelectionManager.Selection.FirstAsXenObject != null)
SelectionManager.Selection.FirstAsXenObject.InError = false;
eventsPage.RefreshDisplayedEvents(); eventsPage.RefreshDisplayedEvents();
RequestRefreshTreeView();
} }
loggedInLabel1.Connection = null; loggedInLabel1.Connection = null;

View File

@ -501,7 +501,6 @@ namespace XenAdmin
_index++; _index++;
IXenObject xenObject = obj as IXenObject; IXenObject xenObject = obj as IXenObject;
bool error = xenObject != null && xenObject.InError;
bool highlighted = _highlightedDragTarget != null && obj != null && _highlightedDragTarget.Equals(obj); bool highlighted = _highlightedDragTarget != null && obj != null && _highlightedDragTarget.Equals(obj);
if (highlighted) if (highlighted)
@ -510,12 +509,6 @@ namespace XenAdmin
result.ForeColor = SystemColors.HighlightText; result.ForeColor = SystemColors.HighlightText;
result.NodeFont = Program.DefaultFont; result.NodeFont = Program.DefaultFont;
} }
else if (error)
{
result.BackColor = Program.ErrorBackColor;
result.ForeColor = Program.ErrorForeColor;
result.NodeFont = Program.DefaultFont;
}
else if (grayed) else if (grayed)
{ {
result.BackColor = _treeViewBackColor; result.BackColor = _treeViewBackColor;

View File

@ -214,7 +214,12 @@ namespace XenAdmin.Plugins
{ {
if (File.Exists(resources)) if (File.Exists(resources))
{ {
return new ResourceManager(Name, Assembly.LoadFile(resources)); // We load this "unsafely" because of CA-144950: the plugin is almost certainly
// downloaded from the web and won't install without this. I considered adding
// a confirmation step, but as all we do with the resources is to extract some
// strings, there is no security implication. (This doesn't affect security
// confirmations on programs called by the plugin).
return new ResourceManager(Name, Assembly.UnsafeLoadFrom(resources));
} }
} }
catch (Exception e) catch (Exception e)

View File

@ -269,6 +269,7 @@ namespace XenAdmin.SettingsPanels
private void HidePoolAuditTrailGranularitySection() private void HidePoolAuditTrailGranularitySection()
{ {
label2.Visible = false; label2.Visible = false;
label3.Visible = false;
sectionHeaderLabelAuditTrail.Visible = false; sectionHeaderLabelAuditTrail.Visible = false;
labelAuditTrail.Visible = false; labelAuditTrail.Visible = false;
auditTrailPanel.Visible = false; auditTrailPanel.Visible = false;

View File

@ -1615,6 +1615,9 @@
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>23</value> <value>23</value>
</data> </data>
<data name="label3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms"> <data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value> <value>Fill</value>
</data> </data>

View File

@ -1588,6 +1588,36 @@
<data name="&gt;&gt;auditTrailPanel.ZOrder" xml:space="preserve"> <data name="&gt;&gt;auditTrailPanel.ZOrder" xml:space="preserve">
<value>22</value> <value>22</value>
</data> </data>
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 489</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>632, 2</value>
</data>
<data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>38</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>label3</value>
</data>
<data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value>
</data>
<data name="&gt;&gt;label3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>23</value>
</data>
<data name="label3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms"> <data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value> <value>Fill</value>
</data> </data>
@ -1616,7 +1646,7 @@
<value>0</value> <value>0</value>
</data> </data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms"> <data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="labelAuditTrail" Row="21" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelAuditTrail" Row="20" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label2" Row="19" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelRepSub" Row="16" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelHistData" Row="13" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelOptAgr" Row="10" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelOptAgr" Row="11" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelHistData" Row="14" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelRecSev" Row="7" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelRepSub" Row="17" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelVmMigInt" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelVmMigInt" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelRecSev" Row="8" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panelVmMigInt" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelRecCnt" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelRecCnt" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panelRecCnt" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panelRecSev" Row="9" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panelOptAgr" Row="12" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panelHistData" Row="15" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panelRepSub" Row="18" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="auditTrailPanel" Row="22" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /&gt;&lt;/TableLayoutSettings&gt;</value> <value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="labelAuditTrail" Row="23" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelAuditTrail" Row="22" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label2" Row="21" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelRepSub" Row="16" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelHistData" Row="13" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelOptAgr" Row="10" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelOptAgr" Row="11" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelHistData" Row="14" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelRecSev" Row="7" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelRepSub" Row="17" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelVmMigInt" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelVmMigInt" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelRecSev" Row="8" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panelVmMigInt" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sectionHeaderLabelRecCnt" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelRecCnt" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panelRecCnt" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panelRecSev" Row="9" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panelOptAgr" Row="12" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panelHistData" Row="15" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panelRepSub" Row="18" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="auditTrailPanel" Row="24" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label3" Row="20" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,10,Absolute,10,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data> </data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>

View File

@ -81,6 +81,10 @@ namespace XenAdmin.SettingsPanels
trackbarNetWritePriority.Value = GetSafeTrackbarValue(trackbarNetWritePriority, _poolConfiguration.VmNetworkWriteWeightHigh / TRACKBAR_INTERVAL); trackbarNetWritePriority.Value = GetSafeTrackbarValue(trackbarNetWritePriority, _poolConfiguration.VmNetworkWriteWeightHigh / TRACKBAR_INTERVAL);
trackbarDiskReadPriority.Value = GetSafeTrackbarValue(trackbarDiskReadPriority, _poolConfiguration.VmDiskReadWeightHigh / TRACKBAR_INTERVAL); trackbarDiskReadPriority.Value = GetSafeTrackbarValue(trackbarDiskReadPriority, _poolConfiguration.VmDiskReadWeightHigh / TRACKBAR_INTERVAL);
trackbarDiskWritePriority.Value = GetSafeTrackbarValue(trackbarDiskWritePriority, _poolConfiguration.VmDiskWriteWeightHigh / TRACKBAR_INTERVAL); trackbarDiskWritePriority.Value = GetSafeTrackbarValue(trackbarDiskWritePriority, _poolConfiguration.VmDiskWriteWeightHigh / TRACKBAR_INTERVAL);
//CA-134554 - Hide Disk Read/Write until the backend server side is ready
trackbarDiskReadPriority.Visible = false;
trackbarDiskWritePriority.Visible = false;
_loading = false; ; _loading = false; ;
} }

View File

@ -222,6 +222,9 @@
<data name="label11.Text" xml:space="preserve"> <data name="label11.Text" xml:space="preserve">
<value>ディスク書き込み(&amp;W)</value> <value>ディスク書き込み(&amp;W)</value>
</data> </data>
<data name="label11.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;label11.Name" xml:space="preserve"> <data name="&gt;&gt;label11.Name" xml:space="preserve">
<value>label11</value> <value>label11</value>
</data> </data>
@ -255,6 +258,9 @@
<data name="label10.Text" xml:space="preserve"> <data name="label10.Text" xml:space="preserve">
<value>ディスク読み取り(&amp;D)</value> <value>ディスク読み取り(&amp;D)</value>
</data> </data>
<data name="label10.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;label10.Name" xml:space="preserve"> <data name="&gt;&gt;label10.Name" xml:space="preserve">
<value>label10</value> <value>label10</value>
</data> </data>

View File

@ -225,6 +225,9 @@
<data name="&gt;&gt;label11.Name" xml:space="preserve"> <data name="&gt;&gt;label11.Name" xml:space="preserve">
<value>label11</value> <value>label11</value>
</data> </data>
<data name="label11.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;label11.Type" xml:space="preserve"> <data name="&gt;&gt;label11.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
@ -258,6 +261,9 @@
<data name="&gt;&gt;label10.Name" xml:space="preserve"> <data name="&gt;&gt;label10.Name" xml:space="preserve">
<value>label10</value> <value>label10</value>
</data> </data>
<data name="label10.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;label10.Type" xml:space="preserve"> <data name="&gt;&gt;label10.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
@ -565,7 +571,7 @@
<value>6, 46</value> <value>6, 46</value>
</data> </data>
<data name="decentGroupBox1.Size" type="System.Drawing.Size, System.Drawing"> <data name="decentGroupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>578, 266</value> <value>578, 196</value>
</data> </data>
<data name="decentGroupBox1.TabIndex" type="System.Int32, mscorlib"> <data name="decentGroupBox1.TabIndex" type="System.Int32, mscorlib">
<value>32</value> <value>32</value>

View File

@ -222,6 +222,9 @@
<data name="label11.Text" xml:space="preserve"> <data name="label11.Text" xml:space="preserve">
<value>磁盘写入(&amp;W)</value> <value>磁盘写入(&amp;W)</value>
</data> </data>
<data name="label11.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;label11.Name" xml:space="preserve"> <data name="&gt;&gt;label11.Name" xml:space="preserve">
<value>label11</value> <value>label11</value>
</data> </data>
@ -255,6 +258,9 @@
<data name="label10.Text" xml:space="preserve"> <data name="label10.Text" xml:space="preserve">
<value>磁盘读取(&amp;D)</value> <value>磁盘读取(&amp;D)</value>
</data> </data>
<data name="label10.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;label10.Name" xml:space="preserve"> <data name="&gt;&gt;label10.Name" xml:space="preserve">
<value>label10</value> <value>label10</value>
</data> </data>

View File

@ -34,6 +34,10 @@ namespace XenAdmin.SettingsPanels
this.decentGroupBox1 = new XenAdmin.Controls.DecentGroupBox(); this.decentGroupBox1 = new XenAdmin.Controls.DecentGroupBox();
this.label1DiskWrite = new System.Windows.Forms.Label(); this.label1DiskWrite = new System.Windows.Forms.Label();
this.labelDiskRead = new System.Windows.Forms.Label(); this.labelDiskRead = new System.Windows.Forms.Label();
//CA-134554 - Hide Disk Read/Write until the backend server side is ready
this.label1DiskWrite.Visible = false;
this.labelDiskRead.Visible = false;
this.labelNetworkWrite = new System.Windows.Forms.Label(); this.labelNetworkWrite = new System.Windows.Forms.Label();
this.labelNetworkRead = new System.Windows.Forms.Label(); this.labelNetworkRead = new System.Windows.Forms.Label();
this.labelFreeMemory = new System.Windows.Forms.Label(); this.labelFreeMemory = new System.Windows.Forms.Label();

View File

@ -87,6 +87,12 @@ namespace XenAdmin.SettingsPanels
labelNetworkReadUnits.Text = string.Format(labelNetworkReadUnits.Text, updownNetworkReadCriticalPoint.Minimum, updownNetworkReadCriticalPoint.Maximum); labelNetworkReadUnits.Text = string.Format(labelNetworkReadUnits.Text, updownNetworkReadCriticalPoint.Minimum, updownNetworkReadCriticalPoint.Maximum);
labelNetworkWriteUnits.Text = string.Format(labelNetworkWriteUnits.Text, updownNetworkWriteCriticalPoint.Minimum, updownNetworkWriteCriticalPoint.Maximum); labelNetworkWriteUnits.Text = string.Format(labelNetworkWriteUnits.Text, updownNetworkWriteCriticalPoint.Minimum, updownNetworkWriteCriticalPoint.Maximum);
//CA-134554 - Hide Disk Read/Write until the backend server side is ready
updownDiskReadCriticalPoint.Visible = false;
updownDiskWriteCriticalPoint.Visible = false;
labelDiskReadUnits.Visible = false;
labelDiskWriteUnits.Visible = false;
_loading = false; ; _loading = false; ;
} }

View File

@ -322,13 +322,13 @@ namespace XenAdmin.TabPages
private System.Windows.Forms.ToolStripSplitButton toolStripSplitButtonDismiss; private System.Windows.Forms.ToolStripSplitButton toolStripSplitButtonDismiss;
private System.Windows.Forms.ToolStripMenuItem tsmiDismissAll; private System.Windows.Forms.ToolStripMenuItem tsmiDismissAll;
private System.Windows.Forms.ToolStripMenuItem tsmiDismissSelected; private System.Windows.Forms.ToolStripMenuItem tsmiDismissSelected;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
private System.Windows.Forms.DataGridViewImageColumn ColumnExpand; private System.Windows.Forms.DataGridViewImageColumn ColumnExpand;
private System.Windows.Forms.DataGridViewImageColumn ColumnSeverity; private System.Windows.Forms.DataGridViewImageColumn ColumnSeverity;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnMessage; private System.Windows.Forms.DataGridViewTextBoxColumn ColumnMessage;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnLocation; private System.Windows.Forms.DataGridViewTextBoxColumn ColumnLocation;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnDate; private System.Windows.Forms.DataGridViewTextBoxColumn ColumnDate;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnActions; private System.Windows.Forms.DataGridViewTextBoxColumn ColumnActions;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
} }
} }

View File

@ -229,10 +229,10 @@
<value>Magenta</value> <value>Magenta</value>
</data> </data>
<data name="toolStripDropDownButtonServerFilter.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripDropDownButtonServerFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>111, 23</value> <value>97, 23</value>
</data> </data>
<data name="toolStripDropDownButtonServerFilter.Text" xml:space="preserve"> <data name="toolStripDropDownButtonServerFilter.Text" xml:space="preserve">
<value>Filter by Lo&amp;cation</value> <value>Filter by S&amp;erver</value>
</data> </data>
<data name="toolStripDropDownButtonDateFilter.Font" type="System.Drawing.Font, System.Drawing"> <data name="toolStripDropDownButtonDateFilter.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value> <value>Segoe UI, 9pt</value>
@ -454,7 +454,7 @@
<value>True</value> <value>True</value>
</metadata> </metadata>
<data name="ColumnLocation.HeaderText" xml:space="preserve"> <data name="ColumnLocation.HeaderText" xml:space="preserve">
<value>Location</value> <value>Server / Pool</value>
</data> </data>
<data name="ColumnLocation.MinimumWidth" type="System.Int32, mscorlib"> <data name="ColumnLocation.MinimumWidth" type="System.Int32, mscorlib">
<value>30</value> <value>30</value>

View File

@ -152,6 +152,9 @@ namespace XenAdmin.TabPages
{ {
set set
{ {
if (value == null)
return;
SetupAnStartLicenseStatus(value); SetupAnStartLicenseStatus(value);
if (xenObject != value) if (xenObject != value)
{ {

View File

@ -238,17 +238,17 @@ namespace XenAdmin.TabPages
private System.Windows.Forms.ToolStripMenuItem tsmiDismissAll; private System.Windows.Forms.ToolStripMenuItem tsmiDismissAll;
private System.Windows.Forms.ToolStripMenuItem tsmiDismissSelected; private System.Windows.Forms.ToolStripMenuItem tsmiDismissSelected;
private XenAdmin.Controls.DataGridViewEx.DataGridViewEx dataGridView; private XenAdmin.Controls.DataGridViewEx.DataGridViewEx dataGridView;
private System.Windows.Forms.DataGridViewImageColumn columnExpander;
private System.Windows.Forms.DataGridViewImageColumn columnStatus;
private System.Windows.Forms.DataGridViewTextBoxColumn columnMessage;
private System.Windows.Forms.DataGridViewTextBoxColumn columnLocation;
private System.Windows.Forms.DataGridViewTextBoxColumn columnDate;
private System.Windows.Forms.DataGridViewTextBoxColumn columnActions;
private XenAdmin.Controls.FilterStatusToolStripDropDownButton toolStripDdbFilterStatus; private XenAdmin.Controls.FilterStatusToolStripDropDownButton toolStripDdbFilterStatus;
private XenAdmin.Controls.FilterLocationToolStripDropDownButton toolStripDdbFilterLocation; private XenAdmin.Controls.FilterLocationToolStripDropDownButton toolStripDdbFilterLocation;
private XenAdmin.Controls.FilterDatesToolStripDropDownButton toolStripDdbFilterDates; private XenAdmin.Controls.FilterDatesToolStripDropDownButton toolStripDdbFilterDates;
private System.Windows.Forms.ToolStripLabel toolStripLabelFiltersOnOff; private System.Windows.Forms.ToolStripLabel toolStripLabelFiltersOnOff;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.DataGridViewImageColumn columnExpander;
private System.Windows.Forms.DataGridViewImageColumn columnStatus;
private System.Windows.Forms.DataGridViewTextBoxColumn columnMessage;
private System.Windows.Forms.DataGridViewTextBoxColumn columnLocation;
private System.Windows.Forms.DataGridViewTextBoxColumn columnDate;
private System.Windows.Forms.DataGridViewTextBoxColumn columnActions;
} }
} }

View File

@ -142,10 +142,10 @@
<value>Magenta</value> <value>Magenta</value>
</data> </data>
<data name="toolStripDdbFilterLocation.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripDdbFilterLocation.Size" type="System.Drawing.Size, System.Drawing">
<value>111, 23</value> <value>97, 23</value>
</data> </data>
<data name="toolStripDdbFilterLocation.Text" xml:space="preserve"> <data name="toolStripDdbFilterLocation.Text" xml:space="preserve">
<value>Filter by Lo&amp;cation</value> <value>Filter by S&amp;erver</value>
</data> </data>
<data name="toolStripDdbFilterDates.ImageTransparentColor" type="System.Drawing.Color, System.Drawing"> <data name="toolStripDdbFilterDates.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value> <value>Magenta</value>
@ -290,7 +290,7 @@
<value>True</value> <value>True</value>
</metadata> </metadata>
<data name="columnLocation.HeaderText" xml:space="preserve"> <data name="columnLocation.HeaderText" xml:space="preserve">
<value>Location</value> <value>Server / Pool</value>
</data> </data>
<data name="columnLocation.MinimumWidth" type="System.Int32, mscorlib"> <data name="columnLocation.MinimumWidth" type="System.Int32, mscorlib">
<value>30</value> <value>30</value>

View File

@ -247,10 +247,10 @@
<value>Magenta</value> <value>Magenta</value>
</data> </data>
<data name="toolStripDropDownButtonServerFilter.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripDropDownButtonServerFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>111, 23</value> <value>97, 23</value>
</data> </data>
<data name="toolStripDropDownButtonServerFilter.Text" xml:space="preserve"> <data name="toolStripDropDownButtonServerFilter.Text" xml:space="preserve">
<value>Filter by Lo&amp;cation</value> <value>Filter by S&amp;erver</value>
</data> </data>
<data name="toolStripDropDownButtonDateFilter.Font" type="System.Drawing.Font, System.Drawing"> <data name="toolStripDropDownButtonDateFilter.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value> <value>Segoe UI, 9pt</value>
@ -507,7 +507,7 @@
<value>True</value> <value>True</value>
</metadata> </metadata>
<data name="ColumnLocation.HeaderText" xml:space="preserve"> <data name="ColumnLocation.HeaderText" xml:space="preserve">
<value>Location</value> <value>Server / Pool</value>
</data> </data>
<data name="ColumnLocation.MinimumWidth" type="System.Int32, mscorlib"> <data name="ColumnLocation.MinimumWidth" type="System.Int32, mscorlib">
<value>95</value> <value>95</value>

View File

@ -206,7 +206,7 @@ namespace XenAdmin.Wizards.NewVMWizard
page_7_Networking.SelectedTemplate = selectedTemplate; page_7_Networking.SelectedTemplate = selectedTemplate;
RemovePage(pageVgpu); RemovePage(pageVgpu);
if (vgpuCapability && selectedTemplate.IsHVM) if (vgpuCapability && selectedTemplate.CanHaveVGpu)
AddAfterPage(page_5_CpuMem, pageVgpu); AddAfterPage(page_5_CpuMem, pageVgpu);
RemovePage(page_1b_BiosLocking); RemovePage(page_1b_BiosLocking);

View File

@ -34,6 +34,7 @@ using XenAdmin.Core;
using XenAdmin.TabPages; using XenAdmin.TabPages;
using System.Windows.Forms; using System.Windows.Forms;
using XenAdmin.Wizards; using XenAdmin.Wizards;
using XenAdmin.Wizards.NewNetworkWizard_Pages;
namespace XenAdminTests namespace XenAdminTests
{ {
@ -56,5 +57,26 @@ namespace XenAdminTests
return GetBaseClassField<Button>("buttonNext"); return GetBaseClassField<Button>("buttonNext");
} }
} }
public RadioButton SSPNButton
{
get
{
var page = new NetWTypeSelectWrapper(GetField<NetWTypeSelect>("pageNetworkType"));
return page.SSPNButton;
}
}
}
internal class NetWTypeSelectWrapper : TestWrapper<NetWTypeSelect>
{
public NetWTypeSelectWrapper(NetWTypeSelect item)
: base(item)
{ }
public RadioButton SSPNButton
{
get { return GetField<RadioButton>("rbtnInternalNetwork"); }
}
} }
} }

View File

@ -70,6 +70,7 @@ namespace XenAdminTests.TabsAndMenus
MainWindowWrapper.NetworkPage.AddNetworkButton.PerformClick, MainWindowWrapper.NetworkPage.AddNetworkButton.PerformClick,
w => w =>
{ {
w.SSPNButton.PerformClick();
w.NextButton.PerformClick(); w.NextButton.PerformClick();
w.NextButton.PerformClick(); w.NextButton.PerformClick();
w.NextButton.PerformClick(); w.NextButton.PerformClick();

View File

@ -51,6 +51,8 @@ namespace XenAdmin.Actions
private readonly string _licenseServerAddress; private readonly string _licenseServerAddress;
private readonly string _licenseServerPort; private readonly string _licenseServerPort;
public List<LicenseFailure> LicenseFailures { get; private set; }
protected readonly Action<List<LicenseFailure>, string> DoOnLicensingFailure; protected readonly Action<List<LicenseFailure>, string> DoOnLicensingFailure;
/// <summary> /// <summary>
@ -65,6 +67,7 @@ namespace XenAdmin.Actions
Action<List<LicenseFailure>, string> DoOnLicensingFailure) Action<List<LicenseFailure>, string> DoOnLicensingFailure)
: base(null, Messages.LICENSE_UPDATING_LICENSES) : base(null, Messages.LICENSE_UPDATING_LICENSES)
{ {
LicenseFailures = new List<LicenseFailure>();
Util.ThrowIfEnumerableParameterNullOrEmpty(xos, "xenobjects"); Util.ThrowIfEnumerableParameterNullOrEmpty(xos, "xenobjects");
_edition = edition; _edition = edition;
@ -90,8 +93,6 @@ namespace XenAdmin.Actions
protected override void Run() protected override void Run()
{ {
List<LicenseFailure> licenseFailures = new List<LicenseFailure>();
// PR-1102: hosts that have been updated, plus the previous edition information - this data will be sent to the licensing server // PR-1102: hosts that have been updated, plus the previous edition information - this data will be sent to the licensing server
Dictionary<Host, LicensingHelper.LicenseDataStruct> updatedHosts = new Dictionary<Host, LicensingHelper.LicenseDataStruct>(); Dictionary<Host, LicensingHelper.LicenseDataStruct> updatedHosts = new Dictionary<Host, LicensingHelper.LicenseDataStruct>();
@ -219,7 +220,7 @@ namespace XenAdmin.Actions
} }
} }
licenseFailures.Add(new LicenseFailure(host, alertText ?? e.Message)); LicenseFailures.Add(new LicenseFailure(host, alertText ?? e.Message));
if (pool != null) if (pool != null)
pool.Connection.Cache.Hosts.ToList().ForEach(h => SetLicenseServer(h, previousLicenseServerAddress, previousLicenseServerPort)); pool.Connection.Cache.Hosts.ToList().ForEach(h => SetLicenseServer(h, previousLicenseServerAddress, previousLicenseServerPort));
@ -238,12 +239,12 @@ namespace XenAdmin.Actions
LicensingHelper.SendLicenseEditionData(updatedHosts, Host.GetEditionText(_edition)); LicensingHelper.SendLicenseEditionData(updatedHosts, Host.GetEditionText(_edition));
} }
if (licenseFailures.Count > 0) if (LicenseFailures.Count > 0)
{ {
string exceptionText = licenseFailures.Count == 1 ? string.Format(Messages.LICENSE_ERROR_1, licenseFailures[0].Host.Name) : string.Format(Messages.LICENSE_ERROR_MANY, licenseFailures.Count, new List<IXenObject>(xos).Count); string exceptionText = LicenseFailures.Count == 1 ? string.Format(Messages.LICENSE_ERROR_1, LicenseFailures[0].Host.Name) : string.Format(Messages.LICENSE_ERROR_MANY, LicenseFailures.Count, new List<IXenObject>(xos).Count);
if (DoOnLicensingFailure != null) if (DoOnLicensingFailure != null)
DoOnLicensingFailure(licenseFailures, exceptionText); DoOnLicensingFailure(LicenseFailures, exceptionText);
throw new InvalidOperationException(exceptionText); throw new InvalidOperationException(exceptionText);
} }
} }

View File

@ -163,12 +163,22 @@ namespace XenAdmin.Actions
{ {
// Destroy secret after the SR creation is complete. This is safe // Destroy secret after the SR creation is complete. This is safe
// since all PBDs will have duplicated the secret (CA-113396). // since all PBDs will have duplicated the secret (CA-113396).
//
// We do this on a best-effort basis because some types of errors
// mean the secret was never actually created, so the operation will
// fail, masking any earlier error (CA-145254), or causing a successful
// SR.create to be reported as an error. The worst that can happen is
// that an unused secret will be left lying around without warning.
try
{
if (!string.IsNullOrEmpty(secretuuid) && Helpers.CreedenceOrGreater(Connection)) if (!string.IsNullOrEmpty(secretuuid) && Helpers.CreedenceOrGreater(Connection))
{ {
string opaqref = Secret.get_by_uuid(Session, secretuuid); string opaqref = Secret.get_by_uuid(Session, secretuuid);
Secret.destroy(Session, opaqref); Secret.destroy(Session, opaqref);
} }
} }
catch { }
}
log.Debug("Checking that SR.create() actually succeeded"); log.Debug("Checking that SR.create() actually succeeded");
foreach (XenRef<PBD> pbdRef in XenAPI.SR.get_PBDs(Session, sr.opaque_ref)) foreach (XenRef<PBD> pbdRef in XenAPI.SR.get_PBDs(Session, sr.opaque_ref))

View File

@ -1,7 +1,7 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.34209 // Runtime Version:4.0.30319.18444
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
@ -13313,7 +13313,7 @@ namespace XenAdmin {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to fetch earlier data. /// Looks up a localized string similar to &amp;Next Section.
/// </summary> /// </summary>
public static string FETCH_EARLIER_DATA { public static string FETCH_EARLIER_DATA {
get { get {
@ -26900,7 +26900,7 @@ namespace XenAdmin {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to run report. /// Looks up a localized string similar to &amp;Run Report.
/// </summary> /// </summary>
public static string RUN_REPORT { public static string RUN_REPORT {
get { get {
@ -27143,7 +27143,7 @@ namespace XenAdmin {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to {0}: All Servers, VMs, Custom Templates &amp; Remote SRs. /// Looks up a localized string similar to {0}: Overview.
/// </summary> /// </summary>
public static string SEARCH_TITLE_HOST { public static string SEARCH_TITLE_HOST {
get { get {
@ -27161,7 +27161,7 @@ namespace XenAdmin {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to {0}: All Servers, VMs, Custom Templates &amp; Remote SRs. /// Looks up a localized string similar to {0}: Overview.
/// </summary> /// </summary>
public static string SEARCH_TITLE_POOL { public static string SEARCH_TITLE_POOL {
get { get {
@ -35470,6 +35470,5 @@ namespace XenAdmin {
return ResourceManager.GetString("YOU_ARE_HERE", resourceCulture); return ResourceManager.GetString("YOU_ARE_HERE", resourceCulture);
} }
} }
} }
} }

View File

@ -9444,13 +9444,13 @@ Upgrading VMs using StorageLink Gateway to XenServer 6.0 is only supported if th
<value>Search...</value> <value>Search...</value>
</data> </data>
<data name="SEARCH_TITLE_HOST" xml:space="preserve"> <data name="SEARCH_TITLE_HOST" xml:space="preserve">
<value>{0}: All Servers, VMs, Custom Templates &amp; Remote SRs</value> <value>{0}: Overview</value>
</data> </data>
<data name="SEARCH_TITLE_OVERVIEW" xml:space="preserve"> <data name="SEARCH_TITLE_OVERVIEW" xml:space="preserve">
<value>All Servers, VMs, Custom Templates &amp; Remote SRs</value> <value>All Servers, VMs, Custom Templates &amp; Remote SRs</value>
</data> </data>
<data name="SEARCH_TITLE_POOL" xml:space="preserve"> <data name="SEARCH_TITLE_POOL" xml:space="preserve">
<value>{0}: All Servers, VMs, Custom Templates &amp; Remote SRs</value> <value>{0}: Overview</value>
</data> </data>
<data name="SECRET_ACCESS_KEY_LABLE" xml:space="preserve"> <data name="SECRET_ACCESS_KEY_LABLE" xml:space="preserve">
<value>&amp;Secret access key:</value> <value>&amp;Secret access key:</value>

View File

@ -44,9 +44,6 @@ namespace XenAPI
string Name { get; } string Name { get; }
bool InError { get; set; }
IXenConnection Connection { get; set; } IXenConnection Connection { get; set; }
bool Locked { get; set; } bool Locked { get; set; }

View File

@ -223,13 +223,16 @@ namespace XenAPI
/// <param name="validRoleList">The list of roles which can perform all the methods</param> /// <param name="validRoleList">The list of roles which can perform all the methods</param>
public static bool CanPerform(RbacMethodList apiMethodsToRoleCheck, IXenConnection connection, out List<Role> validRoleList, bool debug) public static bool CanPerform(RbacMethodList apiMethodsToRoleCheck, IXenConnection connection, out List<Role> validRoleList, bool debug)
{ {
if (!connection.IsConnected)
{
validRoleList = new List<Role>();
return false;
}
else
validRoleList = ValidRoleList(apiMethodsToRoleCheck, connection, debug); validRoleList = ValidRoleList(apiMethodsToRoleCheck, connection, debug);
if (Helpers.MidnightRideOrGreater(connection)) if (Helpers.MidnightRideOrGreater(connection))
{ {
if (!connection.IsConnected)
return false;
if (connection.Session.IsLocalSuperuser) if (connection.Session.IsLocalSuperuser)
return true; return true;

View File

@ -55,6 +55,7 @@ namespace XenAPI
// [["0/ip", <IPv4 address>], ["0/ipv6/0", <IPv6 address>], ["0/ipv6/1", <IPv6 address>]] // [["0/ip", <IPv4 address>], ["0/ipv6/0", <IPv6 address>], ["0/ipv6/1", <IPv6 address>]]
List<string> addresses = (from network in vmGuestMetrics.networks List<string> addresses = (from network in vmGuestMetrics.networks
where network.Key.StartsWith(String.Format("{0}/ip", this.device)) where network.Key.StartsWith(String.Format("{0}/ip", this.device))
orderby network.Key
select network.Value).ToList(); select network.Value).ToList();
if (addresses.Count > 0) if (addresses.Count > 0)

View File

@ -57,7 +57,7 @@ namespace XenAPI
// or different XenServer versions. // or different XenServer versions.
private const int DEFAULT_NUM_VCPUS_ALLOWED = 16; private const int DEFAULT_NUM_VCPUS_ALLOWED = 16;
private const int DEFAULT_NUM_VIFS_ALLOWED = 7; private const int DEFAULT_NUM_VIFS_ALLOWED = 7;
private const int DEFAULT_NUM_VBDS_ALLOWED = 7; private const int DEFAULT_NUM_VBDS_ALLOWED = 16;
public const long DEFAULT_MEM_ALLOWED = 128 * Util.BINARY_GIGA; public const long DEFAULT_MEM_ALLOWED = 128 * Util.BINARY_GIGA;
public const int DEFAULT_CORES_PER_SOCKET = 1; public const int DEFAULT_CORES_PER_SOCKET = 1;
private SnapshotsView _snapshotView = SnapshotsView.None; private SnapshotsView _snapshotView = SnapshotsView.None;
@ -419,6 +419,51 @@ namespace XenAPI
get { return HVM_boot_policy != ""; } get { return HVM_boot_policy != ""; }
} }
public bool HasRDP
{
get
{
var metrics = Connection.Resolve(this.guest_metrics);
if (metrics == null)
return false;
return 0 != IntKey(metrics.other, "feature-ts", 0);
}
}
/// <summary>Returns true if
/// 1) the guest is HVM and
/// 2a) the allow-gpu-passthrough restriction is absent or
/// 2b) the allow-gpu-passthrough restriction is non-zero
///</summary>
public bool CanHaveVGpu
{
get
{
if (!IsHVM)
return false;
XmlDocument xd = GetRecommendations();
if (xd == null)
return true;
try
{
XmlNode xn = xd.SelectSingleNode(@"restrictions/restriction[@field='allow-gpu-passthrough']");
if (xn == null)
return true;
return
Convert.ToInt32(xn.Attributes["value"].Value) != 0;
}
catch
{
return true;
}
}
}
void set_other_config(string key, string value) void set_other_config(string key, string value)
{ {
Dictionary<string, string> new_other_config = Dictionary<string, string> new_other_config =

View File

@ -100,7 +100,6 @@ namespace XenAPI
IXenObject result = (IXenObject)MemberwiseClone(); IXenObject result = (IXenObject)MemberwiseClone();
result.ClearEventListeners(); result.ClearEventListeners();
result.Locked = false; result.Locked = false;
result.InError = false;
return result; return result;
} }
@ -264,17 +263,9 @@ namespace XenAPI
return s != null && int.TryParse(s, out result) ? result : def; return s != null && int.TryParse(s, out result) ? result : def;
} }
private bool in_error;
public virtual string Name public virtual string Name
{ {
get { return ""; } get { return ""; }
} }
public bool InError
{
get { return in_error; }
set { in_error = value; }
}
} }
} }

View File

@ -271,7 +271,7 @@ namespace XenAdmin.XenSearch
public int CompareTo(Search other) public int CompareTo(Search other)
{ {
int i = -DefaultSearch.CompareTo(other.DefaultSearch); int i = DefaultSearch.CompareTo(other.DefaultSearch);
if (i == 0) if (i == 0)
return Name.CompareTo(other.Name); return Name.CompareTo(other.Name);

View File

@ -491,6 +491,7 @@ namespace XenOvfTransport
args.Add("vdi_uuid", vdiuuid); args.Add("vdi_uuid", vdiuuid);
args.Add("transfer_mode", "ISCSI"); args.Add("transfer_mode", "ISCSI");
args.Add("read_only", read_only ? "true" : "false"); args.Add("read_only", read_only ? "true" : "false");
args.Add("timeout_minutes", "1");
//Transfer VM IP settings //Transfer VM IP settings
foreach (var kvp in m_networkArgs) foreach (var kvp in m_networkArgs)

View File

@ -34,11 +34,11 @@
<schema version="2.3.121.0" generator="dotNetInstaller InstallerEditor" /> <schema version="2.3.121.0" generator="dotNetInstaller InstallerEditor" />
<fileattributes><fileattribute name="CompanyName" value="Citrix Systems, Inc." /><fileattribute name="FileDescription" value="Citrix XenCenter Installer" /><fileattribute name="ProductName" value="Citrix XenCenter" /><fileattribute name="LegalCopyright" /><fileattribute name="LegalTrademarks" /><fileattribute name="ProductVersion" value="." /><fileattribute name="FileVersion" value="." /></fileattributes> <fileattributes><fileattribute name="CompanyName" value="Citrix Systems, Inc." /><fileattribute name="FileDescription" value="Citrix XenCenter Installer" /><fileattribute name="ProductName" value="Citrix XenCenter" /><fileattribute name="LegalCopyright" /><fileattribute name="LegalTrademarks" /><fileattribute name="ProductVersion" value="." /><fileattribute name="FileVersion" value="." /></fileattributes>
<configuration dialog_caption="Citrix XenCenter Installer" dialog_message="In order to install Citrix XenCenter you must first install these components:" dialog_message_uninstall="" dialog_bitmap="#APPPATH\banner.bmp" skip_caption="Skip" install_caption="Install" uninstall_caption="Uninstall" cancel_caption="Close" status_installed=" (Installed)" status_notinstalled="" failed_exec_command_continue="" installation_completed="Citrix XenCenter installed successfully!" uninstallation_completed="Citrix XenCenter uninstalled successfully!" installation_none="Citrix XenCenter is already installed!" uninstallation_none="Citrix XenCenter is not installed!" installing_component_wait="Installing %s. Wait, this operation could take some time ..." uninstalling_component_wait="Uninstalling %s. Wait, this operation could take some time ..." reboot_required="To continue the installation you must restart your computer. Restart now?" must_reboot_required="False" dialog_otherinfo_caption="" dialog_otherinfo_link="" complete_command="" complete_command_silent="" complete_command_basic="" wait_for_complete_command="True" prompt_for_optional_components="False" auto_close_if_installed="True" auto_close_on_error="False" reload_on_error="False" dialog_show_installed="False" dialog_show_uninstalled="False" dialog_show_required="False" cab_dialog_message="%s" cab_cancelled_message="" cab_dialog_caption="" cab_path="#TEMPPATH\#GUID" cab_path_autodelete="False" dialog_default_button="cancel" dialog_position="" dialog_components_list_position="" dialog_message_position="" dialog_bitmap_position="" dialog_otherinfo_link_position="" dialog_osinfo_position="" dialog_install_button_position="" dialog_cancel_button_position="" dialog_skip_button_position="" auto_start="True" auto_continue_on_reboot="False" reboot_cmd="" show_progress_dialog="False" show_cab_dialog="False" disable_wow64_fs_redirection="False" administrator_required="False" administrator_required_message="Citrix XenCenter installation requires administration rights." type="install" lcid_filter="" language_id="" language="" os_filter="" os_filter_min="" os_filter_max="" processor_architecture_filter="" supports_install="True" supports_uninstall="True"> <configuration dialog_caption="Citrix XenCenter Installer" dialog_message="In order to install Citrix XenCenter you must first install these components:" dialog_message_uninstall="" dialog_bitmap="#APPPATH\banner.bmp" skip_caption="Skip" install_caption="Install" uninstall_caption="Uninstall" cancel_caption="Close" status_installed=" (Installed)" status_notinstalled="" failed_exec_command_continue="" installation_completed="Citrix XenCenter installed successfully!" uninstallation_completed="Citrix XenCenter uninstalled successfully!" installation_none="Citrix XenCenter is already installed!" uninstallation_none="Citrix XenCenter is not installed!" installing_component_wait="Installing %s. Wait, this operation could take some time ..." uninstalling_component_wait="Uninstalling %s. Wait, this operation could take some time ..." reboot_required="To continue the installation you must restart your computer. Restart now?" must_reboot_required="False" dialog_otherinfo_caption="" dialog_otherinfo_link="" complete_command="" complete_command_silent="" complete_command_basic="" wait_for_complete_command="True" prompt_for_optional_components="False" auto_close_if_installed="True" auto_close_on_error="False" reload_on_error="False" dialog_show_installed="False" dialog_show_uninstalled="False" dialog_show_required="False" cab_dialog_message="%s" cab_cancelled_message="" cab_dialog_caption="" cab_path="#TEMPPATH\#GUID" cab_path_autodelete="False" dialog_default_button="cancel" dialog_position="" dialog_components_list_position="" dialog_message_position="" dialog_bitmap_position="" dialog_otherinfo_link_position="" dialog_osinfo_position="" dialog_install_button_position="" dialog_cancel_button_position="" dialog_skip_button_position="" auto_start="True" auto_continue_on_reboot="False" reboot_cmd="" show_progress_dialog="False" show_cab_dialog="False" disable_wow64_fs_redirection="False" administrator_required="False" administrator_required_message="Citrix XenCenter installation requires administration rights." type="install" lcid_filter="" language_id="" language="" os_filter="" os_filter_min="" os_filter_max="" processor_architecture_filter="" supports_install="True" supports_uninstall="True">
<component command="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; &quot;/norestart &quot;" command_silent="" command_basic="" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="Microsoft .NET Framework 4.0 - Full" display_name="Microsoft .NET Framework 4.0" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.0 - Full for all operating system since Windows XP SP3 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False"> <component command="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /norestart" command_silent="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /passive /norestart" command_basic="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /norestart" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="dotNetFx" display_name="Microsoft .NET Framework 4.0" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.0 - Full for all operating system since Windows XP SP3 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False">
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Install" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" /> <installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Install" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" />
<embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" /> <embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" />
</component> </component>
<component package="#CABPATH\xencenter.msi" cmdparameters="" cmdparameters_silent="/qf" cmdparameters_basic="/qf" uninstall_package="" uninstall_cmdparameters="/qb-" uninstall_cmdparameters_silent="/qf" uninstall_cmdparameters_basic="/qb-" disable_wow64_fs_redirection="False" id="XenCenter" display_name="Citrix XenCenter" uninstall_display_name="" os_filter="" os_filter_min="" os_filter_max="" os_filter_lcid="" type="msi" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="True" selected_install="True" selected_uninstall="True" note="" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="True" show_progress_dialog="True" show_cab_dialog="False"> <component package="#CABPATH\xencenter.msi" cmdparameters=" " cmdparameters_silent="/passive" cmdparameters_basic=" " uninstall_package="" uninstall_cmdparameters="/qb-" uninstall_cmdparameters_silent="/qf" uninstall_cmdparameters_basic="/qb-" disable_wow64_fs_redirection="False" id="XenCenter" display_name="Citrix XenCenter" uninstall_display_name="" os_filter="" os_filter_min="" os_filter_max="" os_filter_lcid="" type="msi" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="True" selected_install="True" selected_uninstall="True" note="" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="True" show_progress_dialog="True" show_cab_dialog="False">
<embedfile sourcefilepath="XenCenter.msi" targetfilepath="" /> <embedfile sourcefilepath="XenCenter.msi" targetfilepath="" />
</component> </component>
</configuration> </configuration>

View File

@ -35,27 +35,27 @@
<fileattributes><fileattribute name="CompanyName" value="Citrix Systems, Inc." /><fileattribute name="FileDescription" value="Citrix XenCenter Installer" /><fileattribute name="ProductName" value="Citrix XenCenter" /><fileattribute name="LegalCopyright" /><fileattribute name="LegalTrademarks" /><fileattribute name="ProductVersion" value="." /><fileattribute name="FileVersion" value="." /></fileattributes> <fileattributes><fileattribute name="CompanyName" value="Citrix Systems, Inc." /><fileattribute name="FileDescription" value="Citrix XenCenter Installer" /><fileattribute name="ProductName" value="Citrix XenCenter" /><fileattribute name="LegalCopyright" /><fileattribute name="LegalTrademarks" /><fileattribute name="ProductVersion" value="." /><fileattribute name="FileVersion" value="." /></fileattributes>
<configuration dialog_caption="Citrix XenCenter Installer" dialog_message="In order to install Citrix XenCenter you must first install these components:" dialog_message_uninstall="" dialog_bitmap="#APPPATH\banner.bmp" skip_caption="Skip" install_caption="Install" uninstall_caption="Uninstall" cancel_caption="Close" status_installed=" (Installed)" status_notinstalled="" failed_exec_command_continue="" installation_completed="Citrix XenCenter installed successfully!" uninstallation_completed="Citrix XenCenter uninstalled successfully!" installation_none="Citrix XenCenter is already installed!" uninstallation_none="Citrix XenCenter is not installed!" installing_component_wait="Installing %s. Wait, this operation could take some time ..." uninstalling_component_wait="Uninstalling %s. Wait, this operation could take some time ..." reboot_required="To continue the installation you must restart your computer. Restart now?" must_reboot_required="False" dialog_otherinfo_caption="" dialog_otherinfo_link="" complete_command="" complete_command_silent="" complete_command_basic="" wait_for_complete_command="True" prompt_for_optional_components="False" auto_close_if_installed="True" auto_close_on_error="False" reload_on_error="False" dialog_show_installed="False" dialog_show_uninstalled="False" dialog_show_required="False" cab_dialog_message="%s" cab_cancelled_message="" cab_dialog_caption="" cab_path="#TEMPPATH\#GUID" cab_path_autodelete="False" dialog_default_button="cancel" dialog_position="" dialog_components_list_position="" dialog_message_position="" dialog_bitmap_position="" dialog_otherinfo_link_position="" dialog_osinfo_position="" dialog_install_button_position="" dialog_cancel_button_position="" dialog_skip_button_position="" auto_start="True" auto_continue_on_reboot="False" reboot_cmd="" show_progress_dialog="False" show_cab_dialog="False" disable_wow64_fs_redirection="False" administrator_required="False" administrator_required_message="Citrix XenCenter installation requires administration rights." type="install" lcid_filter="" language_id="" language="" os_filter="" os_filter_min="" os_filter_max="" processor_architecture_filter="" supports_install="True" supports_uninstall="True"> <configuration dialog_caption="Citrix XenCenter Installer" dialog_message="In order to install Citrix XenCenter you must first install these components:" dialog_message_uninstall="" dialog_bitmap="#APPPATH\banner.bmp" skip_caption="Skip" install_caption="Install" uninstall_caption="Uninstall" cancel_caption="Close" status_installed=" (Installed)" status_notinstalled="" failed_exec_command_continue="" installation_completed="Citrix XenCenter installed successfully!" uninstallation_completed="Citrix XenCenter uninstalled successfully!" installation_none="Citrix XenCenter is already installed!" uninstallation_none="Citrix XenCenter is not installed!" installing_component_wait="Installing %s. Wait, this operation could take some time ..." uninstalling_component_wait="Uninstalling %s. Wait, this operation could take some time ..." reboot_required="To continue the installation you must restart your computer. Restart now?" must_reboot_required="False" dialog_otherinfo_caption="" dialog_otherinfo_link="" complete_command="" complete_command_silent="" complete_command_basic="" wait_for_complete_command="True" prompt_for_optional_components="False" auto_close_if_installed="True" auto_close_on_error="False" reload_on_error="False" dialog_show_installed="False" dialog_show_uninstalled="False" dialog_show_required="False" cab_dialog_message="%s" cab_cancelled_message="" cab_dialog_caption="" cab_path="#TEMPPATH\#GUID" cab_path_autodelete="False" dialog_default_button="cancel" dialog_position="" dialog_components_list_position="" dialog_message_position="" dialog_bitmap_position="" dialog_otherinfo_link_position="" dialog_osinfo_position="" dialog_install_button_position="" dialog_cancel_button_position="" dialog_skip_button_position="" auto_start="True" auto_continue_on_reboot="False" reboot_cmd="" show_progress_dialog="False" show_cab_dialog="False" disable_wow64_fs_redirection="False" administrator_required="False" administrator_required_message="Citrix XenCenter installation requires administration rights." type="install" lcid_filter="" language_id="" language="" os_filter="" os_filter_min="" os_filter_max="" processor_architecture_filter="" supports_install="True" supports_uninstall="True">
<!-- ja-jp --> <!-- ja-jp -->
<component command="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; &quot;/norestart &quot;" command_silent="" command_basic="" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="Microsoft .NET Framework 4.0 - Full" display_name="Microsoft .NET Framework 4.0" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="1041" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.0 - Full for all operating system since Windows XP SP3 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False"> <component command="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /norestart" command_silent="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /passive /norestart" command_basic="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /norestart" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="Microsoft .NET Framework 4.0 - Full" display_name="Microsoft .NET Framework 4.0" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="1041" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.0 - Full for all operating system since Windows XP SP3 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False">
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Install" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" /> <installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Install" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" />
<embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" /> <embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" />
</component> </component>
<!-- zh-cn --> <!-- zh-cn -->
<component command="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; &quot;/norestart &quot;" command_silent="" command_basic="" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="Microsoft .NET Framework 4.0 - Full" display_name="Microsoft .NET Framework 4.0" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="2052" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.0 - Full for all operating system since Windows XP SP3 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False"> <component command="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /norestart" command_silent="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /passive /norestart" command_basic="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /norestart" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="Microsoft .NET Framework 4.0 - Full" display_name="Microsoft .NET Framework 4.0" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="2052" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.0 - Full for all operating system since Windows XP SP3 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False">
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Install" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" /> <installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Install" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" />
<embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" /> <embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" />
</component> </component>
<!-- zh-tw --> <!-- zh-tw -->
<component command="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; &quot;/norestart &quot;" command_silent="" command_basic="" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="Microsoft .NET Framework 4.0 - Full" display_name="Microsoft .NET Framework 4.0" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="1028" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.0 - Full for all operating system since Windows XP SP3 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False"> <component command="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /norestart" command_silent="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /passive /norestart" command_basic="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /norestart" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="Microsoft .NET Framework 4.0 - Full" display_name="Microsoft .NET Framework 4.0" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="1028" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.0 - Full for all operating system since Windows XP SP3 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False">
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Install" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" /> <installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Install" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" />
<embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" /> <embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" />
</component> </component>
<!-- all others: en --> <!-- all others: en -->
<component command="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; &quot;/norestart &quot;" command_silent="" command_basic="" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="Microsoft .NET Framework 4.0 - Full" display_name="Microsoft .NET Framework 4.0" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="!1041,!2052,!1028" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.0 - Full for all operating system since Windows XP SP3 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False"> <component command="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /norestart" command_silent="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /passive /norestart" command_basic="&quot;#CABPATH\dotNetFx40_Full_setup.exe&quot; /norestart" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="0" returncodes_reboot="3010" hide_window="False" disable_wow64_fs_redirection="False" execution_method="CreateProcess" id="Microsoft .NET Framework 4.0 - Full" display_name="Microsoft .NET Framework 4.0" uninstall_display_name="" os_filter="" os_filter_min="winXPsp3" os_filter_max="" os_filter_lcid="!1041,!2052,!1028" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="There was an error downloading or installing prerequisite %s. &#xD;&#xA;&#xD;&#xA;Please make sure that the internet is available or install Microsoft .Net Framework 4 manually." allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="False" selected_install="True" selected_uninstall="False" note="English - WebSetup - .NET Framework 4.0 - Full for all operating system since Windows XP SP3 (Install check)" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="False">
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Install" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" /> <installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" fieldname="Install" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" />
<embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" /> <embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" />
</component> </component>
<!-- XenCenter msi --> <!-- XenCenter msi -->
<component package="#CABPATH\XenCenter.msi" cmdparameters="" cmdparameters_silent="/qf" cmdparameters_basic="/qf" uninstall_package="" uninstall_cmdparameters="/qb-" uninstall_cmdparameters_silent="/qf" uninstall_cmdparameters_basic="/qb-" disable_wow64_fs_redirection="False" id="XenCenter" display_name="Citrix XenCenter" uninstall_display_name="" os_filter="" os_filter_min="" os_filter_max="" os_filter_lcid="" type="msi" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="True" selected_install="True" selected_uninstall="True" note="" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="True" show_progress_dialog="True" show_cab_dialog="True"> <component package="#CABPATH\xencenter.msi" cmdparameters=" " cmdparameters_silent="/passive" cmdparameters_basic=" " uninstall_package="" uninstall_cmdparameters="/qb-" uninstall_cmdparameters_silent="/qf" uninstall_cmdparameters_basic="/qb-" disable_wow64_fs_redirection="False" id="XenCenter" display_name="Citrix XenCenter" uninstall_display_name="" os_filter="" os_filter_min="" os_filter_max="" os_filter_lcid="" type="msi" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="True" selected_install="True" selected_uninstall="True" note="" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="True" show_progress_dialog="True" show_cab_dialog="True">
<embedfile sourcefilepath="XenCenter.l10n.msi" targetfilepath="XenCenter.msi" /> <embedfile sourcefilepath="XenCenter.l10n.msi" targetfilepath="XenCenter.msi" />
</component> </component>
</configuration> </configuration>