Merge remote-tracking branch 'remotes/origin/upstream' into development

This commit is contained in:
Alexander Schulz 2020-01-26 17:50:50 +01:00
commit 1e38cf9b30
28 changed files with 921 additions and 648 deletions

View File

@ -78,9 +78,9 @@ namespace XenAdmin.Controls
this.chevron.Image = global::XenAdmin.Properties.Resources.PDChevronUp;
this.chevron.Name = "chevron";
this.chevron.TabStop = false;
this.chevron.MouseLeave += new System.EventHandler(this.chevron_MouseLeave);
this.chevron.Click += new System.EventHandler(this.chevron_Click);
this.chevron.MouseEnter += new System.EventHandler(this.chevron_MouseEnter);
this.chevron.MouseLeave += new System.EventHandler(this.chevron_MouseLeave);
//
// contextMenuStrip1
//
@ -97,7 +97,6 @@ namespace XenAdmin.Controls
//
// dataGridViewEx1
//
resources.ApplyResources(this.dataGridViewEx1, "dataGridViewEx1");
this.dataGridViewEx1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
this.dataGridViewEx1.BackgroundColor = System.Drawing.SystemColors.Window;
this.dataGridViewEx1.BorderStyle = System.Windows.Forms.BorderStyle.None;
@ -115,6 +114,7 @@ namespace XenAdmin.Controls
dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dataGridViewEx1.DefaultCellStyle = dataGridViewCellStyle3;
resources.ApplyResources(this.dataGridViewEx1, "dataGridViewEx1");
this.dataGridViewEx1.GridColor = System.Drawing.SystemColors.Control;
this.dataGridViewEx1.HideSelection = true;
this.dataGridViewEx1.Name = "dataGridViewEx1";
@ -122,14 +122,14 @@ namespace XenAdmin.Controls
dataGridViewCellStyle4.Padding = new System.Windows.Forms.Padding(5);
this.dataGridViewEx1.RowsDefaultCellStyle = dataGridViewCellStyle4;
this.dataGridViewEx1.ShowCellToolTips = false;
this.dataGridViewEx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.dataGridViewEx1_MouseClick);
this.dataGridViewEx1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.dataGridViewEx1_KeyPress);
this.dataGridViewEx1.SelectionChanged += new System.EventHandler(this.dataGridViewEx1_SelectionChanged);
this.dataGridViewEx1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewEx1_CellContentClick);
this.dataGridViewEx1.SelectionChanged += new System.EventHandler(this.dataGridViewEx1_SelectionChanged);
this.dataGridViewEx1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.dataGridViewEx1_KeyPress);
this.dataGridViewEx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.dataGridViewEx1_MouseClick);
//
// KeyColumn
//
this.KeyColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
this.KeyColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.TopLeft;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.KeyColumn.DefaultCellStyle = dataGridViewCellStyle1;
@ -157,8 +157,8 @@ namespace XenAdmin.Controls
this.Controls.Add(this.dataGridViewEx1);
this.Controls.Add(this.panel1);
this.DoubleBuffered = true;
this.Name = "PDSection";
resources.ApplyResources(this, "$this");
this.Name = "PDSection";
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.chevron)).EndInit();
@ -176,8 +176,8 @@ namespace XenAdmin.Controls
private System.Windows.Forms.PictureBox chevron;
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem;
private System.Windows.Forms.DataGridViewTextBoxColumn KeyColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn ValueColumn;
private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem;
}
}

View File

