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)
{
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);
// 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;
if (f != null && f.ErrorDescription[0] == Failure.RBAC_PERMISSION_DENIED_FRIENDLY)
@ -83,6 +85,12 @@ namespace XenAdmin.Commands
actionProgress.Close();
});
if (action.Exception != null)
{
ShowLicensingFailureDialog(action.LicenseFailures, action.Exception.Message, Parent);
}
};
actionProgress.ShowDialog(Parent);
if (actionProgress.action.Succeeded)
@ -92,6 +100,11 @@ namespace XenAdmin.Commands
}
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);
@ -101,7 +114,7 @@ namespace XenAdmin.Commands
Program.Invoke(Program.MainWindow, () => new ThreeButtonDialog(
new ThreeButtonDialog.Details(SystemIcons.Error, licenseFailures[0].AlertText,
Messages.LICENSE_ERROR_TITLE),
ThreeButtonDialog.ButtonOK).ShowDialog(Program.MainWindow));
ThreeButtonDialog.ButtonOK).ShowDialog(parent));
}
else
{
@ -114,7 +127,7 @@ namespace XenAdmin.Commands
Program.Invoke(Program.MainWindow, () => new CommandErrorDialog(
Messages.LICENSE_ERROR_TITLE, exceptionMessage,
failureDic).ShowDialog(Program.MainWindow));
failureDic).ShowDialog(parent));
}
}
}

View File

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

View File

