From abf2357a312fc88be2469a9c23c9dc6429174f49 Mon Sep 17 00:00:00 2001 From: Callum McIntyre Date: Tue, 23 Aug 2016 17:38:59 +0100 Subject: [PATCH] no message Signed-off-by: Callum McIntyre --- .../Dialogs/RebootHostsDialog.Designer.cs | 136 --- XenAdmin/Dialogs/RebootHostsDialog.cs | 92 -- XenAdmin/Dialogs/RebootHostsDialog.ja.resx | 903 ------------------ XenAdmin/Dialogs/RebootHostsDialog.resx | 647 ------------- XenAdmin/Dialogs/RebootHostsDialog.zh-CN.resx | 903 ------------------ .../PatchingWizard_PatchingPage.cs | 137 +-- XenAdmin/XenAdmin.csproj | 16 - XenModel/Messages.Designer.cs | 18 + XenModel/Messages.resx | 6 + XenModel/StringExtensions.cs | 16 + 10 files changed, 57 insertions(+), 2817 deletions(-) delete mode 100644 XenAdmin/Dialogs/RebootHostsDialog.Designer.cs delete mode 100644 XenAdmin/Dialogs/RebootHostsDialog.cs delete mode 100644 XenAdmin/Dialogs/RebootHostsDialog.ja.resx delete mode 100644 XenAdmin/Dialogs/RebootHostsDialog.resx delete mode 100644 XenAdmin/Dialogs/RebootHostsDialog.zh-CN.resx diff --git a/XenAdmin/Dialogs/RebootHostsDialog.Designer.cs b/XenAdmin/Dialogs/RebootHostsDialog.Designer.cs deleted file mode 100644 index 16e4cac4b..000000000 --- a/XenAdmin/Dialogs/RebootHostsDialog.Designer.cs +++ /dev/null @@ -1,136 +0,0 @@ -namespace XenAdmin.Dialogs -{ - partial class RebootHostsDialog - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RebootHostsDialog)); - this.rebootButton = new System.Windows.Forms.Button(); - this.noRebootButton = new System.Windows.Forms.Button(); - this.mainLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); - this.hostsLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); - this.progressBar = new System.Windows.Forms.ProgressBar(); - this.textBoxLog = new System.Windows.Forms.TextBox(); - this.mainLabel = new System.Windows.Forms.Label(); - this.buttonsLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); - this.cancelButton = new System.Windows.Forms.Button(); - this.mainLayoutPanel.SuspendLayout(); - this.buttonsLayoutPanel.SuspendLayout(); - this.SuspendLayout(); - // - // rebootButton - // - resources.ApplyResources(this.rebootButton, "rebootButton"); - this.rebootButton.DialogResult = System.Windows.Forms.DialogResult.Yes; - this.rebootButton.Name = "rebootButton"; - this.rebootButton.UseVisualStyleBackColor = true; - // - // noRebootButton - // - resources.ApplyResources(this.noRebootButton, "noRebootButton"); - this.noRebootButton.DialogResult = System.Windows.Forms.DialogResult.No; - this.noRebootButton.Name = "noRebootButton"; - this.noRebootButton.UseVisualStyleBackColor = true; - // - // mainLayoutPanel - // - resources.ApplyResources(this.mainLayoutPanel, "mainLayoutPanel"); - this.mainLayoutPanel.Controls.Add(this.hostsLayoutPanel, 0, 1); - this.mainLayoutPanel.Controls.Add(this.progressBar, 0, 2); - this.mainLayoutPanel.Controls.Add(this.textBoxLog, 0, 3); - this.mainLayoutPanel.Controls.Add(this.mainLabel, 0, 0); - this.mainLayoutPanel.Controls.Add(this.buttonsLayoutPanel, 0, 4); - this.mainLayoutPanel.Name = "mainLayoutPanel"; - // - // hostsLayoutPanel - // - resources.ApplyResources(this.hostsLayoutPanel, "hostsLayoutPanel"); - this.hostsLayoutPanel.Name = "hostsLayoutPanel"; - // - // progressBar - // - resources.ApplyResources(this.progressBar, "progressBar"); - this.progressBar.Name = "progressBar"; - // - // textBoxLog - // - resources.ApplyResources(this.textBoxLog, "textBoxLog"); - this.textBoxLog.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.textBoxLog.Name = "textBoxLog"; - this.textBoxLog.ReadOnly = true; - // - // mainLabel - // - resources.ApplyResources(this.mainLabel, "mainLabel"); - this.mainLabel.Name = "mainLabel"; - // - // buttonsLayoutPanel - // - resources.ApplyResources(this.buttonsLayoutPanel, "buttonsLayoutPanel"); - this.buttonsLayoutPanel.Controls.Add(this.rebootButton); - this.buttonsLayoutPanel.Controls.Add(this.noRebootButton); - this.buttonsLayoutPanel.Controls.Add(this.cancelButton); - this.buttonsLayoutPanel.Name = "buttonsLayoutPanel"; - // - // cancelButton - // - resources.ApplyResources(this.cancelButton, "cancelButton"); - this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.cancelButton.Name = "cancelButton"; - this.cancelButton.UseVisualStyleBackColor = true; - // - // RebootHostsDialog - // - this.AcceptButton = this.rebootButton; - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.CancelButton = this.noRebootButton; - this.Controls.Add(this.mainLayoutPanel); - this.Name = "RebootHostsDialog"; - this.mainLayoutPanel.ResumeLayout(false); - this.mainLayoutPanel.PerformLayout(); - this.buttonsLayoutPanel.ResumeLayout(false); - this.buttonsLayoutPanel.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button rebootButton; - private System.Windows.Forms.Button noRebootButton; - private System.Windows.Forms.TableLayoutPanel mainLayoutPanel; - private System.Windows.Forms.Label mainLabel; - private System.Windows.Forms.FlowLayoutPanel buttonsLayoutPanel; - private System.Windows.Forms.ProgressBar progressBar; - private System.Windows.Forms.TextBox textBoxLog; - private System.Windows.Forms.Button cancelButton; - private System.Windows.Forms.FlowLayoutPanel hostsLayoutPanel; - } -} \ No newline at end of file diff --git a/XenAdmin/Dialogs/RebootHostsDialog.cs b/XenAdmin/Dialogs/RebootHostsDialog.cs deleted file mode 100644 index 8b3f67957..000000000 --- a/XenAdmin/Dialogs/RebootHostsDialog.cs +++ /dev/null @@ -1,92 +0,0 @@ -/* Copyright (c) Citrix Systems Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, - * with or without modification, are permitted provided - * that the following conditions are met: - * - * * Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the - * following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Reflection; -using System.Windows.Forms; -using log4net; -using XenAPI; - -namespace XenAdmin.Dialogs -{ - public partial class RebootHostsDialog : XenDialogBase - { - protected static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private BackgroundWorker actionsWorker = null; - private IList hosts; - - /// - /// Initializes a new instance of the class. - /// - /// The hosts for which the licensing is to be applied. - public RebootHostsDialog(IList hosts, Pool_patch patch) - { - Util.ThrowIfEnumerableParameterNullOrEmpty(hosts, "hosts"); - - InitializeComponent(); - - foreach (var host in hosts) - { - var hostCheckbox = new CheckBox() - { - Name = host.Name, - Checked = true, - Text = host.Name - }; - - hostsLayoutPanel.Controls.Add(hostCheckbox); - - this.hosts = hosts; - } - } - - public IEnumerable GetSelectedHosts() - { - var selectedHostNames = new List(); - - foreach (var control in hostsLayoutPanel.Controls) - { - var controlAsCheckbox = control as CheckBox; - if (controlAsCheckbox == null) {continue;} - - if (controlAsCheckbox.Checked) - { - selectedHostNames.Add(controlAsCheckbox.Name); - } - } - - return hosts.Where(host => selectedHostNames.Contains(host.Name)); - } - } -} \ No newline at end of file diff --git a/XenAdmin/Dialogs/RebootHostsDialog.ja.resx b/XenAdmin/Dialogs/RebootHostsDialog.ja.resx deleted file mode 100644 index 38a76454b..000000000 --- a/XenAdmin/Dialogs/RebootHostsDialog.ja.resx +++ /dev/null @@ -1,903 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Segoe UI, 9pt - - - - NoControl - - - 3, 3 - - - 87, 27 - - - - 0 - - - OK - - - okButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - buttonsLayoutPanel - - - 0 - - - Segoe UI, 9pt - - - NoControl - - - 96, 3 - - - 87, 27 - - - 1 - - - キャンセル - - - cancelButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - buttonsLayoutPanel - - - 1 - - - True - - - GrowAndShrink - - - 1 - - - True - - - GrowAndShrink - - - 4 - - - True - - - Fill - - - Segoe UI, 9pt - - - NoControl - - - 11, 8 - - - 84, 29 - - - 1 - - - ライセンス サーバー(&L): - - - MiddleLeft - - - licenseServerNameLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - licenseServerLayoutPanel - - - 0 - - - Segoe UI, 9pt - - - 101, 11 - - - 304, 23 - - - 2 - - - licenseServerNameTextBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - licenseServerLayoutPanel - - - 1 - - - Segoe UI, 9pt - - - 427, 11 - - - 63, 23 - - - 4 - - - 27000 - - - licenseServerPortTextBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - licenseServerLayoutPanel - - - 2 - - - None - - - True - - - Segoe UI, 9pt - - - NoControl - - - 411, 15 - - - 10, 15 - - - 3 - - - : - - - colonLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - licenseServerLayoutPanel - - - 3 - - - Fill - - - Segoe UI, 9pt - - - 11, 41 - - - 8, 8, 8, 8 - - - 1 - - - 501, 45 - - - 1 - - - licenseServerLayoutPanel - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mainLayoutPanel - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="licenseServerNameLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="licenseServerNameTextBox" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="licenseServerPortTextBox" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="colonLabel" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> - - - Fill - - - Segoe UI, 9pt - - - NoControl - - - 11, 8 - - - 501, 30 - - - 0 - - - 選択したサーバーに新しいライセンスを割り当てるには、情報を入力して [OK] をクリックします。 - - - mainLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mainLayoutPanel - - - 1 - - - True - - - GrowAndShrink - - - True - - - GrowAndShrink - - - True - - - Segoe UI, 9pt - - - NoControl - - - 3, 3 - - - 167, 19 - - - 0 - - - [XenServer product] Per-Socket(&S) - - - perSocketRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 0 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 3, 28 - - - 203, 19 - - - 1 - - - [XenServer product] Advanced Edition(&A) - - - advancedRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 1 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 3, 53 - - - 202, 19 - - - 2 - - - [XenServer product] Enterprise Edition(&E) - - - enterpriseRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 2 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 3, 78 - - - 198, 19 - - - 3 - - - [XenServer product] Platinum Edition(&P) - - - platinumRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 3 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 3, 103 - - - 191, 19 - - - 4 - - - [XenServer product] for XenDesktop(&X) - - - xenDesktopEnterpriseRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 4 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 7, 143 - - - 197, 22 - - - 5 - - - [XenServer product] Enterprise Per-Socket(&N) - - - enterprisePerSocketRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 5 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 7, 171 - - - 186, 22 - - - 6 - - - [XenServer product] Enterprise Per-User(&E) - - - False - - - enterprisePerUserRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 6 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 7, 199 - - - 134, 22 - - - 10 - - - XenApp/XenDesktop Platinum(&P) - - - desktopPlusRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 7 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 7, 227 - - - 126, 22 - - - 9 - - - XenApp/XenDesktop(&D) - - - desktopRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 8 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 7, 255 - - - 192, 22 - - - 7 - - - [XenServer product] Standard Per-Socket(&S) - - - standardPerSocketRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 9 - - - Fill - - - TopDown - - - Segoe UI, 9pt - - - 3, 19 - - - 4, 0, 4, 4 - - - 495, 125 - - - 0 - - - editionLayoutPanel - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionsGroupBox - - - 0 - - - Fill - - - Segoe UI, 9pt - - - 11, 92 - - - 501, 147 - - - 2 - - - ライセンス - - - editionsGroupBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mainLayoutPanel - - - 2 - - - True - - - GrowAndShrink - - - Right - - - Segoe UI, 9pt - - - 326, 250 - - - 3, 8, 3, 3 - - - 186, 33 - - - 3 - - - buttonsLayoutPanel - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mainLayoutPanel - - - 3 - - - Fill - - - Segoe UI, 9pt - - - 0, 0 - - - 8, 8, 8, 8 - - - 6 - - - 523, 292 - - - 0 - - - mainLayoutPanel - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="licenseServerLayoutPanel" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="mainLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="editionsGroupBox" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="buttonsLayoutPanel" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,Absolute,20" /></TableLayoutSettings> - - - True - - - 96, 96 - - - True - - - GrowAndShrink - - - 523, 292 - - - Segoe UI, 9pt - - - ライセンスの適用 - - - RebootVmsDialog - - - XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - diff --git a/XenAdmin/Dialogs/RebootHostsDialog.resx b/XenAdmin/Dialogs/RebootHostsDialog.resx deleted file mode 100644 index 8890918ba..000000000 --- a/XenAdmin/Dialogs/RebootHostsDialog.resx +++ /dev/null @@ -1,647 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - True - - - - Segoe UI, 9pt - - - - NoControl - - - 3, 3 - - - 376, 51 - - - 0 - - - Reboot selected hosts - - - rebootButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - buttonsLayoutPanel - - - 0 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 385, 3 - - - 297, 51 - - - 1 - - - Do not reboot hosts - - - noRebootButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - buttonsLayoutPanel - - - 1 - - - True - - - 1 - - - True - - - TopDown - - - Segoe UI, 9pt - - - 11, 93 - - - 0, 0 - - - 1 - - - hostsLayoutPanel - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mainLayoutPanel - - - 0 - - - Top, Left, Right - - - Segoe UI, 9pt - - - NoControl - - - 11, 99 - - - 1346, 23 - - - 5 - - - False - - - progressBar - - - System.Windows.Forms.ProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mainLayoutPanel - - - 1 - - - Top, Bottom, Left, Right - - - Segoe UI, 9pt - - - 11, 128 - - - True - - - Both - - - 1346, 216 - - - 4 - - - False - - - textBoxLog - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mainLayoutPanel - - - 2 - - - True - - - Fill - - - Segoe UI, 9pt - - - NoControl - - - 11, 8 - - - No - - - 1346, 82 - - - 0 - - - Live patching failed for the following hosts and they will need to be restarted. If you'd like this can be automatically performed now. - - - mainLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mainLayoutPanel - - - 3 - - - True - - - True - - - False - - - Segoe UI, 9pt - - - NoControl - - - 688, 3 - - - 297, 51 - - - 2 - - - Cancel - - - False - - - cancelButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - buttonsLayoutPanel - - - 2 - - - Right - - - Segoe UI, 9pt - - - 369, 355 - - - 3, 8, 3, 3 - - - 988, 189 - - - 3 - - - buttonsLayoutPanel - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mainLayoutPanel - - - 4 - - - Top - - - Segoe UI, 9pt - - - 0, 0 - - - 8, 8, 8, 8 - - - 5 - - - 1368, 555 - - - 0 - - - mainLayoutPanel - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="hostsLayoutPanel" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="progressBar" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxLog" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="mainLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="buttonsLayoutPanel" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,200" /></TableLayoutSettings> - - - True - - - 240, 240 - - - True - - - GrowAndShrink - - - 1368, 992 - - - Segoe UI, 9pt - - - - AAABAAYAICAQAAAAAADoAgAAZgAAABAQEAAAAAAAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA - CABoBQAAHg0AACAgAAABACAAqBAAAIYSAAAQEAAAAQAgAGgEAAAuIwAAKAAAACAAAABAAAAAAQAEAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA - /wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIoiI - iIiIiIiIiIiIiIiIiIiCIigiIiIozMzMzMzMyCIogiIoIiIiKM7m5ubm5sgiKIIiKCIiIijObm5ubm7I - IiiCIigiIiIozubm5ubmyCIogiIoIiIiKM5ubm5ubsgiKIIiKCIiIijO5ubm5ubIIiiIiIiIiIiIzm5u - bm5uyCIogRERERERGM7u7u7u7sgiKIHZWVlZWRjMzMzMzMzIIiiB1ZWVlZUYiIiIiIiIiIiIgdlZWVlZ - GDMzMzMzMzMzOIHVlZWVlRg/uLi4uLi4uDiB2VlZWVkYP7uLi4uLi4s4gdWVlZWVGD+4uLi4uLi4OIHZ - WVlZWRg/u4uLi4uLiziB1ZWVlZUYP7i4uLi4uLg4gdlZWVlZGD+7i4uLi4uLOIHVlZWVlRg/uLi4uLi4 - uDiB3d3d3d0YP7uLi4uLi4s4gRERERERGD+4uLi4uLi4OIiIiIiIiIg/u4uLi4uLiziCIiIiIiIoP7i4 - uLi4uLg4giIiIiIiKD+7i4uLi4uLOIIiIiIiIig/uLi4uLi4uDiCIiIiIiIoP7u7u7u7u7s4giIiIiIi - KD//////////OIIiIiIiIigzMzMzMzMzMziIiIiIiIiIiIiIiIiIiIiIIiIiIiIiIiIiIiIiIiIiIv// - ////////AAAAAHv4AA57+AAOe/gADnv4AA57+AAOe/gADgAAAA4AAAAOAAAADgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/4AAB/+AAAf/gAAH/4AAB/+AAAf/gAAAAA - AAD/////KAAAABAAAAAgAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACA - gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAiIiIiIiIiIoiI - iIiIiIiIgigijMzMyCiCKCKM5mbIKIiIiIzu7sgogRERjMzMyCiB2ZGIiIiIiIHZkYMzMzM4gdmRg/u7 - uziB3dGD+7u7OIEREYP7u7s4iIiIg/u7uziCIiKD+7u7OIIiIoP///84giIigzMzMziIiIiIiIiIiP// - KCIAACjObALm5mwCIigAAoiIAAKIzgAAbm4AACIoAAAREQAAGM4AAO7uAAAiKHwAWVl8ABjMfADMzAAA - IigoAAAAIAAAAEAAAAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA - AACAAIAAgIAAAICAgADA3MAA8MqmAKo/KgD/PyoAAF8qAFVfKgCqXyoA/18qAAB/KgBVfyoAqn8qAP9/ - KgAAnyoAVZ8qAKqfKgD/nyoAAL8qAFW/KgCqvyoA/78qAADfKgBV3yoAqt8qAP/fKgAA/yoAVf8qAKr/ - KgD//yoAAABVAFUAVQCqAFUA/wBVAAAfVQBVH1UAqh9VAP8fVQAAP1UAVT9VAKo/VQD/P1UAAF9VAFVf - VQCqX1UA/19VAAB/VQBVf1UAqn9VAP9/VQAAn1UAVZ9VAKqfVQD/n1UAAL9VAFW/VQCqv1UA/79VAADf - VQBV31UAqt9VAP/fVQAA/1UAVf9VAKr/VQD//1UAAAB/AFUAfwCqAH8A/wB/AAAffwBVH38Aqh9/AP8f - fwAAP38AVT9/AKo/fwD/P38AAF9/AFVffwCqX38A/19/AAB/fwBVf38Aqn9/AP9/fwAAn38AVZ9/AKqf - fwD/n38AAL9/AFW/fwCqv38A/79/AADffwBV338Aqt9/AP/ffwAA/38AVf9/AKr/fwD//38AAACqAFUA - qgCqAKoA/wCqAAAfqgBVH6oAqh+qAP8fqgAAP6oAVT+qAKo/qgD/P6oAAF+qAFVfqgCqX6oA/1+qAAB/ - qgBVf6oAqn+qAP9/qgAAn6oAVZ+qAKqfqgD/n6oAAL+qAFW/qgCqv6oA/7+qAADfqgBV36oAqt+qAP/f - qgAA/6oAVf+qAKr/qgD//6oAAADUAFUA1ACqANQA/wDUAAAf1ABVH9QAqh/UAP8f1AAAP9QAVT/UAKo/ - 1AD/P9QAAF/UAFVf1ACqX9QA/1/UAAB/1ABVf9QAqn/UAP9/1AAAn9QAVZ/UAKqf1AD/n9QAAL/UAFW/ - 1ACqv9QA/7/UAADf1ABV39QAqt/UAP/f1AAA/9QAVf/UAKr/1AD//9QAVQD/AKoA/wAAH/8AVR//AKof - /wD/H/8AAD//AFU//wCqP/8A/z//AABf/wBVX/8Aql//AP9f/wAAf/8AVX//AKp//wD/f/8AAJ//AFWf - /wCqn/8A/5//AAC//wBVv/8Aqr//AP+//wAA3/8AVd//AKrf/wD/3/8AVf//AKr//wD/zMwA/8z/AP// - MwD//2YA//+ZAP//zAAAfwAAVX8AAKp/AAD/fwAAAJ8AAFWfAACqnwAA/58AAAC/AABVvwAAqr8AAP+/ - AAAA3wAAVd8AAKrfAAD/3wAAVf8AAKr/AAAAACoAVQAqAKoAKgD/ACoAAB8qAFUfKgCqHyoA/x8qAAA/ - KgBVPyoA8Pv/AKSgoACAgIAAAAD/AAD/AAAA//8A/wAAAAAAAAD//wAA////AP39/f39/f39/f39/f39 - /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 - /f39/f39/f39/f39/f39/f39/f39/f39qoYIqoYIhqoIqgiqCaoIqgiqhqqGhoYIhoYIqv39/f0I/f39 - /ar9/f39/YY2Ng4yDg4ODgoOCgoKCgqG/f39/Yb9/f39CP39/f39qjY7Ozs3Nzc3NjMSMjIOCqr9/f39 - qv39/f2G/f39/f0IN19fOzs3Nzc3NjcODg4KCP39/f0I/f39/ar9/f39/ao6X19fXzs7Ozc3NzY3NgqG - /f39/Yb9/f39CP39/f39hl9jY19jX187Ozs7Nzc3Dqr9/f39qv39/f2G/f39/f0IOodjh19jX19fXztf - OzcOCP39/f0ICAmqCAiqCKoICapfCYdjh2ODY19fXzs7Ow6q/f39/QhITEwoSCUoKSQoqmMJCYcJCWNj - Y2NfY19fNgj9/f39qkyZmZmYmJRwlCmqX19fXl9fX186WzY3Njc2gv39/f0JcJ2dmZmZlJmUJAmqCaoJ - hggIqggICKoIqggI/f39/YZwnp2dnZmZmJVMqnx8fHx8fFR8VHhUVFRUVKr9/f39CHChoZ2dnZ2ZmUwJ - fKSkxqSkxqSkpKSkpKBUCP39/f2qcKLDoqGdnZ2ZTKp8ysakxqSkxqSkxqSkpFSq/f39/QiUpqbDoqHE - nZ1Mq3ykqMakyqSkxqSkpKSkVAj9/f39hpTIyKbHoqGhoXAIfMrLpMqkxqSkxqTGpKRUqv39/f0IlMym - yKbIpcShcAh8y6jKpMqkxsqkpKSkxlQI/f39/aqUzMzMyKbIpqJwqnzLy8qpxsqkpMakxqSkeAj9/f39 - CJSUlJSUlJSUlJQJgMupy8qpysqkyqSkxqRUqv39/f2GCKoIqgiqCKoIhgigrcvPqcuoy8qkxsqkxnyG - /f39/ar9/f39/f39/f39qnzPz6nLy8uoyqnKpKTKVAj9/f39CP39/f39/f39/f0IfNDPz8+py8upyqjG - yqR8hv39/f2G/f39/f39/f39/Qik0K7P0M+ty8vLy6jKpXyq/f39/ar9/f39/f39/f39CHzQ09Ctz8/P - qcupy6jKeAj9/f39CP39/f39/f39/f2qoNPQ0NPQ0M/Qz8vLy6l8CP39/f2G/f39/f39/f39/QmkfKR8 - oHx8fHx8fHx8fHyG/f39/aoIqgiqCKoIqgiqCKoIqgiqCKoIqgiqCKoIqgj9/f39/f39/f39/f39/f39 - /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3///////////// - ///AAAAD3vgAA974AAPe+AAD3vgAA974AAPe+AADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA - AAPAAAADwAAAA8AAAAPAAAADwAAAA9/4AAPf+AAD3/gAA9/4AAPf+AAD3/gAA8AAAAP//////////ygA - AAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAA - gACAgAAAgICAAMDcwADwyqYAqj8qAP8/KgAAXyoAVV8qAKpfKgD/XyoAAH8qAFV/KgCqfyoA/38qAACf - KgBVnyoAqp8qAP+fKgAAvyoAVb8qAKq/KgD/vyoAAN8qAFXfKgCq3yoA/98qAAD/KgBV/yoAqv8qAP// - KgAAAFUAVQBVAKoAVQD/AFUAAB9VAFUfVQCqH1UA/x9VAAA/VQBVP1UAqj9VAP8/VQAAX1UAVV9VAKpf - VQD/X1UAAH9VAFV/VQCqf1UA/39VAACfVQBVn1UAqp9VAP+fVQAAv1UAVb9VAKq/VQD/v1UAAN9VAFXf - VQCq31UA/99VAAD/VQBV/1UAqv9VAP//VQAAAH8AVQB/AKoAfwD/AH8AAB9/AFUffwCqH38A/x9/AAA/ - fwBVP38Aqj9/AP8/fwAAX38AVV9/AKpffwD/X38AAH9/AFV/fwCqf38A/39/AACffwBVn38Aqp9/AP+f - fwAAv38AVb9/AKq/fwD/v38AAN9/AFXffwCq338A/99/AAD/fwBV/38Aqv9/AP//fwAAAKoAVQCqAKoA - qgD/AKoAAB+qAFUfqgCqH6oA/x+qAAA/qgBVP6oAqj+qAP8/qgAAX6oAVV+qAKpfqgD/X6oAAH+qAFV/ - qgCqf6oA/3+qAACfqgBVn6oAqp+qAP+fqgAAv6oAVb+qAKq/qgD/v6oAAN+qAFXfqgCq36oA/9+qAAD/ - qgBV/6oAqv+qAP//qgAAANQAVQDUAKoA1AD/ANQAAB/UAFUf1ACqH9QA/x/UAAA/1ABVP9QAqj/UAP8/ - 1AAAX9QAVV/UAKpf1AD/X9QAAH/UAFV/1ACqf9QA/3/UAACf1ABVn9QAqp/UAP+f1AAAv9QAVb/UAKq/ - 1AD/v9QAAN/UAFXf1ACq39QA/9/UAAD/1ABV/9QAqv/UAP//1ABVAP8AqgD/AAAf/wBVH/8Aqh//AP8f - /wAAP/8AVT//AKo//wD/P/8AAF//AFVf/wCqX/8A/1//AAB//wBVf/8Aqn//AP9//wAAn/8AVZ//AKqf - /wD/n/8AAL//AFW//wCqv/8A/7//AADf/wBV3/8Aqt//AP/f/wBV//8Aqv//AP/MzAD/zP8A//8zAP// - ZgD//5kA///MAAB/AABVfwAAqn8AAP9/AAAAnwAAVZ8AAKqfAAD/nwAAAL8AAFW/AACqvwAA/78AAADf - AABV3wAAqt8AAP/fAABV/wAAqv8AAAAAKgBVACoAqgAqAP8AKgAAHyoAVR8qAKofKgD/HyoAAD8qAFU/ - KgDw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAAAAAAAP//AAD///8A/f39/f39/f39/f39/f39/f0I - hgiqCKoICKoICKaGCP39qv39hv2GNg4ODjII/ar9/Yb9/ar9qjdjXzsOCP2G/f0IhquGCAleCWNfNob9 - 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 - bv+3d0n/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/FRqE/0dN1v8/RNL/Nz3Q/y40zv8nLcz/ISfK/xwh - yf8WHMf/GxJh/8K/wf/gr3r/4K96/+Cvev/gr3r/3614/9yqdf/apnL/16Nw/9Sea//Rmmj/zZZk/8qR - X//GjFz/w4dW/7+CUv/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8SHZD/WF3a/05U1/9FS9X/PUPS/zU7 - 0P8uM83/JyzL/yAmyf8aFGn/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/ - wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/xAfnP9obt7/YGTc/1Zb - 2f9NU9f/RUrU/ztB0v80OdD/LDHO/xgWcv/Cv8H/Dn+n/w18pP8MeqH/DHie/wt1m/8Kc5j/CXGV/wlv - k/8JbJD/CGqN/wdpi/8HZ4j/BmWH/wZkhf8GYoP/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/DiKp/3l+ - 4/9vdeH/Zmze/11i2/9UWtn/S1HW/0NI1P86P9H/Fhh9/8K/wf8Ogar/Barp/wGo6P8Apef/AKPm/wCi - 5P8An+L/AJ7h/wCd3/8AnN7/AJnc/wCY2/8AmNn/AJbX/wZjhP/Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/ - wf8MJbX/iI7n/4CF5v93fOP/bnPg/2Vr3f9bYdv/UljY/0lP1v8UGoj/wr/B/w+Erf8Lrur/Bqvq/wOo - 6f8Apuf/AKTm/wCi5f8AoOT/AJ/i/wCd4f8AnN//AJrd/wCZ2/8AmNr/BmWH/8K/wf8AAAAAAAAAAAAA - AAAAAAAAwr/B/wkowP+WnOz/jpTq/4aL6P9+hOX/dXri/2xx4P9jaN3/WV/b/xEek//Cv8H/EIaw/xay - 7P8Or+z/Cavr/wWq6v8Bp+j/AKbn/wCj5f8AoeT/AJ/j/wCe4f8AnOD/AJve/wCa3f8HZ4n/wr/B/wAA - AAAAAAAAAAAAAAAAAADCv8H/CCrK/6Ko7/+coe7/lZrr/42T6f+Fiub/fIHl/3N54v9rcN//ECGg/8K/ - wf8QiLP/I7nu/xq07f8Ssez/C63r/war6v8Cqen/AKbo/wCk5v8AouX/AKHk/wCf4f8AneH/AJzf/who - i//Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf8GLNP/q7Hy/6as8P+hpu//mp/u/5OY6/+LkOj/g4nm/3qA - 5P8NI6z/wr/B/xCKtv8xvvD/J7rv/x627f8Vsuz/Dq/s/wmr6/8Equn/Aafo/wCl5/8Ao+X/AKHk/wCf - 4v8AnuH/CGqO/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wUu2/+vtPP/r7Tz/6qv8v+mq/D/oKXv/5me - 7f+Sl+v/io/p/wsmt//Cv8H/Eo24/0HF8f82wfD/LLzv/yK47v8atO3/EbHs/wut6/8Gq+r/A6np/wCm - 6P8Apeb/AKLl/wCh5P8IbJD/wr/B/wAAAAAAAAAAAAAAAAAAAADCv8H/BC/h/wQv3/8FL9z/BS3Z/wYt - 1v8GLNL/ByvP/wgqy/8IKcb/CSnC/8K/wf8Sjrv/Uszy/0fH8f87w/H/Mb7v/ye67/8et+7/FbPt/w6v - 6/8IrOv/BKnp/wGo6P8Apef/AKPl/wluk//Cv8H/AAAAAAAAAAAAAAAAAAAAAMK/wf/Cv8H/wr/B/8K/ - wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/8K/wf/Cv8H/wr/B/xKRvf9j0/P/WM/z/0zK8f9BxfH/N8Hw/yy8 - 7/8iuO7/GbTt/xGx7P8Lruv/Bqrq/wOo6f8Apuf/CnGV/8K/wf8AAAAAAAAAAAAAAAAAAAAAwr/B/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCv8H/E5LA/3Ta8/9q1fP/XtHz/1LM - 8v9Hx/H/O8Pw/zG+7/8nu+//Hrbt/xay7f8Or+v/CKzq/wSq6f8Kc5j/wr/B/wAAAAAAAAAAAAAAAAAA - AADCv8H/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMK/wf8UlMH/hOD1/3rc - 9f9v2PP/ZNTy/1jO8v9NyvH/Qsbx/zbB8P8svO//I7ju/xm07f8SsOz/C67r/wt2m//Cv8H/AAAAAAAA - AAAAAAAAAAAAAMK/wf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwr/B/xSW - w/+T5vb/iuL1/3/e9P912vT/adbz/13R8/9SzPL/R8jx/zzD8P8xvvD/J7rv/x627v8Vsuz/C3ie/8K/ - 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 - - - - NoControl - - - 20, 20, 20, 20 - - - Live patching failed - - - RebootHostsDialog - - - XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - \ No newline at end of file diff --git a/XenAdmin/Dialogs/RebootHostsDialog.zh-CN.resx b/XenAdmin/Dialogs/RebootHostsDialog.zh-CN.resx deleted file mode 100644 index 7e4968e97..000000000 --- a/XenAdmin/Dialogs/RebootHostsDialog.zh-CN.resx +++ /dev/null @@ -1,903 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Segoe UI, 9pt - - - - NoControl - - - 3, 3 - - - 87, 27 - - - - 0 - - - 确定 - - - okButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - buttonsLayoutPanel - - - 0 - - - Segoe UI, 9pt - - - NoControl - - - 96, 3 - - - 87, 27 - - - 1 - - - 取消 - - - cancelButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - buttonsLayoutPanel - - - 1 - - - True - - - GrowAndShrink - - - 1 - - - True - - - GrowAndShrink - - - 4 - - - True - - - Fill - - - Segoe UI, 9pt - - - NoControl - - - 11, 8 - - - 84, 29 - - - 1 - - - 许可证服务器(&L): - - - MiddleLeft - - - licenseServerNameLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - licenseServerLayoutPanel - - - 0 - - - Segoe UI, 9pt - - - 101, 11 - - - 304, 23 - - - 2 - - - licenseServerNameTextBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - licenseServerLayoutPanel - - - 1 - - - Segoe UI, 9pt - - - 427, 11 - - - 63, 23 - - - 4 - - - 27000 - - - licenseServerPortTextBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - licenseServerLayoutPanel - - - 2 - - - None - - - True - - - Segoe UI, 9pt - - - NoControl - - - 411, 15 - - - 10, 15 - - - 3 - - - : - - - colonLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - licenseServerLayoutPanel - - - 3 - - - Fill - - - Segoe UI, 9pt - - - 11, 41 - - - 8, 8, 8, 8 - - - 1 - - - 501, 45 - - - 1 - - - licenseServerLayoutPanel - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mainLayoutPanel - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="licenseServerNameLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="licenseServerNameTextBox" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="licenseServerPortTextBox" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="colonLabel" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> - - - Fill - - - Segoe UI, 9pt - - - NoControl - - - 11, 8 - - - 501, 30 - - - 0 - - - 要将新许可证分配给选定服务器,请输入详细信息,然后单击“确定” - - - mainLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mainLayoutPanel - - - 1 - - - True - - - GrowAndShrink - - - True - - - GrowAndShrink - - - True - - - Segoe UI, 9pt - - - NoControl - - - 3, 3 - - - 167, 19 - - - 0 - - - [XenServer product] Per-Socket(&S) - - - perSocketRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 0 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 3, 28 - - - 203, 19 - - - 1 - - - [XenServer product] Advanced Edition(&A) - - - advancedRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 1 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 3, 53 - - - 202, 19 - - - 2 - - - [XenServer product] Enterprise Edition(&E) - - - enterpriseRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 2 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 3, 78 - - - 198, 19 - - - 3 - - - [XenServer product] Platinum Edition(&P) - - - platinumRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 3 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 3, 103 - - - 191, 19 - - - 4 - - - [XenServer product] for XenDesktop(&X) - - - xenDesktopEnterpriseRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 4 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 7, 143 - - - 214, 22 - - - 5 - - - [XenServer product] Enterprise Per-Socket(&N) - - - enterprisePerSocketRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 5 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 7, 171 - - - 186, 22 - - - 6 - - - [XenServer product] Enterprise Per-User(&E) - - - False - - - enterprisePerUserRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 6 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 7, 199 - - - 134, 22 - - - 10 - - - XenApp/XenDesktop Platinum(&P) - - - desktopPlusRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 7 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 7, 227 - - - 126, 22 - - - 9 - - - XenApp/XenDesktop(&D) - - - desktopRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 8 - - - True - - - Segoe UI, 9pt - - - NoControl - - - 7, 255 - - - 192, 22 - - - 7 - - - [XenServer product] Standard Per-Socket(&S) - - - standardPerSocketRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionLayoutPanel - - - 9 - - - Fill - - - TopDown - - - Segoe UI, 9pt - - - 3, 19 - - - 4, 0, 4, 4 - - - 495, 125 - - - 0 - - - editionLayoutPanel - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - editionsGroupBox - - - 0 - - - Fill - - - Segoe UI, 9pt - - - 11, 92 - - - 501, 147 - - - 2 - - - 许可证 - - - editionsGroupBox - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mainLayoutPanel - - - 2 - - - True - - - GrowAndShrink - - - Right - - - Segoe UI, 9pt - - - 326, 250 - - - 3, 8, 3, 3 - - - 186, 33 - - - 3 - - - buttonsLayoutPanel - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - mainLayoutPanel - - - 3 - - - Fill - - - Segoe UI, 9pt - - - 0, 0 - - - 8, 8, 8, 8 - - - 6 - - - 523, 292 - - - 0 - - - mainLayoutPanel - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="licenseServerLayoutPanel" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="mainLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="editionsGroupBox" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="buttonsLayoutPanel" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,Absolute,20" /></TableLayoutSettings> - - - True - - - 96, 96 - - - True - - - GrowAndShrink - - - 523, 292 - - - Segoe UI, 9pt - - - 应用许可证 - - - RebootVmsDialog - - - XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PatchingPage.cs b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PatchingPage.cs index 82ebba9b5..18a8b3aaf 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PatchingPage.cs +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PatchingPage.cs @@ -30,16 +30,13 @@ */ using System; -using System.Collections; using System.Collections.Generic; using System.ComponentModel; -using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Reflection; using System.Threading; -using System.Windows.Forms; using log4net; using XenAdmin.Controls; using XenAdmin.Diagnostics.Problems; @@ -47,7 +44,6 @@ using XenAdmin.Dialogs; using XenAdmin.Wizards.PatchingWizard.PlanActions; using XenAPI; using XenAdmin.Actions; -using XenAdmin.Core; namespace XenAdmin.Wizards.PatchingWizard { @@ -122,8 +118,6 @@ namespace XenAdmin.Wizards.PatchingWizard return _cancelEnabled; } - private bool _livePatchingFailed = true; // TODO: default false, set properly as needed - public override void PageLoaded(PageLoadedDirection direction) { base.PageLoaded(direction); @@ -316,36 +310,6 @@ namespace XenAdmin.Wizards.PatchingWizard _thisPageHasBeenCompleted = true; } - /// - /// Simple action completed callback for the reboot VMs action if live patching fails - /// - /// - /// - private void actionsWorker_RunRebootWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) - { - if (!e.Cancelled) - { - Exception exception = e.Result as Exception; - if (exception != null) - { - FinishedWithErrors(exception); - - } - else - { - // Don't rerun the live patching check, we've now rebooted - FinishedSuccessfully(false); - } - - progressBar.Value = 100; - _cancelEnabled = false; - _nextEnabled = true; - } - OnPageUpdated(); - _thisPageHasBeenCompleted = true; - } - - private List CompileActionList(Host host, Pool_patch patch) { if (SelectedUpdateType == UpdateType.NewSuppPack) @@ -485,31 +449,21 @@ namespace XenAdmin.Wizards.PatchingWizard panel1.Visible = true; } - // So we can still use a 0 argument delegate - private void FinishedSuccessfully() - { - FinishedSuccessfully(true); - } - - // TODO: actual behavior, for now just say all hosts have to test private bool LivePatchingFailedForHost(Host host) { - return true; + return host.patches_requiring_reboot.Any(); } - private void FinishedSuccessfully(bool checkLivePatching) + private void FinishedSuccessfully() { labelTitle.Text = string.Format(Messages.UPDATE_WAS_SUCCESSFULLY_INSTALLED, GetUpdateName()); pictureBox1.Image = null; labelError.Text = Messages.CLOSE_WIZARD_CLICK_FINISH; - if (!checkLivePatching) - { - return; - } - // Live patching failed is per-host var livePatchingFailedHosts = new List(); + + // TODO: need to iterate through machines expecting to live patch, not all hosts (Gabor's change) foreach (var host in SelectedMasters) { if (LivePatchingFailedForHost(host)) @@ -523,88 +477,31 @@ namespace XenAdmin.Wizards.PatchingWizard return; } - if (livePatchingFailedHosts.Count == 1) + LivePatchingFailed(livePatchingFailedHosts); + } + + private void LivePatchingFailed(IList hosts) + { + string dialogMessage; + if (hosts.Count == 1) { - LivePatchingFailed_OneHost(livePatchingFailedHosts[0]); + dialogMessage = string.Format(Messages.LIVE_PATCHING_FAILED_ONE_HOST, hosts[0]); } else { - LivePatchingFailed_MultipleHosts(livePatchingFailedHosts, Patch); + dialogMessage = string.Format(Messages.LIVE_PATCHING_FAILED_MULTI_HOST, + string.Join(Messages.LIST_SEPARATOR, hosts.Select(s => s.ToString().SurroundWith('\'')))); } - } - private void LivePatchingFailed_OneHost(Host host) - { using (var dlg = new ThreeButtonDialog( new ThreeButtonDialog.Details(SystemIcons.Warning, - string.Format( - "Live patching failed for host {0} and it will need to be restarted. Would you like to do that now?", - this.SelectedMasters[0]), "Live patching failed"), - new ThreeButtonDialog.TBDButton("Yes, reboot", DialogResult.Yes, ThreeButtonDialog.ButtonType.ACCEPT, - true), - ThreeButtonDialog.ButtonNo)) + dialogMessage, Messages.XENCENTER), + ThreeButtonDialog.ButtonOK)) { - var dialogResult = dlg.ShowDialog(Program.MainWindow); - if (dialogResult.Equals(DialogResult.Yes)) - { - LivePatchingFailed_RestartHost(host); - } - - Debug.WriteLine(dialogResult); + dlg.ShowDialog(Program.MainWindow); } } - private void LivePatchingFailed_MultipleHosts(IList hosts, Pool_patch patch) - { - using (var dlg = new RebootHostsDialog(hosts, patch)) - { - var dialogResult = dlg.ShowDialog(Program.MainWindow); - if (dialogResult.Equals(DialogResult.Yes)) - { - var selectedHosts = dlg.GetSelectedHosts().ToList(); - if (!selectedHosts.Any()) - { - return; - } - - LivePatchingFailed_RestartHosts(selectedHosts); - } - } - } - - private void LivePatchingFailed_RestartHost(Host host) - { - LivePatchingFailed_RestartHosts(new List { host }); - } - - private void LivePatchingFailed_RestartHosts(IEnumerable hosts) - { - // For now re-use the text log + progress bar (probably should use its own dialog?) - progressBar.Value = 0; - textBoxLog.Text += "\r\nLive patching failed\r\n"; // TODO: localise - _nextEnabled = false; - _cancelEnabled = true; - _thisPageHasBeenCompleted = false; - - var actions = new List(); - actionsWorker = new BackgroundWorker(); - foreach (var host in hosts) - { - var runningVMs = RunningVMs(host, Patch); - - actions.Add(new EvacuateHostPlanAction(host)); - actions.Add(new RebootHostPlanAction(host)); - actions.Add(new BringBabiesBackAction(runningVMs, host, false)); - } - - actionsWorker.DoWork += PatchingWizardAutomaticPatchWork; - actionsWorker.WorkerReportsProgress = true; - actionsWorker.ProgressChanged += actionsWorker_ProgressChanged; - actionsWorker.RunWorkerCompleted += actionsWorker_RunRebootWorkerCompleted; - actionsWorker.WorkerSupportsCancellation = true; - actionsWorker.RunWorkerAsync(actions); - } - private string GetUpdateName() { if (Patch != null) diff --git a/XenAdmin/XenAdmin.csproj b/XenAdmin/XenAdmin.csproj index 1733f5bbb..dc0352d7b 100644 --- a/XenAdmin/XenAdmin.csproj +++ b/XenAdmin/XenAdmin.csproj @@ -219,12 +219,6 @@ - - Form - - - RebootHostsDialog.cs - @@ -1423,16 +1417,6 @@ ThinProvisioningParametersControl.cs - - RebootHostsDialog.cs - - - RebootHostsDialog.cs - Designer - - - RebootHostsDialog.cs - Designer CommandErrorDialog.cs diff --git a/XenModel/Messages.Designer.cs b/XenModel/Messages.Designer.cs index 1e8206cc0..46105219b 100755 --- a/XenModel/Messages.Designer.cs +++ b/XenModel/Messages.Designer.cs @@ -19713,6 +19713,24 @@ namespace XenAdmin { } } + /// + /// Looks up a localized string similar to Live patching failed for servers {0}. To apply the patch, please put the servers into maintenance mode and reboot them.. + /// + public static string LIVE_PATCHING_FAILED_MULTI_HOST { + get { + return ResourceManager.GetString("LIVE_PATCHING_FAILED_MULTI_HOST", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Live patching failed for server ‘{0}’. To apply the patch, please put the server into maintenance mode and reboot it.. + /// + public static string LIVE_PATCHING_FAILED_ONE_HOST { + get { + return ResourceManager.GetString("LIVE_PATCHING_FAILED_ONE_HOST", resourceCulture); + } + } + /// /// Looks up a localized string similar to Loading '{0}'.... /// diff --git a/XenModel/Messages.resx b/XenModel/Messages.resx index aa9c88363..9aa23ea8e 100755 --- a/XenModel/Messages.resx +++ b/XenModel/Messages.resx @@ -6880,6 +6880,12 @@ Standard features only Live Patching + + Live patching failed for servers {0}. To apply the patch, please put the servers into maintenance mode and reboot them. + + + Live patching failed for server ‘{0}’. To apply the patch, please put the server into maintenance mode and reboot it. + Loading '{0}'... diff --git a/XenModel/StringExtensions.cs b/XenModel/StringExtensions.cs index f7ae7d1cf..0dfe02ef0 100644 --- a/XenModel/StringExtensions.cs +++ b/XenModel/StringExtensions.cs @@ -99,5 +99,21 @@ namespace XenAdmin { return s == null ? null : s.Replace("\"", "\"\""); } + + /// + /// Surround a string with a given character + /// + /// + /// + /// + public static string SurroundWith(this string s, char c) + { + if (s == null) + { + return null; + } + + return c + s + c; + } } }