@ -492,7 +492,6 @@ namespace XenAdmin.Controls
internal void fixFirstColumnWidth(int width)
{
dataGridViewEx1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
dataGridViewEx1.Columns[0].Width = width;
}

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="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Left</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="label1.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 12pt</value>
</data>
@ -148,7 +148,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>panel1</value>
@ -166,13 +166,13 @@
<value>2, 24</value>
</data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
<value>1</value>
</data>
<data name="&gt;&gt;groupBox1.Name" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;groupBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;groupBox1.Parent" xml:space="preserve">
<value>panel1</value>
@ -202,7 +202,7 @@
<value>chevron</value>
</data>
<data name="&gt;&gt;chevron.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;chevron.Parent" xml:space="preserve">
<value>panel1</value>
@ -223,13 +223,13 @@
<value>798, 32</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
<value>0</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>$this</value>
@ -237,7 +237,7 @@
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="copyToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
@ -253,25 +253,28 @@
<value>contextMenuStrip1</value>
</data>
<data name="&gt;&gt;contextMenuStrip1.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="dataGridViewEx1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<metadata name="KeyColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="KeyColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="KeyColumn.HeaderText" xml:space="preserve">
<value>Column1</value>
<value>Key</value>
</data>
<data name="KeyColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>150</value>
</data>
<data name="KeyColumn.Width" type="System.Int32, mscorlib">
<value>5</value>
<value>150</value>
</data>
<metadata name="ValueColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="ValueColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="ValueColumn.HeaderText" xml:space="preserve">
<value>Column1</value>
<value>Value</value>
</data>
<data name="dataGridViewEx1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="dataGridViewEx1.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 33</value>
@ -283,7 +286,7 @@
<value>798, 116</value>
</data>
<data name="dataGridViewEx1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
<value>1</value>
</data>
<data name="&gt;&gt;dataGridViewEx1.Name" xml:space="preserve">
<value>dataGridViewEx1</value>
@ -297,9 +300,12 @@
<data name="&gt;&gt;dataGridViewEx1.ZOrder" xml:space="preserve">
<value>1</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.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>900, 9999999</value>
</data>
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
@ -310,24 +316,24 @@
<value>copyToolStripMenuItem</value>
</data>
<data name="&gt;&gt;copyToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;KeyColumn.Name" xml:space="preserve">
<value>KeyColumn</value>
</data>
<data name="&gt;&gt;KeyColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ValueColumn.Name" xml:space="preserve">
<value>ValueColumn</value>
</data>
<data name="&gt;&gt;ValueColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PDSection</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -33,9 +33,6 @@ namespace XenAdmin.TabPages
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GeneralTabPage));
this.buttonProperties = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.panel3 = new System.Windows.Forms.Panel();
this.buttonPanel = new System.Windows.Forms.FlowLayoutPanel();
this.buttonViewConsole = new System.Windows.Forms.Button();
this.buttonViewLog = new System.Windows.Forms.Button();
this.linkLabelExpand = new System.Windows.Forms.LinkLabel();
@ -53,8 +50,6 @@ namespace XenAdmin.TabPages
this.pdSectionMultipathBoot = new XenAdmin.Controls.PDSection();
this.panelStorageLink = new System.Windows.Forms.Panel();
this.pdStorageLink = new XenAdmin.Controls.PDSection();
this.panelUpdates = new System.Windows.Forms.Panel();
this.pdSectionUpdates = new XenAdmin.Controls.PDSection();
this.panelMemoryAndVCPUs = new System.Windows.Forms.Panel();
this.pdSectionVCPUs = new XenAdmin.Controls.PDSection();
this.panelMultipathing = new System.Windows.Forms.Panel();
@ -67,24 +62,24 @@ namespace XenAdmin.TabPages
this.pdSectionBootOptions = new XenAdmin.Controls.PDSection();
this.panelCPU = new System.Windows.Forms.Panel();
this.pdSectionCPU = new XenAdmin.Controls.PDSection();
this.panelLicense = new System.Windows.Forms.Panel();
this.pdSectionLicense = new XenAdmin.Controls.PDSection();
this.panelVersion = new System.Windows.Forms.Panel();
this.pdSectionVersion = new XenAdmin.Controls.PDSection();
this.panelMemory = new System.Windows.Forms.Panel();
this.pdSectionMemory = new XenAdmin.Controls.PDSection();
this.panelManagementInterfaces = new System.Windows.Forms.Panel();
this.pdSectionManagementInterfaces = new XenAdmin.Controls.PDSection();
this.panelUpdates = new System.Windows.Forms.Panel();
this.pdSectionUpdates = new XenAdmin.Controls.PDSection();
this.panelVersion = new System.Windows.Forms.Panel();
this.pdSectionVersion = new XenAdmin.Controls.PDSection();
this.panelLicense = new System.Windows.Forms.Panel();
this.pdSectionLicense = new XenAdmin.Controls.PDSection();
this.panelCustomFields = new System.Windows.Forms.Panel();
this.pdSectionCustomFields = new XenAdmin.Controls.PDSection();
this.panelGeneral = new System.Windows.Forms.Panel();
this.pdSectionGeneral = new XenAdmin.Controls.PDSection();
this.tableLayoutPanelButtons = new System.Windows.Forms.TableLayoutPanel();
this.panelBios = new System.Windows.Forms.Panel();
this.pdSectionBios = new XenAdmin.Controls.PDSection();
this.pageContainerPanel.SuspendLayout();
this.panel1.SuspendLayout();
this.panel3.SuspendLayout();
this.buttonPanel.SuspendLayout();
this.panel2.SuspendLayout();
this.panelReadCaching.SuspendLayout();
this.panelDockerInfo.SuspendLayout();
@ -92,26 +87,27 @@ namespace XenAdmin.TabPages
this.panelStorageLinkSystemCapabilities.SuspendLayout();
this.panelMultipathBoot.SuspendLayout();
this.panelStorageLink.SuspendLayout();
this.panelUpdates.SuspendLayout();
this.panelMemoryAndVCPUs.SuspendLayout();
this.panelMultipathing.SuspendLayout();
this.panelStatus.SuspendLayout();
this.panelHighAvailability.SuspendLayout();
this.panelBootOptions.SuspendLayout();
this.panelCPU.SuspendLayout();
this.panelLicense.SuspendLayout();
this.panelVersion.SuspendLayout();
this.panelMemory.SuspendLayout();
this.panelManagementInterfaces.SuspendLayout();
this.panelUpdates.SuspendLayout();
this.panelVersion.SuspendLayout();
this.panelLicense.SuspendLayout();
this.panelCustomFields.SuspendLayout();
this.panelGeneral.SuspendLayout();
this.tableLayoutPanelButtons.SuspendLayout()
this.panelBios.SuspendLayout();
this.SuspendLayout();
//
// pageContainerPanel
//
this.pageContainerPanel.Controls.Add(this.panel2);
this.pageContainerPanel.Controls.Add(this.panel1);
this.pageContainerPanel.Controls.Add(this.tableLayoutPanelButtons);
resources.ApplyResources(this.pageContainerPanel, "pageContainerPanel");
//
// buttonProperties
@ -123,28 +119,6 @@ namespace XenAdmin.TabPages
//
// panel1
//
this.panel1.Controls.Add(this.panel3);
resources.ApplyResources(this.panel1, "panel1");
this.panel1.Name = "panel1";
//
// panel3
//
this.panel3.Controls.Add(this.buttonPanel);
this.panel3.Controls.Add(this.linkLabelExpand);
this.panel3.Controls.Add(this.linkLabelCollapse);
resources.ApplyResources(this.panel3, "panel3");
this.panel3.Name = "panel3";
//
// buttonPanel
//
this.buttonPanel.Controls.Add(this.buttonProperties);
this.buttonPanel.Controls.Add(this.buttonViewConsole);
this.buttonPanel.Controls.Add(this.buttonViewLog);
resources.ApplyResources(this.buttonPanel, "buttonPanel");
this.buttonPanel.Name = "buttonPanel";
//
// buttonViewConsole
//
resources.ApplyResources(this.buttonViewConsole, "buttonViewConsole");
this.buttonViewConsole.Name = "buttonViewConsole";
this.buttonViewConsole.UseVisualStyleBackColor = true;
@ -180,18 +154,18 @@ namespace XenAdmin.TabPages
this.panel2.Controls.Add(this.panelStorageLinkSystemCapabilities);
this.panel2.Controls.Add(this.panelMultipathBoot);
this.panel2.Controls.Add(this.panelStorageLink);
this.panel2.Controls.Add(this.panelUpdates);
this.panel2.Controls.Add(this.panelMemoryAndVCPUs);
this.panel2.Controls.Add(this.panelMultipathing);
this.panel2.Controls.Add(this.panelStatus);
this.panel2.Controls.Add(this.panelHighAvailability);
this.panel2.Controls.Add(this.panelBootOptions);
this.panel2.Controls.Add(this.panelCPU);
this.panel2.Controls.Add(this.panelLicense);
this.panel2.Controls.Add(this.panelVersion);
this.panel2.Controls.Add(this.panelMemory);
this.panel2.Controls.Add(this.panelManagementInterfaces);
this.panel2.Controls.Add(this.panelBios);
this.panel2.Controls.Add(this.panelUpdates);
this.panel2.Controls.Add(this.panelVersion);
this.panel2.Controls.Add(this.panelLicense);
this.panel2.Controls.Add(this.panelCustomFields);
this.panel2.Controls.Add(this.panelGeneral);
this.panel2.Name = "panel2";
@ -278,20 +252,6 @@ namespace XenAdmin.TabPages
//
// panelUpdates
//
resources.ApplyResources(this.panelUpdates, "panelUpdates");
this.panelUpdates.Controls.Add(this.pdSectionUpdates);
this.panelUpdates.Name = "panelUpdates";
//
// pdSectionUpdates
//
this.pdSectionUpdates.BackColor = System.Drawing.Color.Gainsboro;
resources.ApplyResources(this.pdSectionUpdates, "pdSectionUpdates");
this.pdSectionUpdates.Name = "pdSectionUpdates";
this.pdSectionUpdates.ShowCellToolTips = false;
this.pdSectionUpdates.ExpandedChanged += new System.Action<XenAdmin.Controls.PDSection>(this.pdSection_ExpandedChanged);
//
// panelMemoryAndVCPUs
//
resources.ApplyResources(this.panelMemoryAndVCPUs, "panelMemoryAndVCPUs");
this.panelMemoryAndVCPUs.Controls.Add(this.pdSectionVCPUs);
this.panelMemoryAndVCPUs.Name = "panelMemoryAndVCPUs";
@ -376,34 +336,6 @@ namespace XenAdmin.TabPages
//
// panelLicense
//
resources.ApplyResources(this.panelLicense, "panelLicense");
this.panelLicense.Controls.Add(this.pdSectionLicense);
this.panelLicense.Name = "panelLicense";
//
// pdSectionLicense
//
this.pdSectionLicense.BackColor = System.Drawing.Color.Gainsboro;
resources.ApplyResources(this.pdSectionLicense, "pdSectionLicense");
this.pdSectionLicense.Name = "pdSectionLicense";
this.pdSectionLicense.ShowCellToolTips = false;
this.pdSectionLicense.ExpandedChanged += new System.Action<XenAdmin.Controls.PDSection>(this.pdSection_ExpandedChanged);
//
// panelVersion
//
resources.ApplyResources(this.panelVersion, "panelVersion");
this.panelVersion.Controls.Add(this.pdSectionVersion);
this.panelVersion.Name = "panelVersion";
//
// pdSectionVersion
//
this.pdSectionVersion.BackColor = System.Drawing.Color.Gainsboro;
resources.ApplyResources(this.pdSectionVersion, "pdSectionVersion");
this.pdSectionVersion.Name = "pdSectionVersion";
this.pdSectionVersion.ShowCellToolTips = false;
this.pdSectionVersion.ExpandedChanged += new System.Action<XenAdmin.Controls.PDSection>(this.pdSection_ExpandedChanged);
//
// panelMemory
//
resources.ApplyResources(this.panelMemory, "panelMemory");
this.panelMemory.Controls.Add(this.pdSectionMemory);
this.panelMemory.Name = "panelMemory";
@ -432,6 +364,48 @@ namespace XenAdmin.TabPages
//
// panelCustomFields
//
resources.ApplyResources(this.panelUpdates, "panelUpdates");
this.panelUpdates.Controls.Add(this.pdSectionUpdates);
this.panelUpdates.Name = "panelUpdates";
//
// pdSectionUpdates
//
this.pdSectionUpdates.BackColor = System.Drawing.Color.Gainsboro;
resources.ApplyResources(this.pdSectionUpdates, "pdSectionUpdates");
this.pdSectionUpdates.Name = "pdSectionUpdates";
this.pdSectionUpdates.ShowCellToolTips = false;
this.pdSectionUpdates.ExpandedChanged += new System.Action<XenAdmin.Controls.PDSection>(this.pdSection_ExpandedChanged);
//
// panelVersion
//
resources.ApplyResources(this.panelVersion, "panelVersion");
this.panelVersion.Controls.Add(this.pdSectionVersion);
this.panelVersion.Name = "panelVersion";
//
// pdSectionVersion
//
this.pdSectionVersion.BackColor = System.Drawing.Color.Gainsboro;
resources.ApplyResources(this.pdSectionVersion, "pdSectionVersion");
this.pdSectionVersion.Name = "pdSectionVersion";
this.pdSectionVersion.ShowCellToolTips = false;
this.pdSectionVersion.ExpandedChanged += new System.Action<XenAdmin.Controls.PDSection>(this.pdSection_ExpandedChanged);
//
// panelLicense
//
resources.ApplyResources(this.panelLicense, "panelLicense");
this.panelLicense.Controls.Add(this.pdSectionLicense);
this.panelLicense.Name = "panelLicense";
//
// pdSectionLicense
//
this.pdSectionLicense.BackColor = System.Drawing.Color.Gainsboro;
resources.ApplyResources(this.pdSectionLicense, "pdSectionLicense");
this.pdSectionLicense.Name = "pdSectionLicense";
this.pdSectionLicense.ShowCellToolTips = false;
this.pdSectionLicense.ExpandedChanged += new System.Action<XenAdmin.Controls.PDSection>(this.pdSection_ExpandedChanged);
//
// panelCustomFields
//
resources.ApplyResources(this.panelCustomFields, "panelCustomFields");
this.panelCustomFields.Controls.Add(this.pdSectionCustomFields);
this.panelCustomFields.Name = "panelCustomFields";
@ -458,6 +432,16 @@ namespace XenAdmin.TabPages
this.pdSectionGeneral.ShowCellToolTips = false;
this.pdSectionGeneral.ExpandedChanged += new System.Action<XenAdmin.Controls.PDSection>(this.pdSection_ExpandedChanged);
//
// tableLayoutPanelButtons
//
resources.ApplyResources(this.tableLayoutPanelButtons, "tableLayoutPanelButtons");
this.tableLayoutPanelButtons.Controls.Add(this.buttonViewLog, 2, 0);
this.tableLayoutPanelButtons.Controls.Add(this.buttonViewConsole, 1, 0);
this.tableLayoutPanelButtons.Controls.Add(this.buttonProperties, 0, 0);
this.tableLayoutPanelButtons.Controls.Add(this.linkLabelCollapse, 5, 0);
this.tableLayoutPanelButtons.Controls.Add(this.linkLabelExpand, 4, 0);
this.tableLayoutPanelButtons.Name = "tableLayoutPanelButtons";
//
// panelBios
//
resources.ApplyResources(this.panelBios, "panelBios");
@ -478,10 +462,7 @@ namespace XenAdmin.TabPages
this.DoubleBuffered = true;
this.Name = "GeneralTabPage";
this.pageContainerPanel.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.panel3.ResumeLayout(false);
this.panel3.PerformLayout();
this.buttonPanel.ResumeLayout(false);
this.pageContainerPanel.PerformLayout();
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.panelReadCaching.ResumeLayout(false);
@ -490,20 +471,22 @@ namespace XenAdmin.TabPages
this.panelStorageLinkSystemCapabilities.ResumeLayout(false);
this.panelMultipathBoot.ResumeLayout(false);
this.panelStorageLink.ResumeLayout(false);
this.panelUpdates.ResumeLayout(false);
this.panelMemoryAndVCPUs.ResumeLayout(false);
this.panelMultipathing.ResumeLayout(false);
this.panelStatus.ResumeLayout(false);
this.panelHighAvailability.ResumeLayout(false);
this.panelBootOptions.ResumeLayout(false);
this.panelCPU.ResumeLayout(false);
this.panelLicense.ResumeLayout(false);
this.panelVersion.ResumeLayout(false);
this.panelMemory.ResumeLayout(false);
this.panelManagementInterfaces.ResumeLayout(false);
this.panelUpdates.ResumeLayout(false);
this.panelVersion.ResumeLayout(false);
this.panelLicense.ResumeLayout(false);
this.panelCustomFields.ResumeLayout(false);
this.panelGeneral.ResumeLayout(false);
this.panelBios.ResumeLayout(false);
this.tableLayoutPanelButtons.ResumeLayout(false);
this.tableLayoutPanelButtons.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
@ -512,7 +495,6 @@ namespace XenAdmin.TabPages
#endregion
private System.Windows.Forms.Button buttonProperties;
private System.Windows.Forms.Panel panel1;
private XenAdmin.Controls.PanelNoFocusScroll panel2;
private System.Windows.Forms.Panel panelGeneral;
private XenAdmin.Controls.PDSection pdSectionGeneral;
@ -542,7 +524,6 @@ namespace XenAdmin.TabPages
private XenAdmin.Controls.PDSection pdSectionUpdates;
private System.Windows.Forms.LinkLabel linkLabelExpand;
private System.Windows.Forms.LinkLabel linkLabelCollapse;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.Panel panelStorageLink;
private XenAdmin.Controls.PDSection pdStorageLink;
private System.Windows.Forms.Panel panelMultipathBoot;
@ -557,7 +538,7 @@ namespace XenAdmin.TabPages
private Controls.PDSection pdSectionReadCaching;
private System.Windows.Forms.Button buttonViewConsole;
private System.Windows.Forms.Button buttonViewLog;
private System.Windows.Forms.FlowLayoutPanel buttonPanel;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanelButtons;
private System.Windows.Forms.Panel panelBios;
private Controls.PDSection pdSectionBios;
}