@ -42,6 +42,8 @@ namespace XenAdmin.Commands
internal class SelectionManager : SelectionBroadcaster
{
private SelectedItemCollection _selection = new SelectedItemCollection();
private SelectedItemCollection savedSelection = null;
private bool saved = false;
/// <summary>
/// Sets the main selection for XenCenter.
@ -49,20 +51,26 @@ namespace XenAdmin.Commands
/// <param name="selection">The selection.</param>
public void SetSelection(IEnumerable<SelectedItem> selection)
{
Program.AssertOnEventThread();
Util.ThrowIfParameterNull(selection, "selection");
int count = 0;
foreach (SelectedItem item in selection)
{
if (item == null)
{
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);
OnSelectionChanged(EventArgs.Empty);
}
}
/// <summary>
/// Sets the main selection for XenCenter.
@ -86,5 +94,24 @@ namespace XenAdmin.Commands
{
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;
_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;
_recommendation = recommendation;

View File

@ -60,6 +60,7 @@ namespace XenAdmin.ConsoleView
private readonly VNCView parentVNCView;
private readonly VM source;
private readonly Host targetHost;
private VM_guest_metrics guestMetrics = null;
private Form fullscreenForm = null;
private Form fullscreenHint = null;
private Size LastDesktopSize;
@ -75,6 +76,8 @@ namespace XenAdmin.ConsoleView
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)
{
Program.AssertOnEventThread();
@ -139,7 +142,7 @@ namespace XenAdmin.ConsoleView
this.vncScreen = new XSVNCScreen(source, new EventHandler(RDPorVNCResizeHandler), this, elevatedUsername, elevatedPassword);
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;
}
@ -250,6 +253,9 @@ namespace XenAdmin.ConsoleView
source.PropertyChanged -= new PropertyChangedEventHandler(Server_PropertyChanged);
source.Connection.Cache.DeregisterCollectionChanged<VM>(VM_CollectionChangedWithInvoke);
if (this.guestMetrics != null)
this.guestMetrics.PropertyChanged -= guestMetrics_PropertyChanged;
if (source.is_control_domain)
{
Host host = source.Connection.Resolve<Host>(source.resident_on);
@ -468,6 +474,21 @@ namespace XenAdmin.ConsoleView
//The CD device may have changed
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")
{
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)
{
if (e.PropertyName != "enabled" || source.is_control_domain)

View File

@ -86,7 +86,6 @@ namespace XenAdmin.ConsoleView
private Timer connectionPoller = null;
private VM sourceVM = null;
private bool sourceIsPV = false;
private readonly Object hostedConsolesLock = new Object();
private List<XenRef<Console>> hostedConsoles = null;
@ -119,6 +118,8 @@ namespace XenAdmin.ConsoleView
[DefaultValue(false)]
public bool UserWantsToSwitchProtocol { get; set; }
private bool hasRDP { get { return Source != null ? Source.HasRDP : false; } }
/// <summary>
/// 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
@ -286,7 +287,7 @@ namespace XenAdmin.ConsoleView
private void PollRDPPort(Object Sender)
{
if (!sourceIsPV && !Properties.Settings.Default.EnableRDPPolling)
if (hasRDP && !Properties.Settings.Default.EnableRDPPolling)
{
if (connectionPoller != null)
connectionPoller.Change(Timeout.Infinite, Timeout.Infinite);
@ -537,7 +538,7 @@ namespace XenAdmin.ConsoleView
if (RemoteConsole != null && RemoteConsole.ConsoleControl != null)
{
RemoteConsole.KeyHandler = this.KeyHandler;
RemoteConsole.SendScanCodes = !this.sourceIsPV;
RemoteConsole.SendScanCodes = hasRDP;
RemoteConsole.Scaling = Scaling;
RemoteConsole.DisplayBorder = this.displayFocusRectangle;
SetKeyboardAndMouseCapture(autoCaptureKeyboardAndMouse);
@ -654,8 +655,6 @@ namespace XenAdmin.ConsoleView
{
value.PropertyChanged += new PropertyChangedEventHandler(VM_PropertyChanged);
sourceIsPV = !value.IsHVM;
startPolling();
lock (hostedConsolesLock)
@ -692,10 +691,14 @@ namespace XenAdmin.ConsoleView
//Start the polling again
if (Source != null && !Source.is_control_domain)
{
connectionPoller =
new Timer(
sourceIsPV ? (TimerCallback)PollVNCPort : (TimerCallback)PollRDPPort,
null, RETRY_SLEEP_TIME, RDP_POLL_INTERVAL);
if (!Source.IsHVM)
{
connectionPoller = new Timer(PollVNCPort, 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
{
v.SendScanCodes = UseSource && !sourceIsPV;
v.SendScanCodes = UseSource && hasRDP;
v.SourceVM = sourceVM;
v.Console = console;
v.connect(stream, this.vncPassword);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -112,23 +112,23 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="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">
<value>True</value>
</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">
<value>Segoe UI, 9pt</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>14, 46</value>
</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">
<value>14, 3, 14, 5</value>
</data>
@ -145,7 +145,7 @@
<value>label2</value>
</data>
<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 name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
@ -178,7 +178,7 @@
<value>pictureBox1</value>
</data>
<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 name="&gt;&gt;pictureBox1.Parent" xml:space="preserve">
<value>$this</value>
@ -214,7 +214,7 @@
<value>VersionLabel</value>
</data>
<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 name="&gt;&gt;VersionLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
@ -232,7 +232,7 @@
<value>NoControl</value>
</data>
<data name="OkButton.Location" type="System.Drawing.Point, System.Drawing">
<value>336, 118</value>
<value>336, 95</value>
</data>
<data name="OkButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 12, 12</value>
@ -250,7 +250,7 @@
<value>OkButton</value>
</data>
<data name="&gt;&gt;OkButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;OkButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
@ -258,38 +258,8 @@
<data name="&gt;&gt;OkButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="labelMarathonBlurb.AutoSize" type="System.Boolean, mscorlib">
<value>True</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 name="linkLabel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="linkLabel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -298,7 +268,7 @@
<value>Segoe UI, 9pt</value>
</data>
<data name="linkLabel1.Location" type="System.Drawing.Point, System.Drawing">
<value>14, 100</value>
<value>14, 77</value>
</data>
<data name="linkLabel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>14, 11, 14, 0</value>
@ -316,7 +286,7 @@
<value>linkLabel1</value>
</data>
<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 name="&gt;&gt;linkLabel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
@ -330,6 +300,9 @@
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</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">
<value>1</value>
</data>
@ -343,7 +316,7 @@
<value>5</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>423, 153</value>
<value>423, 130</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
@ -352,7 +325,7 @@
<value>tableLayoutPanel1</value>
</data>
<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 name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
@ -361,9 +334,9 @@
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="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>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
@ -372,8 +345,11 @@
<data name="$this.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</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">
<value>423, 232</value>
<value>423, 208</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value>

View File

@ -112,20 +112,20 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="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">
<value>True</value>
</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">
<value>Segoe UI, 9pt</value>
</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">
<value>NoControl</value>
</data>
@ -148,7 +148,7 @@
<value>label2</value>
</data>
<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 name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>$this</value>
@ -181,7 +181,7 @@
<value>label1</value>
</data>
<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 name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>$this</value>
@ -205,19 +205,19 @@
<value>5, 5, 5, 5</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>352, 15</value>
<value>308, 15</value>
</data>
<data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<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 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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>$this</value>
@ -244,7 +244,9 @@
<value>5</value>
</data>
<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.
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>
</data>
<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 name="&gt;&gt;textBox1.Parent" xml:space="preserve">
<value>$this</value>
@ -359,7 +361,7 @@ Unless required by applicable law or agreed to in writing, software distributed
<value>button1</value>
</data>
<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 name="&gt;&gt;button1.Parent" xml:space="preserve">
<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">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">

View File

@ -119,12 +119,7 @@ namespace XenAdmin.Dialogs
private void checkableDataGridView_RowUpdated(object sender, CheckableDataGridViewRowEventArgs e)
{
LicenseCheckableDataGridView senderGrid = sender as LicenseCheckableDataGridView;
if (senderGrid == null)
return;
Program.Invoke(this, delegate
{
if (e.RowIndex >= senderGrid.Rows.Count || e.RowIndex < 0)
if (senderGrid == null || e.RowIndex >= senderGrid.Rows.Count || e.RowIndex < 0)
return;
LicenseDataGridViewRow lRow = senderGrid.Rows[e.RowIndex] as LicenseDataGridViewRow;
@ -133,11 +128,11 @@ namespace XenAdmin.Dialogs
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));
}
});
if (e.RefreshGrid)
senderGrid.SortAndRefresh();
}

View File

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

View File

@ -60,42 +60,6 @@ namespace XenAdmin.Dialogs.Wlb
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.wlbOptimizationModePage,
this.wlbAutomationPage,
this.wlbThresholdsPage,
this.wlbMetricWeightingPage,
this.wlbHostExclusionPage,
this.wlbAdvancedSettingsPage});
resources.ApplyResources(this.verticalTabs, "verticalTabs");
//
@ -167,6 +131,7 @@ namespace XenAdmin.Dialogs.Wlb
//
resources.ApplyResources(this, "$this");
this.Name = "WlbConfigurationDialog";
this.SizeChanged += new System.EventHandler(this.WlbConfigurationDialog_SizeChanged);
this.Controls.SetChildIndex(this.cancelButton, 0);
this.Controls.SetChildIndex(this.okButton, 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>
</data>
<data name="cancelButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left</value>
<value>Bottom, Right</value>
</data>
<data name="cancelButton.Location" type="System.Drawing.Point, System.Drawing">
<value>738, 725</value>
<value>738, 682</value>
</data>
<data name="&gt;&gt;cancelButton.Name" xml:space="preserve">
<value>cancelButton</value>
@ -349,10 +349,10 @@
<value>3</value>
</data>
<data name="okButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left</value>
<value>Bottom, Right</value>
</data>
<data name="okButton.Location" type="System.Drawing.Point, System.Drawing">
<value>647, 725</value>
<value>647, 682</value>
</data>
<data name="&gt;&gt;okButton.Name" xml:space="preserve">
<value>okButton</value>
@ -535,7 +535,7 @@
<value>96, 96</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>834, 755</value>
<value>834, 712</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value>

View File

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

View File

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

Binary file not shown.

View File

@ -434,16 +434,6 @@ namespace XenAdmin
{
if (meddlingAction == null)
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)
{
@ -1747,11 +1737,46 @@ namespace XenAdmin
}
else if (objectsView != null)
{
GroupingTag gt = SelectionManager.Selection.First as GroupingTag
?? SelectionManager.Selection.GroupAncestor;
//We are in Objects View
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);
}
else
{
SearchPage.Search = Search.SearchForNonVappGroup(rootNodeGrouping.Grouping, rootNodeGrouping.Parent, rootNodeGrouping.Group);
}
}
else if (foldersView != null)
{
SearchPage.Search = Search.SearchForFolderGroup(rootNodeGrouping.Grouping,
@ -1765,6 +1790,18 @@ namespace XenAdmin
}
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;
}
}
@ -2692,12 +2729,7 @@ namespace XenAdmin
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();
RequestRefreshTreeView();
}
loggedInLabel1.Connection = null;

View File

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

View File

@ -214,7 +214,12 @@ namespace XenAdmin.Plugins
{
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)

View File

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

View File

@ -1615,6 +1615,9 @@
<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">
<value>Fill</value>
</data>

View File

@ -1588,6 +1588,36 @@
<data name="&gt;&gt;auditTrailPanel.ZOrder" xml:space="preserve">
<value>22</value>
</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">
<value>Fill</value>
</data>
@ -1616,7 +1646,7 @@
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="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>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>

View File

@ -81,6 +81,10 @@ namespace XenAdmin.SettingsPanels
trackbarNetWritePriority.Value = GetSafeTrackbarValue(trackbarNetWritePriority, _poolConfiguration.VmNetworkWriteWeightHigh / TRACKBAR_INTERVAL);
trackbarDiskReadPriority.Value = GetSafeTrackbarValue(trackbarDiskReadPriority, _poolConfiguration.VmDiskReadWeightHigh / 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; ;
}

View File

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

View File

@ -225,6 +225,9 @@
<data name="&gt;&gt;label11.Name" xml:space="preserve">
<value>label11</value>
</data>
<data name="label11.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<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>
</data>
@ -258,6 +261,9 @@
<data name="&gt;&gt;label10.Name" xml:space="preserve">
<value>label10</value>
</data>
<data name="label10.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<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>
</data>
@ -565,7 +571,7 @@
<value>6, 46</value>
</data>
<data name="decentGroupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>578, 266</value>
<value>578, 196</value>
</data>
<data name="decentGroupBox1.TabIndex" type="System.Int32, mscorlib">
<value>32</value>

View File

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

View File

@ -34,6 +34,10 @@ namespace XenAdmin.SettingsPanels
this.decentGroupBox1 = new XenAdmin.Controls.DecentGroupBox();
this.label1DiskWrite = 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.labelNetworkRead = 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);
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; ;
}

View File

@ -322,13 +322,13 @@ namespace XenAdmin.TabPages
private System.Windows.Forms.ToolStripSplitButton toolStripSplitButtonDismiss;
private System.Windows.Forms.ToolStripMenuItem tsmiDismissAll;
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 ColumnSeverity;
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 System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
}
}