View File

@ -87,8 +87,6 @@ namespace XenAdmin.TabPages
if (s == null)
continue;
sections.Add(s);
s.MaximumSize = new Size(900, 9999999);
s.fixFirstColumnWidth(150);
s.contentChangedSelection += s_contentChangedSelection;
s.contentReceivedFocus += s_contentReceivedFocus;
}
@ -1769,7 +1767,7 @@ namespace XenAdmin.TabPages
output.Sort(StringUtility.NaturalCompare);
return String.Join(", ", output.ToArray());
return string.Join(Environment.NewLine, output);
}
private string poolUpdateString(Predicate<Pool_update> predicate)
@ -1784,7 +1782,7 @@ namespace XenAdmin.TabPages
output.Sort(StringUtility.NaturalCompare);
return String.Join(", ", output.ToArray());
return string.Join(Environment.NewLine, output);
}
#endregion

File diff suppressed because it is too large Load Diff

View File

@ -309,8 +309,7 @@ namespace XenAdmin.Wizards.DRWizards
}
foreach (var vm in poolMetadata.Vms.Values)
{
if (vm.appliance.opaque_ref != null && vm.appliance.opaque_ref.StartsWith("OpaqueRef:") &&
vm.appliance.opaque_ref != "OpaqueRef:NULL")
if (vm.IsAssignedToVapp())
continue;
SummaryReport.AddLine(vm.Name(), 2);
}

View File