View File

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

View File

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

View File

@ -238,17 +238,17 @@ namespace XenAdmin.TabPages
private System.Windows.Forms.ToolStripMenuItem tsmiDismissAll;
private System.Windows.Forms.ToolStripMenuItem tsmiDismissSelected;
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.FilterLocationToolStripDropDownButton toolStripDdbFilterLocation;
private XenAdmin.Controls.FilterDatesToolStripDropDownButton toolStripDdbFilterDates;
private System.Windows.Forms.ToolStripLabel toolStripLabelFiltersOnOff;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
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>
</data>
<data name="toolStripDdbFilterLocation.Size" type="System.Drawing.Size, System.Drawing">
<value>111, 23</value>
<value>97, 23</value>
</data>
<data name="toolStripDdbFilterLocation.Text" xml:space="preserve">
<value>Filter by Lo&amp;cation</value>
<value>Filter by S&amp;erver</value>
</data>
<data name="toolStripDdbFilterDates.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
@ -290,7 +290,7 @@
<value>True</value>
</metadata>
<data name="columnLocation.HeaderText" xml:space="preserve">
<value>Location</value>
<value>Server / Pool</value>
</data>
<data name="columnLocation.MinimumWidth" type="System.Int32, mscorlib">
<value>30</value>

View File

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