@ -183,7 +183,7 @@ namespace XenAdmin.Wizards.DRWizards
{
foreach (var vmItem in poolMetadata.Vms)
{
if (vmItem.Value.appliance.opaque_ref != null && vmItem.Value.appliance.opaque_ref.StartsWith("OpaqueRef:") && vmItem.Value.appliance.opaque_ref != "OpaqueRef:NULL")
if (vmItem.Value.IsAssignedToVapp())
{
//VM included in an appliance
continue;

View File

@ -350,8 +350,7 @@ namespace XenAdmin.Wizards.DRWizards
foreach (VM vm in poolMetadata.Vms.Values)
{
if (vm.appliance.opaque_ref != null && vm.appliance.opaque_ref.StartsWith("OpaqueRef:") &&
vm.appliance.opaque_ref != "OpaqueRef:NULL")
if (vm.IsAssignedToVapp())
{
//VM included in an appliance
continue;
@ -381,8 +380,7 @@ namespace XenAdmin.Wizards.DRWizards
foreach (VM vm in poolMetadata.Vms.Values)
{
if (vm.appliance.opaque_ref != null && vm.appliance.opaque_ref.StartsWith("OpaqueRef:") &&
vm.appliance.opaque_ref != "OpaqueRef:NULL")
if (vm.IsAssignedToVapp())
{
//VM included in an appliance
continue;
@ -406,7 +404,7 @@ namespace XenAdmin.Wizards.DRWizards
foreach (VM vm in poolMetadata.Vms.Values)
{
if (vm.appliance.opaque_ref != null && vm.appliance.opaque_ref.StartsWith("OpaqueRef:") && vm.appliance.opaque_ref != "OpaqueRef:NULL")
if (vm.IsAssignedToVapp())
{
//VM included in an appliance
continue;

View File

@ -220,7 +220,7 @@ namespace XenAdmin.Wizards.DRWizards
foreach (var vm in poolMetadata.Vms.Values)
{
if (vm.appliance.opaque_ref != null && vm.appliance.opaque_ref.StartsWith("OpaqueRef:") && vm.appliance.opaque_ref != "OpaqueRef:NULL")
if (vm.IsAssignedToVapp())
{
//VM included in an appliance
continue;

View File

@ -72,6 +72,7 @@ namespace XenAdmin.Wizards.PatchingWizard
private List<HostUpdateMapping> patchMappings = new List<HostUpdateMapping>();
protected List<string> hostsThatWillRequireReboot = new List<string>();
protected Dictionary<string, List<string>> livePatchAttempts = new Dictionary<string, List<string>>();
public Dictionary<XenServerPatch, string> AllDownloadedPatches = new Dictionary<XenServerPatch, string>();
public AutomatedUpdatesBasePage()
@ -148,8 +149,10 @@ namespace XenAdmin.Wizards.PatchingWizard
protected abstract string BlurbText();
protected abstract string SuccessMessageOnCompletion(bool multiplePools);
protected abstract string FailureMessageOnCompletion(bool multiplePools);
protected abstract string WarningMessageOnCompletion(bool multiplePools);
protected abstract string SuccessMessagePerPool(Pool pool);
protected abstract string FailureMessagePerPool(bool multipleErrors);
protected abstract string WarningMessagePerPool(Pool pool);
protected abstract string UserCancellationMessage();
protected abstract string ReconsiderCancellationMessage();
@ -319,7 +322,7 @@ namespace XenAdmin.Wizards.PatchingWizard
}
else if (!bgw.IsBusy)
{
sb.AppendIndented(SuccessMessagePerPool(bgw.Pool)).AppendLine();
sb.AppendIndented(WarningMessagePerPool(bgw.Pool) ?? SuccessMessagePerPool(bgw.Pool)).AppendLine();
}
sb.AppendLine();
@ -384,13 +387,7 @@ namespace XenAdmin.Wizards.PatchingWizard
var restartHostPlanAction = (RestartHostPlanAction)hp.DelayedPlanActions.FirstOrDefault(a => a is RestartHostPlanAction);
if (restartHostPlanAction != null)
{
if (restartHostPlanAction.SkipRestartHost(host))
{
log.Debug("Did not find patches requiring reboot (live patching succeeded)."
+ " Skipping scheduled restart.");
hp.DelayedPlanActions.RemoveAll(a => a is RestartHostPlanAction);
}
else
if (!restartHostPlanAction.SkipRestartHost(host))
{
hp.DelayedPlanActions.RemoveAll(a => a is RestartAgentPlanAction);
}
@ -507,6 +504,12 @@ namespace XenAdmin.Wizards.PatchingWizard
pictureBox1.Image = Images.StaticImages.cancelled_action_16;
buttonRetry.Visible = buttonSkip.Visible = false;
}
else if (backgroundWorkers.Any(w => WarningMessagePerPool(w.Pool) != null))
{
labelError.Text = WarningMessageOnCompletion(backgroundWorkers.Count > 1);
pictureBox1.Image = Images.StaticImages._000_Alert2_h32bit_16;
buttonRetry.Visible = buttonSkip.Visible = false;
}
else
{
labelError.Text = SuccessMessageOnCompletion(backgroundWorkers.Count > 1);
@ -589,6 +592,14 @@ namespace XenAdmin.Wizards.PatchingWizard
foreach (var patch in patchSequence)
{
// if the patchSequence contains a patch that requires a host reboot (excluding livepatches), then add the Evacuate action as the first action in the sequence
if (patch.after_apply_guidance == after_apply_guidance.restartHost
&& !patch.ContainsLivepatch
&& (planActionsPerHost.Count == 0 || !(planActionsPerHost[0] is EvacuateHostPlanAction)))
{
planActionsPerHost.Insert(0, new EvacuateHostPlanAction(host));
}
if (!uploadedPatches.Contains(patch))
{
planActionsPerHost.Add(new DownloadPatchPlanAction(host.Connection, patch, AllDownloadedPatches, patchFromDisk));
@ -596,7 +607,7 @@ namespace XenAdmin.Wizards.PatchingWizard
uploadedPatches.Add(patch);
}
planActionsPerHost.Add(new PatchPrecheckOnHostPlanAction(host.Connection, patch, host, patchMappings, hostsThatWillRequireReboot));
planActionsPerHost.Add(new PatchPrecheckOnHostPlanAction(host.Connection, patch, host, patchMappings, hostsThatWillRequireReboot, livePatchAttempts));
planActionsPerHost.Add(new ApplyXenServerPatchPlanAction(host, patch, patchMappings));
var action = GetAfterApplyGuidanceAction(host, patch.after_apply_guidance);
@ -663,5 +674,43 @@ namespace XenAdmin.Wizards.PatchingWizard
return null;
}
}
protected string LivePatchWarningMessagePerPool(Pool pool)
{
var sb = new StringBuilder();
var poolHosts = pool.Connection.Cache.Hosts.ToList();
var livePatchingFailedHosts = new List<Host>();
foreach (var host in poolHosts)
{
if (livePatchAttempts.ContainsKey(host.uuid) && host.updates_requiring_reboot != null && host.updates_requiring_reboot.Count > 0)
{
foreach (var updateUuid in livePatchAttempts[host.uuid])
{
if (host.updates_requiring_reboot.Select(uRef => host.Connection.Resolve(uRef)).Any(u => u != null && u.uuid.Equals(updateUuid)))
{
livePatchingFailedHosts.Add(host);
break;
}
}
}
}
if (livePatchingFailedHosts.Count == 1)
{
sb.AppendFormat(Messages.LIVE_PATCHING_FAILED_ONE_HOST, livePatchingFailedHosts[0].Name()).AppendLine();
return sb.ToString();
}
if (livePatchingFailedHosts.Count > 1)
{
var hostnames = string.Join(", ", livePatchingFailedHosts.Select(h => string.Format("'{0}'", h.Name())));
sb.AppendFormat(Messages.LIVE_PATCHING_FAILED_MULTI_HOST, hostnames).AppendLine();
return sb.ToString();
}
return null;
}
}
}

View File

@ -32,6 +32,7 @@
using System.Collections.Generic;
using XenAPI;
using System.Linq;
using System.Text;
using XenAdmin.Core;
using XenAdmin.Alerts;
@ -92,8 +93,14 @@ namespace XenAdmin.Wizards.PatchingWizard
return multiplePools ? Messages.PATCHINGWIZARD_AUTOUPDATINGPAGE_ERROR_MANY : Messages.PATCHINGWIZARD_AUTOUPDATINGPAGE_ERROR_ONE;
}
protected override string WarningMessageOnCompletion(bool multiplePools)
{
return multiplePools ? Messages.PATCHINGWIZARD_AUTOUPDATINGPAGE_WARNING_MANY : Messages.PATCHINGWIZARD_AUTOUPDATINGPAGE_WARNING_ONE;
}
protected override string SuccessMessagePerPool(Pool pool)
{
return Messages.PATCHINGWIZARD_AUTOUPDATINGPAGE_SUCCESS_ONE;
}
@ -102,6 +109,11 @@ namespace XenAdmin.Wizards.PatchingWizard
return multipleErrors ? Messages.PATCHINGWIZARD_AUTOUPDATINGPAGE_ERROR_POOL_MANY : Messages.PATCHINGWIZARD_AUTOUPDATINGPAGE_ERROR_POOL_ONE;
}
protected override string WarningMessagePerPool(Pool pool)
{
return LivePatchWarningMessagePerPool(pool);
}
protected override string UserCancellationMessage()
{
return Messages.PATCHINGWIZARD_AUTOUPDATINGPAGE_CANCELLATION;

View File

@ -31,21 +31,11 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using log4net;
using XenAdmin.Controls;
using XenAdmin.Diagnostics.Problems;
using XenAdmin.Dialogs;
using XenAdmin.Wizards.PatchingWizard.PlanActions;
using XenAPI;
using XenAdmin.Actions;
using XenAdmin.Core;
namespace XenAdmin.Wizards.PatchingWizard
{
@ -122,6 +112,14 @@ namespace XenAdmin.Wizards.PatchingWizard
return string.Format(msg, GetUpdateName());
}
protected override string WarningMessageOnCompletion(bool multiplePools)
{
var msg = multiplePools
? Messages.PATCHINGWIZARD_SINGLEUPDATE_WARNING_MANY
: Messages.PATCHINGWIZARD_SINGLEUPDATE_WARNING_ONE;
return string.Format(msg, GetUpdateName());
}
protected override string SuccessMessagePerPool(Pool pool)
{
var sb = new StringBuilder();
@ -130,6 +128,13 @@ namespace XenAdmin.Wizards.PatchingWizard
if (!IsAutomaticMode && ManualTextInstructions.ContainsKey(pool))
sb.Append(ManualTextInstructions[pool]).AppendLine();
return sb.ToString();
}
protected override string WarningMessagePerPool(Pool pool)
{
var sb = new StringBuilder();
var poolHosts = pool.Connection.Cache.Hosts.ToList();
@ -143,16 +148,19 @@ namespace XenAdmin.Wizards.PatchingWizard
if (livePatchingFailedHosts.Count == 1)
{
sb.AppendFormat(Messages.LIVE_PATCHING_FAILED_ONE_HOST, livePatchingFailedHosts[0].Name()).AppendLine();
return sb.ToString();
}
else if (livePatchingFailedHosts.Count > 1)
if (livePatchingFailedHosts.Count > 1)
{
var hostnames = string.Join(", ", livePatchingFailedHosts.Select(h => string.Format("'{0}'", h.Name())));
sb.AppendFormat(Messages.LIVE_PATCHING_FAILED_MULTI_HOST, hostnames).AppendLine();
return sb.ToString();
}
return sb.ToString();
return null;
}
protected override string FailureMessageOnCompletion(bool multiplePools)
{
var msg = multiplePools
@ -168,7 +176,6 @@ namespace XenAdmin.Wizards.PatchingWizard
: Messages.PATCHINGWIZARD_SINGLEUPDATE_FAILURE_PER_POOL_ONE;
return string.Format(msg, GetUpdateName());
}
protected override string UserCancellationMessage()
{
return Messages.PATCHINGWIZARD_AUTOUPDATINGPAGE_CANCELLATION;
@ -196,7 +203,9 @@ namespace XenAdmin.Wizards.PatchingWizard
foreach (var server in SelectedServers)
if (poolHosts.Contains(server))
{
var updateActions = new List<PlanAction> {new ApplyPoolUpdatePlanAction(server, PoolUpdate)};
var hostRebootRequired = WizardHelpers.IsHostRebootRequiredForUpdate(server, PoolUpdate, LivePatchCodesByHost);
var updateActions = new List<PlanAction> {new ApplyPoolUpdatePlanAction(server, PoolUpdate, hostRebootRequired) };
hostplans.Add(new HostPlan(server, null, updateActions, null));
}
}
@ -215,7 +224,9 @@ namespace XenAdmin.Wizards.PatchingWizard
foreach (var server in SelectedServers)
if (poolHosts.Contains(server))
{
var updateActions = new List<PlanAction> { new ApplyPatchPlanAction(server, Patch) };
var hostRebootRequired = WizardHelpers.IsHostRebootRequiredForUpdate(server, Patch, LivePatchCodesByHost);
var updateActions = new List<PlanAction> { new ApplyPatchPlanAction(server, Patch, hostRebootRequired) };
hostplans.Add(new HostPlan(server, null, updateActions, null));
}
@ -284,14 +295,12 @@ namespace XenAdmin.Wizards.PatchingWizard
private List<PlanAction> CompilePatchActionList(Host host, Pool_patch patch)
{
var actions = new List<PlanAction> {new ApplyPatchPlanAction(host, patch)};
var hostRebootRequired = WizardHelpers.IsHostRebootRequiredForUpdate(host, patch, LivePatchCodesByHost);
if (patch.after_apply_guidance.Contains(after_apply_guidance.restartHost)
&& !(LivePatchCodesByHost != null && LivePatchCodesByHost.ContainsKey(host.uuid)
&& LivePatchCodesByHost[host.uuid] == livepatch_status.ok_livepatch_complete))
{
var actions = new List<PlanAction> {new ApplyPatchPlanAction(host, patch, hostRebootRequired) };
if (hostRebootRequired)
actions.Add(new RestartHostPlanAction(host, host.GetRunningVMs()));
}
if (patch.after_apply_guidance.Contains(after_apply_guidance.restartXAPI))
actions.Add(new RestartAgentPlanAction(host));
@ -307,14 +316,12 @@ namespace XenAdmin.Wizards.PatchingWizard
private List<PlanAction> CompilePoolUpdateActionList(Host host, Pool_update poolUpdate)
{
var actions = new List<PlanAction> {new ApplyPoolUpdatePlanAction(host, poolUpdate)};
var hostRebootRequired = WizardHelpers.IsHostRebootRequiredForUpdate(host, poolUpdate, LivePatchCodesByHost);
if (poolUpdate.after_apply_guidance.Contains(update_after_apply_guidance.restartHost)
&& !(LivePatchCodesByHost != null && LivePatchCodesByHost.ContainsKey(host.uuid)
&& LivePatchCodesByHost[host.uuid] == livepatch_status.ok_livepatch_complete))
{
var actions = new List<PlanAction> {new ApplyPoolUpdatePlanAction(host, poolUpdate, hostRebootRequired) };
if (hostRebootRequired)
actions.Add(new RestartHostPlanAction(host, host.GetRunningVMs()));
}
if (poolUpdate.after_apply_guidance.Contains(update_after_apply_guidance.restartXAPI))
actions.Add(new RestartAgentPlanAction(host));

View File

@ -577,7 +577,6 @@ namespace XenAdmin.Wizards.PatchingWizard
private void fileNameTextBox_Enter(object sender, EventArgs e)
{
selectFromDiskRadioButton.Checked = true;
OnPageUpdated();
}
private void fileNameTextBox_TextChanged(object sender, EventArgs e)

View File

@ -307,13 +307,18 @@ namespace XenAdmin.Wizards.PatchingWizard
return IsHostAmongApplicable(host, out tooltipText);
// here a file from disk was selected, but it was not an update (FileFromDiskAlert == null)
if ((!Helpers.ElyOrGreater(host.Connection) && FileFromDiskHasUpdateXml) ||
(Helpers.ElyOrGreater(host.Connection) && !FileFromDiskHasUpdateXml))
if (!Helpers.ElyOrGreater(host.Connection) && FileFromDiskHasUpdateXml)
{
tooltipText = Messages.PATCHINGWIZARD_SELECTSERVERPAGE_PATCH_NOT_APPLICABLE;
return false;
}
if (Helpers.ElyOrGreater(host.Connection) && !FileFromDiskHasUpdateXml)
{
tooltipText = Messages.PATCHINGWIZARD_SELECTSERVERPAGE_PATCH_NOT_APPLICABLE_OR_INVALID;
return false;
}
return true;
}

View File

@ -174,6 +174,14 @@ namespace XenAdmin.Wizards.PatchingWizard
return string.Format(msg, GetUpdateName());
}
protected override string WarningMessageOnCompletion(bool multiplePools)
{
var msg = multiplePools
? Messages.PATCHINGWIZARD_SINGLEUPLOAD_WARNING_MANY
: Messages.PATCHINGWIZARD_SINGLEUPLOAD_WARNING_ONE;
return string.Format(msg, GetUpdateName());
}
protected override string SuccessMessagePerPool(Pool pool)
{
return string.Format( Messages.PATCHINGWIZARD_SINGLEUPLOAD_SUCCESS_ONE, GetUpdateName());
@ -187,6 +195,11 @@ namespace XenAdmin.Wizards.PatchingWizard
return string.Format(msg, GetUpdateName());
}
protected override string WarningMessagePerPool(Pool pool)
{
return null;
}
protected override string UserCancellationMessage()
{
return Messages.PATCHINGWIZARD_SINGLEUPLOAD_CANCELLATION;

View File

@ -34,22 +34,28 @@ using XenAPI;
namespace XenAdmin.Wizards.PatchingWizard.PlanActions
{
public class ApplyPatchPlanAction : PlanActionWithSession
public class ApplyPatchPlanAction : HostPlanAction
{
private readonly Host _host;
private readonly Pool_patch _patch;
private readonly bool _hostNeedsEvacuated;
public ApplyPatchPlanAction(Host host, Pool_patch patch)
: base(host.Connection)
public ApplyPatchPlanAction(Host host, Pool_patch patch, bool hostNeedsEvacuated)
: base(host)
{
_host = host;
_patch = patch;
_hostNeedsEvacuated = hostNeedsEvacuated;
}
protected override void RunWithSession(ref Session session)
{
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_APPLYING_UPDATE, _patch.Name(), _host.Name()));
XenRef<Task> task = Pool_patch.async_apply(session, _patch.opaque_ref, _host.opaque_ref);
var host = GetResolvedHost();
// evacuate the host, if needed, before applying the update
if (_hostNeedsEvacuated)
EvacuateHost(ref session);
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_APPLYING_UPDATE, _patch.Name(), host.Name()));
XenRef<Task> task = Pool_patch.async_apply(session, _patch.opaque_ref, host.opaque_ref);
PollTaskForResultAndDestroy(Connection, ref session, task);
}
}

View File

@ -35,22 +35,28 @@ using XenAPI;
namespace XenAdmin.Wizards.PatchingWizard.PlanActions
{
public class ApplyPoolUpdatePlanAction : PlanActionWithSession
public class ApplyPoolUpdatePlanAction : HostPlanAction
{
private readonly Host _host;
private readonly Pool_update _poolUpdate;
private readonly bool _hostNeedsEvacuated;
public ApplyPoolUpdatePlanAction(Host host, Pool_update patch)
: base(host.Connection)
public ApplyPoolUpdatePlanAction(Host host, Pool_update patch, bool hostNeedsEvacuated)
: base(host)
{
_host = host;
_poolUpdate = patch;
_hostNeedsEvacuated = hostNeedsEvacuated;
}
protected override void RunWithSession(ref Session session)
{
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_APPLYING_UPDATE, _poolUpdate.Name(), _host.Name()));
new ApplyUpdateAction(_poolUpdate, _host, true).RunExternal(session);
var host = GetResolvedHost();
// evacuate the host, if needed, before applying the update
if (_hostNeedsEvacuated)
EvacuateHost(ref session);
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_APPLYING_UPDATE, _poolUpdate.Name(), host.Name()));
new ApplyUpdateAction(_poolUpdate, host, true).RunExternal(session);
}
}
}

View File

@ -38,16 +38,14 @@ using XenAPI;
namespace XenAdmin.Wizards.PatchingWizard.PlanActions
{
public class ApplyXenServerPatchPlanAction : PlanActionWithSession
public class ApplyXenServerPatchPlanAction : HostPlanAction
{
private readonly Host host;
private readonly XenServerPatch xenServerPatch;
private readonly List<HostUpdateMapping> mappings;
public ApplyXenServerPatchPlanAction(Host host, XenServerPatch xenServerPatch, List<HostUpdateMapping> mappings)
: base(host.Connection)
: base(host)
{
this.host = host;
this.xenServerPatch = xenServerPatch;
this.mappings = mappings;
}
@ -68,8 +66,13 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
throw new Exception("Pool_patch or Pool_update not found.");
}
var host = GetResolvedHost();
try
{
// evacuate the host, if needed, before applying the update
if (mapping.HostsThatNeedEvacuated.Contains(host.uuid))
EvacuateHost(ref session);
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_APPLYING_UPDATE, xenServerPatch.Name,
host.Name()));

View File

@ -31,10 +31,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using XenAdmin.Core;
using XenAPI;
namespace XenAdmin.Wizards.PatchingWizard.PlanActions
@ -66,9 +63,13 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
var hostObj = GetResolvedHost();
var vms = hostObj.GetRunningVMs();
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_ENTERING_MAINTENANCE_MODE, hostObj.Name()));
log.DebugFormat("Disabling host {0}", hostObj.Name());
Host.disable(session, HostXenRef.opaque_ref);
if (hostObj.enabled)
{
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_ENTERING_MAINTENANCE_MODE, hostObj.Name()));
log.DebugFormat("Disabling host {0}", hostObj.Name());
Host.disable(session, HostXenRef.opaque_ref);
}
if (vms.Count > 0)
{
@ -99,18 +100,16 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
// CA-17428: Apply hotfixes to a pool of hosts through XenCenter fails.
// Hosts do reenable themselves anyway, so just wait 1 min for that,
// occasionally poking it.
var hostObj = GetResolvedHost();
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_EXITING_MAINTENANCE_MODE, hostObj.Name()));
WaitForHostToBecomeEnabled(session, true);
if (enableOnly || vmrefs.Count == 0)
return;
int vmCount = vmrefs.Count;
int vmNumber = 0;
hostObj = GetResolvedHost();
var hostObj = GetResolvedHost();
AddProgressStep(string.Format(Messages.PLAN_ACTION_STATUS_REPATRIATING_VMS, hostObj.Name()));
PBD.CheckPlugPBDsForVMs(Connection, vmrefs, true);
@ -163,6 +162,10 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
int retries = 0;
while (!Host.get_enabled(session, HostXenRef.opaque_ref))
{
var hostObj = GetResolvedHost();
if (retries == 0)
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_EXITING_MAINTENANCE_MODE, hostObj.Name()));
retries++;
var isLastTry = retries > 60;
@ -172,7 +175,7 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
{
if (isLastTry)
{
log.Debug(string.Format("Timed out waiting for host {0} to become enabled.", HostXenRef.opaque_ref));
log.DebugFormat("Timed out waiting for host {0} to become enabled.", hostObj.Name());
break;
}
@ -188,7 +191,7 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
if (isLastTry)
throw;
log.Debug(string.Format("Cannot enable host {0}. Retrying in 5 sec.", HostXenRef.opaque_ref), e);
log.Debug(string.Format("Cannot enable host {0}. Retrying in 5 sec.", hostObj), e);
}
}
}