View File

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

View File

@ -34,6 +34,7 @@ using XenAdmin.Core;
using XenAdmin.TabPages;
using System.Windows.Forms;
using XenAdmin.Wizards;
using XenAdmin.Wizards.NewNetworkWizard_Pages;
namespace XenAdminTests
{
@ -56,5 +57,26 @@ namespace XenAdminTests
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,
w =>
{
w.SSPNButton.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 _licenseServerPort;
public List<LicenseFailure> LicenseFailures { get; private set; }
protected readonly Action<List<LicenseFailure>, string> DoOnLicensingFailure;
/// <summary>
@ -65,6 +67,7 @@ namespace XenAdmin.Actions
Action<List<LicenseFailure>, string> DoOnLicensingFailure)
: base(null, Messages.LICENSE_UPDATING_LICENSES)
{
LicenseFailures = new List<LicenseFailure>();
Util.ThrowIfEnumerableParameterNullOrEmpty(xos, "xenobjects");
_edition = edition;
@ -90,8 +93,6 @@ namespace XenAdmin.Actions
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
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)
pool.Connection.Cache.Hosts.ToList().ForEach(h => SetLicenseServer(h, previousLicenseServerAddress, previousLicenseServerPort));
@ -238,12 +239,12 @@ namespace XenAdmin.Actions
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)
DoOnLicensingFailure(licenseFailures, exceptionText);
DoOnLicensingFailure(LicenseFailures, 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
// 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))
{
string opaqref = Secret.get_by_uuid(Session, secretuuid);
Secret.destroy(Session, opaqref);
}
}
catch { }
}
log.Debug("Checking that SR.create() actually succeeded");
foreach (XenRef<PBD> pbdRef in XenAPI.SR.get_PBDs(Session, sr.opaque_ref))