View File

@ -47,14 +47,16 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
private readonly List<HostUpdateMapping> mappings;
private readonly Host host;
private readonly List<string> hostsThatWillRequireReboot;
private readonly Dictionary<string, List<string>> livePatchAttempts;
public PatchPrecheckOnHostPlanAction(IXenConnection connection, XenServerPatch xenServerPatch, Host host, List<HostUpdateMapping> mappings, List<string> hostsThatWillRequireReboot)
public PatchPrecheckOnHostPlanAction(IXenConnection connection, XenServerPatch xenServerPatch, Host host, List<HostUpdateMapping> mappings, List<string> hostsThatWillRequireReboot, Dictionary<string, List<string>> livePatchAttempts)
: base(connection)
{
this.xenServerPatch = xenServerPatch;
this.host = host;
this.mappings = mappings;
this.hostsThatWillRequireReboot = hostsThatWillRequireReboot;
this.livePatchAttempts = livePatchAttempts;
}
protected override void RunWithSession(ref Session session)
@ -74,6 +76,8 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
if (Cancelling)
throw new CancelledException();
var updateRequiresHostReboot = false;
try
{
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_RUNNING_PRECHECK, xenServerPatch.Name, host.Name()));
@ -81,10 +85,16 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
List<Problem> problems = null;
if (mapping is PoolPatchMapping patchMapping)
{
problems = new PatchPrecheckCheck(host, patchMapping.Pool_patch, livePatchStatus).RunAllChecks();
updateRequiresHostReboot = WizardHelpers.IsHostRebootRequiredForUpdate(host, patchMapping.Pool_patch, livePatchStatus);
}
else if (mapping is PoolUpdateMapping updateMapping)
{
problems = new PatchPrecheckCheck(host, updateMapping.Pool_update, livePatchStatus).RunAllChecks();
updateRequiresHostReboot = WizardHelpers.IsHostRebootRequiredForUpdate(host, updateMapping.Pool_update, livePatchStatus);
}
Problem problem = null;
if (problems != null && problems.Count > 0)
@ -99,10 +109,16 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
throw;
}
if (livePatchStatus.ContainsKey(host.uuid)
&& livePatchStatus[host.uuid] != livepatch_status.ok_livepatch_complete
&& !hostsThatWillRequireReboot.Contains(host.uuid))
if(updateRequiresHostReboot && !hostsThatWillRequireReboot.Contains(host.uuid))
hostsThatWillRequireReboot.Add(host.uuid);
if (updateRequiresHostReboot && !mapping.HostsThatNeedEvacuated.Contains(host.uuid))
mapping.HostsThatNeedEvacuated.Add(host.uuid);
if (livePatchStatus.ContainsKey(host.uuid) && livePatchStatus[host.uuid] == livepatch_status.ok_livepatch_complete)
{
if (!livePatchAttempts.ContainsKey(host.uuid) || livePatchAttempts[host.uuid] == null)
livePatchAttempts[host.uuid] = new List<string>();
livePatchAttempts[host.uuid].Add(xenServerPatch.Uuid);
}
}
}
}