View File

@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34209
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@ -13313,7 +13313,7 @@ namespace XenAdmin {
}
/// <summary>
/// Looks up a localized string similar to fetch earlier data.
/// Looks up a localized string similar to &amp;Next Section.
/// </summary>
public static string FETCH_EARLIER_DATA {
get {
@ -26900,7 +26900,7 @@ namespace XenAdmin {
}
/// <summary>
/// Looks up a localized string similar to run report.
/// Looks up a localized string similar to &amp;Run Report.
/// </summary>
public static string RUN_REPORT {
get {
@ -27143,7 +27143,7 @@ namespace XenAdmin {
}
/// <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>
public static string SEARCH_TITLE_HOST {
get {
@ -27161,7 +27161,7 @@ namespace XenAdmin {
}
/// <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>
public static string SEARCH_TITLE_POOL {
get {
@ -35470,6 +35470,5 @@ namespace XenAdmin {
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>
</data>
<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 name="SEARCH_TITLE_OVERVIEW" xml:space="preserve">
<value>All Servers, VMs, Custom Templates &amp; Remote SRs</value>
</data>
<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 name="SECRET_ACCESS_KEY_LABLE" xml:space="preserve">
<value>&amp;Secret access key:</value>

View File

@ -44,9 +44,6 @@ namespace XenAPI
string Name { get; }
bool InError { get; set; }
IXenConnection Connection { 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>
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);
if (Helpers.MidnightRideOrGreater(connection))
{
if (!connection.IsConnected)
return false;
if (connection.Session.IsLocalSuperuser)
return true;

View File

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

View File

@ -57,7 +57,7 @@ namespace XenAPI
// or different XenServer versions.
private const int DEFAULT_NUM_VCPUS_ALLOWED = 16;
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 int DEFAULT_CORES_PER_SOCKET = 1;
private SnapshotsView _snapshotView = SnapshotsView.None;
@ -419,6 +419,51 @@ namespace XenAPI
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)
{
Dictionary<string, string> new_other_config =

View File

@ -100,7 +100,6 @@ namespace XenAPI
IXenObject result = (IXenObject)MemberwiseClone();
result.ClearEventListeners();
result.Locked = false;
result.InError = false;
return result;
}
@ -264,17 +263,9 @@ namespace XenAPI
return s != null && int.TryParse(s, out result) ? result : def;
}
private bool in_error;
public virtual string Name
{
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)
{
int i = -DefaultSearch.CompareTo(other.DefaultSearch);
int i = DefaultSearch.CompareTo(other.DefaultSearch);
if (i == 0)
return Name.CompareTo(other.Name);

View File

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

View File

@ -34,11 +34,11 @@
<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>
<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" />
<embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" />
</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="" />
</component>
</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>
<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 -->
<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" />
<embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" />
</component>
<!-- 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" />
<embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" />
</component>
<!-- 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" />
<embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" />
</component>
<!-- 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" />
<embedfile sourcefilepath="dotNetFx40_Full_setup.exe" targetfilepath="" />
</component>
<!-- 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" />
</component>
</configuration>