View File

@ -62,6 +62,9 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
{
if (_restartAgentFallback)
RestartAgent(ref session);
if (!EnableOnly)
BringBabiesBack(ref session, _vms, EnableOnly);
return;
}
@ -75,13 +78,10 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
public bool SkipRestartHost(Host host)
{
if (hostsNeedReboot != null
&& !hostsNeedReboot.Contains(host.uuid)
&& Helpers.ElyOrGreater(host)
&& host.updates_requiring_reboot.Count <= 0)
{
// if the precheck didn't mark this host as requiring reboot, then skip the reboot
if (Helpers.ElyOrGreater(host) && hostsNeedReboot != null && !hostsNeedReboot.Contains(host.uuid))
return true;
}
return false;
}
}

View File

@ -39,6 +39,7 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions
public abstract class HostUpdateMapping
{
protected readonly Host MasterHost;
public List<string> HostsThatNeedEvacuated = new List<string>();
protected HostUpdateMapping(Host masterHost)
{

View File

@ -45,7 +45,7 @@ using XenAdmin.Wizards.PatchingWizard.PlanActions;
namespace XenAdmin.Wizards.RollingUpgradeWizard.PlanActions
{
class RpuUploadAndApplySuppPackPlanAction : PlanActionWithSession
class RpuUploadAndApplySuppPackPlanAction : HostPlanAction
{
private Host host;
private List<Host> hosts;
@ -55,7 +55,7 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard.PlanActions
private readonly List<string> hostsThatWillRequireReboot;
public RpuUploadAndApplySuppPackPlanAction(IXenConnection connection, Host host, List<Host> hosts, string path, Dictionary<Host, Pool_update> uploadedUpdate, List<string> hostsThatWillRequireReboot)
: base(connection)
: base(host)
{
this.host = host;
this.hosts = hosts;
@ -89,6 +89,8 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard.PlanActions
var master = Helpers.GetMaster(conn);
var suppPackName = Path.GetFileName(suppPackPath);
host = GetResolvedHost();
// upload
UploadSuppPack(master, conn, session, suppPackName);
@ -98,8 +100,7 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard.PlanActions
if (update != null)
{
// precheck
bool alreadyApplied;
PrecheckSuppPack(update, suppPackName, out alreadyApplied);
PrecheckSuppPack(update, suppPackName, out var alreadyApplied, out var updateRequiresHostEvacuation);
if (alreadyApplied)
{
// do after-apply-supppack step in case that this is a retry after
@ -110,7 +111,7 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard.PlanActions
}
// apply
ApplySuppPack(conn, session, suppPackName, update);
ApplySuppPack(conn, session, suppPackName, update, updateRequiresHostEvacuation);
// after apply guidance
AfterApplySuppPack(update);
@ -158,7 +159,7 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard.PlanActions
}
}
private void PrecheckSuppPack(Pool_update update, string suppPack, out bool alreadyApplied)
private void PrecheckSuppPack(Pool_update update, string suppPack, out bool alreadyApplied, out bool updateRequiresHostEvacuation)
{
alreadyApplied = false;
if (Cancelling)
@ -173,6 +174,7 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard.PlanActions
PatchPrecheckCheck check = new PatchPrecheckCheck(host, update, livePatchStatus);
var problems = check.RunAllChecks();
updateRequiresHostEvacuation = WizardHelpers.IsHostRebootRequiredForUpdate(host, update, livePatchStatus);
if (problems != null && problems.Count > 0)
{
if (problems[0] is PatchAlreadyApplied)
@ -197,10 +199,14 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard.PlanActions
hostsThatWillRequireReboot.Add(host.uuid);
}
private void ApplySuppPack(IXenConnection connection, Session session, string suppPack, Pool_update update)
private void ApplySuppPack(IXenConnection connection, Session session, string suppPack, Pool_update update, bool updateRequiresHostEvacuation)
{
try
{
// evacuate the host, if needed, before applying the update
if (updateRequiresHostEvacuation)
EvacuateHost(ref session);
AddProgressStep(string.Format(Messages.UPDATES_WIZARD_APPLYING_UPDATE, suppPack, host.Name()));
var task = Pool_update.async_apply(session, update.opaque_ref, host.opaque_ref);

View File

@ -85,6 +85,11 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard
return multiplePools ? Messages.ROLLING_UPGRADE_ERROR_MANY : Messages.ROLLING_UPGRADE_ERROR_ONE;
}
protected override string WarningMessageOnCompletion(bool multiplePools)
{
return multiplePools ? Messages.ROLLING_UPGRADE_WARNING_MANY : Messages.ROLLING_UPGRADE_WARNING_ONE;
}
protected override string SuccessMessagePerPool(Pool pool)
{
return Messages.ROLLING_UPGRADE_SUCCESS_ONE;
@ -95,6 +100,11 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard
return multipleErrors ? Messages.ROLLING_UPGRADE_ERROR_POOL_MANY : Messages.ROLLING_UPGRADE_ERROR_POOL_ONE;
}
protected override string WarningMessagePerPool(Pool pool)
{
return LivePatchWarningMessagePerPool(pool);
}
protected override string UserCancellationMessage()
{
return Messages.ROLLING_UPGRADE_CANCELLATION;

View File

@ -29,12 +29,15 @@
* SUCH DAMAGE.
*/
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using DiscUtils.Iso9660;
using XenAdmin.Actions;
using XenAdmin.Dialogs;
using XenAPI;
namespace XenAdmin.Wizards
@ -158,8 +161,41 @@ namespace XenAdmin.Wizards
return false;
}
if (fileName.ToLowerInvariant().EndsWith(".iso"))
{
bool isValidIso;
try
{
using (var isoStream = File.OpenRead(fileName))
using (var cd = new CDReader(isoStream, true))
isValidIso = cd.Root.Exists;
}
catch
{
isValidIso = false;
}
if (!isValidIso)
{
failureReason = Messages.UPDATES_WIZARD_INVALID_ISO_FILE;
return false;
}
}
failureReason = null;
return true;
}
public static bool IsHostRebootRequiredForUpdate(Host host, Pool_patch patch, Dictionary<string, livepatch_status> livePatchCodesByHost = null)
{
return patch.after_apply_guidance.Contains(after_apply_guidance.restartHost)
&& (livePatchCodesByHost == null || !livePatchCodesByHost.ContainsKey(host.uuid) || livePatchCodesByHost[host.uuid] != livepatch_status.ok_livepatch_complete);
}
public static bool IsHostRebootRequiredForUpdate(Host host, Pool_update poolUpdate, Dictionary<string, livepatch_status> livePatchCodesByHost = null)
{
return poolUpdate.after_apply_guidance.Contains(update_after_apply_guidance.restartHost)
&& (livePatchCodesByHost == null || !livePatchCodesByHost.ContainsKey(host.uuid) || livePatchCodesByHost[host.uuid] != livepatch_status.ok_livepatch_complete);
}
}
}

View File

@ -27788,6 +27788,24 @@ namespace XenAdmin {
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Clean up... ähnelt.
/// </summary>
public static string PATCHINGWIZARD_AUTOUPDATINGPAGE_WARNING_MANY {
get {
return ResourceManager.GetString("PATCHINGWIZARD_AUTOUPDATINGPAGE_WARNING_MANY", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The automated updates process was completed with warnings..
/// </summary>
public static string PATCHINGWIZARD_AUTOUPDATINGPAGE_WARNING_ONE {
get {
return ResourceManager.GetString("PATCHINGWIZARD_AUTOUPDATINGPAGE_WARNING_ONE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Clean up....
/// </summary>
public static string PATCHINGWIZARD_CLEANUP {
get {
return ResourceManager.GetString("PATCHINGWIZARD_CLEANUP", resourceCulture);
@ -28275,6 +28293,15 @@ namespace XenAdmin {
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Select one or more pools or standalone servers that you want to have updated.
///Servers that cannot be updated with automated updates appear disabled in this list. ähnelt.
public static string PATCHINGWIZARD_SELECTSERVERPAGE_PATCH_NOT_APPLICABLE_OR_INVALID {
get {
return ResourceManager.GetString("PATCHINGWIZARD_SELECTSERVERPAGE_PATCH_NOT_APPLICABLE_OR_INVALID", resourceCulture);
}
}
/// </summary>
/// <summary>
/// Looks up a localized string similar to Select one or more pools or standalone servers that you want to have updated.
///Servers that cannot be updated with automated updates appear disabled in this list..
/// </summary>
public static string PATCHINGWIZARD_SELECTSERVERPAGE_RUBRIC_AUTOMATED_MODE {
get {
@ -28414,6 +28441,24 @@ namespace XenAdmin {
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die The upload process was cancelled. ähnelt.
/// </summary>
public static string PATCHINGWIZARD_SINGLEUPDATE_WARNING_MANY {
get {
return ResourceManager.GetString("PATCHINGWIZARD_SINGLEUPDATE_WARNING_MANY", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The installation of update {0} was completed with warnings..
/// </summary>
public static string PATCHINGWIZARD_SINGLEUPDATE_WARNING_ONE {
get {
return ResourceManager.GetString("PATCHINGWIZARD_SINGLEUPDATE_WARNING_ONE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The upload process was cancelled..
/// </summary>
public static string PATCHINGWIZARD_SINGLEUPLOAD_CANCELLATION {
get {
return ResourceManager.GetString("PATCHINGWIZARD_SINGLEUPLOAD_CANCELLATION", resourceCulture);
@ -28497,6 +28542,24 @@ namespace XenAdmin {
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] is now installing updates on your system. ähnelt.
/// </summary>
public static string PATCHINGWIZARD_SINGLEUPLOAD_WARNING_MANY {
get {
return ResourceManager.GetString("PATCHINGWIZARD_SINGLEUPLOAD_WARNING_MANY", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The upload of update {0} was completed with warnings..
/// </summary>
public static string PATCHINGWIZARD_SINGLEUPLOAD_WARNING_ONE {
get {
return ResourceManager.GetString("PATCHINGWIZARD_SINGLEUPLOAD_WARNING_ONE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [XenCenter] is now installing updates on your system..
/// </summary>
public static string PATCHINGWIZARD_UPLOAD_AND_INSTALL_TITLE_AUTOMATED_MODE {
get {
return ResourceManager.GetString("PATCHINGWIZARD_UPLOAD_AND_INSTALL_TITLE_AUTOMATED_MODE", resourceCulture);
@ -31340,6 +31403,24 @@ namespace XenAdmin {
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Upgrade prechecks are performed on all the pools you selected to ensure that all the servers can be upgraded. ähnelt.
/// </summary>
public static string ROLLING_UPGRADE_WARNING_MANY {
get {
return ResourceManager.GetString("ROLLING_UPGRADE_WARNING_MANY", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The rolling pool upgrade process was completed with warnings..
/// </summary>
public static string ROLLING_UPGRADE_WARNING_ONE {
get {
return ResourceManager.GetString("ROLLING_UPGRADE_WARNING_ONE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Upgrade prechecks are performed on all the pools you selected to ensure that all the servers can be upgraded..
/// </summary>
public static string ROLLINGUPGRADE_PRECHECKS {
get {
return ResourceManager.GetString("ROLLINGUPGRADE_PRECHECKS", resourceCulture);
@ -35474,6 +35555,15 @@ namespace XenAdmin {
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die {0}: VM &apos;{1}&apos; has a local CD/DVD in its drive. ähnelt.
/// </summary>
public static string UPDATES_WIZARD_INVALID_ISO_FILE {
get {
return ResourceManager.GetString("UPDATES_WIZARD_INVALID_ISO_FILE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to {0}: VM &apos;{1}&apos; has a local CD/DVD in its drive..
/// </summary>
public static string UPDATES_WIZARD_LOCAL_CD {
get {
return ResourceManager.GetString("UPDATES_WIZARD_LOCAL_CD", resourceCulture);

View File

@ -9603,6 +9603,12 @@ This will cancel the update process and may leave your system in an unstable sta
<data name="PATCHINGWIZARD_AUTOUPDATINGPAGE_TITLE" xml:space="preserve">
<value>Uploading and installing updates</value>
</data>
<data name="PATCHINGWIZARD_AUTOUPDATINGPAGE_WARNING_MANY" xml:space="preserve">
<value>Some of the automated updates processes were completed with warnings.</value>
</data>
<data name="PATCHINGWIZARD_AUTOUPDATINGPAGE_WARNING_ONE" xml:space="preserve">
<value>The automated updates process was completed with warnings.</value>
</data>
<data name="PATCHINGWIZARD_CLEANUP" xml:space="preserve">
<value>Clean up...</value>
</data>
@ -9765,6 +9771,9 @@ This will cancel the update process and may leave your system in an unstable sta
<data name="PATCHINGWIZARD_SELECTSERVERPAGE_PATCH_NOT_APPLICABLE" xml:space="preserve">
<value>Update not applicable</value>
</data>
<data name="PATCHINGWIZARD_SELECTSERVERPAGE_PATCH_NOT_APPLICABLE_OR_INVALID" xml:space="preserve">
<value>Update not applicable or file contains invalid data.</value>
</data>
<data name="PATCHINGWIZARD_SELECTSERVERPAGE_RUBRIC_AUTOMATED_MODE" xml:space="preserve">
<value>Select one or more pools or standalone servers that you want to have updated.
Servers that cannot be updated with automated updates appear disabled in this list.</value>
@ -9814,6 +9823,12 @@ Servers where this update cannot be applied appear disabled in this list.</value
<data name="PATCHINGWIZARD_SINGLEUPDATE_TITLE" xml:space="preserve">
<value>[XenCenter] is now installing update {0} on your system.</value>
</data>
<data name="PATCHINGWIZARD_SINGLEUPDATE_WARNING_MANY" xml:space="preserve">
<value>The installation of update {0} was completed with warnings on some of the selected servers.</value>
</data>
<data name="PATCHINGWIZARD_SINGLEUPDATE_WARNING_ONE" xml:space="preserve">
<value>The installation of update {0} was completed with warnings.</value>
</data>
<data name="PATCHINGWIZARD_SINGLEUPLOAD_CANCELLATION" xml:space="preserve">
<value>The upload process was cancelled.</value>
</data>
@ -9843,6 +9858,12 @@ This will cancel the upload process.</value>
<data name="PATCHINGWIZARD_SINGLEUPLOAD_TITLE" xml:space="preserve">
<value>[XenCenter] is now performing the operations necessary to upload your update to the servers specified in the previous step. Please wait for these operations to complete, then click Next to continue with the installation.</value>
</data>
<data name="PATCHINGWIZARD_SINGLEUPLOAD_WARNING_MANY" xml:space="preserve">
<value>The upload of update {0} was completed with warnings on some of the selected servers.</value>
</data>
<data name="PATCHINGWIZARD_SINGLEUPLOAD_WARNING_ONE" xml:space="preserve">
<value>The upload of update {0} was completed with warnings.</value>
</data>
<data name="PATCHINGWIZARD_UPLOADPAGE_TEXT" xml:space="preserve">
<value>Upload</value>
</data>
@ -10901,6 +10922,12 @@ Click Keep Waiting if the upgrade is still running or Cancel if an error occurre
<data name="ROLLING_UPGRADE_UPGRADE_NOT_COMPLETED" xml:space="preserve">
<value>Rolling pool upgrade did not complete.</value>
</data>
<data name="ROLLING_UPGRADE_WARNING_MANY" xml:space="preserve">
<value>One or more of the rolling pool upgrade processes were completed with warnings.</value>
</data>
<data name="ROLLING_UPGRADE_WARNING_ONE" xml:space="preserve">
<value>The rolling pool upgrade process was completed with warnings.</value>
</data>
<data name="RPU_WIZARD_ERROR_SKIP_MSG" xml:space="preserve">
<value>{0} could be skipped.</value>
</data>
@ -12245,6 +12272,9 @@ Check your settings and try again.</value>
Please check your settings and try again.</value>
</data>
<data name="UPDATES_WIZARD_INVALID_ISO_FILE" xml:space="preserve">
<value>The selected ISO file is corrupt or contains invalid data.</value>
</data>
<data name="UPDATES_WIZARD_LOCAL_CD" xml:space="preserve">
<value>{0}: VM '{1}' has a local CD/DVD in its drive.</value>
</data>