diff --git a/.gitignore b/.gitignore index 8877d7798..db13c6ad6 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,7 @@ dotNetFx40_Full_setup/* packages/* !packages/DOTNET_BUILD_LOCATION !packages/DOTNET_BUILD_LOCATION_CTXSIGN +!packages/download_packages.ps1 XenOvfApi/External Tools/* _ReSharper.*/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..d3af8a6b7 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,5 @@ +language: c +script: + - bash ./devtools/copyrightcheck/copyrightcheck.sh + - bash ./devtools/i18ncheck/i18ncheck.sh + - bash ./devtools/spellcheck/spellcheck.sh \ No newline at end of file diff --git a/XenAdmin/HomePage.ja.mht b/Branding/HomePage.ja.mht similarity index 100% rename from XenAdmin/HomePage.ja.mht rename to Branding/HomePage.ja.mht diff --git a/XenAdmin/HomePage.mht b/Branding/HomePage.mht similarity index 100% rename from XenAdmin/HomePage.mht rename to Branding/HomePage.mht diff --git a/XenAdmin/HomePage.zh-CN.mht b/Branding/HomePage.zh-CN.mht similarity index 100% rename from XenAdmin/HomePage.zh-CN.mht rename to Branding/HomePage.zh-CN.mht diff --git a/XenAdmin/HomePage/css/ie.css b/Branding/HomePage/css/ie.css similarity index 100% rename from XenAdmin/HomePage/css/ie.css rename to Branding/HomePage/css/ie.css diff --git a/XenAdmin/HomePage/css/print.css b/Branding/HomePage/css/print.css similarity index 100% rename from XenAdmin/HomePage/css/print.css rename to Branding/HomePage/css/print.css diff --git a/XenAdmin/HomePage/css/screen.css b/Branding/HomePage/css/screen.css similarity index 100% rename from XenAdmin/HomePage/css/screen.css rename to Branding/HomePage/css/screen.css diff --git a/XenAdmin/HomePage/css/theme.css b/Branding/HomePage/css/theme.css similarity index 100% rename from XenAdmin/HomePage/css/theme.css rename to Branding/HomePage/css/theme.css diff --git a/XenAdmin/HomePage/index.html b/Branding/HomePage/index.html similarity index 100% rename from XenAdmin/HomePage/index.html rename to Branding/HomePage/index.html diff --git a/XenAdmin/HomePage/index.ja.html b/Branding/HomePage/index.ja.html similarity index 100% rename from XenAdmin/HomePage/index.ja.html rename to Branding/HomePage/index.ja.html diff --git a/XenAdmin/HomePage/index.zh-CN.html b/Branding/HomePage/index.zh-CN.html similarity index 100% rename from XenAdmin/HomePage/index.zh-CN.html rename to Branding/HomePage/index.zh-CN.html diff --git a/XenAdmin/HomePage/media/grid.png b/Branding/HomePage/media/grid.png similarity index 100% rename from XenAdmin/HomePage/media/grid.png rename to Branding/HomePage/media/grid.png diff --git a/XenAdmin/HomePage/media/icons/cx-cloudServerGraphic.png b/Branding/HomePage/media/icons/cx-cloudServerGraphic.png similarity index 100% rename from XenAdmin/HomePage/media/icons/cx-cloudServerGraphic.png rename to Branding/HomePage/media/icons/cx-cloudServerGraphic.png diff --git a/XenAdmin/HomePage/media/icons/cx-icon-addServer.png b/Branding/HomePage/media/icons/cx-icon-addServer.png similarity index 100% rename from XenAdmin/HomePage/media/icons/cx-icon-addServer.png rename to Branding/HomePage/media/icons/cx-icon-addServer.png diff --git a/XenAdmin/HomePage/media/icons/cx-icon-generic-doc.png b/Branding/HomePage/media/icons/cx-icon-generic-doc.png similarity index 100% rename from XenAdmin/HomePage/media/icons/cx-icon-generic-doc.png rename to Branding/HomePage/media/icons/cx-icon-generic-doc.png diff --git a/XenAdmin/HomePage/media/icons/cx-icon-purchaseSupport.png b/Branding/HomePage/media/icons/cx-icon-purchaseSupport.png similarity index 100% rename from XenAdmin/HomePage/media/icons/cx-icon-purchaseSupport.png rename to Branding/HomePage/media/icons/cx-icon-purchaseSupport.png diff --git a/XenAdmin/HomePage/media/icons/cx-icon-regServPool.png b/Branding/HomePage/media/icons/cx-icon-regServPool.png similarity index 100% rename from XenAdmin/HomePage/media/icons/cx-icon-regServPool.png rename to Branding/HomePage/media/icons/cx-icon-regServPool.png diff --git a/XenAdmin/HomePage/media/icons/cx-icon-tryVirtualization.png b/Branding/HomePage/media/icons/cx-icon-tryVirtualization.png similarity index 100% rename from XenAdmin/HomePage/media/icons/cx-icon-tryVirtualization.png rename to Branding/HomePage/media/icons/cx-icon-tryVirtualization.png diff --git a/XenAdmin/HomePage/media/logos/cx-logo-citrixHypervisor.png b/Branding/HomePage/media/logos/cx-logo-citrixHypervisor.png similarity index 100% rename from XenAdmin/HomePage/media/logos/cx-logo-citrixHypervisor.png rename to Branding/HomePage/media/logos/cx-logo-citrixHypervisor.png diff --git a/Branding/branding.sh b/Branding/branding.sh index 59ccc13c3..e43f5e19c 100755 --- a/Branding/branding.sh +++ b/Branding/branding.sh @@ -53,7 +53,7 @@ do fi done -for hfx in RPU004 +for hfx in RPU004 RPU005 do if [ -d "${hfx}" ]; then latest=$(ls ${hfx} | /usr/bin/sort -n | tail -n 1) @@ -101,6 +101,7 @@ BRANDING_XC_PRODUCT_6_5_VERSION=6.5 BRANDING_XC_PRODUCT_7_0_VERSION=7.0 BRANDING_XC_PRODUCT_7_1_2_VERSION=7.1.2 BRANDING_XC_PRODUCT_8_0_VERSION=8.0 +BRANDING_XC_PRODUCT_8_1_VERSION=8.1 BRANDING_XENSERVER_UPDATE_URL="https://updates.xensource.com/XenServer/updates.xml" BRANDING_HIDDEN_FEATURES="" BRANDING_ADDITIONAL_FEATURES="" diff --git a/CFUValidator/CFUValidator.cs b/CFUValidator/CFUValidator.cs index a3e366d0d..f837e91cc 100644 --- a/CFUValidator/CFUValidator.cs +++ b/CFUValidator/CFUValidator.cs @@ -120,6 +120,10 @@ namespace CFUValidator Status = "Determining XenServer update required..."; var updateAlerts = XenAdmin.Core.Updates.NewXenServerVersionAlerts(xenServerVersions).Where(alert => !alert.CanIgnore).ToList(); + HfxEligibilityValidator hfxEligibilityValidator = new HfxEligibilityValidator(xenServerVersions); + Status = "Running hotfix eligibility check..."; + RunHfxEligibilityValidator(hfxEligibilityValidator); + Status = "Determining patches required..."; var patchAlerts = XenAdmin.Core.Updates.NewXenServerPatchAlerts(xenServerVersions, xenServerPatches).Where(alert => !alert.CanIgnore).ToList(); @@ -133,9 +137,9 @@ namespace CFUValidator Status = "Running patch check(s), this may take some time..."; RunValidators(validators); - + Status = "Generating summary..."; - GeneratePatchSummary(patchAlerts, validators, updateAlerts, xcupdateAlerts); + GeneratePatchSummary(patchAlerts, validators, hfxEligibilityValidator, updateAlerts, xcupdateAlerts); } private void CheckProvidedVersionNumber(List xenServerVersions) @@ -190,18 +194,25 @@ namespace CFUValidator Status = "Validator checks complete"; } + private void RunHfxEligibilityValidator(HfxEligibilityValidator validator) + { + validator.Validate(); + Status = "Hotfix Eligibility Validator check complete"; + } + private void validator_StatusChanged(object sender, EventArgs e) { Status = sender as string; } - private void GeneratePatchSummary(List alerts, List validators, + private void GeneratePatchSummary(List alerts, List validators, HfxEligibilityValidator hfxEligibilityValidator, List updateAlerts, List xcupdateAlerts) { OuputComponent oc = new OutputTextOuputComponent(XmlLocation, ServerVersion); XenCenterUpdateDecorator xcud = new XenCenterUpdateDecorator(oc, xcupdateAlerts); XenServerUpdateDecorator xsud = new XenServerUpdateDecorator(xcud, updateAlerts); - PatchAlertDecorator pad = new PatchAlertDecorator(xsud, alerts); + HfxEligibilityValidatorDecorator hevd = new HfxEligibilityValidatorDecorator(xsud, hfxEligibilityValidator, "Hotfix eligibility check:"); + PatchAlertDecorator pad = new PatchAlertDecorator(hevd, alerts); AlertFeatureValidatorDecorator afdCoreFields = new AlertFeatureValidatorDecorator(pad, validators.First(v => v is CorePatchDetailsValidator), "Core fields in patch checks:"); @@ -212,7 +223,7 @@ namespace CFUValidator validators.First(v => v is ZipContentsValidator), "Required patch zip content checks:"); - if(CheckHotfixContents) + if (CheckHotfixContents) Output = afdZipContents.Generate().Insert(0, Output).ToString(); else Output = afdPatchUrl.Generate().Insert(0, Output).ToString(); diff --git a/CFUValidator/CFUValidator.csproj b/CFUValidator/CFUValidator.csproj index 632c0b6ea..96ebf5818 100644 --- a/CFUValidator/CFUValidator.csproj +++ b/CFUValidator/CFUValidator.csproj @@ -38,6 +38,7 @@ prompt 4 false + true pdbonly @@ -75,6 +76,7 @@ + @@ -87,6 +89,7 @@ + diff --git a/XenAdminTests/MiscTests/HelpStringTests.cs b/CFUValidator/OutputDecorators/HfxEligibilityValidatorDecorator.cs similarity index 62% rename from XenAdminTests/MiscTests/HelpStringTests.cs rename to CFUValidator/OutputDecorators/HfxEligibilityValidatorDecorator.cs index 8de3d1be1..d79ec9fa3 100644 --- a/XenAdminTests/MiscTests/HelpStringTests.cs +++ b/CFUValidator/OutputDecorators/HfxEligibilityValidatorDecorator.cs @@ -30,23 +30,31 @@ */ using System; -using System.Collections.Generic; -using System.Linq; using System.Text; -using NUnit.Framework; -using XenCenterLib; +using CFUValidator.Validators; -namespace XenAdminTests.MiscTests +namespace CFUValidator.OutputDecorators { - [TestFixture, Category(TestCategories.UICategoryB)] - class HelpStringTests + class HfxEligibilityValidatorDecorator : Decorator { - [Test] - public void HelpStringDefaultCtorAndValueGetter() + private readonly string header; + private readonly HfxEligibilityValidator validator; + public HfxEligibilityValidatorDecorator(OuputComponent ouputComponent, HfxEligibilityValidator validator, string header) { - const string testString = "I'm helpful"; - HelpString hs = new HelpString(testString); - Assert.AreEqual(testString, hs.Value); + SetComponent(ouputComponent); + this.validator = validator; + this.header = header; + } + + public override StringBuilder Generate() + { + StringBuilder sb = base.Generate(); + sb.AppendLine(header); + if (validator.ErrorsFound) + validator.Results.ForEach(v => sb.AppendLine(v)); + else + sb.AppendLine("all OK"); + return sb.AppendLine(String.Empty); } } } diff --git a/CFUValidator/Validators/HfxEligibilityValidator.cs b/CFUValidator/Validators/HfxEligibilityValidator.cs new file mode 100644 index 000000000..e780cb03d --- /dev/null +++ b/CFUValidator/Validators/HfxEligibilityValidator.cs @@ -0,0 +1,72 @@ +/* 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 XenAdmin.Alerts; +using XenAdmin.Core; + +namespace CFUValidator.Validators +{ + class HfxEligibilityValidator + { + private List xsversions; + public List Results { get; set; } + + public HfxEligibilityValidator(List xsversions) + { + this.xsversions = xsversions; + Results = new List(); + } + + public void Validate() + { + foreach (XenServerVersion version in xsversions) + { + DateSanityCheck(version); + } + } + + private void DateSanityCheck(XenServerVersion version) + { + if (version.HotfixEligibility == hotfix_eligibility.none && version.EolDate == DateTime.MinValue) + Results.Add("Missing or wrong eol-date field on: " + version.Name); + if (version.HotfixEligibility == hotfix_eligibility.premium && version.HotfixEligibilityPremiumDate == DateTime.MinValue) + Results.Add("Missing or wrong hotfix-eligibility-premium-date field on: " + version.Name); + if (version.HotfixEligibility == hotfix_eligibility.cu && version.HotfixEligibilityNoneDate == DateTime.MinValue) + Results.Add("Missing or wrong hotfix-eligibility-none-date field on: " + version.Name); + if (version.HotfixEligibility == hotfix_eligibility.cu && version.HotfixEligibilityPremiumDate == DateTime.MinValue) + Results.Add("Missing or wrong hotfix-eligibility-premium-date field on: " + version.Name); + } + + public bool ErrorsFound { get { return Results.Count > 0; } } + } +} diff --git a/CommandLib/CommandLib.csproj b/CommandLib/CommandLib.csproj index 39dba16da..b23b45eb3 100644 --- a/CommandLib/CommandLib.csproj +++ b/CommandLib/CommandLib.csproj @@ -22,6 +22,7 @@ prompt 4 false + true pdbonly diff --git a/CommandLib/thinCLIProtocol.cs b/CommandLib/thinCLIProtocol.cs index 53a2bf2fc..f56a130b3 100644 --- a/CommandLib/thinCLIProtocol.cs +++ b/CommandLib/thinCLIProtocol.cs @@ -211,7 +211,7 @@ namespace CommandLib http.Close(); return doRPC(method, redirect, tCLIprotocol, headers); default: - tCLIprotocol.dGlobalError("Received an error message from the server doing an HTTP " + method + " " + uri.PathAndQuery + " : " + response); + tCLIprotocol.dGlobalError(string.Format("Received error code {0} from the server doing an HTTP {1}", code, method)); http.Close(); return null; } diff --git a/WixInstaller/XenCenter.wxs b/WixInstaller/XenCenter.wxs index b88664d18..3add74e68 100644 --- a/WixInstaller/XenCenter.wxs +++ b/WixInstaller/XenCenter.wxs @@ -72,7 +72,7 @@ - + @@ -155,6 +155,7 @@ + @@ -201,7 +202,7 @@ - + diff --git a/XenAdmin/Actions/GUIActions/DeleteAllAlertsAction.cs b/XenAdmin/Actions/GUIActions/DeleteAllAlertsAction.cs index 8e27ecb87..08ce61241 100644 --- a/XenAdmin/Actions/GUIActions/DeleteAllAlertsAction.cs +++ b/XenAdmin/Actions/GUIActions/DeleteAllAlertsAction.cs @@ -32,7 +32,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; using XenAdmin.Alerts; using XenAdmin.Network; using XenAdmin.Core; @@ -44,7 +43,6 @@ namespace XenAdmin.Actions public class DeleteAllAlertsAction : AsyncAction { private readonly IEnumerable Alerts; - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); /// May be null; this is expected for client-side alerts. /// diff --git a/XenAdmin/Actions/GUIActions/ExternalPluginAction.cs b/XenAdmin/Actions/GUIActions/ExternalPluginAction.cs index 5fd013c82..45288a628 100644 --- a/XenAdmin/Actions/GUIActions/ExternalPluginAction.cs +++ b/XenAdmin/Actions/GUIActions/ExternalPluginAction.cs @@ -54,13 +54,12 @@ namespace XenAdmin.Actions private const string EmptyParameter = "null"; private const string BlankParamter = "blank"; - private static readonly string SnapInTrustedCertXml = - Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), - Branding.COMPANY_NAME_SHORT, "\\XenServerPSSnapIn\\XenServer_Known_Certificates.xml"); + private static readonly string SnapInTrustedCertXml = + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), + @"WindowsPowerShell\XenServer_Known_Certificates.xml"); - private static readonly string SnapInTrustedCertXmlDir = - Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), - Branding.COMPANY_NAME_SHORT, "\\XenServerPSSnapIn"); + private static readonly string SnapInTrustedCertXmlDir = + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "WindowsPowerShell"); private readonly ReadOnlyCollection _targets = new ReadOnlyCollection(new List()); private readonly bool XenCenterNodeTarget = false; @@ -122,9 +121,9 @@ namespace XenAdmin.Actions } _extAppProcess = _menuItemFeature.ShellCmd.CreateProcess(procParams, _targets); - _extAppProcess.OutputDataReceived += new DataReceivedEventHandler(_extAppProcess_OutputDataReceived); + _extAppProcess.OutputDataReceived += _extAppProcess_OutputDataReceived; - log.InfoFormat("Plugin process for {0} running with parameters {1}", _extAppProcess.StartInfo.FileName, _extAppProcess.StartInfo.Arguments); + log.InfoFormat("Starting plugin process for {0}.", _extAppProcess.StartInfo.FileName); _extAppProcess.Start(); if (_extAppProcess.StartInfo.RedirectStandardError) @@ -145,7 +144,7 @@ namespace XenAdmin.Actions if (_extAppProcess.HasExited && _extAppProcess.ExitCode != 0) { - log.ErrorFormat("Plugin process for {0} running with parameters {1} exited with Exit Code: {2}", _extAppProcess.StartInfo.FileName, _extAppProcess.StartInfo.Arguments, _extAppProcess.ExitCode); + log.ErrorFormat("Plugin process for {0} exited with exit code {1}", _extAppProcess.StartInfo.FileName, _extAppProcess.ExitCode); throw new Exception(String.Format(Messages.EXTERNAL_PLUGIN_BAD_EXIT, _extAppProcess.ExitCode)); } } diff --git a/XenAdmin/Actions/GUIActions/RestoreDismissedUpdatesAction.cs b/XenAdmin/Actions/GUIActions/RestoreDismissedUpdatesAction.cs index 632b5acb5..eb6348f6d 100644 --- a/XenAdmin/Actions/GUIActions/RestoreDismissedUpdatesAction.cs +++ b/XenAdmin/Actions/GUIActions/RestoreDismissedUpdatesAction.cs @@ -34,15 +34,12 @@ using System.Collections.Generic; using System.Text; using XenAdmin.Network; using XenAdmin.Core; -using System.Linq; using XenAPI; namespace XenAdmin.Actions { public class RestoreDismissedUpdatesAction : AsyncAction { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public RestoreDismissedUpdatesAction(IXenConnection connection) : base(connection, "restore_dismissed_updates", "restore_dismissed_updates", true) { diff --git a/XenAdmin/Actions/OVFActions/ApplianceAction.cs b/XenAdmin/Actions/OVFActions/ApplianceAction.cs index ee07e789a..3ee387e30 100644 --- a/XenAdmin/Actions/OVFActions/ApplianceAction.cs +++ b/XenAdmin/Actions/OVFActions/ApplianceAction.cs @@ -44,7 +44,8 @@ namespace XenAdmin.Actions.OVFActions protected string m_tvmIpAddress; protected string m_tvmSubnetMask; protected string m_tvmGateway; - protected XenOvfTransportBase m_transportAction; + + protected abstract XenOvfTransportBase TransportAction { get; } private const int SLEEP_TIME = 900; private const int MAX_ITERATIONS = 60 * 60 * 24 / SLEEP_TIME * 1000; //iterations in 24h @@ -89,7 +90,7 @@ namespace XenAdmin.Actions.OVFActions InitialiseTicker(); } - protected void UpdateHandler(XenOvfTranportEventArgs e) + protected void UpdateHandler(XenOvfTransportEventArgs e) { if (!string.IsNullOrEmpty(e.Message)) Description = e.Message; @@ -104,8 +105,8 @@ namespace XenAdmin.Actions.OVFActions { Description = Messages.CANCELING; - if (m_transportAction != null) - m_transportAction.Cancel = true; + if (TransportAction != null) + TransportAction.Cancel = true; } private void InitialiseTicker() diff --git a/XenAdmin/Actions/OVFActions/ExportApplianceAction.cs b/XenAdmin/Actions/OVFActions/ExportApplianceAction.cs index 0b9e154b0..3f0aa2889 100644 --- a/XenAdmin/Actions/OVFActions/ExportApplianceAction.cs +++ b/XenAdmin/Actions/OVFActions/ExportApplianceAction.cs @@ -40,6 +40,7 @@ using XenAPI; using XenOvf; using XenOvf.Definitions; +using XenOvfTransport; namespace XenAdmin.Actions.OVFActions { @@ -60,6 +61,7 @@ namespace XenAdmin.Actions.OVFActions private readonly bool m_compressOVFfiles; private readonly bool m_shouldVerify; private OvfCompressor m_compressor; + private Export m_transportAction; #endregion @@ -88,6 +90,8 @@ namespace XenAdmin.Actions.OVFActions VM = m_vmsToExport.First(); } + protected override XenOvfTransportBase TransportAction => m_transportAction; + protected override void Run() { base.Run(); @@ -108,14 +112,14 @@ namespace XenAdmin.Actions.OVFActions EnvelopeType env; try { - m_transportAction = new XenOvfTransport.Export(uri, session) + m_transportAction = new Export(uri, session) { UpdateHandler = UpdateHandler, ShouldVerifyDisks = m_shouldVerify, Cancel = Cancelling //in case the Cancel button has already been pressed }; m_transportAction.SetTvmNetwork(m_networkUuid, m_isTvmIpStatic, m_tvmIpAddress, m_tvmSubnetMask, m_tvmGateway); - env = (m_transportAction as XenOvfTransport.Export).Process(appFolder, m_applianceFileName, (from VM vm in m_vmsToExport select vm.uuid).ToArray()); + env = m_transportAction.Process(appFolder, m_applianceFileName, (from VM vm in m_vmsToExport select vm.uuid).ToArray()); PercentComplete = 60; } catch (OperationCanceledException) diff --git a/XenAdmin/Actions/OVFActions/ImportApplianceAction.cs b/XenAdmin/Actions/OVFActions/ImportApplianceAction.cs index d02f137e3..52a5a8cdf 100644 --- a/XenAdmin/Actions/OVFActions/ImportApplianceAction.cs +++ b/XenAdmin/Actions/OVFActions/ImportApplianceAction.cs @@ -47,7 +47,6 @@ namespace XenAdmin.Actions.OVFActions { #region Private fields - private readonly EnvelopeType m_ovfEnvelope; private readonly Package m_package; private readonly Dictionary m_vmMappings; private readonly bool m_verifyManifest; @@ -55,16 +54,16 @@ namespace XenAdmin.Actions.OVFActions private readonly string m_password; private readonly bool m_runfixups; private readonly SR m_selectedIsoSr; + private Import m_transportAction; #endregion - public ImportApplianceAction(IXenConnection connection, EnvelopeType ovfEnv, Package package, Dictionary vmMappings, + public ImportApplianceAction(IXenConnection connection, Package package, Dictionary vmMappings, bool verifyManifest, bool verifySignature, string password, bool runfixups, SR selectedIsoSr, string networkUuid, bool isTvmIpStatic, string tvmIpAddress, string tvmSubnetMask, string tvmGateway) - : base(connection, string.Format(Messages.IMPORT_APPLIANCE, GetApplianceName(ovfEnv, package), Helpers.GetName(connection)), + : base(connection, string.Format(Messages.IMPORT_APPLIANCE, package.Name, Helpers.GetName(connection)), networkUuid, isTvmIpStatic, tvmIpAddress, tvmSubnetMask, tvmGateway) { - m_ovfEnvelope = ovfEnv; m_package = package; m_vmMappings = vmMappings; m_verifyManifest = verifyManifest; @@ -74,6 +73,8 @@ namespace XenAdmin.Actions.OVFActions m_selectedIsoSr = selectedIsoSr; } + protected override XenOvfTransportBase TransportAction => m_transportAction; + protected override void Run() { base.Run(); @@ -112,9 +113,6 @@ namespace XenAdmin.Actions.OVFActions } } - List validationErrors; - OVF.Validate(m_package.PackageSourceFile, out validationErrors); - PercentComplete = 20; Description = Messages.IMPORTING_VMS; @@ -132,7 +130,7 @@ namespace XenAdmin.Actions.OVFActions string systemid = vmMapping.Key; var mapping = vmMapping.Value; - EnvelopeType[] envs = OVF.Split(m_ovfEnvelope, "system", new object[] {new[] {systemid}}); + EnvelopeType[] envs = OVF.Split(m_package.OvfEnvelope, "system", new object[] {new[] {systemid}}); //storage foreach (var kvp in mapping.Storage) @@ -154,35 +152,31 @@ namespace XenAdmin.Actions.OVFActions envelopes.Add(envs[0]); } - var appName = GetApplianceName(m_ovfEnvelope, m_package); - EnvelopeType env = OVF.Merge(envelopes, appName); + EnvelopeType env = OVF.Merge(envelopes, m_package.Name); + m_package.ExtractToWorkingDir(); try //importVM - { - m_transportAction = new Import(uri, session) - { - ApplianceName = appName, - UpdateHandler = UpdateHandler, - Cancel = Cancelling //in case the Cancel button has already been pressed - }; + { + m_transportAction = new Import(uri, session) + { + ApplianceName = m_package.Name, + UpdateHandler = UpdateHandler, + Cancel = Cancelling //in case the Cancel button has already been pressed + }; m_transportAction.SetTvmNetwork(m_networkUuid, m_isTvmIpStatic, m_tvmIpAddress, m_tvmSubnetMask, m_tvmGateway); - (m_transportAction as Import).Process(env, Path.GetDirectoryName(m_package.PackageSourceFile), m_password); + m_transportAction.Process(env, m_package.WorkingDir, m_password); } catch (OperationCanceledException) { throw new CancelledException(); } + finally + { + m_package.CleanUpWorkingDir(); + } PercentComplete = 100; Description = Messages.COMPLETED; } - - private static string GetApplianceName(EnvelopeType ovfEnv, Package package) - { - var appName = ovfEnv.Name; - if (string.IsNullOrEmpty(appName)) - appName = Path.GetFileNameWithoutExtension(package.PackageSourceFile); - return appName; - } - } + } } diff --git a/XenAdmin/Actions/OVFActions/ImportImageAction.cs b/XenAdmin/Actions/OVFActions/ImportImageAction.cs index 1171461ff..5d09d007d 100644 --- a/XenAdmin/Actions/OVFActions/ImportImageAction.cs +++ b/XenAdmin/Actions/OVFActions/ImportImageAction.cs @@ -53,6 +53,7 @@ namespace XenAdmin.Actions.OVFActions private readonly bool m_runfixups; private readonly SR m_selectedIsoSr; private readonly string m_directory; + private Import m_transportAction; #endregion @@ -68,6 +69,8 @@ namespace XenAdmin.Actions.OVFActions m_selectedIsoSr = selectedIsoSr; } + protected override XenOvfTransportBase TransportAction => m_transportAction; + protected override void Run() { base.Run(); @@ -110,7 +113,7 @@ namespace XenAdmin.Actions.OVFActions Cancel = Cancelling //in case the Cancel button has already been pressed }; m_transportAction.SetTvmNetwork(m_networkUuid, m_isTvmIpStatic, m_tvmIpAddress, m_tvmSubnetMask, m_tvmGateway); - (m_transportAction as Import).Process(curEnv, m_directory, null); + m_transportAction.Process(curEnv, m_directory, null); PercentComplete = 100; Description = Messages.COMPLETED; diff --git a/XenAdmin/Alerts/Types/HotfixEligibilityAlert.cs b/XenAdmin/Alerts/Types/HotfixEligibilityAlert.cs new file mode 100644 index 000000000..46bfec44b --- /dev/null +++ b/XenAdmin/Alerts/Types/HotfixEligibilityAlert.cs @@ -0,0 +1,245 @@ +/* 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 XenAdmin.Core; +using XenAdmin.Network; +using XenAPI; + +namespace XenAdmin.Alerts.Types +{ + public class HotfixEligibilityAlert: Alert + { + private readonly Pool pool; + public readonly XenServerVersion Version; + + public HotfixEligibilityAlert(IXenConnection connection, XenServerVersion version) + { + Connection = connection; + this.Version = version; + pool = Helpers.GetPoolOfOne(connection); + _timestamp = DateTime.Now; + } + + #region Overrides of Alert + + public override string Title + { + get + { + if (pool == null || Version == null) + return string.Empty; + + var productVersionText = string.Format(Messages.STRING_SPACE_STRING, + Helpers.NaplesOrGreater(Connection) ? Messages.XENSERVER : Messages.XENSERVER_LEGACY, + Helpers.GetMaster(Connection)?.ProductVersionText()); + var unlicensed = pool.IsFreeLicenseOrExpired(); + + switch (Version.HotfixEligibility) + { + // all + the EOL date is known -> "Approaching EOL" alert + case hotfix_eligibility.all when Version.EolDate != DateTime.MinValue: + return string.Format(Messages.HOTFIX_ELIGIBILITY_ALERT_TITLE_APPROACHING_EOL, + productVersionText, GetEolDate()); + + // premium + unlicensed host -> "EOL for express customers" alert + case hotfix_eligibility.premium when unlicensed: + return string.Format(Messages.HOTFIX_ELIGIBILITY_ALERT_TITLE_FREE, productVersionText); + + // premium + licensed host and the EOL date is known -> "Approaching EOL" alert + case hotfix_eligibility.premium when Version.EolDate != DateTime.MinValue: + return string.Format(Messages.HOTFIX_ELIGIBILITY_ALERT_TITLE_APPROACHING_EOL, + productVersionText, GetEolDate()); + + // cu -> "EOL for express customers" / "CU for licensed customers" alert + case hotfix_eligibility.cu when pool.IsFreeLicenseOrExpired(): + return string.Format(Messages.HOTFIX_ELIGIBILITY_ALERT_TITLE_FREE, productVersionText); + case hotfix_eligibility.cu: + return Messages.HOTFIX_ELIGIBILITY_ALERT_TITLE_CU; + + // none -> EOL alert + case hotfix_eligibility.none: + return string.Format(Messages.HOTFIX_ELIGIBILITY_ALERT_TITLE_EOL, productVersionText); + + // everything else + default: + return string.Empty; + } + } + } + + public override string Description + { + get + { + if (pool == null) + return string.Empty; + + var versionText = Helpers.GetMaster(Connection)?.ProductVersionText(); + var productVersionText = string.Format(Messages.STRING_SPACE_STRING, + Helpers.NaplesOrGreater(Connection) ? Messages.XENSERVER : Messages.XENSERVER_LEGACY, + versionText); + var unlicensed = pool.IsFreeLicenseOrExpired(); + + switch (Version.HotfixEligibility) + { + // all + the EOL date is known -> "Approaching EOL" alert + case hotfix_eligibility.all when unlicensed && Version.EolDate != DateTime.MinValue: + return string.Format(Messages.HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_APPROACHING_EOL_FREE, + productVersionText, GetEolDate(), versionText); + case hotfix_eligibility.all when Version.EolDate != DateTime.MinValue: + return string.Format(Messages.HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_APPROACHING_EOL, + productVersionText, GetEolDate(), versionText); + + // premium + unlicensed host -> "EOL for express customers" alert + case hotfix_eligibility.premium when unlicensed && Version.HotfixEligibilityPremiumDate != DateTime.MinValue: + return string.Format(Messages.HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_FREE, + productVersionText, GetPremiumDate()); + + // premium + licensed host and the EOL date is known -> "Approaching EOL" alert + case hotfix_eligibility.premium when !unlicensed && Version.EolDate != DateTime.MinValue: + return string.Format(Messages.HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_APPROACHING_EOL, + productVersionText, GetEolDate(), versionText); + + // cu -> "EOL for express customers" / "CU for licensed customers" alert + case hotfix_eligibility.cu when unlicensed && Version.HotfixEligibilityPremiumDate != DateTime.MinValue: + return string.Format(Messages.HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_FREE, + productVersionText, GetPremiumDate()); + case hotfix_eligibility.cu when !unlicensed && Version.HotfixEligibilityNoneDate != DateTime.MinValue: + return string.Format(Messages.HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_CU, productVersionText, + GetNoneDate(), versionText); + + // none -> EOL alert + case hotfix_eligibility.none when unlicensed && Version.EolDate != DateTime.MinValue: + return string.Format(Messages.HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_EOL_FREE, + productVersionText, GetEolDate()); + case hotfix_eligibility.none when Version.EolDate != DateTime.MinValue: + return string.Format(Messages.HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_EOL, + productVersionText, GetEolDate()); + + // everything else + default: + return string.Empty; + } + } + } + + public override AlertPriority Priority => AlertPriority.Priority3; + + public override string AppliesTo => Helpers.GetName(Helpers.GetPoolOfOne(Connection)); + + public override string FixLinkText => null; + + public override Action FixLinkAction => null; + + public override string HelpID => "HotfixEligibilityAlert"; + + public override bool Equals(Alert other) + { + if (other is HotfixEligibilityAlert alert) + return Connection == alert.Connection && Version == alert.Version; + return base.Equals(other); + } + #endregion + + public static bool IsAlertNeeded(hotfix_eligibility hotfixEligibility, XenServerVersion version, bool licensed) + { + if (version == null) + return false; + + switch (hotfixEligibility) + { + // all + the EOL date is known -> "Approaching EOL" alert + case hotfix_eligibility.all when version.EolDate != DateTime.MinValue: + return true; + + // premium + unlicensed host -> "EOL for express customers" alert + case hotfix_eligibility.premium when !licensed: + return true; + + // premium + licensed host and the EOL date is known -> "Approaching EOL" alert + case hotfix_eligibility.premium when version.EolDate != DateTime.MinValue: + return true; + + // cu -> "EOL for express customers" / "CU for licensed customers" alert + case hotfix_eligibility.cu: + return true; + + // none -> EOL alert + case hotfix_eligibility.none: + return true; + + // everything else -> no alert + default: + return false; + } + } + + + private string GetEolDate() + { + string date = string.Empty; + + Program.Invoke(Program.MainWindow, () => + { + date = HelpersGUI.DateTimeToString(Version.EolDate.ToLocalTime(), Messages.DATEFORMAT_DMY, true); + }); + + return date; + } + + private string GetPremiumDate() + { + string date = string.Empty; + + Program.Invoke(Program.MainWindow, () => + { + date = HelpersGUI.DateTimeToString(Version.HotfixEligibilityPremiumDate.ToLocalTime(), + Messages.DATEFORMAT_DMY, true); + }); + + return date; + } + + private string GetNoneDate() + { + string date = string.Empty; + + Program.Invoke(Program.MainWindow, () => + { + date = HelpersGUI.DateTimeToString(Version.HotfixEligibilityNoneDate.ToLocalTime(), + Messages.DATEFORMAT_DMY, true); + }); + + return date; + } + } +} diff --git a/XenAdmin/Alerts/Types/MessageAlert.cs b/XenAdmin/Alerts/Types/MessageAlert.cs index 75f0b9692..751701904 100644 --- a/XenAdmin/Alerts/Types/MessageAlert.cs +++ b/XenAdmin/Alerts/Types/MessageAlert.cs @@ -44,8 +44,6 @@ namespace XenAdmin.Alerts { public class MessageAlert : Alert { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public XenAPI.Message Message; public IXenObject XenObject; @@ -203,10 +201,7 @@ namespace XenAdmin.Alerts case Message.MessageType.MULTIPATH_PERIODIC_ALERT: if (XenObject != null) - { - log.InfoFormat("{0} - {1}", Title, Message.body); return extractMultipathCurrentState(Message.body, FriendlyFormat()); - } break; case Message.MessageType.WLB_CONSULTATION_FAILED: @@ -401,18 +396,12 @@ namespace XenAdmin.Alerts { get { - string pageref = "MessageAlert_" + Message.Type.ToString(); - return HelpManager.GetID(pageref) == null ? null : pageref; + string pageRef = "MessageAlert_" + Message.Type; + return HelpManager.TryGetTopicId(pageRef, out _) ? pageRef : null; } } - public override string HelpLinkText - { - get - { - return Message.FriendlyHelp(Message.MessageTypeString()); - } - } + public override string HelpLinkText => Message.FriendlyHelp(Message.MessageTypeString()); public override string Title { @@ -437,10 +426,7 @@ namespace XenAdmin.Alerts } } - public override string Name - { - get { return Message.MessageTypeString(); } - } + public override string Name => Message.MessageTypeString(); public override void Dismiss() { diff --git a/XenAdmin/Branding.cs b/XenAdmin/Branding.cs index c209ae0ad..7a65b4045 100755 --- a/XenAdmin/Branding.cs +++ b/XenAdmin/Branding.cs @@ -53,6 +53,7 @@ namespace XenAdmin public const string CHECK_FOR_UPDATES_URL = "[BRANDING_XENSERVER_UPDATE_URL]"; public const string BRANDING_PERF_ALERT_MAIL_LANGUAGE_DEFAULT = "[BRANDING_PERF_ALERT_MAIL_LANGUAGE_DEFAULT]"; public const string PV_TOOLS = "[Citrix VM Tools]"; + public const string CONVERSION_VPX_MIN_SUPPORTED_VERSION = "[BRANDING_VERSION_7_0]"; public static string Search { @@ -89,5 +90,14 @@ namespace XenAdmin return s != "[" + "BRANDING_XENSERVER_UPDATE_URL]" ? s : InvisibleMessages.XENSERVER_UPDATE_URL; } } + + public static string ConversionVpxMinimumSupportedVersion + { + get + { + var s = CONVERSION_VPX_MIN_SUPPORTED_VERSION; + return s != "[" + "BRANDING_VERSION_7_0]" ? s.ToLowerInvariant() : Program.Version.ToString(); + } + } } } diff --git a/XenAdmin/Commands/ConnectAllHostsCommand.cs b/XenAdmin/Commands/ConnectAllHostsCommand.cs index 04ff583b8..b9cb3db22 100644 --- a/XenAdmin/Commands/ConnectAllHostsCommand.cs +++ b/XenAdmin/Commands/ConnectAllHostsCommand.cs @@ -66,15 +66,14 @@ namespace XenAdmin.Commands { c.CachePopulated += c_CachePopulated; } - XenConnectionUI.BeginConnect(c, false, null, false); + XenConnectionUI.BeginConnect(c, false, Program.MainWindow, false); }); } } } - private void c_CachePopulated(object sender, EventArgs e) + private void c_CachePopulated(IXenConnection c) { - IXenConnection c = (IXenConnection)sender; c.CachePopulated -= c_CachePopulated; MainWindowCommandInterface.TrySelectNewObjectInTree(c, false, true, false); diff --git a/XenAdmin/Commands/Controls/AssignVMGroupToolStripMenuItem.cs b/XenAdmin/Commands/Controls/AssignVMGroupToolStripMenuItem.cs index 6ca1f0dad..4003c93f1 100644 --- a/XenAdmin/Commands/Controls/AssignVMGroupToolStripMenuItem.cs +++ b/XenAdmin/Commands/Controls/AssignVMGroupToolStripMenuItem.cs @@ -68,9 +68,6 @@ namespace XenAdmin.Commands T[] groups = VMGroup.GroupsInCache(Command.GetSelection()[0].Connection.Cache); - if (groups.Length > 0) - base.DropDownItems.Add(new ToolStripSeparator()); - Array.Sort(groups); for (int index = 0, offset = 0; index < groups.Length; index++) @@ -101,6 +98,8 @@ namespace XenAdmin.Commands itemGroup.Checked = true; base.DropDownItems.Add(itemGroup); } + if (base.DropDownItems.Count > 1) + base.DropDownItems.Insert(1, new ToolStripSeparator()); } [Browsable(false)] diff --git a/XenAdmin/Commands/Controls/ContextMenuBuilder.cs b/XenAdmin/Commands/Controls/ContextMenuBuilder.cs index bf6be5766..7479e3ab1 100644 --- a/XenAdmin/Commands/Controls/ContextMenuBuilder.cs +++ b/XenAdmin/Commands/Controls/ContextMenuBuilder.cs @@ -31,16 +31,15 @@ using System; using System.Collections.Generic; -using System.Text; using XenAPI; using System.Windows.Forms; using XenAdmin.Model; using XenAdmin.Core; using System.Reflection; using System.Diagnostics; -using System.Text.RegularExpressions; using System.Collections.ObjectModel; using System.Drawing; +using System.Linq; using XenAdmin.Dialogs; using XenAdmin.Plugins; @@ -163,7 +162,7 @@ namespace XenAdmin.Commands [Conditional("DEBUG")] private void CheckAccessKeys(ContextMenuItemCollection items) { - List usedKeys = new List(); + var usedKeys = new Dictionary>(); foreach (ToolStripItem item in items) { @@ -174,16 +173,16 @@ namespace XenAdmin.Commands { string c = text[index + 1].ToString().ToLower(); - if (usedKeys.Contains(c)) - { - Debug.Fail("Duplicated access key: " + c); - } + if (usedKeys.ContainsKey(c)) + usedKeys[c].Add(text); else - { - usedKeys.Add(c); - } + usedKeys[c] = new List { text }; } } + + if (usedKeys.Any(kvp => kvp.Value.Count > 1)) + Debug.Fail("Found duplicate access key. Here are the used ones:\n" + + string.Join("\n", usedKeys.Select(kvp => $"{kvp.Key} => {string.Join(", ", kvp.Value)}"))); } private abstract class Builder @@ -547,10 +546,11 @@ namespace XenAdmin.Commands items.AddIfEnabled(new RemoveHostCrashDumpsCommand(mainWindow, selection)); - if (host != Helpers.GetMaster(host.Connection) ) + var cmd = new RemoveHostFromPoolCommand(mainWindow, selection); + if (cmd.CanExecute()) { items.AddSeparator(); - items.Add(new RemoveHostFromPoolCommand(mainWindow, selection)); + items.Add(cmd); } items.AddPluginItems(PluginContextMenu.server, selection); @@ -719,6 +719,8 @@ namespace XenAdmin.Commands items.Add(drItem); } + items.AddIfEnabled(new LaunchConversionManagerCommand(mainWindow, selection)); + var pool = selection.FirstAsXenObject as Pool; if (pool != null && !pool.IsPoolFullyUpgraded()) items.Add(new RollingUpgradeCommand(mainWindow)); diff --git a/XenAdmin/Commands/Controls/ContextMenuItemCollection.cs b/XenAdmin/Commands/Controls/ContextMenuItemCollection.cs index dd5c1b01c..385666bc1 100644 --- a/XenAdmin/Commands/Controls/ContextMenuItemCollection.cs +++ b/XenAdmin/Commands/Controls/ContextMenuItemCollection.cs @@ -175,12 +175,7 @@ namespace XenAdmin.Commands } } - public void AddIfEnabled(Command command) - { - AddIfEnabled(command, false); - } - - public void AddIfEnabled(Command command, bool bold) + public void AddIfEnabled(Command command, bool bold = false) { if (command.CanExecute()) { @@ -188,12 +183,7 @@ namespace XenAdmin.Commands } } - public void Add(Command command) - { - Add(command, false); - } - - public void Add(Command command, bool bold) + public void Add(Command command, bool bold = false) { CommandToolStripMenuItem item = new CommandToolStripMenuItem(command, true); diff --git a/XenAdmin/Commands/Controls/PoolRemoveServerToolStripMenuItem.cs b/XenAdmin/Commands/Controls/PoolRemoveServerToolStripMenuItem.cs new file mode 100644 index 000000000..78425f80d --- /dev/null +++ b/XenAdmin/Commands/Controls/PoolRemoveServerToolStripMenuItem.cs @@ -0,0 +1,100 @@ +/* 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.Windows.Forms; +using XenAdmin.Core; + + +namespace XenAdmin.Commands +{ + internal class PoolRemoveServerToolStripMenuItem : CommandToolStripMenuItem + { + public PoolRemoveServerToolStripMenuItem() + : base(new PoolRemoveServerCommand(), false) + { + base.DropDownItems.Add(new ToolStripMenuItem()); + } + + public PoolRemoveServerToolStripMenuItem(IMainWindow mainWindow, IEnumerable selection, bool inContextMenu) + : base(new PoolRemoveServerCommand(mainWindow, selection), inContextMenu) + { + base.DropDownItems.Add(new ToolStripMenuItem()); + } + + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public new Command Command => base.Command; + + protected override void OnDropDownOpening(EventArgs e) + { + DropDownItems.Clear(); + + var hosts = Command.GetSelection().GetConnectionOfAllItems().Cache.Hosts; + + foreach (var host in hosts) + { + if (!RemoveHostFromPoolCommand.CanExecute(host)) + continue; + + var cmd = new RemoveHostFromPoolCommand(Command.MainWindowCommandInterface, host); + DropDownItems.Add(new CommandToolStripMenuItem(cmd, host.Name(), Images.GetImage16For(host))); + } + } + + private class PoolRemoveServerCommand : Command + { + public PoolRemoveServerCommand() + { + } + + public PoolRemoveServerCommand(IMainWindow mainWindow, IEnumerable selection) + : base(mainWindow, selection) + { + } + + public override string MenuText => Messages.REMOVE_SERVER_MENU_ITEM; + + protected override bool CanExecuteCore(SelectedItemCollection selection) + { + var connection = selection.GetConnectionOfAllItems(); + var pool = Helpers.GetPool(connection); + if (pool == null) + return false; + + return connection.Cache.Hosts.Any(RemoveHostFromPoolCommand.CanExecute); + } + } + } +} diff --git a/XenAdmin/Commands/Controls/VMOperationToolStripMenuItem.cs b/XenAdmin/Commands/Controls/VMOperationToolStripMenuItem.cs index 95e55e75a..6135f9de7 100644 --- a/XenAdmin/Commands/Controls/VMOperationToolStripMenuItem.cs +++ b/XenAdmin/Commands/Controls/VMOperationToolStripMenuItem.cs @@ -40,7 +40,6 @@ using XenAdmin.Actions; using XenAdmin.Network; - namespace XenAdmin.Commands { /// @@ -48,7 +47,6 @@ namespace XenAdmin.Commands /// internal abstract class VMOperationToolStripMenuItem : CommandToolStripMenuItem { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private readonly vm_operations _operation; private readonly bool _resumeAfter; diff --git a/XenAdmin/Commands/DeleteVMCommand.cs b/XenAdmin/Commands/DeleteVMCommand.cs index e388c94f3..0035c110a 100644 --- a/XenAdmin/Commands/DeleteVMCommand.cs +++ b/XenAdmin/Commands/DeleteVMCommand.cs @@ -113,18 +113,7 @@ namespace XenAdmin.Commands return selection.AllItemsAre() && selection.AtLeastOneXenObjectCan(CanExecute); } - public override string MenuText - { - get - { - if (GetSelection().Count > 1) - { - return Messages.MAINWINDOW_DELETE_OBJECTS; - } - - return Messages.MAINWINDOW_DELETE_VM; - } - } + public override string MenuText => Messages.MAINWINDOW_DELETE_OBJECTS; protected virtual string ErrorDialogText { diff --git a/XenAdmin/Commands/DeleteVirtualDiskCommand.cs b/XenAdmin/Commands/DeleteVirtualDiskCommand.cs index cc1a4c1e0..3b9e17f24 100644 --- a/XenAdmin/Commands/DeleteVirtualDiskCommand.cs +++ b/XenAdmin/Commands/DeleteVirtualDiskCommand.cs @@ -45,8 +45,6 @@ namespace XenAdmin.Commands { class DeleteVirtualDiskCommand : Command { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - /// /// Allows auto unplug and delete on running VMs /// diff --git a/XenAdmin/Commands/DetachVirtualDiskCommand.cs b/XenAdmin/Commands/DetachVirtualDiskCommand.cs index ace56c837..5b26f0862 100644 --- a/XenAdmin/Commands/DetachVirtualDiskCommand.cs +++ b/XenAdmin/Commands/DetachVirtualDiskCommand.cs @@ -43,7 +43,6 @@ namespace XenAdmin.Commands { class DetachVirtualDiskCommand : Command { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private VM targetVM = null; diff --git a/XenAdmin/Commands/DisconnectCommand.cs b/XenAdmin/Commands/DisconnectCommand.cs index 24c8139ea..c8eebb86a 100644 --- a/XenAdmin/Commands/DisconnectCommand.cs +++ b/XenAdmin/Commands/DisconnectCommand.cs @@ -147,10 +147,10 @@ namespace XenAdmin.Commands private void DoDisconnect(IXenConnection connection) { string msg = string.Format(Messages.CONNECTION_CLOSED_NOTICE_TEXT, connection.Hostname); - log.Warn(msg); ActionBase notice = new ActionBase(msg, msg, false, true); notice.Pool = Helpers.GetPoolOfOne(connection); notice.Host = Helpers.GetMaster(connection); + log.Warn($"Connection to {connection.Hostname} closed."); MainWindowCommandInterface.CloseActiveWizards(connection); XenDialogBase.CloseAll(connection); diff --git a/XenAdmin/Commands/DragDropCrossPoolMoveHaltedVMCommand.cs b/XenAdmin/Commands/DragDropCrossPoolMoveHaltedVMCommand.cs index 523683d29..ce70bf4be 100644 --- a/XenAdmin/Commands/DragDropCrossPoolMoveHaltedVMCommand.cs +++ b/XenAdmin/Commands/DragDropCrossPoolMoveHaltedVMCommand.cs @@ -29,19 +29,13 @@ * SUCH DAMAGE. */ -using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using XenAdmin.Controls; using XenAPI; using XenAdmin.Core; -using System.Collections.ObjectModel; using System.Windows.Forms; -using XenAdmin.Actions; using XenAdmin.Dialogs; using System.Drawing; -using XenAdmin.Actions.VMActions; namespace XenAdmin.Commands @@ -66,7 +60,6 @@ namespace XenAdmin.Commands { foreach (VM draggedVM in GetDraggedItemsAsXenObjects()) { - Pool draggedVMPool = Helpers.GetPool(draggedVM.Connection); Host draggedVMHome = draggedVM.Home(); if(!LiveMigrateAllowedInVersion(targetHost, draggedVM)) @@ -81,12 +74,12 @@ namespace XenAdmin.Commands return Messages.MIGRATION_NOT_ALLOWED_NO_SHARED_STORAGE; } } + + if (Helpers.productVersionCompare(Helpers.HostProductVersion(targetHost), Helpers.HostProductVersion(draggedVMHome ?? Helpers.GetMaster(draggedVM.Connection))) < 0) + return Messages.OLDER_THAN_CURRENT_SERVER; - if (targetHost != draggedVMHome && VMOperationHostCommand.VmCpuFeaturesIncompatibleWithHost(targetHost, draggedVM)) - { - // target host does not offer some of the CPU features that the VM currently sees + if (targetHost != draggedVMHome && VMOperationHostCommand.VmCpuIncompatibleWithHost(targetHost, draggedVM)) return Messages.MIGRATION_NOT_ALLOWED_CPU_FEATURES; - } } } } @@ -132,11 +125,11 @@ namespace XenAdmin.Commands if (draggedVM.allowed_operations == null || !draggedVM.allowed_operations.Contains(vm_operations.migrate_send)) return false; - if (VMOperationHostCommand.VmCpuFeaturesIncompatibleWithHost(targetHost, draggedVM)) - { - // target host does not offer some of the CPU features that the VM currently sees + if (Helpers.productVersionCompare(Helpers.HostProductVersion(targetHost), Helpers.HostProductVersion(draggedVMHome ?? Helpers.GetMaster(draggedVM.Connection))) < 0) + return false; + + if (VMOperationHostCommand.VmCpuIncompatibleWithHost(targetHost, draggedVM)) return false; - } } return true; diff --git a/XenAdmin/Commands/DragDropMigrateVMCommand.cs b/XenAdmin/Commands/DragDropMigrateVMCommand.cs index 7d0a3ba9a..a1eea8eb7 100644 --- a/XenAdmin/Commands/DragDropMigrateVMCommand.cs +++ b/XenAdmin/Commands/DragDropMigrateVMCommand.cs @@ -29,16 +29,12 @@ * SUCH DAMAGE. */ -using System; using System.Collections.Generic; using System.Linq; -using System.Text; using XenAdmin.Controls; using XenAPI; using XenAdmin.Core; -using System.Collections.ObjectModel; using System.Windows.Forms; -using XenAdmin.Actions; using XenAdmin.Dialogs; using System.Drawing; using XenAdmin.Actions.VMActions; @@ -91,11 +87,11 @@ namespace XenAdmin.Commands } } - if (targetHost != draggedVMHome && VMOperationHostCommand.VmCpuFeaturesIncompatibleWithHost(targetHost, draggedVM)) - { - // target host does not offer some of the CPU features that the VM currently sees + if (Helpers.productVersionCompare(Helpers.HostProductVersion(targetHost), Helpers.HostProductVersion(draggedVMHome)) < 0) + return Messages.OLDER_THAN_CURRENT_SERVER; + + if (targetHost != draggedVMHome && VMOperationHostCommand.VmCpuIncompatibleWithHost(targetHost, draggedVM)) return Messages.MIGRATION_NOT_ALLOWED_CPU_FEATURES; - } } } } @@ -181,11 +177,11 @@ namespace XenAdmin.Commands return false; } - if (VMOperationHostCommand.VmCpuFeaturesIncompatibleWithHost(targetHost, draggedVM)) - { - // target host does not offer some of the CPU features that the VM currently sees + if (Helpers.productVersionCompare(Helpers.HostProductVersion(targetHost), Helpers.HostProductVersion(draggedVMHome)) < 0) + return false; + + if (VMOperationHostCommand.VmCpuIncompatibleWithHost(targetHost, draggedVM)) return false; - } } return true; diff --git a/XenAdmin/Commands/ExportResourceReportCommand.cs b/XenAdmin/Commands/ExportResourceReportCommand.cs index 5db3051b6..73816b872 100755 --- a/XenAdmin/Commands/ExportResourceReportCommand.cs +++ b/XenAdmin/Commands/ExportResourceReportCommand.cs @@ -45,8 +45,6 @@ namespace XenAdmin.Commands /// internal class ExportResourceReportCommand : Command { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public ExportResourceReportCommand() { } diff --git a/XenAdmin/Commands/ExportVMCommand.cs b/XenAdmin/Commands/ExportVMCommand.cs index 4251da067..b6a7770a3 100644 --- a/XenAdmin/Commands/ExportVMCommand.cs +++ b/XenAdmin/Commands/ExportVMCommand.cs @@ -50,6 +50,8 @@ namespace XenAdmin.Commands /// internal class ExportVMCommand : Command { + private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + /// /// Initializes a new instance of this Command. The parameter-less constructor is required if /// this Command is to be attached to a ToolStrip menu item or button. It should not be used in any other scenario. @@ -117,7 +119,15 @@ namespace XenAdmin.Commands // CA-12975: Warn the user if the export operation does not have enough disk space to // complete. This is an approximation only. - Win32.DiskSpaceInfo diskSpaceInfo = Win32.GetDiskSpaceInfo(dlg.FileName); + Win32.DiskSpaceInfo diskSpaceInfo = null; + try + { + diskSpaceInfo = Win32.GetDiskSpaceInfo(dlg.FileName); + } + catch (Exception exn) + { + log.Warn(exn, exn); + } if (diskSpaceInfo == null) { diff --git a/XenAdmin/Commands/HACommand.cs b/XenAdmin/Commands/HACommand.cs index 8ec4630bc..015ea0460 100644 --- a/XenAdmin/Commands/HACommand.cs +++ b/XenAdmin/Commands/HACommand.cs @@ -38,6 +38,8 @@ using XenAdmin.Core; using XenAdmin.Dialogs; using XenAdmin.Wizards; using System.Collections.ObjectModel; +using System.Drawing; +using System.Linq; namespace XenAdmin.Commands @@ -47,6 +49,8 @@ namespace XenAdmin.Commands /// internal class HACommand : Command { + private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + /// /// Initializes a new instance of this Command. The parameter-less constructor is required if /// this Command is to be attached to a ToolStrip menu item or button. It should not be used in any other scenario. @@ -88,8 +92,27 @@ namespace XenAdmin.Commands } else if (pool.ha_enabled) { - // Show VM restart priority editor - MainWindowCommandInterface.ShowPerConnectionWizard(connection, new EditVmHaPrioritiesDialog(pool)); + if (pool.ha_statefiles.Any(sf => pool.Connection.Resolve(new XenRef(sf)) != null)) + { + // Show VM restart priority editor + MainWindowCommandInterface.ShowPerConnectionWizard(connection, new EditVmHaPrioritiesDialog(pool)); + } + else + { + log.ErrorFormat("Cannot resolve HA statefile VDI (pool {0} has {1} statefiles).", + pool.Name(), pool.ha_statefiles.Length); + + using (var dlg = new ThreeButtonDialog( + new ThreeButtonDialog.Details( + SystemIcons.Error, + string.Format(Messages.HA_CONFIGURE_NO_STATEFILE, Helpers.GetName(pool).Ellipsise(30)), + Messages.CONFIGURE_HA), + "HADisable", + ThreeButtonDialog.ButtonOK)) + { + dlg.ShowDialog(Program.MainWindow); + } + } } else { @@ -105,26 +128,24 @@ namespace XenAdmin.Commands protected override bool CanExecuteCore(SelectedItemCollection selection) { - if (selection.Count == 1) - { - Pool poolAncestor = selection[0].PoolAncestor; - bool inPool = poolAncestor != null; + if (selection.Count != 1) + return false; - if (inPool ) - { - Host master = Helpers.GetMaster(poolAncestor.Connection); + Pool poolAncestor = selection[0].PoolAncestor; + if (poolAncestor == null || poolAncestor.Locked) + return false; - if (master == null || HelpersGUI.FindActiveHaAction(poolAncestor.Connection) != null || poolAncestor.Locked) - { - return false; - } - else - { - return true; - } - } - } - return false; + if (poolAncestor.Connection == null || !poolAncestor.Connection.IsConnected) + return false; + + if (HelpersGUI.FindActiveHaAction(poolAncestor.Connection) != null) + return false; + + Host master = Helpers.GetMaster(poolAncestor.Connection); + if (master == null) + return false; + + return true; } protected override string GetCantExecuteReasonCore(IXenObject item) diff --git a/XenAdmin/Commands/HostMaintenanceModeCommand.cs b/XenAdmin/Commands/HostMaintenanceModeCommand.cs index fd9d63ca6..1ea3d4398 100644 --- a/XenAdmin/Commands/HostMaintenanceModeCommand.cs +++ b/XenAdmin/Commands/HostMaintenanceModeCommand.cs @@ -107,27 +107,28 @@ namespace XenAdmin.Commands private void ExitMaintenanceMode(Host host) { - List vmsToUnEvacuate = new List(); - vmsToUnEvacuate.AddRange(host.GetHaltedEvacuatedVMs()); - vmsToUnEvacuate.AddRange(host.GetMigratedEvacuatedVMs()); - vmsToUnEvacuate.AddRange(host.GetSuspendedEvacuatedVMs()); + var vmsToRestore = new List(); + vmsToRestore.AddRange(host.GetHaltedEvacuatedVMs()); + vmsToRestore.AddRange(host.GetMigratedEvacuatedVMs()); + vmsToRestore.AddRange(host.GetSuspendedEvacuatedVMs()); List to_remove = new List(); - foreach (VM vm in vmsToUnEvacuate) + foreach (VM vm in vmsToRestore) { if (vm.resident_on == host.opaque_ref) to_remove.Add(vm); } foreach (VM vm in to_remove) { - vmsToUnEvacuate.Remove(vm); + vmsToRestore.Remove(vm); } DialogResult result = DialogResult.No; - if (vmsToUnEvacuate.Count > 0 && !MainWindowCommandInterface.RunInAutomatedTestMode) + if (vmsToRestore.Count > 0 && !MainWindowCommandInterface.RunInAutomatedTestMode) { - result = new RestoreVMsDialog(vmsToUnEvacuate, host).ShowDialog(); + using (var dlg = new ExitMaintenanceModeDialog(vmsToRestore, host)) + result = dlg.ShowDialog(); if (result == DialogResult.Cancel) return; @@ -140,7 +141,7 @@ namespace XenAdmin.Commands } MainWindowCommandInterface.CloseActiveWizards(host.Connection); - var action = new EnableHostAction(host, result == DialogResult.Yes,AddHostToPoolCommand.EnableNtolDialog); + var action = new EnableHostAction(host, result == DialogResult.Yes, AddHostToPoolCommand.EnableNtolDialog); action.Completed += Program.MainWindow.action_Completed; action.RunAsync(); } diff --git a/XenAdmin/Commands/InstallToolsCommand.cs b/XenAdmin/Commands/InstallToolsCommand.cs index f70ffd888..3fe47438c 100644 --- a/XenAdmin/Commands/InstallToolsCommand.cs +++ b/XenAdmin/Commands/InstallToolsCommand.cs @@ -132,7 +132,9 @@ namespace XenAdmin.Commands } if (dialogResult == DialogResult.Yes) { - CreateCdDriveAction createDriveAction = new CreateCdDriveAction(vm, true,NewDiskDialog.ShowMustRebootBoxCD,NewDiskDialog.ShowVBDWarningBox); + //do not register the event ShowUserInstruction; we show explicitly a message afterwards + var createDriveAction = new CreateCdDriveAction(vm); + using (var dlg = new ActionProgressDialog(createDriveAction, ProgressBarStyle.Marquee)) { dlg.ShowDialog(Parent); @@ -192,7 +194,9 @@ namespace XenAdmin.Commands { if (CanExecute(vm) && vm.FindVMCDROM() == null) { - CreateCdDriveAction createDriveAction = new CreateCdDriveAction(vm, true,NewDiskDialog.ShowMustRebootBoxCD,NewDiskDialog.ShowVBDWarningBox); + //do not register the event ShowUserInstruction; we show explicitly a message afterwards + var createDriveAction = new CreateCdDriveAction(vm); + using (var dlg = new ActionProgressDialog(createDriveAction, ProgressBarStyle.Marquee)) { dlg.ShowDialog(Parent); @@ -246,7 +250,6 @@ namespace XenAdmin.Commands }); } - private void InstallToolsActionCompleted(ActionBase sender) { InstallPVToolsAction action = (InstallPVToolsAction)sender; @@ -263,10 +266,7 @@ namespace XenAdmin.Commands if (!MainWindowCommandInterface.RunInAutomatedTestMode) { using (var dlg = new ThreeButtonDialog( - new ThreeButtonDialog.Details( - SystemIcons.Information, - Messages.NEW_DVD_DRIVE_REBOOT_TOOLS, - Messages.NEW_DVD_DRIVE_CREATED))) + new ThreeButtonDialog.Details(SystemIcons.Information, Messages.NEW_DVD_DRIVE_REBOOT_TOOLS))) { dlg.ShowDialog(Parent); } diff --git a/XenAdmin/Commands/LaunchConversionManagerCommand.cs b/XenAdmin/Commands/LaunchConversionManagerCommand.cs new file mode 100644 index 000000000..f1378ab56 --- /dev/null +++ b/XenAdmin/Commands/LaunchConversionManagerCommand.cs @@ -0,0 +1,98 @@ +/* Copyright (c) Citrix Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, + * with or without modification, are permitted provided + * that the following conditions are met: + * + * * Redistributions of source code must retain the above + * copyright notice, this list of conditions and the + * following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the + * following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using XenAdmin.Core; +using XenAdmin.Dialogs; +using XenAPI; + + +namespace XenAdmin.Commands +{ + internal class LaunchConversionManagerCommand : Command + { + public LaunchConversionManagerCommand() + { + } + + public LaunchConversionManagerCommand(IMainWindow mainWindow, IEnumerable selection) + : base(mainWindow, selection) + { + } + + public override string MenuText => Messages.MAINWINDOW_CONVERSION_MANAGER_MENU_ITEM; + + protected override bool CanExecuteCore(SelectedItemCollection selection) + { + var con = selection.GetConnectionOfFirstItem(); + return con != null && con.Cache.VMs.Any(v => v.IsConversionVM()); + } + + protected override void ExecuteCore(SelectedItemCollection selection) + { + var con = selection.GetConnectionOfFirstItem(); + + if (Helpers.FeatureForbidden(con, Host.RestrictConversion)) + { + var msg = HiddenFeatures.LinkLabelHidden + ? Messages.UPSELL_BLURB_CONVERSION + : Messages.UPSELL_BLURB_CONVERSION + Messages.UPSELL_BLURB_TRIAL; + + using (var dlg = new UpsellDialog(msg, InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL)) + dlg.ShowDialog(Parent); + } + else if (!con.Session.IsLocalSuperuser && !Registry.DontSudo && con.Session.Roles.All(r => r.name_label != Role.MR_ROLE_POOL_ADMIN)) + { + var currentRoles = con.Session.Roles; + currentRoles.Sort(); + + var msg = string.Format(Messages.CONVERSION_RBAC_RESTRICTION, currentRoles[0].FriendlyName(), + Role.FriendlyName(Role.MR_ROLE_POOL_ADMIN)); + + using (var dlg = new ThreeButtonDialog( + new ThreeButtonDialog.Details(SystemIcons.Error, msg), + ThreeButtonDialog.ButtonOK)) + dlg.ShowDialog(Parent); + } + else if (selection.First is VM vm && vm.IsConversionVM()) + { + MainWindowCommandInterface.ShowPerConnectionWizard(con, new ConversionDialog(con, vm)); + } + else + { + var conversionVms = con.Cache.VMs.Where(v => v.IsConversionVM()).ToArray(); + MainWindowCommandInterface.ShowPerConnectionWizard(con, new ConversionDialog(con, conversionVms)); + } + } + } +} diff --git a/XenAdmin/Commands/MigrateVirtualDiskCommand.cs b/XenAdmin/Commands/MigrateVirtualDiskCommand.cs index ee916f99f..31e3ed501 100644 --- a/XenAdmin/Commands/MigrateVirtualDiskCommand.cs +++ b/XenAdmin/Commands/MigrateVirtualDiskCommand.cs @@ -96,7 +96,7 @@ namespace XenAdmin.Commands SR sr = vdi.Connection.Resolve(vdi.SR); if (sr == null || sr.HBALunPerVDI()) return false; - if (Helpers.DundeePlusOrGreater(vdi.Connection) && !sr.allowed_operations.Contains(storage_operations.vdi_mirror)) + if (!sr.SupportsStorageMigration()) return false; return true; @@ -126,7 +126,7 @@ namespace XenAdmin.Commands return base.GetCantExecuteReasonCore(item); if (sr.HBALunPerVDI()) return Messages.UNSUPPORTED_SR_TYPE; - if (Helpers.DundeePlusOrGreater(vdi.Connection) && !sr.allowed_operations.Contains(storage_operations.vdi_mirror)) + if (!sr.SupportsStorageMigration()) return Messages.UNSUPPORTED_SR_TYPE; return base.GetCantExecuteReasonCore(item); diff --git a/XenAdmin/Commands/ReconnectHostCommand.cs b/XenAdmin/Commands/ReconnectHostCommand.cs index 8ad91fe61..9e99aca91 100644 --- a/XenAdmin/Commands/ReconnectHostCommand.cs +++ b/XenAdmin/Commands/ReconnectHostCommand.cs @@ -69,14 +69,13 @@ namespace XenAdmin.Commands { item.Connection.CachePopulated += Connection_CachePopulated; } - XenConnectionUI.BeginConnect(item.Connection, true, null, false); + XenConnectionUI.BeginConnect(item.Connection, true, Program.MainWindow, false); } } } - private void Connection_CachePopulated(object sender, EventArgs e) + private void Connection_CachePopulated(IXenConnection c) { - IXenConnection c = (IXenConnection)sender; c.CachePopulated -= Connection_CachePopulated; MainWindowCommandInterface.TrySelectNewObjectInTree(c, true, true, false); diff --git a/XenAdmin/Commands/RemoveHostCommand.cs b/XenAdmin/Commands/RemoveHostCommand.cs index 93283b7d4..20657146a 100644 --- a/XenAdmin/Commands/RemoveHostCommand.cs +++ b/XenAdmin/Commands/RemoveHostCommand.cs @@ -68,7 +68,7 @@ namespace XenAdmin.Commands foreach (Host host in selection.AsXenObjects()) { string msg = string.Format(Messages.MAINWINDOW_LOG_REMOVECONNECTION, host.Connection.Hostname); - log.Info(msg); + log.Info($"Removed connection to {host.Connection.Hostname}"); new ActionBase(msg, msg, false, true); MainWindowCommandInterface.CloseActiveWizards(host.Connection); host.Connection.EndConnect(); diff --git a/XenAdmin/Commands/RemoveHostFromPoolCommand.cs b/XenAdmin/Commands/RemoveHostFromPoolCommand.cs index 96730cab6..e904c1003 100644 --- a/XenAdmin/Commands/RemoveHostFromPoolCommand.cs +++ b/XenAdmin/Commands/RemoveHostFromPoolCommand.cs @@ -48,8 +48,6 @@ namespace XenAdmin.Commands /// internal class RemoveHostFromPoolCommand : Command { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - /// /// Initializes a new instance of this Command. The parameter-less constructor is required if /// this Command is to be attached to a ToolStrip menu item or button. It should not be used in any other scenario. @@ -129,12 +127,12 @@ namespace XenAdmin.Commands RunMultipleActions(actions, Messages.REMOVING_SERVERS_FROM_POOL, Messages.POOLCREATE_REMOVING, Messages.POOLCREATE_REMOVED, true); } - private static bool CanExecute(Host host) + public static bool CanExecute(Host host) { - if (host != null && host.Connection != null ) + if (host != null && host.Connection != null) { Pool pool = Helpers.GetPool(host.Connection); - return pool != null && host.resident_VMs != null && host.resident_VMs.Count < 2 && host.IsLive(); + return pool != null && host.opaque_ref != pool.master && host.resident_VMs != null && host.resident_VMs.Count < 2 && host.IsLive(); } return false; } @@ -201,7 +199,7 @@ namespace XenAdmin.Commands if (socket.Connected) { - MainWindowCommandInterface.Invoke(() => XenConnectionUI.BeginConnect(connection, false, null, false)); + MainWindowCommandInterface.Invoke(() => XenConnectionUI.BeginConnect(connection, false, Program.MainWindow, false)); return; } i++; diff --git a/XenAdmin/Commands/VMOperationCommand.cs b/XenAdmin/Commands/VMOperationCommand.cs index 3425c37eb..63f726104 100644 --- a/XenAdmin/Commands/VMOperationCommand.cs +++ b/XenAdmin/Commands/VMOperationCommand.cs @@ -37,7 +37,6 @@ using System.Windows.Forms; using XenAdmin.Actions; using XenAdmin.Core; using XenAdmin.Dialogs; -using XenAdmin.Network; using XenAPI; using XenAdmin.Actions.VMActions; @@ -235,36 +234,49 @@ namespace XenAdmin.Commands return; } - IXenConnection connection = vm.Connection; - Session session = connection.DuplicateSession(); - if (session != null) + var connection = vm.Connection; + Session session; + try { - var reasons = new Dictionary(); - - foreach (Host host in connection.Cache.Hosts) - { - reasons[host] = string.Empty; - if (!isStart && VMOperationHostCommand.VmCpuFeaturesIncompatibleWithHost(host, vm)) - { - reasons[host] = FriendlyErrorNames.VM_INCOMPATIBLE_WITH_THIS_HOST; - continue; - } - try - { - VM.assert_can_boot_here(session, vm.opaque_ref, host.opaque_ref); - } - catch (Failure failure) - { - reasons[host] = failure.Message; - } - } - - Program.Invoke(Program.MainWindow, () => - { - using (var dialog = new CommandErrorDialog(title, text, reasons)) - dialog.ShowDialog(Program.MainWindow); - }); + session = connection.DuplicateSession(); + if (session == null) + return; } + catch (Exception) + { + return; + } + + var reasons = new Dictionary(); + + foreach (Host host in connection.Cache.Hosts) + { + reasons[host] = string.Empty; + if (!isStart && VMOperationHostCommand.VmCpuIncompatibleWithHost(host, vm)) + { + reasons[host] = FriendlyErrorNames.VM_INCOMPATIBLE_WITH_THIS_HOST; + continue; + } + try + { + VM.assert_can_boot_here(session, vm.opaque_ref, host.opaque_ref); + } + catch (Failure failure) + { + reasons[host] = failure.Message; + } + catch (Exception e) + { + log.ErrorFormat("There was an error calling assert_can_boot_here on host {0}: {1}", host.Name(), e.Message); + reasons[host] = Messages.HOST_MENU_UNKNOWN_ERROR; + } + } + + Program.Invoke(Program.MainWindow, () => + { + using (var dialog = new CommandErrorDialog(title, text, reasons)) + dialog.ShowDialog(Program.MainWindow); + }); }); } diff --git a/XenAdmin/Commands/VMOperationHostCommand.cs b/XenAdmin/Commands/VMOperationHostCommand.cs index 84d1635f8..d3b3234da 100644 --- a/XenAdmin/Commands/VMOperationHostCommand.cs +++ b/XenAdmin/Commands/VMOperationHostCommand.cs @@ -125,7 +125,7 @@ namespace XenAdmin.Commands if (vm.power_state == vm_power_state.Running && residentHost != null && host.opaque_ref == residentHost.opaque_ref) return Messages.HOST_MENU_CURRENT_SERVER; - if ((operation == vm_operations.pool_migrate || operation == vm_operations.resume_on) && VmCpuFeaturesIncompatibleWithHost(host, vm)) + if ((operation == vm_operations.pool_migrate || operation == vm_operations.resume_on) && VmCpuIncompatibleWithHost(host, vm)) { return FriendlyErrorNames.VM_INCOMPATIBLE_WITH_THIS_HOST; } @@ -147,8 +147,7 @@ namespace XenAdmin.Commands } catch (Exception e) { - log.ErrorFormat("There was an error calling assert_can_boot_here on host {0}", host.Name()); - log.Error(e, e); + log.ErrorFormat("There was an error calling assert_can_boot_here on host {0}: {1}", host.Name(), e.Message); return Messages.HOST_MENU_UNKNOWN_ERROR; } @@ -169,9 +168,9 @@ namespace XenAdmin.Commands return base.GetCantExecuteReasonCore(item); } - public static bool VmCpuFeaturesIncompatibleWithHost(Host targetHost, VM vm) + public static bool VmCpuIncompatibleWithHost(Host targetHost, VM vm) { - // check the CPU feature compatibility for Dundee and higher hosts + // check the CPU compatibility for Dundee and higher hosts if (!Helpers.DundeeOrGreater(targetHost)) return false; @@ -186,19 +185,13 @@ namespace XenAdmin.Commands if (vm.power_state != vm_power_state.Running && vm.power_state != vm_power_state.Suspended) return false; - if (vm.last_boot_CPU_flags == null || !vm.last_boot_CPU_flags.ContainsKey("vendor") || !vm.last_boot_CPU_flags.ContainsKey("features") + if (vm.last_boot_CPU_flags == null || !vm.last_boot_CPU_flags.ContainsKey("vendor") || targetHost.cpu_info == null || !targetHost.cpu_info.ContainsKey("vendor")) return false; if (vm.last_boot_CPU_flags["vendor"] != targetHost.cpu_info["vendor"]) return true; - if (vm.IsHVM() && targetHost.cpu_info.ContainsKey("features_hvm")) - return PoolJoinRules.FewerFeatures(targetHost.cpu_info["features_hvm"], vm.last_boot_CPU_flags["features"]); - - if (!vm.IsHVM() && targetHost.cpu_info.ContainsKey("features_pv")) - return PoolJoinRules.FewerFeatures(targetHost.cpu_info["features_pv"], vm.last_boot_CPU_flags["features"]); - return false; } } diff --git a/XenAdmin/Commands/VMOperationWlbHostCommand.cs b/XenAdmin/Commands/VMOperationWlbHostCommand.cs index afd59792c..ac2c1c02a 100644 --- a/XenAdmin/Commands/VMOperationWlbHostCommand.cs +++ b/XenAdmin/Commands/VMOperationWlbHostCommand.cs @@ -41,7 +41,6 @@ namespace XenAdmin.Commands { internal partial class VMOperationWlbHostCommand : VMOperationCommand { - private readonly static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private readonly string _menuText; private readonly Image _menuImage; private readonly Image _secondImage; diff --git a/XenAdmin/ConsoleView/ConsoleKeyHandler.cs b/XenAdmin/ConsoleView/ConsoleKeyHandler.cs index db079437f..70cdb49e2 100644 --- a/XenAdmin/ConsoleView/ConsoleKeyHandler.cs +++ b/XenAdmin/ConsoleView/ConsoleKeyHandler.cs @@ -151,12 +151,25 @@ namespace XenAdmin.ConsoleView AddKeyHandler(new Set(Keys.RMenu, Keys.LShiftKey, Keys.U), methodInvoker); AddKeyHandler(new Set(Keys.RMenu, Keys.RShiftKey, Keys.U), methodInvoker); + AddKeyHandler(new Set(Keys.ShiftKey, Keys.Menu, Keys.U), methodInvoker); + AddKeyHandler(new Set(Keys.LShiftKey, Keys.LMenu, Keys.U), methodInvoker); + AddKeyHandler(new Set(Keys.RShiftKey, Keys.LMenu, Keys.U), methodInvoker); + AddKeyHandler(new Set(Keys.LShiftKey, Keys.RMenu, Keys.U), methodInvoker); + AddKeyHandler(new Set(Keys.RShiftKey, Keys.RMenu, Keys.U), methodInvoker); + AddKeyHandler(new Set(ALT_SCAN, L_SHIFT_SCAN, U_SCAN), methodInvoker); AddKeyHandler(new Set(ALT2_SCAN, L_SHIFT_SCAN, U_SCAN), methodInvoker); AddKeyHandler(new Set(ALT_SCAN, R_SHIFT_SCAN, U_SCAN), methodInvoker); AddKeyHandler(new Set(ALT2_SCAN, R_SHIFT_SCAN, U_SCAN), methodInvoker); AddKeyHandler(new Set(ALT2_SCAN, R_SHIFT_SCAN, GR_SCAN, U_SCAN), methodInvoker); AddKeyHandler(new Set(ALT2_SCAN, L_SHIFT_SCAN, GR_SCAN, U_SCAN), methodInvoker); + + AddKeyHandler(new Set(L_SHIFT_SCAN, ALT_SCAN, U_SCAN), methodInvoker); + AddKeyHandler(new Set(L_SHIFT_SCAN, ALT2_SCAN, U_SCAN), methodInvoker); + AddKeyHandler(new Set(R_SHIFT_SCAN, ALT_SCAN, U_SCAN), methodInvoker); + AddKeyHandler(new Set(R_SHIFT_SCAN, ALT2_SCAN, U_SCAN), methodInvoker); + AddKeyHandler(new Set(R_SHIFT_SCAN, ALT2_SCAN, GR_SCAN, U_SCAN), methodInvoker); + AddKeyHandler(new Set(L_SHIFT_SCAN, ALT2_SCAN, GR_SCAN, U_SCAN), methodInvoker); break; case ConsoleShortcutKey.F11: AddKeyHandler(new Set(Keys.F11), methodInvoker); @@ -264,12 +277,25 @@ namespace XenAdmin.ConsoleView RemoveKeyHandler(new Set(Keys.RMenu, Keys.LShiftKey, Keys.U)); RemoveKeyHandler(new Set(Keys.RMenu, Keys.RShiftKey, Keys.U)); + RemoveKeyHandler(new Set(Keys.ShiftKey, Keys.Menu, Keys.U)); + RemoveKeyHandler(new Set(Keys.LShiftKey, Keys.LMenu, Keys.U)); + RemoveKeyHandler(new Set(Keys.RShiftKey, Keys.LMenu, Keys.U)); + RemoveKeyHandler(new Set(Keys.LShiftKey, Keys.RMenu, Keys.U)); + RemoveKeyHandler(new Set(Keys.RShiftKey, Keys.RMenu, Keys.U)); + RemoveKeyHandler(new Set(ALT_SCAN, L_SHIFT_SCAN, U_SCAN)); RemoveKeyHandler(new Set(ALT2_SCAN, L_SHIFT_SCAN, U_SCAN)); RemoveKeyHandler(new Set(ALT_SCAN, R_SHIFT_SCAN, U_SCAN)); RemoveKeyHandler(new Set(ALT2_SCAN, R_SHIFT_SCAN, U_SCAN)); RemoveKeyHandler(new Set(ALT2_SCAN, R_SHIFT_SCAN, GR_SCAN, U_SCAN)); RemoveKeyHandler(new Set(ALT2_SCAN, L_SHIFT_SCAN, GR_SCAN, U_SCAN)); + + RemoveKeyHandler(new Set(L_SHIFT_SCAN, ALT_SCAN, U_SCAN)); + RemoveKeyHandler(new Set(L_SHIFT_SCAN, ALT2_SCAN, U_SCAN)); + RemoveKeyHandler(new Set(R_SHIFT_SCAN, ALT_SCAN, U_SCAN)); + RemoveKeyHandler(new Set(R_SHIFT_SCAN, ALT2_SCAN, U_SCAN)); + RemoveKeyHandler(new Set(R_SHIFT_SCAN, ALT2_SCAN, GR_SCAN, U_SCAN)); + RemoveKeyHandler(new Set(L_SHIFT_SCAN, ALT2_SCAN, GR_SCAN, U_SCAN)); break; case ConsoleShortcutKey.F11: RemoveKeyHandler(new Set(Keys.F11)); diff --git a/XenAdmin/ConsoleView/RdpClient.cs b/XenAdmin/ConsoleView/RdpClient.cs index 8a5ab425d..9f3d19860 100644 --- a/XenAdmin/ConsoleView/RdpClient.cs +++ b/XenAdmin/ConsoleView/RdpClient.cs @@ -168,14 +168,9 @@ namespace XenAdmin.ConsoleView if (rdpControl == null) return; - Log.DebugFormat("Connecting RDPClient{0} using server '{1}', width '{2}' and height '{3}'", - rdpClient9 == null ? "6" : "9", - rdpIP, - w, - h); - if (rdpClient9 == null) { + Log.Debug($"Connecting RDPClient6 using server '{rdpIP}', width '{w}' and height '{h}'"); rdpClient6.Server = rdpIP; rdpClient6.DesktopWidth = w; rdpClient6.DesktopHeight = h; @@ -183,6 +178,7 @@ namespace XenAdmin.ConsoleView } else { + Log.Debug($"Connecting RDPClient9 using server '{rdpIP}', width '{w}' and height '{h}'"); rdpClient9.Server = rdpIP; rdpClient9.DesktopWidth = w; rdpClient9.DesktopHeight = h; diff --git a/XenAdmin/ConsoleView/VNCTabView.cs b/XenAdmin/ConsoleView/VNCTabView.cs index 6c50617ae..cca96fcd7 100644 --- a/XenAdmin/ConsoleView/VNCTabView.cs +++ b/XenAdmin/ConsoleView/VNCTabView.cs @@ -1057,7 +1057,7 @@ namespace XenAdmin.ConsoleView fullscreenForm.Refresh(); } - void Connection_BeforeConnectionEnd(object sender, EventArgs e) + void Connection_BeforeConnectionEnd(IXenConnection conn) { Program.Invoke(this, toggleFullscreen); } diff --git a/XenAdmin/ConsoleView/XSVNCScreen.cs b/XenAdmin/ConsoleView/XSVNCScreen.cs index e70c78040..46ce87343 100644 --- a/XenAdmin/ConsoleView/XSVNCScreen.cs +++ b/XenAdmin/ConsoleView/XSVNCScreen.cs @@ -1096,7 +1096,7 @@ namespace XenAdmin.ConsoleView sesssionRef = activeSession.opaque_ref; } - Stream stream = HTTPHelper.CONNECT(uri, console.Connection, sesssionRef, false, true); + Stream stream = HTTPHelper.CONNECT(uri, console.Connection, sesssionRef, false); InvokeConnection(v, stream, console); } diff --git a/XenAdmin/Controls/AD/LoggedInLabel.cs b/XenAdmin/Controls/AD/LoggedInLabel.cs index 21b07ecd6..44b963346 100644 --- a/XenAdmin/Controls/AD/LoggedInLabel.cs +++ b/XenAdmin/Controls/AD/LoggedInLabel.cs @@ -29,17 +29,11 @@ * SUCH DAMAGE. */ -using System; -using System.Collections.Generic; -using System.ComponentModel; using System.Drawing; -using System.Data; -using System.Text; using System.Windows.Forms; using XenAPI; using XenAdmin.Network; -using XenAdmin.Core; -using XenAdmin.Commands; + namespace XenAdmin.Controls { @@ -61,8 +55,8 @@ namespace XenAdmin.Controls // if the old value was not null then we need to deregister the event handlers if (connection != null) { - connection.ConnectionStateChanged -= new EventHandler(connection_ConnectionStateChanged); - connection.CachePopulated -= new EventHandler(connection_CachePopulated); + connection.ConnectionStateChanged -= connection_ConnectionStateChanged; + connection.CachePopulated -= connection_CachePopulated; } // Now set to the new value, if it's not null then we set the labels and tooltip relevant to the new connection @@ -70,9 +64,9 @@ namespace XenAdmin.Controls if (connection != null) { // If the current connection disconnects we need to clear the labels - connection.ConnectionStateChanged += new EventHandler(connection_ConnectionStateChanged); + connection.ConnectionStateChanged += connection_ConnectionStateChanged; // if the cache isn't populated yet we can clear the lables and update later off this event handler - connection.CachePopulated += new EventHandler(connection_CachePopulated); + connection.CachePopulated += connection_CachePopulated; if (connection.CacheIsPopulated) { setLabelText(); @@ -85,25 +79,14 @@ namespace XenAdmin.Controls } } - /// - /// Used to clear the labels on a disconnect - /// - /// - /// - void connection_ConnectionStateChanged(object sender, EventArgs e) + void connection_ConnectionStateChanged(IXenConnection conn) { - Program.Invoke(Program.MainWindow, delegate - { - setLabelText(); - }); + Program.Invoke(Program.MainWindow, setLabelText); } - void connection_CachePopulated(object sender, EventArgs e) + void connection_CachePopulated(IXenConnection conn) { - Program.Invoke(Program.MainWindow, delegate - { - setLabelText(); - }); + Program.Invoke(Program.MainWindow, setLabelText); } private void setLabelText() diff --git a/XenAdmin/Controls/AffinityPicker.ja.resx b/XenAdmin/Controls/AffinityPicker.ja.resx index fc4abeea4..a11f17fc1 100644 --- a/XenAdmin/Controls/AffinityPicker.ja.resx +++ b/XenAdmin/Controls/AffinityPicker.ja.resx @@ -135,7 +135,7 @@ 2 - ホーム サーバーを指定しない(&D) 必要なリソースを持つ任意のサーバー上で VM が起動します (共有ストレージ必須)。 + ホーム サーバーを指定しない(&D)。必要なリソースを持つ任意のサーバー上で VM が起動します (共有ストレージ必須)。 TopLeft diff --git a/XenAdmin/Controls/Ballooning/MemorySpinner.cs b/XenAdmin/Controls/Ballooning/MemorySpinner.cs index 0c6871a55..90016967d 100644 --- a/XenAdmin/Controls/Ballooning/MemorySpinner.cs +++ b/XenAdmin/Controls/Ballooning/MemorySpinner.cs @@ -106,7 +106,7 @@ namespace XenAdmin.Controls.Ballooning decimal newValue; if (Units == "GB") { - newValue = (decimal)Util.ToGB(value, 1, RoundingBehaviour.Nearest); + newValue = (decimal)Util.ToGB(value, RoundingBehaviour.Nearest, 1); } else { @@ -134,12 +134,12 @@ namespace XenAdmin.Controls.Ballooning public static void CalcGBRanges(double minBytes, double maxBytes, out double minGB, out double maxGB) { // Round ranges inwards to avoid bugs like CA-34487 and CA-34996 - minGB = Util.ToGB(minBytes, 1, RoundingBehaviour.Up); - maxGB = Util.ToGB(maxBytes, 1, RoundingBehaviour.Down); + minGB = Util.ToGB(minBytes, RoundingBehaviour.Up, 1); + maxGB = Util.ToGB(maxBytes, RoundingBehaviour.Down, 1); if (minGB > maxGB) // just in case... { - minGB = Util.ToGB(minBytes, 1, RoundingBehaviour.None); - maxGB = Util.ToGB(maxBytes, 1, RoundingBehaviour.None); + minGB = Util.ToGB(minBytes, RoundingBehaviour.None, 1); + maxGB = Util.ToGB(maxBytes, RoundingBehaviour.None, 1); } } diff --git a/XenAdmin/Controls/CheckableDataGridView/CheckableDataGridViewController.cs b/XenAdmin/Controls/CheckableDataGridView/CheckableDataGridViewController.cs index b7fa9f9e1..b98a0aa0d 100644 --- a/XenAdmin/Controls/CheckableDataGridView/CheckableDataGridViewController.cs +++ b/XenAdmin/Controls/CheckableDataGridView/CheckableDataGridViewController.cs @@ -106,11 +106,8 @@ namespace XenAdmin.Controls.CheckableDataGridView } } - private void cRow_CellDataUpdated(object sender, EventArgs e) + private void cRow_CellDataUpdated(CheckableDataGridViewRow row) { - CheckableDataGridViewRow row = sender as CheckableDataGridViewRow; - if(row == null) - return; UpdateRow(row, true); } diff --git a/XenAdmin/Controls/CheckableDataGridView/CheckableDataGridViewRow.cs b/XenAdmin/Controls/CheckableDataGridView/CheckableDataGridViewRow.cs index 1c750531c..0a339064e 100644 --- a/XenAdmin/Controls/CheckableDataGridView/CheckableDataGridViewRow.cs +++ b/XenAdmin/Controls/CheckableDataGridView/CheckableDataGridViewRow.cs @@ -40,14 +40,9 @@ namespace XenAdmin.Controls.CheckableDataGridView { public virtual IXenObject XenObject { get; private set; } - public delegate void CellTextUpdatedEvent(object sender, EventArgs e); - public event CellTextUpdatedEvent CellDataUpdated; + public event Action CellDataUpdated; - public CheckableDataGridViewRow() : this(null) - { - } - - protected CheckableDataGridViewRow(IXenObject xenObject) + protected CheckableDataGridViewRow(IXenObject xenObject = null) { XenObject = xenObject; } @@ -91,10 +86,7 @@ namespace XenAdmin.Controls.CheckableDataGridView /// /// Override this if you cells data is loaded after it is first drawn /// - public virtual bool CellDataLoaded - { - get { return true; } - } + public virtual bool CellDataLoaded => true; public virtual void BeginCellUpdate(){} @@ -131,8 +123,7 @@ namespace XenAdmin.Controls.CheckableDataGridView protected void TriggerCellTextUpdatedEvent() { - if (CellDataUpdated != null) - CellDataUpdated(this, EventArgs.Empty); + CellDataUpdated?.Invoke(this); } } } diff --git a/XenAdmin/Controls/ComboBoxes/VgpuComboBox.cs b/XenAdmin/Controls/ComboBoxes/VgpuComboBox.cs index d8993304c..6f475d199 100644 --- a/XenAdmin/Controls/ComboBoxes/VgpuComboBox.cs +++ b/XenAdmin/Controls/ComboBoxes/VgpuComboBox.cs @@ -106,7 +106,7 @@ namespace XenAdmin.Controls } - internal class GpuTuple : IEquatable + public class GpuTuple : IEquatable { public readonly GPU_group GpuGroup; public readonly VGPU_type[] VgpuTypes; diff --git a/XenAdmin/Controls/ConsolePanel.cs b/XenAdmin/Controls/ConsolePanel.cs index 5b3fe2d23..dd35166d3 100644 --- a/XenAdmin/Controls/ConsolePanel.cs +++ b/XenAdmin/Controls/ConsolePanel.cs @@ -36,11 +36,12 @@ using System.Windows.Forms; using XenAdmin.ConsoleView; using XenAPI; using System.Drawing; +using XenAdmin.Help; namespace XenAdmin.Controls { - public partial class ConsolePanel : UserControl + public partial class ConsolePanel : UserControl, IControlWithHelp { private const int MAX_ACTIVE_VM_CONSOLES = 10; @@ -56,6 +57,8 @@ namespace XenAdmin.Controls ClearErrorMessage(); } + public virtual string HelpID => "TabPageConsole"; + public void PauseAllViews() { // We're going to pause all of our VNCViews here, as this gets called when the VNC tab is not selected. @@ -384,5 +387,7 @@ namespace XenAdmin.Controls else setCurrentSource(cvm); } + + public override string HelpID => "TabPageCvmConsole"; } } diff --git a/XenAdmin/Controls/CustomDataGraph/ArchiveMaintainer.cs b/XenAdmin/Controls/CustomDataGraph/ArchiveMaintainer.cs index 3d1d11bdc..1001b70b7 100644 --- a/XenAdmin/Controls/CustomDataGraph/ArchiveMaintainer.cs +++ b/XenAdmin/Controls/CustomDataGraph/ArchiveMaintainer.cs @@ -279,7 +279,7 @@ namespace XenAdmin.Controls.CustomDataGraph Session session = xenObject.Connection.Session; if (session == null) return; - using (Stream httpstream = HTTPHelper.GET(URI(session, host, interval, xenObject), xenObject.Connection, true, false)) + using (Stream httpstream = HTTPHelper.GET(URI(session, host, interval, xenObject), xenObject.Connection, true)) { using (XmlReader reader = XmlReader.Create(httpstream)) { diff --git a/XenAdmin/Controls/DecentGroupBox.cs b/XenAdmin/Controls/DecentGroupBox.cs index 5f1917da5..1467f7e74 100644 --- a/XenAdmin/Controls/DecentGroupBox.cs +++ b/XenAdmin/Controls/DecentGroupBox.cs @@ -96,13 +96,7 @@ namespace XenAdmin.Controls /// /// The text that has been passed to the base System.Windows.Forms.GroupBox class, escaped as necessary. /// - protected String EscapedText - { - get - { - return base.Text; - } - } + public string EscapedText => base.Text; private const int FUDGE = 15; diff --git a/XenAdmin/Controls/DiskSpinner.Designer.cs b/XenAdmin/Controls/DiskSpinner.Designer.cs new file mode 100644 index 000000000..ab7c65cd9 --- /dev/null +++ b/XenAdmin/Controls/DiskSpinner.Designer.cs @@ -0,0 +1,113 @@ +namespace XenAdmin.Controls +{ + partial class DiskSpinner + { + /// + /// 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)) + { + DiskSizeNumericUpDown.TextChanged -= DiskSizeNumericUpDown_TextChanged; + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component 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(DiskSpinner)); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanelError = new System.Windows.Forms.TableLayoutPanel(); + this.labelError = new System.Windows.Forms.Label(); + this.pictureBoxError = new System.Windows.Forms.PictureBox(); + this.comboBoxUnits = new System.Windows.Forms.ComboBox(); + this.DiskSizeNumericUpDown = new System.Windows.Forms.NumericUpDown(); + this.tableLayoutPanel1.SuspendLayout(); + this.tableLayoutPanelError.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxError)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.DiskSizeNumericUpDown)).BeginInit(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanelError, 2, 0); + this.tableLayoutPanel1.Controls.Add(this.comboBoxUnits, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.DiskSizeNumericUpDown, 0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + // + // tableLayoutPanelError + // + resources.ApplyResources(this.tableLayoutPanelError, "tableLayoutPanelError"); + this.tableLayoutPanelError.Controls.Add(this.labelError, 1, 0); + this.tableLayoutPanelError.Controls.Add(this.pictureBoxError, 0, 0); + this.tableLayoutPanelError.Name = "tableLayoutPanelError"; + // + // labelError + // + resources.ApplyResources(this.labelError, "labelError"); + this.labelError.ForeColor = System.Drawing.Color.Red; + this.labelError.Name = "labelError"; + // + // pictureBoxError + // + resources.ApplyResources(this.pictureBoxError, "pictureBoxError"); + this.pictureBoxError.Name = "pictureBoxError"; + this.pictureBoxError.TabStop = false; + // + // comboBoxUnits + // + this.comboBoxUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + resources.ApplyResources(this.comboBoxUnits, "comboBoxUnits"); + this.comboBoxUnits.FormattingEnabled = true; + this.comboBoxUnits.Name = "comboBoxUnits"; + this.comboBoxUnits.SelectedIndexChanged += new System.EventHandler(this.comboBoxUnits_SelectedIndexChanged); + // + // DiskSizeNumericUpDown + // + resources.ApplyResources(this.DiskSizeNumericUpDown, "DiskSizeNumericUpDown"); + this.DiskSizeNumericUpDown.Name = "DiskSizeNumericUpDown"; + this.DiskSizeNumericUpDown.ValueChanged += new System.EventHandler(this.DiskSizeNumericUpDown_ValueChanged); + this.DiskSizeNumericUpDown.KeyUp += new System.Windows.Forms.KeyEventHandler(this.DiskSizeNumericUpDown_KeyUp); + // + // DiskSpinner + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.Controls.Add(this.tableLayoutPanel1); + this.Name = "DiskSpinner"; + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + this.tableLayoutPanelError.ResumeLayout(false); + this.tableLayoutPanelError.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxError)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.DiskSizeNumericUpDown)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.NumericUpDown DiskSizeNumericUpDown; + private System.Windows.Forms.ComboBox comboBoxUnits; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanelError; + private System.Windows.Forms.Label labelError; + private System.Windows.Forms.PictureBox pictureBoxError; + } +} diff --git a/XenAdmin/Controls/DiskSpinner.cs b/XenAdmin/Controls/DiskSpinner.cs new file mode 100644 index 000000000..49d9449a1 --- /dev/null +++ b/XenAdmin/Controls/DiskSpinner.cs @@ -0,0 +1,254 @@ +/* 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.ComponentModel; +using System.Windows.Forms; + + +namespace XenAdmin.Controls +{ + public partial class DiskSpinner : UserControl + { + private const long DEFAULT_MINIMUM = Util.BINARY_MEGA; //default minimum size for disks + private const long DEFAULT_MAXIMUM = Util.BINARY_PETA; //default maximum size for disks + + private long _minDiskSize = DEFAULT_MINIMUM; + private bool _updating; + private bool _isSizeValid; + + public event Action SelectedSizeChanged; + + public DiskSpinner() + { + InitializeComponent(); + DiskSizeNumericUpDown.TextChanged += DiskSizeNumericUpDown_TextChanged; + } + + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public bool CanResize + { + get => DiskSizeNumericUpDown.Enabled && comboBoxUnits.Enabled; + set => DiskSizeNumericUpDown.Enabled = comboBoxUnits.Enabled = value; + } + + public long SelectedSize { get; private set; } = Util.BINARY_GIGA; //default size for disks + + public bool IsSizeValid + { + get => _isSizeValid; + private set + { + _isSizeValid = value; + SelectedSizeChanged?.Invoke(); + } + } + + public void Populate(long selectedSize = Util.BINARY_GIGA, long minSize = DEFAULT_MINIMUM) + { + if (minSize < DEFAULT_MINIMUM) + minSize = DEFAULT_MINIMUM; + if (minSize > DEFAULT_MAXIMUM) + minSize = DEFAULT_MAXIMUM; + + if (selectedSize < minSize) + selectedSize = minSize; + if (selectedSize > DEFAULT_MAXIMUM) + selectedSize = DEFAULT_MAXIMUM; + + SelectedSize = selectedSize; + _minDiskSize = minSize; + + comboBoxUnits.Items.Add(new DiskSizeWithUnits(3, 1, 0.001M, Util.BINARY_KILO, Util.BINARY_TERA, Messages.VAL_TERB, Util.ToTB)); + comboBoxUnits.Items.Add(new DiskSizeWithUnits(3, 1, 0.001M, Util.BINARY_MEGA, Util.BINARY_GIGA, Messages.VAL_GIGB, Util.ToGB)); + comboBoxUnits.Items.Add(new DiskSizeWithUnits(0, 256, 1, Util.BINARY_GIGA, Util.BINARY_MEGA, Messages.VAL_MEGB, Util.ToMB)); + + foreach (DiskSizeWithUnits item in comboBoxUnits.Items) + { + if (item.TryRoundOptimal(selectedSize, out _)) + { + comboBoxUnits.SelectedItem = item; + break; + } + } + } + + public void ValidateSize() + { + if (_updating || !(comboBoxUnits.SelectedItem is DiskSizeWithUnits dsk)) + return; + + if (string.IsNullOrEmpty(DiskSizeNumericUpDown.Text.Trim())) //do not issue error here + { + SetError(null); + IsSizeValid = false; + return; + } + + // Don't use DiskSizeNumericUpDown.Value here, as it will fire the NumericUpDown built-in validation. + // Use Text property instead. (CA-46028) + + if (!decimal.TryParse(DiskSizeNumericUpDown.Text.Trim(), out decimal result) || result < 0) + { + SetError(Messages.INVALID_NUMBER); + IsSizeValid = false; + return; + } + + try + { + SelectedSize = (long)(result * dsk.Multiplier); + } + catch (OverflowException) //CA-71312 + { + SelectedSize = long.MaxValue; + } + + if (SelectedSize < _minDiskSize) + { + SetError(string.Format(Messages.DISK_TOO_SMALL, Util.DiskSizeString(_minDiskSize, dsk.DecimalPlaces))); + IsSizeValid = false; + return; + } + + if (SelectedSize > DEFAULT_MAXIMUM) + { + SetError(Messages.INVALID_NUMBER); + IsSizeValid = false; + return; + } + + SetError(null); + IsSizeValid = true; + } + + public void SetError(string error) + { + if (string.IsNullOrEmpty(error)) + tableLayoutPanelError.Visible = false; + else + { + tableLayoutPanelError.Visible = true; + labelError.Text = error; + } + } + + + private void DiskSizeNumericUpDown_ValueChanged(object sender, EventArgs e) + { + ValidateSize(); + } + + private void DiskSizeNumericUpDown_TextChanged(object sender, EventArgs e) + { + ValidateSize(); + } + + private void DiskSizeNumericUpDown_KeyUp(object sender, KeyEventArgs e) + { + ValidateSize(); + } + + private void comboBoxUnits_SelectedIndexChanged(object sender, EventArgs e) + { + try + { + _updating = true; + if (!(comboBoxUnits.SelectedItem is DiskSizeWithUnits dsk)) + return; + + DiskSizeNumericUpDown.Increment = dsk.Increment; + DiskSizeNumericUpDown.DecimalPlaces = dsk.DecimalPlaces; + DiskSizeNumericUpDown.Minimum = dsk.Minimum; + DiskSizeNumericUpDown.Maximum = dsk.Maximum; + DiskSizeNumericUpDown.Value = dsk.RoundSize(SelectedSize); + } + finally + { + _updating = false; + } + + ValidateSize(); + } + + + private struct DiskSizeWithUnits + { + public int DecimalPlaces { get; } + public int Increment { get; } + public decimal Minimum { get; } + public decimal Maximum { get; } + public long Multiplier { get; } + public string Unit { get; } + public Func RoundingFunction { get; } + + public DiskSizeWithUnits(int decimalPlaces, int increment, decimal minimum, decimal maximum, long multiplier, + string unit, Func roundingFunction) + { + DecimalPlaces = decimalPlaces; + Increment = increment; + Minimum = minimum; + Maximum = maximum; + Multiplier = multiplier; + Unit = unit; + RoundingFunction = roundingFunction; + } + + public override string ToString() + { + return Unit; + } + + public decimal RoundSize(decimal size) + { + var rounded = (decimal)RoundingFunction((double)size, RoundingBehaviour.Up, DecimalPlaces); + if (rounded < Minimum) + return Minimum; + if (rounded > Maximum) + return Maximum; + return rounded; + } + + public bool TryRoundOptimal(decimal size, out decimal result) + { + if (size >= Multiplier) + { + result = (decimal)RoundingFunction((double)size, RoundingBehaviour.Up, DecimalPlaces); + return true; + } + + result = 0; + return false; + } + } + } +} diff --git a/XenAdmin/Controls/DiskSpinner.ja.resx b/XenAdmin/Controls/DiskSpinner.ja.resx new file mode 100644 index 000000000..a521f52e4 --- /dev/null +++ b/XenAdmin/Controls/DiskSpinner.ja.resx @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + GrowAndShrink + + + 3 + + + Left, Right + + + True + + + GrowAndShrink + + + 2 + + + Left + + + True + + + + Segoe UI, 9pt + + + NoControl + + + 25, 3 + + + 276, 15 + + + 0 + + + There are no SR locations that can support this disk + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 0 + + + Segoe UI, 9pt + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAelJREFUOE+V + k11P1EAUhqftirf+lI3o/+hf4kYSLgjKBVy5K6KwREhBdgOExEJCMBjMGgFR+SgECBpZFwhEkOTwnOl0 + U+CKkzzp1zzvnGmn5nZ1FEwIEcgt9F7oht0tHj6CuC/wZMkrSMM8lGNomDbZgznu9fJMx+hYp6Xl5Pqs + X5BzpFNowh/EQxewYx7IJoz6gYbUb4RwEat8lpv1NxzALmwj/oR1WIGK79tOMjnUtnXWv/CvPCBXyY78 + Kj5tzZoUn8gl9xrlV/LZFGQJutPlhBoQLbK+Izerylr/m03ZRNyGK861znlWRV4wgVQ820WkAbKPmK31 + AEFlLT1m8iXH6WK7jCB/gGlQ1wZka92iXV3rj1yIlspTxcfyFmkKZqBmbAdpQIK0Ad9h1Qa0t2bW0oAq + ATUb4MskRPmANaRv8JX1redkFZXsPCZkAnEMKrmAqOYF8gV5GS6SpCVMIryHCxdyykscsrIn/Z79CvYl + hj18kk/IH+EoGpczBk4glmhZW53l/ITgtXJZniO/hs7Abu90a3MSD7I55hH0DQ9DybWqAe9ApR54oUc/ + 3dJW1uLCbuUSIfp5qgjjLmAEYQg0oATdvp355lbWciFxF629ZH36koYR3jixl3vP0rbv/kz54uE9fmdj + rgGIa8PaA/xpMAAAAABJRU5ErkJggg== + + + + NoControl + + + 3, 3 + + + 16, 16 + + + 2 + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 1 + + + Segoe UI, 9pt + + + 158, 3 + + + 1 + + + 304, 22 + + + 9 + + + tableLayoutPanelError + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelError" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> + + + Segoe UI, 9pt + + + 114, 3 + + + 38, 23 + + + 8 + + + comboBoxUnits + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + Segoe UI, 9pt + + + 3, 3 + + + 105, 23 + + + 7 + + + Right + + + DiskSizeNumericUpDown + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + Fill + + + 0, 0 + + + 0, 0, 0, 0 + + + 1 + + + 465, 29 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanelError" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="comboBoxUnits" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="DiskSizeNumericUpDown" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> + + + True + + + 96, 96 + + + True + + + GrowAndShrink + + + 0, 0, 0, 0 + + + 465, 29 + + + DiskSpinner + + + System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/XenAdmin/Controls/DiskSpinner.resx b/XenAdmin/Controls/DiskSpinner.resx new file mode 100644 index 000000000..e9b555fca --- /dev/null +++ b/XenAdmin/Controls/DiskSpinner.resx @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + GrowAndShrink + + + 3 + + + Left, Right + + + True + + + GrowAndShrink + + + 2 + + + Left + + + True + + + + Segoe UI, 9pt + + + NoControl + + + 25, 3 + + + 276, 15 + + + 0 + + + There are no SR locations that can support this disk + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 0 + + + Segoe UI, 9pt + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAelJREFUOE+V + k11P1EAUhqftirf+lI3o/+hf4kYSLgjKBVy5K6KwREhBdgOExEJCMBjMGgFR+SgECBpZFwhEkOTwnOl0 + U+CKkzzp1zzvnGmn5nZ1FEwIEcgt9F7oht0tHj6CuC/wZMkrSMM8lGNomDbZgznu9fJMx+hYp6Xl5Pqs + X5BzpFNowh/EQxewYx7IJoz6gYbUb4RwEat8lpv1NxzALmwj/oR1WIGK79tOMjnUtnXWv/CvPCBXyY78 + Kj5tzZoUn8gl9xrlV/LZFGQJutPlhBoQLbK+Izerylr/m03ZRNyGK861znlWRV4wgVQ820WkAbKPmK31 + AEFlLT1m8iXH6WK7jCB/gGlQ1wZka92iXV3rj1yIlspTxcfyFmkKZqBmbAdpQIK0Ad9h1Qa0t2bW0oAq + ATUb4MskRPmANaRv8JX1redkFZXsPCZkAnEMKrmAqOYF8gV5GS6SpCVMIryHCxdyykscsrIn/Z79CvYl + hj18kk/IH+EoGpczBk4glmhZW53l/ITgtXJZniO/hs7Abu90a3MSD7I55hH0DQ9DybWqAe9ApR54oUc/ + 3dJW1uLCbuUSIfp5qgjjLmAEYQg0oATdvp355lbWciFxF629ZH36koYR3jixl3vP0rbv/kz54uE9fmdj + rgGIa8PaA/xpMAAAAABJRU5ErkJggg== + + + + NoControl + + + 3, 3 + + + 16, 16 + + + 2 + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 1 + + + Segoe UI, 9pt + + + 170, 3 + + + 1 + + + 304, 22 + + + 2 + + + tableLayoutPanelError + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelError" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> + + + Segoe UI, 9pt + + + 114, 3 + + + 50, 23 + + + 1 + + + comboBoxUnits + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + Segoe UI, 9pt + + + 3, 3 + + + 105, 23 + + + 0 + + + Right + + + DiskSizeNumericUpDown + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + Fill + + + 0, 0 + + + 0, 0, 0, 0 + + + 1 + + + 477, 29 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanelError" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="comboBoxUnits" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="DiskSizeNumericUpDown" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> + + + True + + + 96, 96 + + + True + + + GrowAndShrink + + + 0, 0, 0, 0 + + + 477, 29 + + + DiskSpinner + + + System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/XenAdmin/Controls/DiskSpinner.zh-CN.resx b/XenAdmin/Controls/DiskSpinner.zh-CN.resx new file mode 100644 index 000000000..a521f52e4 --- /dev/null +++ b/XenAdmin/Controls/DiskSpinner.zh-CN.resx @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + GrowAndShrink + + + 3 + + + Left, Right + + + True + + + GrowAndShrink + + + 2 + + + Left + + + True + + + + Segoe UI, 9pt + + + NoControl + + + 25, 3 + + + 276, 15 + + + 0 + + + There are no SR locations that can support this disk + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 0 + + + Segoe UI, 9pt + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAelJREFUOE+V + k11P1EAUhqftirf+lI3o/+hf4kYSLgjKBVy5K6KwREhBdgOExEJCMBjMGgFR+SgECBpZFwhEkOTwnOl0 + U+CKkzzp1zzvnGmn5nZ1FEwIEcgt9F7oht0tHj6CuC/wZMkrSMM8lGNomDbZgznu9fJMx+hYp6Xl5Pqs + X5BzpFNowh/EQxewYx7IJoz6gYbUb4RwEat8lpv1NxzALmwj/oR1WIGK79tOMjnUtnXWv/CvPCBXyY78 + Kj5tzZoUn8gl9xrlV/LZFGQJutPlhBoQLbK+Izerylr/m03ZRNyGK861znlWRV4wgVQ820WkAbKPmK31 + AEFlLT1m8iXH6WK7jCB/gGlQ1wZka92iXV3rj1yIlspTxcfyFmkKZqBmbAdpQIK0Ad9h1Qa0t2bW0oAq + ATUb4MskRPmANaRv8JX1redkFZXsPCZkAnEMKrmAqOYF8gV5GS6SpCVMIryHCxdyykscsrIn/Z79CvYl + hj18kk/IH+EoGpczBk4glmhZW53l/ITgtXJZniO/hs7Abu90a3MSD7I55hH0DQ9DybWqAe9ApR54oUc/ + 3dJW1uLCbuUSIfp5qgjjLmAEYQg0oATdvp355lbWciFxF629ZH36koYR3jixl3vP0rbv/kz54uE9fmdj + rgGIa8PaA/xpMAAAAABJRU5ErkJggg== + + + + NoControl + + + 3, 3 + + + 16, 16 + + + 2 + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 1 + + + Segoe UI, 9pt + + + 158, 3 + + + 1 + + + 304, 22 + + + 9 + + + tableLayoutPanelError + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelError" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> + + + Segoe UI, 9pt + + + 114, 3 + + + 38, 23 + + + 8 + + + comboBoxUnits + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + Segoe UI, 9pt + + + 3, 3 + + + 105, 23 + + + 7 + + + Right + + + DiskSizeNumericUpDown + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + Fill + + + 0, 0 + + + 0, 0, 0, 0 + + + 1 + + + 465, 29 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanelError" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="comboBoxUnits" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="DiskSizeNumericUpDown" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> + + + True + + + 96, 96 + + + True + + + GrowAndShrink + + + 0, 0, 0, 0 + + + 465, 29 + + + DiskSpinner + + + System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/XenAdmin/Controls/FilterLocationToolStripDropDownButton.cs b/XenAdmin/Controls/FilterLocationToolStripDropDownButton.cs index f4a22cf60..680e1add1 100644 --- a/XenAdmin/Controls/FilterLocationToolStripDropDownButton.cs +++ b/XenAdmin/Controls/FilterLocationToolStripDropDownButton.cs @@ -71,9 +71,9 @@ namespace XenAdmin.Controls protected override void Dispose(bool disposing) { - base.Dispose(disposing); DeregisterEvents(); ConnectionsManager.XenConnections.CollectionChanged -= XenConnections_CollectionChanged; + base.Dispose(disposing); } private void OnFilterChanged() @@ -284,12 +284,12 @@ namespace XenAdmin.Controls host.PropertyChanged -= host_PropertyChanged; } - private void connection_ConnectionStateChanged(object sender, EventArgs e) + private void connection_ConnectionStateChanged(IXenConnection conn) { Program.Invoke(Program.MainWindow, RefreshLists); } - private void connection_CachePopulated(object sender, EventArgs e) + private void connection_CachePopulated(IXenConnection conn) { Program.Invoke(Program.MainWindow, RefreshLists); } diff --git a/XenAdmin/Controls/FilterStatusToolStripDropDownButton.cs b/XenAdmin/Controls/FilterStatusToolStripDropDownButton.cs index f01938ed9..6522a6c4b 100644 --- a/XenAdmin/Controls/FilterStatusToolStripDropDownButton.cs +++ b/XenAdmin/Controls/FilterStatusToolStripDropDownButton.cs @@ -31,9 +31,6 @@ using System; using System.ComponentModel; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; using System.Windows.Forms; using XenAdmin.Actions; @@ -51,77 +48,110 @@ namespace XenAdmin.Controls private ToolStripMenuItem toolStripMenuItemInProgress; private ToolStripMenuItem toolStripMenuItemError; private ToolStripMenuItem toolStripMenuItemCancelled; + private ToolStripMenuItem toolStripMenuItemQueued; + private ToolStripMenuItem toolStripMenuItemIncomplete; private ToolStripMenuItem toolStripMenuItemAll; public FilterStatusToolStripDropDownButton() { + toolStripMenuItemQueued = new ToolStripMenuItem + { + Text = Messages.STATUS_FILTER_QUEUED, + Checked = true, + CheckOnClick = true + }; toolStripMenuItemComplete = new ToolStripMenuItem - { - Text = Messages.STATUS_FILTER_COMPLETE, - Checked = true, - CheckOnClick = true - }; + { + Text = Messages.STATUS_FILTER_COMPLETE, + Checked = true, + CheckOnClick = true + }; toolStripMenuItemInProgress = new ToolStripMenuItem - { - Text = Messages.STATUS_FILTER_IN_PROGRESS, - Checked = true, - CheckOnClick = true - }; + { + Text = Messages.STATUS_FILTER_IN_PROGRESS, + Checked = true, + CheckOnClick = true + }; toolStripMenuItemError = new ToolStripMenuItem - { - Text = Messages.STATUS_FILTER_ERROR, - Checked = true, - CheckOnClick = true - }; + { + Text = Messages.STATUS_FILTER_ERROR, + Checked = true, + CheckOnClick = true + }; toolStripMenuItemCancelled = new ToolStripMenuItem - { - Text = Messages.STATUS_FILTER_CANCEL, - Checked = true, - CheckOnClick = true - }; - toolStripMenuItemAll = new ToolStripMenuItem - { - Text = Messages.FILTER_SHOW_ALL, - Enabled = false - }; - DropDownItems.AddRange(new ToolStripItem[] - { - toolStripMenuItemComplete, - toolStripMenuItemInProgress, - toolStripMenuItemError, - toolStripMenuItemCancelled, - new ToolStripSeparator(), - toolStripMenuItemAll - }); + { + Text = Messages.STATUS_FILTER_CANCEL, + Checked = true, + CheckOnClick = true + }; + toolStripMenuItemIncomplete = new ToolStripMenuItem + { + Text = Messages.STATUS_FILTER_INCOMPLETE, + Checked = true, + CheckOnClick = true + }; + toolStripMenuItemAll = new ToolStripMenuItem + { + Text = Messages.FILTER_SHOW_ALL, + Enabled = false + }; + + DropDownItems.AddRange(new ToolStripItem[] + { + toolStripMenuItemQueued, + toolStripMenuItemComplete, + toolStripMenuItemInProgress, + toolStripMenuItemError, + toolStripMenuItemCancelled, + toolStripMenuItemIncomplete, + new ToolStripSeparator(), + toolStripMenuItemAll + }); + + toolStripMenuItemQueued.CheckedChanged += Item_CheckedChanged; toolStripMenuItemComplete.CheckedChanged += Item_CheckedChanged; toolStripMenuItemInProgress.CheckedChanged += Item_CheckedChanged; toolStripMenuItemError.CheckedChanged += Item_CheckedChanged; toolStripMenuItemCancelled.CheckedChanged += Item_CheckedChanged; + toolStripMenuItemIncomplete.CheckedChanged += Item_CheckedChanged; } - public bool HideByStatus(ActionBase action) + public bool HideByStatus(IStatus iStatus) { - bool cancelled = action.IsCompleted && !action.Succeeded && (action.Exception is CancelledException); - bool error = action.IsCompleted && !action.Succeeded && !(action.Exception is CancelledException); - - return !((toolStripMenuItemComplete.Checked && action.Succeeded) - || (toolStripMenuItemError.Checked && error) - || (toolStripMenuItemInProgress.Checked && !action.IsCompleted) - || (toolStripMenuItemCancelled.Checked && cancelled)); + return !(toolStripMenuItemComplete.Checked && iStatus.Succeeded + || toolStripMenuItemError.Checked && iStatus.IsError + || toolStripMenuItemInProgress.Checked && iStatus.InProgress + || toolStripMenuItemCancelled.Checked && iStatus.IsCancelled + || toolStripMenuItemIncomplete.Checked && iStatus.IsIncomplete + || toolStripMenuItemQueued.Checked && iStatus.IsQueued); } - public bool FilterIsOn + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public bool ImplementsQueued { - get - { - return !toolStripMenuItemComplete.Checked - || !toolStripMenuItemInProgress.Checked - || !toolStripMenuItemError.Checked - || !toolStripMenuItemCancelled.Checked; - } + get => toolStripMenuItemQueued.Visible; + set => toolStripMenuItemQueued.Visible = value; } + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public bool ImplementsIncomplete + { + get => toolStripMenuItemIncomplete.Visible; + set => toolStripMenuItemIncomplete.Visible = value; + } + + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public bool FilterIsOn => + !toolStripMenuItemComplete.Checked + || !toolStripMenuItemInProgress.Checked + || !toolStripMenuItemError.Checked + || !toolStripMenuItemCancelled.Checked + || !toolStripMenuItemIncomplete.Checked + || !toolStripMenuItemQueued.Checked; + protected override void OnDropDownItemClicked(ToolStripItemClickedEventArgs e) { base.OnDropDownItemClicked(e); @@ -133,6 +163,8 @@ namespace XenAdmin.Controls toolStripMenuItemInProgress.Checked = true; toolStripMenuItemError.Checked = true; toolStripMenuItemCancelled.Checked = true; + toolStripMenuItemIncomplete.Checked = true; + toolStripMenuItemQueued.Checked = true; internalUpdating = false; Item_CheckedChanged(null, null); diff --git a/XenAdmin/Controls/GPU/GpuConfiguration.Designer.cs b/XenAdmin/Controls/GPU/GpuConfiguration.Designer.cs index 102f3bbe6..25c342c82 100644 --- a/XenAdmin/Controls/GPU/GpuConfiguration.Designer.cs +++ b/XenAdmin/Controls/GPU/GpuConfiguration.Designer.cs @@ -28,35 +28,27 @@ /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GpuConfiguration)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); - this.imageList1 = new System.Windows.Forms.ImageList(this.components); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.cancelButton = new System.Windows.Forms.Button(); this.okButton = new System.Windows.Forms.Button(); this.dataGridViewEx1 = new XenAdmin.Controls.DataGridViewEx.DataGridViewEx(); - this.rubricLabel = new XenAdmin.Controls.Common.AutoHeightLabel(); this.CheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); this.NameColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.VGPUsPerGPUColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.MaxResolutionColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.MaxDisplaysColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.VideoRAMColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.rubricLabel = new XenAdmin.Controls.Common.AutoHeightLabel(); this.tableLayoutPanel1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dataGridViewEx1)).BeginInit(); this.SuspendLayout(); // - // imageList1 - // - this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream"))); - this.imageList1.TransparentColor = System.Drawing.Color.Transparent; - this.imageList1.Images.SetKeyName(0, "000_Abort_h32bit_16.png"); - this.imageList1.Images.SetKeyName(1, "000_Tick_h32bit_16.png"); - // // tableLayoutPanel1 // resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); @@ -84,7 +76,6 @@ // this.dataGridViewEx1.BackgroundColor = System.Drawing.SystemColors.Window; this.dataGridViewEx1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; - this.dataGridViewEx1.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.Disable; this.dataGridViewEx1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; this.dataGridViewEx1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.CheckBoxColumn, @@ -94,33 +85,35 @@ this.MaxDisplaysColumn, this.VideoRAMColumn}); this.tableLayoutPanel1.SetColumnSpan(this.dataGridViewEx1, 3); + dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle5.Font = new System.Drawing.Font("Segoe UI", 9F); + dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridViewEx1.DefaultCellStyle = dataGridViewCellStyle5; resources.ApplyResources(this.dataGridViewEx1, "dataGridViewEx1"); - this.dataGridViewEx1.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnKeystrokeOrF2; + this.dataGridViewEx1.HideSelection = true; this.dataGridViewEx1.Name = "dataGridViewEx1"; + this.dataGridViewEx1.ReadOnly = true; this.dataGridViewEx1.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; - this.dataGridViewEx1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; - this.dataGridViewEx1.SelectionChanged += new System.EventHandler(this.dataGridViewEx1_SelectionChanged); - // - // rubricLabel - // - resources.ApplyResources(this.rubricLabel, "rubricLabel"); - this.rubricLabel.AutoEllipsis = true; - this.rubricLabel.BackColor = System.Drawing.Color.Transparent; - this.tableLayoutPanel1.SetColumnSpan(this.rubricLabel, 3); - this.rubricLabel.MinimumSize = new System.Drawing.Size(0, 16); - this.rubricLabel.Name = "rubricLabel"; + this.dataGridViewEx1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; + this.dataGridViewEx1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView_CellClick); // // CheckBoxColumn // this.CheckBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCellsExceptHeader; resources.ApplyResources(this.CheckBoxColumn, "CheckBoxColumn"); this.CheckBoxColumn.Name = "CheckBoxColumn"; + this.CheckBoxColumn.ReadOnly = true; this.CheckBoxColumn.Resizable = System.Windows.Forms.DataGridViewTriState.False; // // NameColumn // resources.ApplyResources(this.NameColumn, "NameColumn"); this.NameColumn.Name = "NameColumn"; + this.NameColumn.ReadOnly = true; this.NameColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // // VGPUsPerGPUColumn @@ -130,6 +123,7 @@ this.VGPUsPerGPUColumn.DefaultCellStyle = dataGridViewCellStyle1; resources.ApplyResources(this.VGPUsPerGPUColumn, "VGPUsPerGPUColumn"); this.VGPUsPerGPUColumn.Name = "VGPUsPerGPUColumn"; + this.VGPUsPerGPUColumn.ReadOnly = true; this.VGPUsPerGPUColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True; this.VGPUsPerGPUColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // @@ -140,6 +134,7 @@ this.MaxResolutionColumn.DefaultCellStyle = dataGridViewCellStyle2; resources.ApplyResources(this.MaxResolutionColumn, "MaxResolutionColumn"); this.MaxResolutionColumn.Name = "MaxResolutionColumn"; + this.MaxResolutionColumn.ReadOnly = true; this.MaxResolutionColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True; this.MaxResolutionColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // @@ -150,6 +145,7 @@ this.MaxDisplaysColumn.DefaultCellStyle = dataGridViewCellStyle3; resources.ApplyResources(this.MaxDisplaysColumn, "MaxDisplaysColumn"); this.MaxDisplaysColumn.Name = "MaxDisplaysColumn"; + this.MaxDisplaysColumn.ReadOnly = true; this.MaxDisplaysColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True; this.MaxDisplaysColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // @@ -160,9 +156,17 @@ this.VideoRAMColumn.DefaultCellStyle = dataGridViewCellStyle4; resources.ApplyResources(this.VideoRAMColumn, "VideoRAMColumn"); this.VideoRAMColumn.Name = "VideoRAMColumn"; + this.VideoRAMColumn.ReadOnly = true; this.VideoRAMColumn.Resizable = System.Windows.Forms.DataGridViewTriState.False; this.VideoRAMColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // + // rubricLabel + // + resources.ApplyResources(this.rubricLabel, "rubricLabel"); + this.rubricLabel.BackColor = System.Drawing.Color.Transparent; + this.tableLayoutPanel1.SetColumnSpan(this.rubricLabel, 3); + this.rubricLabel.Name = "rubricLabel"; + // // GpuConfiguration // this.AcceptButton = this.okButton; @@ -173,6 +177,7 @@ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; this.Name = "GpuConfiguration"; this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.dataGridViewEx1)).EndInit(); this.ResumeLayout(false); @@ -181,7 +186,6 @@ #endregion private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.ImageList imageList1; private XenAdmin.Controls.Common.AutoHeightLabel rubricLabel; private XenAdmin.Controls.DataGridViewEx.DataGridViewEx dataGridViewEx1; private System.Windows.Forms.Button okButton; diff --git a/XenAdmin/Controls/GPU/GpuConfiguration.cs b/XenAdmin/Controls/GPU/GpuConfiguration.cs index d0e676428..edfb81b40 100644 --- a/XenAdmin/Controls/GPU/GpuConfiguration.cs +++ b/XenAdmin/Controls/GPU/GpuConfiguration.cs @@ -37,46 +37,33 @@ using XenAdmin.Controls.DataGridViewEx; using XenAPI; using XenAdmin.Dialogs; using XenAdmin.Actions.GPU; -using System.Text.RegularExpressions; + namespace XenAdmin.Controls.GPU { public partial class GpuConfiguration : XenDialogBase { - private List PGpuList { get; set; } + private List PGpuList { get; } - internal override string HelpName - { - get - { - return "GpuConfigurationDialog"; - } - } + internal override string HelpName => "GpuConfigurationDialog"; private GpuConfiguration() { InitializeComponent(); } - public GpuConfiguration(IEnumerable pGpuList) - : this() + public GpuConfiguration(List pGpuList) + : base(pGpuList[0].Connection) { - if (pGpuList == null) - throw new ArgumentNullException("pGpuList"); - if (pGpuList.Count() == 0) - throw new ArgumentOutOfRangeException("pGpuList", "pGpuList list should not be empty"); - if (pGpuList.ElementAt(0) == null) - throw new ArgumentOutOfRangeException("pGpuList[0]", "first element of the pGpuList list should not be null"); + InitializeComponent(); PGpuList = pGpuList.ToList(); - connection = PGpuList[0].Connection; PopulateGrid(pGpuList); } protected override void OnShown(EventArgs e) { base.OnShown(e); - SetWindowTitle(); } @@ -91,17 +78,16 @@ namespace XenAdmin.Controls.GPU { if (pGpu.supported_VGPU_types != null) { - dataGridViewEx1.Rows.AddRange((from supportedVGpuTypeRef in pGpu.supported_VGPU_types - let supportedVGpuType = pGpu.Connection.Resolve(supportedVGpuTypeRef) - let enabled = pGpu.enabled_VGPU_types.Contains(supportedVGpuTypeRef) - let isInUse = pGpuList.Any(p => p.Connection.ResolveAll(p.resident_VGPUs).Any(v => v.type.opaque_ref == supportedVGpuTypeRef.opaque_ref)) - orderby supportedVGpuType descending - - select new VGpuDetailWithCheckBoxRow(supportedVGpuTypeRef, supportedVGpuType, enabled, isInUse) - ) - .ToArray()); + var rows = from supportedVGpuTypeRef in pGpu.supported_VGPU_types + let supportedVGpuType = pGpu.Connection.Resolve(supportedVGpuTypeRef) + let enabled = pGpu.enabled_VGPU_types.Contains(supportedVGpuTypeRef) + let isInUse = pGpuList.Any(p => p.Connection.ResolveAll(p.resident_VGPUs).Any(v => v.type.opaque_ref == supportedVGpuTypeRef.opaque_ref)) + orderby supportedVGpuType descending + select new VGpuDetailWithCheckBoxRow(supportedVGpuTypeRef, supportedVGpuType, enabled, isInUse); + + dataGridViewEx1.Rows.AddRange(rows.Cast().ToArray()); } - SetCheckedValues(); + HideColumnIfEmpty(MaxResolutionColumn); HideColumnIfEmpty(MaxDisplaysColumn); } @@ -112,11 +98,6 @@ namespace XenAdmin.Controls.GPU } } - private void SetCheckedValues() - { - dataGridViewEx1.Rows.Cast().ToList().ForEach(r => r.Enabled = !r.IsReadOnly); - } - private void okButton_Click(object sender, System.EventArgs e) { var updatedEnabledVGpuListByPGpu = new Dictionary>>(); @@ -139,9 +120,14 @@ namespace XenAdmin.Controls.GPU Close(); } - private void dataGridViewEx1_SelectionChanged(object sender, System.EventArgs e) + private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e) { - dataGridViewEx1.ClearSelection(); + if (e.ColumnIndex != CheckBoxColumn.Index || e.RowIndex < 0 || e.RowIndex >= dataGridViewEx1.RowCount) + return; + + if (dataGridViewEx1.Rows[e.RowIndex] is VGpuDetailWithCheckBoxRow row && row.Enabled && + row.Cells[e.ColumnIndex] is DataGridViewCheckBoxCell clickedCell) + clickedCell.Value = !(bool)clickedCell.Value; } private void SetWindowTitle() @@ -152,8 +138,8 @@ namespace XenAdmin.Controls.GPU : String.Format(Messages.GPU_GROUP_NAME_AND_NO_OF_GPUS, name, PGpuList.Count); rubricLabel.Text = PGpuList.Count == 1 - ? Messages.GPU_RUBRIC_PLEASE_SELECT_WHICH_GPU_ONE - : Messages.GPU_RUBRIC_PLEASE_SELECT_WHICH_GPU_MULTIPLE; + ? Messages.GPU_RUBRIC_PLEASE_SELECT_WHICH_GPU_ONE + : Messages.GPU_RUBRIC_PLEASE_SELECT_WHICH_GPU_MULTIPLE; } private void HideColumnIfEmpty(DataGridViewColumn column) @@ -161,56 +147,57 @@ namespace XenAdmin.Controls.GPU bool columnEmpty = true; foreach (DataGridViewRow row in dataGridViewEx1.Rows) { - var value = row.Cells[column.Name].Value; - if (!String.IsNullOrEmpty((string)value)) + var value = row.Cells[column.Name].Value as string; + if (!string.IsNullOrEmpty(value)) { columnEmpty = false; break; } } if (columnEmpty) - dataGridViewEx1.Columns[column.Name].Visible = false; + column.Visible = false; } } class VGpuDetailWithCheckBoxRow : DataGridViewExRow { private readonly bool allowed; - private readonly DataGridViewCheckBoxCell checkBoxCell = new DataGridViewCheckBoxCell(false); + private readonly bool isInUse; + + private readonly DataGridViewCheckBoxCell checkBoxCell = new DataGridViewCheckBoxCell() + { + ThreeState = false, + TrueValue = true, + FalseValue = false, + ValueType = typeof(bool) + }; private readonly DataGridViewTextBoxCell nameColumn = new DataGridViewTextBoxCell(); private readonly DataGridViewTextBoxCell vGpusPerGpuColumn = new DataGridViewTextBoxCell(); private readonly DataGridViewTextBoxCell maxResolutionColumn = new DataGridViewTextBoxCell(); private readonly DataGridViewTextBoxCell maxDisplaysColumn = new DataGridViewTextBoxCell(); private readonly DataGridViewTextBoxCell videoRamColumn = new DataGridViewTextBoxCell(); - public VGPU_type VGpuType { get; private set; } - public XenRef VGpuTypeRef { get; private set; } - public bool IsReadOnly { get; private set; } + public VGPU_type VGpuType { get; } + public XenRef VGpuTypeRef { get; } - public bool NeedsSave - { - get { return (allowed != CheckBoxChecked); } - } - - public bool CheckBoxChecked - { - get { return (bool)checkBoxCell.Value; } - } + public bool NeedsSave => allowed != CheckBoxChecked; + public bool CheckBoxChecked => (bool)checkBoxCell.Value; public VGpuDetailWithCheckBoxRow(XenRef vGpuTypeRef, VGPU_type vGpuType, bool allowed, bool isInUse) { VGpuTypeRef = vGpuTypeRef; VGpuType = vGpuType; this.allowed = allowed; - IsReadOnly = isInUse && allowed; + this.isInUse = isInUse; - SetCells(); Cells.AddRange(checkBoxCell, nameColumn, vGpusPerGpuColumn, maxResolutionColumn, maxDisplaysColumn, videoRamColumn); - SetupCheckBoxCell(); + SetCells(); } private void SetCells() { + checkBoxCell.Value = allowed; + bool isPassThru = VGpuType.IsPassthrough(); nameColumn.Value = isPassThru ? Messages.VGPU_PASSTHRU_TOSTRING : VGpuType.model_name; @@ -234,13 +221,12 @@ namespace XenAdmin.Controls.GPU videoRamColumn.Value = VGpuType.framebuffer_size != 0 ? Util.MemorySizeStringSuitableUnits(VGpuType.framebuffer_size, true) : string.Empty; } - private void SetupCheckBoxCell() + protected override void OnDataGridViewChanged() { - checkBoxCell.TrueValue = true; - checkBoxCell.FalseValue = false; - checkBoxCell.ValueType = typeof(bool); - checkBoxCell.Value = allowed; - checkBoxCell.ReadOnly = IsReadOnly; + base.OnDataGridViewChanged(); + + if (DataGridView != null && isInUse && allowed) + Enabled = false; } } } diff --git a/XenAdmin/Controls/GPU/GpuConfiguration.ja.resx b/XenAdmin/Controls/GPU/GpuConfiguration.ja.resx index bccdaf271..21e57b4cf 100644 --- a/XenAdmin/Controls/GPU/GpuConfiguration.ja.resx +++ b/XenAdmin/Controls/GPU/GpuConfiguration.ja.resx @@ -112,70 +112,20 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 17, 17 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABY - CQAAAk1TRnQBSQFMAgEBAgEAAUgBAgFIAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo - AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA - AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 - AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA - AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm - AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM - AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA - ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz - AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ - AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM - AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA - AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA - AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ - AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ - AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA - AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm - ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ - Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz - AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA - AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM - AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM - ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM - Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA - AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM - AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ - AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz - AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm - AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw - AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/xcAAv8sAAL/DwAB9AEC - AUkB/ykAAfMDJAL/AwAB9AFFAUsB/wYAAU8BTgFPAZgpAAEkASUBJgElASQC/wEAAfQBRQElAUUB/wUA - AZgBTgFVATMBSQH/KAABRQMmASUBRQH/AfQBJAEmASUBbwH/BAAB8QFJAlUBVAFOAZgoAAH2ASQBJQEm - ASUBJAFuAUUCJgEkAf8EAAH/AU8BlwKYAVUBMwFJAf8oAAH/ASQBRgEmAiUCJgEkAv8EAAFyAZcDCAGX - AVUBTgFyKAAC/wEkAk0CJgHpAfQB/wQAAQcBTwEIAZgCSQGYAXcBLQFJAfQnAAH/AfQBRQRNASQC/wMA - AfQBTwEIAnIC/wFPAZgBVQEtAXIlAAH0A0UBRgFTA00BRgEkAv8CAAFPAZgBcgHvAwAB8QFyAZ0BVQFJ - AfQkAAFFAZMBmgN1AU0CRQJGAUUC/wEAAfQBTwHxBQAB8QFxAZcBTgFJJAAB9AFFAZMCmgF1AUUC/wFu - AUUBRgEkAQAB/wkAAZgBcgFVAU8BCCQAAfMBRQGTAZQBRQH0AwABGgFFASQBAAH/CgABcgGXAVUBSSUA - AfMCRQH/BgAB/w0AAXIBlwFPAQglAAL/FQAB/wFPAZcBcj0AAf8BcgH/IQABQgFNAT4HAAE+AwABKAMA - AUADAAEQAwABAQEAAQEFAAGAFwAD/wEAAv8B/AH/BAAB8wH/AfgBfwQAAcAB4QH4AX8EAAHAAUEB8AE/ - BAABwAEBAeABPwQAAcABAwHAAR8EAAHgAQMBwAEfBAAB4AEHAYABDwQAAeABBwEAAQ8EAAGAAQMBDgEH - BAABgAEBAR8BBwQAAYABAgH/AYMEAAHAAeIB/wHDBAAB4QH7Af8B4QQAAfMC/wHhBAAD/wHxBAAL - - - + 3 - + Bottom, Right - + Segoe UI, 9pt @@ -195,7 +145,7 @@ cancelButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -225,7 +175,7 @@ okButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -233,7 +183,7 @@ 1 - + True @@ -245,7 +195,7 @@ 10 - + True @@ -254,7 +204,7 @@ 150 - + True @@ -266,7 +216,7 @@ 93 - + True @@ -278,7 +228,7 @@ 91 - + True @@ -290,7 +240,7 @@ 80 - + True @@ -329,8 +279,11 @@ 2 - - Top, Left, Right + + True + + + Fill Segoe UI, 9pt @@ -344,14 +297,17 @@ 0, 6, 6, 6 + + 0, 16 + 640, 16 2 - - MiddleLeft + + この GPU で使用できる仮想 GPU の種類を選択します。 rubricLabel @@ -387,7 +343,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -398,7 +354,7 @@ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="cancelButton" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="okButton" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="dataGridViewEx1" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="rubricLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings> - + True @@ -416,47 +372,41 @@ 12, 12, 12, 12 - - imageList1 - - - System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - CheckBoxColumn - System.Windows.Forms.DataGridViewCheckBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewCheckBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 NameColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 VGPUsPerGPUColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 MaxResolutionColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 MaxDisplaysColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 VideoRAMColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 GpuConfiguration diff --git a/XenAdmin/Controls/GPU/GpuConfiguration.resx b/XenAdmin/Controls/GPU/GpuConfiguration.resx index 0d484e4b6..d00803c60 100644 --- a/XenAdmin/Controls/GPU/GpuConfiguration.resx +++ b/XenAdmin/Controls/GPU/GpuConfiguration.resx @@ -112,70 +112,20 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 17, 17 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABY - CQAAAk1TRnQBSQFMAgEBAgEAAUgBAgFIAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo - AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA - AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 - AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA - AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm - AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM - AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA - ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz - AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ - AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM - AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA - AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA - AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ - AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ - AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA - AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm - ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ - Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz - AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA - AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM - AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM - ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM - Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA - AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM - AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ - AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz - AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm - AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw - AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/xcAAv8sAAL/DwAB9AEC - AUkB/ykAAfMDJAL/AwAB9AFFAUsB/wYAAU8BTgFPAZgpAAEkASUBJgElASQC/wEAAfQBRQElAUUB/wUA - AZgBTgFVATMBSQH/KAABRQMmASUBRQH/AfQBJAEmASUBbwH/BAAB8QFJAlUBVAFOAZgoAAH2ASQBJQEm - ASUBJAFuAUUCJgEkAf8EAAH/AU8BlwKYAVUBMwFJAf8oAAH/ASQBRgEmAiUCJgEkAv8EAAFyAZcDCAGX - AVUBTgFyKAAC/wEkAk0CJgHpAfQB/wQAAQcBTwEIAZgCSQGYAXcBLQFJAfQnAAH/AfQBRQRNASQC/wMA - AfQBTwEIAnIC/wFPAZgBVQEtAXIlAAH0A0UBRgFTA00BRgEkAv8CAAFPAZgBcgHvAwAB8QFyAZ0BVQFJ - AfQkAAFFAZMBmgN1AU0CRQJGAUUC/wEAAfQBTwHxBQAB8QFxAZcBTgFJJAAB9AFFAZMCmgF1AUUC/wFu - AUUBRgEkAQAB/wkAAZgBcgFVAU8BCCQAAfMBRQGTAZQBRQH0AwABGgFFASQBAAH/CgABcgGXAVUBSSUA - AfMCRQH/BgAB/w0AAXIBlwFPAQglAAL/FQAB/wFPAZcBcj0AAf8BcgH/IQABQgFNAT4HAAE+AwABKAMA - AUADAAEQAwABAQEAAQEFAAGAFwAD/wEAAv8B/AH/BAAB8wH/AfgBfwQAAcAB4QH4AX8EAAHAAUEB8AE/ - BAABwAEBAeABPwQAAcABAwHAAR8EAAHgAQMBwAEfBAAB4AEHAYABDwQAAeABBwEAAQ8EAAGAAQMBDgEH - BAABgAEBAR8BBwQAAYABAgH/AYMEAAHAAeIB/wHDBAAB4QH7Af8B4QQAAfMC/wHhBAAD/wHxBAAL - - - + 3 - + Bottom, Right - + Segoe UI, 9pt @@ -186,7 +136,7 @@ 75, 23 - 1 + 3 Cancel @@ -195,7 +145,7 @@ cancelButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -216,7 +166,7 @@ 75, 23 - 0 + 2 OK @@ -225,7 +175,7 @@ okButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -233,7 +183,7 @@ 1 - + True @@ -245,7 +195,7 @@ 10 - + True @@ -254,7 +204,7 @@ 150 - + True @@ -264,9 +214,9 @@ 50 - 93 + 124 - + True @@ -278,7 +228,7 @@ 91 - + True @@ -290,7 +240,7 @@ 80 - + True @@ -309,13 +259,13 @@ Segoe UI, 9pt - 3, 31 + 3, 28 - 640, 262 + 640, 265 - 3 + 1 dataGridViewEx1 @@ -329,8 +279,11 @@ 2 - - Top, Left, Right + + True + + + Fill Segoe UI, 9pt @@ -339,19 +292,22 @@ NoControl - 0, 6 + 3, 0 - 0, 6, 6, 6 + 3, 0, 3, 10 + + + 0, 16 640, 16 - 2 + 0 - - MiddleLeft + + Select which virtual GPU types are allowed on this GPU. rubricLabel @@ -387,7 +343,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -398,7 +354,7 @@ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="cancelButton" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="okButton" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="dataGridViewEx1" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="rubricLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings> - + True @@ -416,47 +372,41 @@ 12, 12, 12, 12 - - imageList1 - - - System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - CheckBoxColumn - System.Windows.Forms.DataGridViewCheckBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewCheckBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 NameColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 VGPUsPerGPUColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 MaxResolutionColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 MaxDisplaysColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 VideoRAMColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 GpuConfiguration diff --git a/XenAdmin/Controls/GPU/GpuConfiguration.zh-CN.resx b/XenAdmin/Controls/GPU/GpuConfiguration.zh-CN.resx index 12f6b5dd5..c894f1e88 100644 --- a/XenAdmin/Controls/GPU/GpuConfiguration.zh-CN.resx +++ b/XenAdmin/Controls/GPU/GpuConfiguration.zh-CN.resx @@ -112,70 +112,20 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 17, 17 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABY - CQAAAk1TRnQBSQFMAgEBAgEAAUgBAgFIAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo - AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA - AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 - AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA - AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm - AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM - AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA - ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz - AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ - AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM - AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA - AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA - AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ - AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ - AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA - AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm - ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ - Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz - AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA - AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM - AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM - ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM - Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA - AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM - AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ - AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz - AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm - AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw - AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/xcAAv8sAAL/DwAB9AEC - AUkB/ykAAfMDJAL/AwAB9AFFAUsB/wYAAU8BTgFPAZgpAAEkASUBJgElASQC/wEAAfQBRQElAUUB/wUA - AZgBTgFVATMBSQH/KAABRQMmASUBRQH/AfQBJAEmASUBbwH/BAAB8QFJAlUBVAFOAZgoAAH2ASQBJQEm - ASUBJAFuAUUCJgEkAf8EAAH/AU8BlwKYAVUBMwFJAf8oAAH/ASQBRgEmAiUCJgEkAv8EAAFyAZcDCAGX - AVUBTgFyKAAC/wEkAk0CJgHpAfQB/wQAAQcBTwEIAZgCSQGYAXcBLQFJAfQnAAH/AfQBRQRNASQC/wMA - AfQBTwEIAnIC/wFPAZgBVQEtAXIlAAH0A0UBRgFTA00BRgEkAv8CAAFPAZgBcgHvAwAB8QFyAZ0BVQFJ - AfQkAAFFAZMBmgN1AU0CRQJGAUUC/wEAAfQBTwHxBQAB8QFxAZcBTgFJJAAB9AFFAZMCmgF1AUUC/wFu - AUUBRgEkAQAB/wkAAZgBcgFVAU8BCCQAAfMBRQGTAZQBRQH0AwABGgFFASQBAAH/CgABcgGXAVUBSSUA - AfMCRQH/BgAB/w0AAXIBlwFPAQglAAL/FQAB/wFPAZcBcj0AAf8BcgH/IQABQgFNAT4HAAE+AwABKAMA - AUADAAEQAwABAQEAAQEFAAGAFwAD/wEAAv8B/AH/BAAB8wH/AfgBfwQAAcAB4QH4AX8EAAHAAUEB8AE/ - BAABwAEBAeABPwQAAcABAwHAAR8EAAHgAQMBwAEfBAAB4AEHAYABDwQAAeABBwEAAQ8EAAGAAQMBDgEH - BAABgAEBAR8BBwQAAYABAgH/AYMEAAHAAeIB/wHDBAAB4QH7Af8B4QQAAfMC/wHhBAAD/wHxBAAL - - - + 3 - + Bottom, Right - + Segoe UI, 9pt @@ -195,7 +145,7 @@ cancelButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -225,7 +175,7 @@ okButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -233,7 +183,7 @@ 1 - + True @@ -245,7 +195,7 @@ 10 - + True @@ -254,7 +204,7 @@ 150 - + True @@ -266,7 +216,7 @@ 93 - + True @@ -278,7 +228,7 @@ 91 - + True @@ -290,7 +240,7 @@ 80 - + True @@ -329,8 +279,11 @@ 2 - - Top, Left, Right + + True + + + Fill Segoe UI, 9pt @@ -344,14 +297,17 @@ 0, 6, 6, 6 + + 0, 16 + 640, 16 2 - - MiddleLeft + + 选择允许在此 GPU 上使用的虚拟 GPU 类型。 rubricLabel @@ -387,7 +343,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -398,7 +354,7 @@ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="cancelButton" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="okButton" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="dataGridViewEx1" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="rubricLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings> - + True @@ -416,47 +372,41 @@ 12, 12, 12, 12 - - imageList1 - - - System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - CheckBoxColumn - System.Windows.Forms.DataGridViewCheckBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewCheckBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 NameColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 VGPUsPerGPUColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 MaxResolutionColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 MaxDisplaysColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 VideoRAMColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 GpuConfiguration diff --git a/XenAdmin/Controls/GPU/GpuRow.Designer.cs b/XenAdmin/Controls/GPU/GpuRow.Designer.cs index d1f3e631c..818a650bd 100644 --- a/XenAdmin/Controls/GPU/GpuRow.Designer.cs +++ b/XenAdmin/Controls/GPU/GpuRow.Designer.cs @@ -83,7 +83,6 @@ resources.ApplyResources(this.allowedTypesLabel, "allowedTypesLabel"); this.allowedTypesLabel.AutoEllipsis = true; this.allowedTypesLabel.BackColor = System.Drawing.Color.Transparent; - this.allowedTypesLabel.MinimumSize = new System.Drawing.Size(0, 16); this.allowedTypesLabel.Name = "allowedTypesLabel"; // // pGpuLabel @@ -91,7 +90,6 @@ resources.ApplyResources(this.pGpuLabel, "pGpuLabel"); this.pGpuLabel.AutoEllipsis = true; this.pGpuLabel.BackColor = System.Drawing.Color.Transparent; - this.pGpuLabel.MinimumSize = new System.Drawing.Size(0, 16); this.pGpuLabel.Name = "pGpuLabel"; // // pGpuPictureBox diff --git a/XenAdmin/Controls/GPU/GpuRow.cs b/XenAdmin/Controls/GPU/GpuRow.cs index ae9b868ee..c4d590b8c 100644 --- a/XenAdmin/Controls/GPU/GpuRow.cs +++ b/XenAdmin/Controls/GPU/GpuRow.cs @@ -60,7 +60,7 @@ namespace XenAdmin.Controls.GPU private readonly IXenObject xenObject; - private Dictionary pGpus = new Dictionary(); + private readonly Dictionary pGpus = new Dictionary(); private readonly bool vGpuCapability; @@ -179,19 +179,6 @@ namespace XenAdmin.Controls.GPU } } - public List SelectedPGPUs - { - get - { - if (pGpus.Count == 0) - return null; - - return pGpus.Count > 1 - ? (from kvp in pGpus where kvp.Value != null && kvp.Value.Checked select kvp.Key).ToList() - : new List {pGpus.Keys.ElementAt(0)}; - } - } - private void selectAllButton_Click(object sender, EventArgs e) { foreach (var checkBox in pGpus.Values.Where(checkBox => checkBox != null)) @@ -210,15 +197,23 @@ namespace XenAdmin.Controls.GPU private void editButton_Click(object sender, EventArgs e) { - new GpuConfiguration(SelectedPGPUs).ShowDialog(Program.MainWindow); + if (pGpus.Count == 0) + return; + + var selectedPGPUs = pGpus.Count > 1 + ? (from kvp in pGpus where kvp.Value != null && kvp.Value.Checked select kvp.Key).ToList() + : new List {pGpus.Keys.ElementAt(0)}; + + using (var dlog = new GpuConfiguration(selectedPGPUs)) + dlog.ShowDialog(Program.MainWindow); } private void CheckedChanged(object sender, EventArgs e) { editButton.Enabled = clearAllButton.Enabled = - (pGpus.Values.Where(checkBox => checkBox != null).Any(checkBox => checkBox.Checked)); + pGpus.Values.Any(checkBox => checkBox != null && checkBox.Checked); selectAllButton.Enabled = - (pGpus.Values.Where(checkBox => checkBox != null).Any(checkBox => !checkBox.Checked)); + pGpus.Values.Any(checkBox => checkBox != null && !checkBox.Checked); } #region Allowed vGpu types diff --git a/XenAdmin/Controls/GPU/GpuRow.ja.resx b/XenAdmin/Controls/GPU/GpuRow.ja.resx index b06435be2..465659866 100644 --- a/XenAdmin/Controls/GPU/GpuRow.ja.resx +++ b/XenAdmin/Controls/GPU/GpuRow.ja.resx @@ -125,7 +125,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABY - CQAAAk1TRnQBSQFMAgEBAgEAASABAwEgAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CQAAAk1TRnQBSQFMAgEBAgEAASgBAwEoAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -383,6 +383,9 @@ True + + GrowAndShrink + NoControl @@ -392,6 +395,9 @@ 6, 6, 6, 6 + + 65, 23 + 130, 23 diff --git a/XenAdmin/Controls/GPU/GpuRow.resx b/XenAdmin/Controls/GPU/GpuRow.resx index a43296e3b..4d1872980 100644 --- a/XenAdmin/Controls/GPU/GpuRow.resx +++ b/XenAdmin/Controls/GPU/GpuRow.resx @@ -125,7 +125,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABY - CQAAAk1TRnQBSQFMAgEBAgEAASABAwEgAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CQAAAk1TRnQBSQFMAgEBAgEAASgBAwEoAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -383,6 +383,9 @@ True + + GrowAndShrink + NoControl @@ -392,8 +395,11 @@ 6, 6, 6, 6 + + 65, 23 + - 130, 23 + 65, 23 19 diff --git a/XenAdmin/Controls/GPU/GpuRow.zh-CN.resx b/XenAdmin/Controls/GPU/GpuRow.zh-CN.resx index 054803b72..f8989d109 100644 --- a/XenAdmin/Controls/GPU/GpuRow.zh-CN.resx +++ b/XenAdmin/Controls/GPU/GpuRow.zh-CN.resx @@ -125,7 +125,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABY - CQAAAk1TRnQBSQFMAgEBAgEAASABAwEgAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CQAAAk1TRnQBSQFMAgEBAgEAASgBAwEoAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -383,6 +383,9 @@ True + + GrowAndShrink + NoControl @@ -392,6 +395,9 @@ 6, 6, 6, 6 + + 65, 23 + 130, 23 diff --git a/XenAdmin/Controls/MainWindowControls/NavigationView.cs b/XenAdmin/Controls/MainWindowControls/NavigationView.cs index 66229fdbb..42c0ac65a 100644 --- a/XenAdmin/Controls/MainWindowControls/NavigationView.cs +++ b/XenAdmin/Controls/MainWindowControls/NavigationView.cs @@ -169,13 +169,13 @@ namespace XenAdmin.Controls.MainWindowControls } } - private void Connection_BeforeMajorChange(object sender, ConnectionMajorChangeEventArgs e) + private void Connection_BeforeMajorChange(IXenConnection conn, bool background) { try { Program.Invoke(this, () => { - if (!e.Background) + if (!background) { if (inMajorChange) return; @@ -187,11 +187,10 @@ namespace XenAdmin.Controls.MainWindowControls catch (Exception exn) { log.Error(exn, exn); - // Can do nothing more about this. } } - private void Connection_AfterMajorChange(object sender, ConnectionMajorChangeEventArgs e) + private void Connection_AfterMajorChange(IXenConnection conn, bool background) { try { @@ -199,14 +198,13 @@ namespace XenAdmin.Controls.MainWindowControls { ResumeRefreshTreeView(); - if (!e.Background) + if (!background) inMajorChange = false; }); } catch (Exception exn) { log.Error(exn, exn); - // Can do nothing more about this. } } @@ -254,7 +252,6 @@ namespace XenAdmin.Controls.MainWindowControls catch (Exception e) { log.Debug("Exception thrown by target of MajorChange.", e); - log.Debug(e, e); throw; } finally diff --git a/XenAdmin/Controls/MultipleDvdIsoList.cs b/XenAdmin/Controls/MultipleDvdIsoList.cs index 3326a4955..d5aef1c5b 100644 --- a/XenAdmin/Controls/MultipleDvdIsoList.cs +++ b/XenAdmin/Controls/MultipleDvdIsoList.cs @@ -39,6 +39,7 @@ using System.Windows.Forms; using XenAPI; using XenAdmin.Actions; using XenAdmin.Dialogs; +using XenAdmin.Network; namespace XenAdmin.Controls @@ -145,7 +146,7 @@ namespace XenAdmin.Controls if (vbds == null) { // let's come back when the cache is populated - VM.Connection.CachePopulated += new EventHandler(CachePopulatedMethod); + VM.Connection.CachePopulated += CachePopulatedMethod; return; } vbds.RemoveAll(vbd => !vbd.IsCDROM() && !vbd.IsFloppyDrive()); @@ -228,7 +229,7 @@ namespace XenAdmin.Controls refreshDrives(); } - private void CachePopulatedMethod(object sender, EventArgs args) + private void CachePopulatedMethod(IXenConnection conn) { VM.Connection.CachePopulated -= CachePopulatedMethod; refreshDrives(); @@ -258,12 +259,29 @@ namespace XenAdmin.Controls { if (VM != null) { - CreateCdDriveAction createDriveAction = new CreateCdDriveAction(VM, false,NewDiskDialog.ShowMustRebootBoxCD,NewDiskDialog.ShowVBDWarningBox); + var createDriveAction = new CreateCdDriveAction(VM); + createDriveAction.ShowUserInstruction += CreateDriveAction_ShowUserInstruction; + using (var dlg = new ActionProgressDialog(createDriveAction, ProgressBarStyle.Marquee)) dlg.ShowDialog(this); } } + private void CreateDriveAction_ShowUserInstruction(string message) + { + Program.Invoke(Program.MainWindow, () => + { + if (!Program.RunInAutomatedTestMode) + { + using (var dlg = new ThreeButtonDialog( + new ThreeButtonDialog.Details(SystemIcons.Information, message))) + { + dlg.ShowDialog(Program.MainWindow); + } + } + }); + } + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { if (cdChanger1.Drive != null) diff --git a/XenAdmin/Controls/MultipleDvdIsoList.ja.resx b/XenAdmin/Controls/MultipleDvdIsoList.ja.resx index 825c28bbc..a75aa66a9 100644 --- a/XenAdmin/Controls/MultipleDvdIsoList.ja.resx +++ b/XenAdmin/Controls/MultipleDvdIsoList.ja.resx @@ -253,7 +253,7 @@ False - 15 + 17 0, 5 diff --git a/XenAdmin/Controls/MultipleDvdIsoList.zh-CN.resx b/XenAdmin/Controls/MultipleDvdIsoList.zh-CN.resx index a250321f2..5ab623988 100644 --- a/XenAdmin/Controls/MultipleDvdIsoList.zh-CN.resx +++ b/XenAdmin/Controls/MultipleDvdIsoList.zh-CN.resx @@ -253,7 +253,7 @@ False - 15 + 18 0, 5 diff --git a/XenAdmin/Controls/PDSection.cs b/XenAdmin/Controls/PDSection.cs index 73144fb98..5db31676d 100644 --- a/XenAdmin/Controls/PDSection.cs +++ b/XenAdmin/Controls/PDSection.cs @@ -45,8 +45,6 @@ namespace XenAdmin.Controls { public partial class PDSection : UserControl { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - #region Private fields /// diff --git a/XenAdmin/Controls/PDSection.ja.resx b/XenAdmin/Controls/PDSection.ja.resx index dcca1fa30..f4cdcf55f 100644 --- a/XenAdmin/Controls/PDSection.ja.resx +++ b/XenAdmin/Controls/PDSection.ja.resx @@ -112,20 +112,20 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - + Left - + Microsoft Sans Serif, 12pt @@ -148,7 +148,7 @@ label1 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 panel1 @@ -172,7 +172,7 @@ groupBox1 - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 panel1 @@ -202,7 +202,7 @@ chevron - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 panel1 @@ -229,7 +229,7 @@ panel1 - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -237,7 +237,7 @@ 2 - + 17, 17 @@ -253,25 +253,28 @@ contextMenuStrip1 - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Top, Bottom, Left, Right - - + True - Column1 + キー + + + 150 - 5 + 150 - + True - Column1 + + + + Fill 1, 34 @@ -297,9 +300,12 @@ 1 - + True + + 900, 9999999 + 1, 1, 1, 1 @@ -310,24 +316,24 @@ copyToolStripMenuItem - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 KeyColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ValueColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 PDSection - System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/XenAdmin/Controls/PDSection.zh-CN.resx b/XenAdmin/Controls/PDSection.zh-CN.resx index 12ede48b1..f3abda73a 100644 --- a/XenAdmin/Controls/PDSection.zh-CN.resx +++ b/XenAdmin/Controls/PDSection.zh-CN.resx @@ -112,20 +112,20 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - + Left - + Microsoft Sans Serif, 12pt @@ -148,7 +148,7 @@ label1 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 panel1 @@ -172,7 +172,7 @@ groupBox1 - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 panel1 @@ -202,7 +202,7 @@ chevron - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 panel1 @@ -229,7 +229,7 @@ panel1 - System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -237,7 +237,7 @@ 2 - + 17, 17 @@ -253,25 +253,28 @@ contextMenuStrip1 - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Top, Bottom, Left, Right - - + True - Column1 + + + + 150 - 5 + 150 - + True - Column1 + + + + Fill 1, 34 @@ -297,9 +300,12 @@ 1 - + True + + 900, 9999999 + 1, 1, 1, 1 @@ -310,24 +316,24 @@ copyToolStripMenuItem - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 KeyColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ValueColumn - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 PDSection - System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/XenAdmin/Controls/PoolHostPicker.cs b/XenAdmin/Controls/PoolHostPicker.cs index 19ff3bd72..f86c625ec 100644 --- a/XenAdmin/Controls/PoolHostPicker.cs +++ b/XenAdmin/Controls/PoolHostPicker.cs @@ -180,12 +180,12 @@ namespace XenAdmin.Controls } } - void xc_CachePopulated(object sender, EventArgs e) + void xc_CachePopulated(IXenConnection conn) { Program.Invoke(this, buildList); } - void xc_ConnectionStateChanged(object sender, EventArgs e) + void xc_ConnectionStateChanged(IXenConnection conn) { Program.Invoke(this, buildList); } diff --git a/XenAdmin/Controls/PvsCacheStorageRow.cs b/XenAdmin/Controls/PvsCacheStorageRow.cs index eff6c338b..2f467a84e 100644 --- a/XenAdmin/Controls/PvsCacheStorageRow.cs +++ b/XenAdmin/Controls/PvsCacheStorageRow.cs @@ -64,31 +64,23 @@ namespace XenAdmin.Controls labelHostName.Text = Host.Name(); // initialize cacheSize - SetupCacheSizeSpinner(OrigPvsCacheStorage == null ? DEFAULT_CACHE_SIZE_GB : (decimal)Util.ToGB(OrigPvsCacheStorage.size, 1, RoundingBehaviour.Nearest), + SetupCacheSizeSpinner(OrigPvsCacheStorage == null ? DEFAULT_CACHE_SIZE_GB : (decimal)Util.ToGB(OrigPvsCacheStorage.size, RoundingBehaviour.Nearest, 1), MIN_CACHE_SIZE_GB, MAX_CACHE_SIZE_GB); origCacheSizeGb = numericUpDownCacheSize.Value; - PopulateCacheSrCombobox(); - ReadOnly = OrigPvsCacheStorage != null && OrigPvsCacheStorage.IsInUse(); - comboBoxCacheSr.Enabled = numericUpDownCacheSize.Enabled = !ReadOnly; - } - - private void PopulateCacheSrCombobox() - { comboBoxCacheSr.Items.Clear(); // add the "Not configured" item first var notConfiguredItem = new SrComboBoxItem(null, Messages.PVS_CACHE_NOT_CONFIGURED); comboBoxCacheSr.Items.Add(notConfiguredItem); - comboBoxCacheSr.SelectedItem = notConfiguredItem; - // add Memeory SR; if no memory SR found, add a placeholder (we will create the memory SR in ConfigurePvsCacheAction) - var memorySr = - Host.Connection.Cache.SRs.FirstOrDefault( - s => s.GetSRType(false) == SR.SRTypes.tmpfs && s.CanBeSeenFrom(Host)); - - if (memorySr == null) + // add Memory SR; if no memory SR found, add a placeholder (we will create the memory SR in ConfigurePvsCacheAction) + var memorySrs = Host.Connection.Cache.SRs.Where(s => s.GetSRType(false) == SR.SRTypes.tmpfs && s.CanBeSeenFrom(Host)).ToList(); + + SR memorySr = null; + + if (memorySrs.Count == 0) { // create a placeholder for the memory SR memorySr = new SR @@ -99,11 +91,20 @@ namespace XenAdmin.Controls opaque_ref = Helper.NullOpaqueRef }; } + else + { + if (OrigPvsCacheStorage != null) + memorySr = memorySrs.FirstOrDefault(sr => sr.opaque_ref == OrigPvsCacheStorage.SR.opaque_ref); + + if (memorySr == null) + memorySr = memorySrs.First(); + } var enabled = Host.dom0_memory_extra() >= MIN_CACHE_SIZE_GB * Util.BINARY_GIGA; var label = enabled ? Messages.PVS_CACHE_MEMORY_ONLY : Messages.PVS_CACHE_MEMORY_ONLY_DISABLED; var memorySrItem = new SrComboBoxItem(memorySr, label, enabled); comboBoxCacheSr.Items.Add(memorySrItem); + if (OrigPvsCacheStorage != null && memorySr.opaque_ref == OrigPvsCacheStorage.SR.opaque_ref) comboBoxCacheSr.SelectedItem = memorySrItem; @@ -117,6 +118,12 @@ namespace XenAdmin.Controls if (OrigPvsCacheStorage != null && sr.opaque_ref == OrigPvsCacheStorage.SR.opaque_ref) comboBoxCacheSr.SelectedItem = newItem; } + + if (comboBoxCacheSr.SelectedItem == null) + comboBoxCacheSr.SelectedItem = notConfiguredItem; + + ReadOnly = OrigPvsCacheStorage != null && OrigPvsCacheStorage.IsInUse(); + comboBoxCacheSr.Enabled = numericUpDownCacheSize.Enabled = !ReadOnly; } private bool SrIsSuitableForPvsCache(SR sr) @@ -195,7 +202,7 @@ namespace XenAdmin.Controls var selectedSr = CacheSr; if (selectedSr != null) { - var maxSize = (decimal)Util.ToGB(selectedSr.GetSRType(false) == SR.SRTypes.tmpfs ? Host.dom0_memory_extra() : selectedSr.FreeSpace(), 1, RoundingBehaviour.Down); + var maxSize = (decimal)Util.ToGB(selectedSr.GetSRType(false) == SR.SRTypes.tmpfs ? Host.dom0_memory_extra() : selectedSr.FreeSpace(), RoundingBehaviour.Down, 1); maxSize = Math.Min(maxSize, MAX_CACHE_SIZE_GB); if (maxSize != numericUpDownCacheSize.Maximum) diff --git a/XenAdmin/Controls/SrPicker.cs b/XenAdmin/Controls/SrPicker.cs index 3ad63ede3..13d9a0323 100644 --- a/XenAdmin/Controls/SrPicker.cs +++ b/XenAdmin/Controls/SrPicker.cs @@ -31,7 +31,6 @@ using System; using System.ComponentModel; -using System.Windows.Forms; using XenAdmin.Actions; using XenAdmin.Network; using XenAPI; @@ -40,7 +39,7 @@ using XenAdmin.Core; namespace XenAdmin.Controls { - public partial class SrPicker : CustomTreeView + public class SrPicker : CustomTreeView { // Migrate is the live VDI move operation public enum SRPickerType { VM, InstallFromTemplate, MoveOrCopy, Migrate, LunPerVDI }; @@ -55,9 +54,7 @@ namespace XenAdmin.Controls private IXenConnection connection; private Host affinity; - private SrPickerItem LastSelectedItem; - public event Action SrSelectionChanged; public long DiskSize = 0; private readonly CollectionChangeEventHandler SR_CollectionChangedWithInvoke; @@ -67,29 +64,17 @@ namespace XenAdmin.Controls SR_CollectionChangedWithInvoke = Program.ProgramInvokeHandler(SR_CollectionChanged); } - public override bool ShowCheckboxes - { - get { return false; } - } + public override bool ShowCheckboxes => false; - public override bool ShowDescription - { - get { return true; } - } + public override bool ShowDescription => true; - public override bool ShowImages - { - get { return true; } - } + public override bool ShowImages => true; - public override int NodeIndent - { - get { return 3; } - } + public override int NodeIndent => 3; public SRPickerType Usage { - set { usage = value; } + set => usage = value; } /// @@ -125,46 +110,7 @@ namespace XenAdmin.Controls } } - protected override void OnSelectedIndexChanged(EventArgs e) - { - base.OnSelectedIndexChanged(e); - onItemSelect(); - } - - private void onItemSelect() - { - SrPickerItem item = SelectedItem as SrPickerItem; - if (item == null || !item.Enabled) - { - if (SrSelectionChanged != null) - SrSelectionChanged(null); - return; - } - - if (SrSelectionChanged != null) - SrSelectionChanged(item); - - if (!item.Enabled && LastSelectedItem != null && LastSelectedItem.TheSR.opaque_ref != item.TheSR.opaque_ref) - SelectedItem = LastSelectedItem; - else if (!item.Enabled && LastSelectedItem != null && LastSelectedItem.TheSR.opaque_ref == item.TheSR.opaque_ref) - { - SrPickerItem first = Items[0] as SrPickerItem; - if (first != null && first.Enabled) - SelectedItem = first; - else - SelectedItem = null; - } - else - LastSelectedItem = item; - } - - public SR SR - { - get - { - return SelectedItem is SrPickerItem && (SelectedItem as SrPickerItem).Enabled ? (SelectedItem as SrPickerItem).TheSR : null; - } - } + public SR SR => SelectedItem is SrPickerItem srpITem && srpITem.Enabled ? srpITem.TheSR : null; public SR DefaultSR = null; @@ -174,9 +120,7 @@ namespace XenAdmin.Controls refresh(); } - private readonly SrPickerItemFactory itemFactory = new SrPickerItemFactory(); - - public void refresh() + private void refresh() { Program.AssertOnEventThread(); @@ -189,7 +133,7 @@ namespace XenAdmin.Controls foreach (SR sr in connection.Cache.SRs) { - SrPickerItem item = itemFactory.PickerItem(sr, usage, affinity, DiskSize, existingVDIs); + var item = SrPickerItem.Create(sr, usage, affinity, DiskSize, existingVDIs); if (item.Show) AddNode(item); foreach (PBD pbd in sr.Connection.ResolveAll(sr.PBDs)) @@ -216,7 +160,6 @@ namespace XenAdmin.Controls if (node.TheSR != null && node.TheSR.uuid == selectedSr.uuid) { SelectedItem = node; - onItemSelect(); selected = true; break; } @@ -229,7 +172,6 @@ namespace XenAdmin.Controls { // If no default SR, select first entry in list SelectedIndex = 0; - onItemSelect(); } } } @@ -247,7 +189,6 @@ namespace XenAdmin.Controls finally { Refresh(); - onItemSelect(); } } @@ -314,9 +255,6 @@ namespace XenAdmin.Controls return; } } - - if (SrSelectionChanged != null) - SrSelectionChanged(null); } internal void selectDefaultSROrAny() @@ -333,8 +271,6 @@ namespace XenAdmin.Controls return; } } - if (SrSelectionChanged != null) - SrSelectionChanged(null); } public void selectSRorDefaultorAny(SR sr) diff --git a/XenAdmin/Controls/SrPickerItem.cs b/XenAdmin/Controls/SrPickerItem.cs index 37a78f142..274f517e6 100644 --- a/XenAdmin/Controls/SrPickerItem.cs +++ b/XenAdmin/Controls/SrPickerItem.cs @@ -37,28 +37,6 @@ using XenAPI; namespace XenAdmin.Controls { - /// - /// Decide which of the SRPickerItem to choose - depending on the usage required - /// - public class SrPickerItemFactory - { - public SrPickerItem PickerItem(SR sr, SrPicker.SRPickerType usage, Host aff, long diskSize, VDI[] vdis) - { - if (SrPicker.SRPickerType.Migrate == usage) - return new SrPickerMigrateItem(sr, aff, diskSize, vdis); - if (SrPicker.SRPickerType.MoveOrCopy == usage) - return new SrPickerMoveCopyItem(sr, aff, diskSize, vdis); - if (SrPicker.SRPickerType.InstallFromTemplate == usage) - return new SrPickerInstallFromTemplateItem(sr, aff, diskSize, vdis); - if (SrPicker.SRPickerType.VM == usage) - return new SrPickerVmItem(sr, aff, diskSize, vdis); - if (SrPicker.SRPickerType.LunPerVDI == usage) - return new SrPickerLunPerVDIItem(sr, aff, diskSize, vdis); - - throw new ArgumentException("There is no SRPickerItem for the type: " + usage); - } - } - public class SrPickerLunPerVDIItem : SrPickerVmItem { public SrPickerLunPerVDIItem(SR sr, Host aff, long diskSize, VDI[] vdis) @@ -76,42 +54,22 @@ namespace XenAdmin.Controls } } - protected override bool UnsupportedSR - { - get { return false; } - } + protected override bool UnsupportedSR => false; } - /// - /// Stategy pattern for the SRPickerItem for migrate scenarios - /// + public class SrPickerMigrateItem : SrPickerItem { - public SrPickerMigrateItem(SR sr, Host aff, long diskSize, VDI[] vdis) : base(sr, aff, diskSize, vdis) + public SrPickerMigrateItem(SR sr, Host aff, long diskSize, VDI[] vdis) + : base(sr, aff, diskSize, vdis) { } - private bool CanMigrate(VDI vdi) - { - if (TheSR == null || vdi == null) - return false; - - bool toLocal = TheSR.IsLocalSR(); - if (toLocal && !HomeHostCanSeeTargetSr(vdi)) - return false; - - bool fromLocal = vdi.Connection.Resolve(vdi.SR).IsLocalSR(); - if (fromLocal && toLocal) - return false; - - return true; - } - /// - /// If the VM has a home host, we can move VDIs to a local SR only - /// if the latter belongs to the VM's home host + /// We can move VDIs to a local SR only if the VDI is attached to VMs + /// that have a home server that can see the SR /// - private bool HomeHostCanSeeTargetSr(VDI vdi) + private static bool HomeHostCanSeeTargetSr(VDI vdi, SR targetSr) { var vms = vdi.GetVMs(); var homeHosts = (from VM vm in vms @@ -119,48 +77,72 @@ namespace XenAdmin.Controls where host != null select host).ToList(); - return homeHosts.Count == 0 || homeHosts.Any(TheSR.CanBeSeenFrom); + return homeHosts.Count > 0 && homeHosts.All(targetSr.CanBeSeenFrom); } - protected override string CannotBeShownReason + protected override string DisabledReason { get { if (ExistingVDILocation()) return Messages.CURRENT_LOCATION; - if (LocalToLocalMove()) - return Messages.LOCAL_TO_LOCAL_MOVE; - if (TheSR.IsLocalSR() && existingVDIs != null && existingVDIs.Any(v => !HomeHostCanSeeTargetSr(v))) - return Messages.SRPICKER_ERROR_LOCAL_SR_MUST_BE_RESIDENT_HOSTS; + + if (TheSR.IsLocalSR()) + { + foreach (var vdi in existingVDIs) + { + var homeHosts = new List(); + var vms = vdi.GetVMs(); + foreach (var vm in vms) + { + var homeHost = vm.Home(); + if (homeHost != null) + { + homeHosts.Add(homeHost); + + if (!TheSR.CanBeSeenFrom(homeHost)) + return vm.power_state == vm_power_state.Running + ? Messages.SRPICKER_ERROR_LOCAL_SR_MUST_BE_RESIDENT_HOSTS + : string.Format(Messages.SR_CANNOT_BE_SEEN, Helpers.GetName(homeHost)); + } + } + + if (homeHosts.Count == 0) + return Messages.SR_IS_LOCAL; + } + } + if (!TheSR.CanBeSeenFrom(Affinity)) return TheSR.Connection != null ? string.Format(Messages.SR_CANNOT_BE_SEEN, Affinity == null ? Helpers.GetName(TheSR.Connection) : Helpers.GetName(Affinity)) : Messages.SR_DETACHED; - return base.CannotBeShownReason; - } - } - private bool LocalToLocalMove() - { - return TheSR.IsLocalSR() && existingVDIs != null && existingVDIs.Length > 0 && existingVDIs.All(vdi => vdi.Connection.Resolve(vdi.SR).IsLocalSR()); + if (!TheSR.SupportsStorageMigration()) + return Messages.UNSUPPORTED_SR_TYPE; + + return base.DisabledReason; + } } protected override bool CanBeEnabled { get { - return existingVDIs != null && existingVDIs.Length > 0 && existingVDIs.All(CanMigrate) - && TheSR.SupportsVdiCreate() && !ExistingVDILocation() && !TheSR.IsDetached() && TheSR.VdiCreationCanProceed(DiskSize); + return existingVDIs.Length > 0 && + !ExistingVDILocation() && + (!TheSR.IsLocalSR() || existingVDIs.All(v => HomeHostCanSeeTargetSr(v, TheSR))) && + TheSR.SupportsVdiCreate() && + !TheSR.IsDetached() && TheSR.VdiCreationCanProceed(DiskSize) && + TheSR.SupportsStorageMigration(); } } } - /// - /// Stategy pattern for the SRPickerItem for copy and move scenarios - /// + public class SrPickerMoveCopyItem : SrPickerItem { - public SrPickerMoveCopyItem(SR sr, Host aff, long diskSize, VDI[] vdis) : base(sr, aff, diskSize, vdis) + public SrPickerMoveCopyItem(SR sr, Host aff, long diskSize, VDI[] vdis) + : base(sr, aff, diskSize, vdis) { } @@ -173,7 +155,7 @@ namespace XenAdmin.Controls } } - protected override string CannotBeShownReason + protected override string DisabledReason { get { @@ -181,18 +163,17 @@ namespace XenAdmin.Controls return Messages.SR_DETACHED; if (ExistingVDILocation()) return Messages.CURRENT_LOCATION; - return base.CannotBeShownReason; + return base.DisabledReason; } } } - /// - /// Stategy pattern for the SRPickerItem for installing from a template scenarios - /// + public class SrPickerInstallFromTemplateItem : SrPickerItem { - public SrPickerInstallFromTemplateItem(SR sr, Host aff, long diskSize, VDI[] vdis) : base(sr, aff, diskSize, vdis) + public SrPickerInstallFromTemplateItem(SR sr, Host aff, long diskSize, VDI[] vdis) + : base(sr, aff, diskSize, vdis) { } @@ -201,24 +182,23 @@ namespace XenAdmin.Controls get { return TheSR.SupportsVdiCreate() && !TheSR.IsDetached() && TheSR.VdiCreationCanProceed(DiskSize); } } - protected override string CannotBeShownReason + protected override string DisabledReason { get { if (TheSR.IsDetached()) return Messages.SR_DETACHED; - return base.CannotBeShownReason; + return base.DisabledReason; } } } - /// - /// Stategy pattern for the SRPickerItem for VM scenarios - /// + public class SrPickerVmItem : SrPickerItem { - public SrPickerVmItem(SR sr, Host aff, long diskSize, VDI[] vdis) : base(sr, aff, diskSize, vdis) + public SrPickerVmItem(SR sr, Host aff, long diskSize, VDI[] vdis) + : base(sr, aff, diskSize, vdis) { } @@ -227,7 +207,7 @@ namespace XenAdmin.Controls get { return TheSR.CanBeSeenFrom(Affinity) && TheSR.CanCreateVmOn() && TheSR.VdiCreationCanProceed(DiskSize); } } - protected override string CannotBeShownReason + protected override string DisabledReason { get { @@ -237,31 +217,23 @@ namespace XenAdmin.Controls return TheSR.Connection != null ? string.Format(Messages.SR_CANNOT_BE_SEEN, Affinity == null ? Helpers.GetName(TheSR.Connection) : Helpers.GetName(Affinity)) : Messages.SR_DETACHED; - return base.CannotBeShownReason; + return base.DisabledReason; } } } - /// - /// Base class for the SRPickerItem stategies - /// + public abstract class SrPickerItem : CustomTreeNode, IComparable { - - public SR TheSR { get; private set; } + public SR TheSR { get; } public bool Show { get; private set; } - protected Host Affinity { get; private set; } + protected readonly Host Affinity; protected long DiskSize { get; private set; } - protected VDI[] existingVDIs { get; private set; } + protected readonly VDI[] existingVDIs; - private SrPickerItem() + protected SrPickerItem(SR sr, Host aff, long diskSize, VDI[] vdis) { - Show = true; - } - - protected SrPickerItem(SR sr, Host aff, long diskSize, VDI[] vdis) : this() - { - existingVDIs = vdis; + existingVDIs = vdis ?? new VDI[0]; TheSR = sr; Affinity = aff; DiskSize = diskSize; @@ -276,10 +248,7 @@ namespace XenAdmin.Controls } } - protected virtual bool UnsupportedSR - { - get { return TheSR.HBALunPerVDI(); } - } + protected virtual bool UnsupportedSR => TheSR.HBALunPerVDI(); protected abstract bool CanBeEnabled { get; } @@ -294,57 +263,35 @@ namespace XenAdmin.Controls Update(); } - public void Update() + private void Update() { Text = TheSR.Name(); SetImage(); - if(UnsupportedSR) + if (UnsupportedSR) + return; + + if (ShowHiddenVDIs && !ExistingVDILocation() && CanBeEnabled) { - DoNotShowSR(); - } - else if (ShowHiddenVDIs && CanBeEnabled && !ExistingVDILocation()) - { - ShowSREnabled(); + Description = string.Format(Messages.SRPICKER_DISK_FREE, Util.DiskSizeString(TheSR.FreeSpace(), 2), + Util.DiskSizeString(TheSR.physical_size, 2)); + Enabled = true; + Show = true; } else if (TheSR.PBDs.Count > 0 && TheSR.SupportsVdiCreate()) { - ShowSRDisabled(); + Description = DisabledReason; + Enabled = false; + Show = true; } - else - { - DoNotShowSR(); - } - } - - private void DoNotShowSR() - { - Show = false; - } - - private void ShowSRDisabled() - { - Description = CannotBeShownReason; - CalculateDisabledSortReason(); - Enabled = false; - Show = true; - } - - private void ShowSREnabled() - { - Enabled = true; - Description = string.Format(Messages.SRPICKER_DISK_FREE, Util.DiskSizeString(TheSR.FreeSpace(), 2), - Util.DiskSizeString(TheSR.physical_size, 2)); - CalculateEnabledSortReason(); - Show = true; } protected bool ExistingVDILocation() { - return existingVDIs != null && existingVDIs.Length > 0 && existingVDIs.All(vdi => vdi.SR.opaque_ref == TheSR.opaque_ref); + return existingVDIs.Length > 0 && existingVDIs.All(vdi => vdi.SR.opaque_ref == TheSR.opaque_ref); } - protected virtual string CannotBeShownReason + protected virtual string DisabledReason { get { @@ -355,15 +302,14 @@ namespace XenAdmin.Controls if (DiskSize > TheSR.physical_size) return string.Format(Messages.SR_PICKER_DISK_TOO_BIG, Util.DiskSizeString(DiskSize, 2), Util.DiskSizeString(TheSR.physical_size, 2)); - if (DiskSize > (TheSR.FreeSpace())) + if (DiskSize > TheSR.FreeSpace()) return string.Format(Messages.SR_PICKER_INSUFFICIENT_SPACE, Util.DiskSizeString(DiskSize, 2), Util.DiskSizeString(TheSR.FreeSpace(), 2)); if (DiskSize > SR.DISK_MAX_SIZE) - return string.Format(Messages.SR_PICKER_DISKSIZE_EXCEEDS_DISK_MAX_SIZE, + return string.Format(Messages.SR_DISKSIZE_EXCEEDS_DISK_MAX_SIZE, Util.DiskSizeString(SR.DISK_MAX_SIZE, 0)); return ""; } - } public int CompareTo(SrPickerItem other) @@ -371,39 +317,38 @@ namespace XenAdmin.Controls return base.CompareTo(other); } - #region Sorting Details - private enum SrNotEnabledReason { None, Broken, Full, NotSeen }; - private SrNotEnabledReason sortingReason; - - private void CalculateDisabledSortReason() - { - if (!TheSR.CanBeSeenFrom(Affinity)) - sortingReason = SrNotEnabledReason.NotSeen; - else if (TheSR.IsFull() || TheSR.FreeSpace() < DiskSize) - sortingReason = SrNotEnabledReason.Full; - else - sortingReason = SrNotEnabledReason.Broken; - } - - private void CalculateEnabledSortReason() - { - sortingReason = SrNotEnabledReason.None; - } - protected override int SameLevelSortOrder(CustomTreeNode other) { SrPickerItem otherItem = other as SrPickerItem; - if (otherItem == null) //shouldnt ever happen!!! + if (otherItem == null) //shouldn't ever happen!!! return -1; if (!otherItem.Enabled && Enabled) return -1; if (otherItem.Enabled && !Enabled) return 1; - if (otherItem.Enabled && Enabled) - return base.SameLevelSortOrder(otherItem); - return (int)sortingReason - (int)otherItem.sortingReason; + + return base.SameLevelSortOrder(otherItem); + } + + + public static SrPickerItem Create(SR sr, SrPicker.SRPickerType usage, Host aff, long diskSize, VDI[] vdis) + { + switch (usage) + { + case SrPicker.SRPickerType.Migrate: + return new SrPickerMigrateItem(sr, aff, diskSize, vdis); + case SrPicker.SRPickerType.MoveOrCopy: + return new SrPickerMoveCopyItem(sr, aff, diskSize, vdis); + case SrPicker.SRPickerType.InstallFromTemplate: + return new SrPickerInstallFromTemplateItem(sr, aff, diskSize, vdis); + case SrPicker.SRPickerType.VM: + return new SrPickerVmItem(sr, aff, diskSize, vdis); + case SrPicker.SRPickerType.LunPerVDI: + return new SrPickerLunPerVDIItem(sr, aff, diskSize, vdis); + default: + throw new ArgumentException("There is no SRPickerItem for the type: " + usage); + } } - #endregion } } diff --git a/XenAdmin/Controls/UpsellPage.zh-CN.resx b/XenAdmin/Controls/UpsellPage.zh-CN.resx index 2b0d4a907..6ee5f2e7a 100644 --- a/XenAdmin/Controls/UpsellPage.zh-CN.resx +++ b/XenAdmin/Controls/UpsellPage.zh-CN.resx @@ -136,7 +136,7 @@ 3 - 了解详情(&L) + 了解更多(&L) LearnMoreButton diff --git a/XenAdmin/Controls/Wlb/WlbOptimizePool.cs b/XenAdmin/Controls/Wlb/WlbOptimizePool.cs index 9b5c7abd6..780b0215e 100644 --- a/XenAdmin/Controls/Wlb/WlbOptimizePool.cs +++ b/XenAdmin/Controls/Wlb/WlbOptimizePool.cs @@ -609,8 +609,7 @@ namespace XenAdmin.Controls.Wlb catch (Exception e) { statusLabel.Text = Messages.WLB_OPT_LOADING_ERROR; - log.ErrorFormat("There was an error calling retrieve_wlb_recommendations on pool {0}", _pool.name_label); - log.Error(e, e); + log.Error($"There was an error calling retrieve_wlb_recommendations on pool {_pool.name_label}.", e); } finally diff --git a/XenAdmin/Controls/XenSearch/QueryElement.cs b/XenAdmin/Controls/XenSearch/QueryElement.cs index 022c4117a..57e108f77 100644 --- a/XenAdmin/Controls/XenSearch/QueryElement.cs +++ b/XenAdmin/Controls/XenSearch/QueryElement.cs @@ -172,7 +172,6 @@ namespace XenAdmin.Controls.XenSearch catch (Exception e) { log.Debug("Exception firing OnQueryChanged in QueryElement", e); - log.Debug(e, e); } } @@ -510,7 +509,7 @@ namespace XenAdmin.Controls.XenSearch break; } - return new Search(query, grouping, false, "", "", null, sorts); + return new Search(query, grouping, "", "", null, sorts); } private void Setup() diff --git a/XenAdmin/Controls/XenSearch/QueryPanel.cs b/XenAdmin/Controls/XenSearch/QueryPanel.cs index c77e47810..4fa67e024 100644 --- a/XenAdmin/Controls/XenSearch/QueryPanel.cs +++ b/XenAdmin/Controls/XenSearch/QueryPanel.cs @@ -48,8 +48,6 @@ namespace XenAdmin.Controls.XenSearch { public class QueryPanel : GridView { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private const int ROW_HEIGHT = 27; private const int FOLDER_ROW_HEIGHT = 14; diff --git a/XenAdmin/Controls/XenSearch/Searcher.cs b/XenAdmin/Controls/XenSearch/Searcher.cs index 26b7d9d11..1f6615e08 100644 --- a/XenAdmin/Controls/XenSearch/Searcher.cs +++ b/XenAdmin/Controls/XenSearch/Searcher.cs @@ -38,8 +38,6 @@ namespace XenAdmin.Controls.XenSearch { public partial class Searcher : UserControl { - private int _maxHeight = 400; - public event Action SearchChanged; public event Action SearchForChanged; public event Action SaveRequested; @@ -104,14 +102,10 @@ namespace XenAdmin.Controls.XenSearch } /// - /// Gets or sets the maximum height for this control. The contents of this control will autoscroll inside this height. + /// Gets or sets the maximum height for this control. + /// The contents of this control will autoscroll inside this height. /// - /// The maximum height for this control. - public int MaxHeight - { - get { return _maxHeight; } - set { _maxHeight = value; } - } + public int MaxHeight { get; set; } = 400; public QueryScope QueryScope { @@ -128,14 +122,11 @@ namespace XenAdmin.Controls.XenSearch get { return GroupingControl.Grouping; } } - public bool Expanded { get; private set; } - #endregion public void ToggleExpandedState(bool expand) { Visible = expand; - Expanded = expand; if (Visible) buttonSave.Enabled = (ConnectionsManager.XenConnections.Find(c => c.IsConnected) != null); @@ -164,7 +155,7 @@ namespace XenAdmin.Controls.XenSearch GroupsLabel.Top = contentsHeight - 64; GroupingControl.Top = contentsHeight - 41; - Height = Math.Min(_maxHeight, contentsHeight); + Height = Math.Min(MaxHeight, contentsHeight); } private void buttonSave_Click(object sender, EventArgs e) diff --git a/XenAdmin/Controls/XenTabPage.cs b/XenAdmin/Controls/XenTabPage.cs index 69718eb93..15bf76fd1 100644 --- a/XenAdmin/Controls/XenTabPage.cs +++ b/XenAdmin/Controls/XenTabPage.cs @@ -37,6 +37,7 @@ using System.Drawing; using System.Text; using System.Windows.Forms; using System.Windows.Forms.Design; +using XenAdmin.Help; using XenAdmin.Network; @@ -45,7 +46,7 @@ namespace XenAdmin.Controls public delegate void XenTabPageStatusChanged(XenTabPage sender); [Designer(typeof(ParentControlDesigner))] - public partial class XenTabPage : UserControl + public partial class XenTabPage : UserControl, IControlWithHelp { public IXenConnection Connection; @@ -107,7 +108,7 @@ namespace XenAdmin.Controls /// /// Note that most derived classes override the getter to return a fixed string /// - public virtual string HelpID { get { return ""; } } + public virtual string HelpID => ""; public virtual string NextText(bool isLastPage) { diff --git a/XenAdmin/Core/ActionBaseExtensions.cs b/XenAdmin/Core/ActionBaseExtensions.cs index 9b9bc7d1b..17f053cf0 100644 --- a/XenAdmin/Core/ActionBaseExtensions.cs +++ b/XenAdmin/Core/ActionBaseExtensions.cs @@ -54,28 +54,7 @@ namespace XenAdmin.Core ? Images.StaticImages.cancelled_action_16 : Images.StaticImages._000_error_h32bit_16; - if (action.PercentComplete < 9) - return Images.StaticImages.usagebar_0; - if (action.PercentComplete < 18) - return Images.StaticImages.usagebar_1; - if (action.PercentComplete < 27) - return Images.StaticImages.usagebar_2; - if (action.PercentComplete < 36) - return Images.StaticImages.usagebar_3; - if (action.PercentComplete < 45) - return Images.StaticImages.usagebar_4; - if (action.PercentComplete < 54) - return Images.StaticImages.usagebar_5; - if (action.PercentComplete < 63) - return Images.StaticImages.usagebar_6; - if (action.PercentComplete < 72) - return Images.StaticImages.usagebar_7; - if (action.PercentComplete < 81) - return Images.StaticImages.usagebar_8; - if (action.PercentComplete < 90) - return Images.StaticImages.usagebar_9; - - return Images.StaticImages.usagebar_10; + return Images.GetImageForPercentage(action.PercentComplete); } internal static string GetDetails(this ActionBase action) diff --git a/XenAdmin/Core/Clip.cs b/XenAdmin/Core/Clip.cs index 1220185ca..4e829c9c0 100644 --- a/XenAdmin/Core/Clip.cs +++ b/XenAdmin/Core/Clip.cs @@ -255,7 +255,6 @@ namespace XenAdmin.Core catch (Exception ex) { log.Error("Exception while trying to set clipboard text.", ex); - log.Error(ex, ex); } } } diff --git a/XenAdmin/Core/Registry.cs b/XenAdmin/Core/Registry.cs index 8b6a350f7..720724251 100644 --- a/XenAdmin/Core/Registry.cs +++ b/XenAdmin/Core/Registry.cs @@ -30,351 +30,144 @@ */ using System; -using System.Collections.Generic; -using System.Text; using Microsoft.Win32; + namespace XenAdmin.Core { - public class Registry + public static class Registry { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - internal static bool AllowCredentialSave + internal static bool AllowCredentialSave => ReadBool(ALLOW_CREDENTIAL_SAVE, true); + + internal static bool DisablePlugins => ReadBool(DISABLE_PLUGINS, false); + + internal static bool ForceSystemFonts => ReadBool(FORCE_SYSTEM_FONTS, false); + + internal static bool DontSudo => ReadBool(DONT_SUDO, false); + + public static SSLCertificateTypes SSLCertificateTypes { get { - return ReadBool(ALLOW_CREDENTIAL_SAVE, true); + string v = ReadString(SSL_CERTIFICATES_KEY); + + if (v != null && v.ToUpperInvariant() == SSL_CERTIFICATES_CHANGED_ONLY) + return SSLCertificateTypes.Changed; + + if (v != null && v.ToUpperInvariant() == SSL_CERTIFICATES_ALL) + return SSLCertificateTypes.All; + + return SSLCertificateTypes.None; } } - internal static bool DisablePlugins + public static void AssertPowerShellInstalled() { - get - { - return ReadBool(DISABLE_PLUGINS, false); - } - } + string v = ReadRegistryValue(Microsoft.Win32.Registry.LocalMachine, PowerShellKey, PowerShellStamp); - internal static bool ForceSystemFonts - { - get - { - return ReadBool(FORCE_SYSTEM_FONTS, false); - } - } - - internal static bool DontSudo - { - get - { - return ReadBool(DONT_SUDO, false); // CA-38045 - } - } - - public static SSLCertificateTypes AlwaysShowSSLCertificates - { - get - { - try - { - RegistryKey masterKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(XENCENTER_LOCAL_KEYS); - if (masterKey == null) - return SSLCertificateTypes.None; - - try - { - object v = masterKey.GetValue(SSL_CERTIFICATES_KEY); - if (v != null) - { - if (v.ToString().ToUpperInvariant() == SSL_CERTIFICATES_CHANGED_ONLY) - return SSLCertificateTypes.Changed; - - if (v.ToString().ToUpperInvariant() == SSL_CERTIFICATES_ALL) - return SSLCertificateTypes.All; - } - return SSLCertificateTypes.None; - } - finally - { - masterKey.Close(); - } - } - catch - { - return SSLCertificateTypes.None; - } - } - } - - public static bool IsPowerShellInstalled() - { - try - { - RegistryKey masterKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(PowerShellKey); - if (masterKey == null) - return false; - - try - { - object v = masterKey.GetValue(PowerShellStamp); - if (v != null && v is int && (int)v == 1) - return true; - return false; - } - finally - { - masterKey.Close(); - } - } - catch (Exception e) - { - log.Debug("It looks like PowerShell is not installed on your machine!", e); - } - return false; - } - - public static bool IsXenServerSnapInInstalled() - { - return !string.IsNullOrEmpty(XenServerSnapInLocation()); - } - - public static bool IsExecutionPolicyNotRestricted() - { - return PowerShellExecutionPolicy() != "Restricted"; - } - - public static string XenServerSnapInLocation() - { - try - { - RegistryKey masterKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(PSConsoleKey); - if (masterKey == null) - { - masterKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(PSConsoleKey); - if (masterKey == null) - { - return ""; - } - } - - try - { - object v = masterKey.GetValue(PSConsoleName); - if (v != null) - return v.ToString(); - return ""; - } - finally - { - masterKey.Close(); - } - } - catch (Exception e) - { - log.Debug("Failed to find XenServerPSSnapIn Console file. Assuming the XenServerPSSnapIn is not installed.", e); - } - return ""; - } - - public static string PowerShellExecutionPolicy() - { - try - { - RegistryKey masterKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(PSExecutionPolicyKey); - if (masterKey == null) - { - masterKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(PSExecutionPolicyKey); - if (masterKey == null) - { - return ""; - } - } - - try - { - object v = masterKey.GetValue(PSExecutionPolicyName); - if (v != null) - return v.ToString(); - return ""; - } - finally - { - masterKey.Close(); - } - } - catch (Exception e) - { - log.Debug("Failed to find XenServerPSSnapIn Console file. Assuming the XenServerPSSnapIn is not installed.", e); - } - return ""; - } - - public static void CheckPowershell() - { - if (!Registry.IsPowerShellInstalled()) + if (!int.TryParse(v, out var result) || result != 1) throw new I18NException(I18NExceptionType.PowerShellNotPresent); - } - public static void CheckXenServerPSSnapIn() + public static void AssertPowerShellExecutionPolicyNonRestricted() { - CheckPowershell(); + var val = ReadRegistryValue(Microsoft.Win32.Registry.LocalMachine, PSExecutionPolicyKey, PSExecutionPolicyName) ?? + ReadRegistryValue(Microsoft.Win32.Registry.CurrentUser, PSExecutionPolicyKey, PSExecutionPolicyName); - if (!Registry.IsXenServerSnapInInstalled()) - throw new I18NException(I18NExceptionType.PowerShellSnapInNotPresent); - - if (!Registry.IsExecutionPolicyNotRestricted()) + if (val == "Restricted") throw new I18NException(I18NExceptionType.PowerShellExecutionPolicyRestricted); } /// - /// Read a true/false key from XENCENTER_LOCAL_KEYS\k. + /// Reads a bool value key under HKEY_LOCAL_MACHINE\XENCENTER_LOCAL_KEYS /// /// False if the value is "false" (case insensitive), true if the key is present but not - /// "false", def otherwise. - private static bool ReadBool(string k, bool def) + /// "false", defaultVal otherwise. + private static bool ReadBool(string k, bool defaultVal) { - try - { - RegistryKey masterKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(XENCENTER_LOCAL_KEYS); - if (masterKey == null) - return def; - - try - { - object v = masterKey.GetValue(k); - if (v == null) - return def; - else - return "FALSE" != v.ToString().ToUpperInvariant(); - } - finally - { - masterKey.Close(); - } - } - catch (Exception e) - { - log.DebugFormat(@"Failed to read {0}\{1} from registry; assuming {1} is {2}.", XENCENTER_LOCAL_KEYS, k, def); - log.Debug(e, e); - return def; - } + var v = ReadRegistryValue(Microsoft.Win32.Registry.LocalMachine, XENCENTER_LOCAL_KEYS, k); + return v == null ? defaultVal : v.ToUpperInvariant() != "FALSE"; } /// - /// Reads a key from HKEY_LOCAL_MACHINE\XENCENTER_LOCAL_KEYS\k. + /// Reads a string value k under HKEY_LOCAL_MACHINE\XENCENTER_LOCAL_KEYS /// - private static string ReadKey(string k) + private static string ReadString(string k) { + return ReadRegistryValue(Microsoft.Win32.Registry.LocalMachine, XENCENTER_LOCAL_KEYS, k); + } + + private static string ReadRegistryValue(RegistryKey baseKey, string subKey, string k) + { + if (baseKey == null) + return null; + try { - RegistryKey masterKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(XENCENTER_LOCAL_KEYS); - if (masterKey == null) - return null; + using (var masterKey = baseKey.OpenSubKey(subKey)) + { + if (masterKey == null) + return null; - try - { var v = masterKey.GetValue(k); - return (v != null) ? v.ToString() : null; - } - finally - { - masterKey.Close(); + if (v != null) + return v.ToString(); } } catch (Exception e) { - log.DebugFormat(@"Failed to read {0}\{1} from registry; assuming NULL.", XENCENTER_LOCAL_KEYS, k); - log.Debug(e, e); - return null; + log.Debug($"Failed to read {baseKey.Name}\\{subKey}\\{k} from registry; assuming NULL.", e); } + + return null; } - /// - /// Reads a key from hKey\XENCENTER_LOCAL_KEYS\k, targeting the 32-bit registry view - /// - private static string ReadKey(string k, RegistryHive hKey) + private static string ReadRegistryValue(RegistryHive hKey, string subKey, string k, RegistryView rView = RegistryView.Default) { try { - RegistryKey masterKey = RegistryKey.OpenBaseKey(hKey, RegistryView.Registry32); - masterKey = masterKey.OpenSubKey(XENCENTER_LOCAL_KEYS) ?? null; - - if (masterKey == null) - return null; - - try - { - var v = masterKey.GetValue(k); - return (v != null) ? v.ToString() : null; - } - finally - { - masterKey.Close(); - } + using (var baseKey = RegistryKey.OpenBaseKey(hKey, rView)) + return ReadRegistryValue(baseKey, subKey, k); } catch (Exception e) { - log.DebugFormat(@"Failed to read {0}\{1} from registry; assuming NULL.", XENCENTER_LOCAL_KEYS, k); - log.Debug(e, e); - return null; + log.Debug($"Failed to read {hKey}\\{subKey}\\{k} from registry view {rView}; assuming NULL.", e); } + + return null; } /// - /// Reads a key from XENCENTER_LOCAL_KEYS\k, trying CurrentUser first and then LocalMachine + /// Reads a string value k under XENCENTER_LOCAL_KEYS, targeting the 32-bit + /// registry view, and trying CurrentUser first and then LocalMachine /// private static string ReadInstalledKey(string k) { - var v = ReadKey(k, RegistryHive.CurrentUser); - return (v != null) ? v : ReadKey(k, RegistryHive.LocalMachine); + return ReadRegistryValue(RegistryHive.CurrentUser, XENCENTER_LOCAL_KEYS, k, RegistryView.Registry32) ?? + ReadRegistryValue(RegistryHive.LocalMachine, XENCENTER_LOCAL_KEYS, k, RegistryView.Registry32); } - public static string HealthCheckIdentityTokenDomainName - { - get { return ReadKey(HEALTH_CHECK_IDENTITY_TOKEN_DOMAIN_NAME); } - } + public static string HealthCheckIdentityTokenDomainName => ReadString(HEALTH_CHECK_IDENTITY_TOKEN_DOMAIN_NAME); - public static string HealthCheckUploadTokenDomainName - { - get { return ReadKey(HEALTH_CHECK_UPLOAD_TOKEN_DOMAIN_NAME); } - } + public static string HealthCheckUploadTokenDomainName => ReadString(HEALTH_CHECK_UPLOAD_TOKEN_DOMAIN_NAME); - public static string HealthCheckUploadGrantTokenDomainName - { - get { return ReadKey(HEALTH_CHECK_UPLOAD_GRANT_TOKEN_DOMAIN_NAME); } - } + public static string HealthCheckUploadGrantTokenDomainName => ReadString(HEALTH_CHECK_UPLOAD_GRANT_TOKEN_DOMAIN_NAME); - public static string HealthCheckUploadDomainName - { - get { return ReadKey(HEALTH_CHECK_UPLOAD_DOMAIN_NAME); } - } + public static string HealthCheckUploadDomainName => ReadString(HEALTH_CHECK_UPLOAD_DOMAIN_NAME); - public static string HealthCheckDiagnosticDomainName - { - get { return ReadKey(HEALTH_CHECK_DIAGNOSTIC_DOMAIN_NAME); } - } + public static string HealthCheckDiagnosticDomainName => ReadString(HEALTH_CHECK_DIAGNOSTIC_DOMAIN_NAME); - public static string HealthCheckProductKey - { - get { return ReadKey(HEALTH_CHECK_PRODUCT_KEY); } - } + public static string HealthCheckProductKey => ReadString(HEALTH_CHECK_PRODUCT_KEY); - public static string HiddenFeatures - { - get { return ReadInstalledKey(HIDDEN_FEATURES); } - } + public static string HiddenFeatures => ReadInstalledKey(HIDDEN_FEATURES); - public static string AdditionalFeatures - { - get { return ReadInstalledKey(ADDITIONAL_FEATURES); } - } + public static string AdditionalFeatures => ReadInstalledKey(ADDITIONAL_FEATURES); - public static string CustomUpdatesXmlLocation - { - get { return ReadKey(CUSTOM_UPDATES_XML_LOCATION); } - } + public static string CustomUpdatesXmlLocation => ReadString(CUSTOM_UPDATES_XML_LOCATION); + + public static string CustomHelpUrl => ReadString(HELP_URL_OVERRIDE); private const string SSL_CERTIFICATES_CHANGED_ONLY = "CHANGED"; private const string SSL_CERTIFICATES_ALL = "ALL"; @@ -384,8 +177,6 @@ namespace XenAdmin.Core private const string DISABLE_PLUGINS = "DisablePlugins"; private const string DONT_SUDO = "DontSudo"; private const string XENCENTER_LOCAL_KEYS = @"SOFTWARE\" + Branding.COMPANY_NAME_SHORT + @"\" + Branding.BRAND_CONSOLE; - private const string PSConsoleKey = @"Software\" + Branding.COMPANY_NAME_SHORT + @"\XenServerPSSnapIn"; - private const string PSConsoleName = "ConsoleFile"; private const string PSExecutionPolicyKey = @"Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell"; private const string PSExecutionPolicyName = "ExecutionPolicy"; private const string PowerShellKey = @"Software\Microsoft\PowerShell\1"; @@ -399,6 +190,7 @@ namespace XenAdmin.Core private const string HIDDEN_FEATURES = "HiddenFeatures"; private const string ADDITIONAL_FEATURES = "AdditionalFeatures"; private const string CUSTOM_UPDATES_XML_LOCATION = "CheckForUpdatesXmlLocationOverride"; + private const string HELP_URL_OVERRIDE = "HelpUrlOverride"; } public enum SSLCertificateTypes { None, Changed, All } diff --git a/XenAdmin/Core/Updates.cs b/XenAdmin/Core/Updates.cs index b71499cb1..025c0fb77 100644 --- a/XenAdmin/Core/Updates.cs +++ b/XenAdmin/Core/Updates.cs @@ -41,6 +41,7 @@ using System.Diagnostics; using System.Windows.Forms; using XenAdmin.Dialogs; using System.Text; +using XenAdmin.Alerts.Types; using XenCenterLib; namespace XenAdmin.Core @@ -456,7 +457,7 @@ namespace XenAdmin.Core XenServerPatch serverPatch = xenServerPatch; - var noPatchHosts = hosts.Where(host => PatchCanBeInstalledOnHost(serverPatch, host, version)); + var noPatchHosts = hosts.Where(host => PatchCanBeInstalledOnHost(serverPatch, host)).ToList(); if (noPatchHosts.Count() == hosts.Count) alert.IncludeConnection(xenConnection); @@ -469,12 +470,14 @@ namespace XenAdmin.Core return alerts; } - private static bool PatchCanBeInstalledOnHost(XenServerPatch serverPatch, Host host, XenServerVersion patchApplicableVersion) + private static bool PatchCanBeInstalledOnHost(XenServerPatch serverPatch, Host host) { Debug.Assert(serverPatch != null); Debug.Assert(host != null); - if (Helpers.productVersionCompare(patchApplicableVersion.Version.ToString(), host.ProductVersion()) != 0) + // A patch is applicable to host if the patch is amongst the current version patches + var patchIsApplicable = GetServerVersions(host, XenServerVersions).Any(v => v.Patches.Contains(serverPatch)); + if (!patchIsApplicable) return false; // A patch can be installed on a host if: @@ -828,9 +831,9 @@ namespace XenAdmin.Core // Show the Upgrade alert for a host if: // - the host version is older than this version AND // - there is no patch (amongst the current version patches) that can update to this version OR, if there is a patch, the patch cannot be installed - var patchApplicable = patch != null && GetServerVersions(master, XenServerVersions).Any(v => v.Patches.Contains(patch)); + var outOfDateHosts = hosts.Where(host => new Version(Helpers.HostProductVersion(host)) < version.Version - && (!patchApplicable || !PatchCanBeInstalledOnHost(patch, host, version))); + && (patch == null || !PatchCanBeInstalledOnHost(patch, host))).ToList(); if (outOfDateHosts.Count() == hosts.Count) alert.IncludeConnection(xc); @@ -941,5 +944,64 @@ namespace XenAdmin.Core return null; return FindPatchAlert(p => p.Name.Equals(patchName, StringComparison.OrdinalIgnoreCase)); } + + public static hotfix_eligibility HotfixEligibility(Host host, out XenServerVersion xenServerVersion) + { + xenServerVersion = null; + if (XenServerVersions == null) + return hotfix_eligibility.all; + + xenServerVersion = GetServerVersions(host, XenServerVersions).FirstOrDefault(); + + return xenServerVersion?.HotfixEligibility ?? hotfix_eligibility.all; + } + + public static void CheckHotfixEligibility(IXenConnection connection) + { + var master = Helpers.GetMaster(connection); + if (master == null) + return; + + var hotfixEligibility = HotfixEligibility(master, out var xenServerVersion); + + if (!HotfixEligibilityAlert.IsAlertNeeded(hotfixEligibility, xenServerVersion, !master.IsFreeLicenseOrExpired())) + { + Alert.RemoveAlert(a => a is HotfixEligibilityAlert && connection.Equals(a.Connection)); + return; + } + + var alertIndex = Alert.FindAlertIndex(a => a is HotfixEligibilityAlert alert && connection.Equals(alert.Connection) && xenServerVersion == alert.Version); + if (alertIndex == -1) + { + Alert.RemoveAlert(a => a is HotfixEligibilityAlert && connection.Equals(a.Connection)); // ensure that there is no other alert for this connection + Alert.AddAlert(new HotfixEligibilityAlert(connection, xenServerVersion)); + } + else + Alert.RefreshAlertAt(alertIndex); + } + + public static void CheckHotfixEligibility() + { + var alerts = new List(); + + foreach (var connection in ConnectionsManager.XenConnectionsCopy) + { + if (!connection.IsConnected) + continue; + + var master = Helpers.GetMaster(connection); + if (master == null) + continue; + + var hotfixEligibility = HotfixEligibility(master, out var xenServerVersion); + if (!HotfixEligibilityAlert.IsAlertNeeded(hotfixEligibility, xenServerVersion, !master.IsFreeLicenseOrExpired())) + continue; + + alerts.Add(new HotfixEligibilityAlert(connection, xenServerVersion)); + } + + Alert.RemoveAlert(a => a is HotfixEligibilityAlert); + Alert.AddAlertRange(alerts); + } } } diff --git a/XenAdmin/Core/VMGroup.cs b/XenAdmin/Core/VMGroup.cs index 54e250c0f..fbb7f6833 100644 --- a/XenAdmin/Core/VMGroup.cs +++ b/XenAdmin/Core/VMGroup.cs @@ -194,9 +194,9 @@ namespace XenAdmin.Core get { return typeof(T) == typeof(VMSS) ? ((Predicate)Host.RestrictVMSnapshotSchedule) : (Predicate)Host.RestrictVMAppliances; } } - internal static bool isQuescingSupported + internal static bool IsQuiescingSupported(IXenConnection connection) { - get { return typeof(T) == typeof(VMSS); } + return typeof(T) == typeof(VMSS) && !Helpers.QuebecOrGreater(connection); } } } diff --git a/XenAdmin/Diagnostics/Checks/AssertCanEvacuateCheck.cs b/XenAdmin/Diagnostics/Checks/AssertCanEvacuateCheck.cs index 16e2d6a75..2db2a7350 100644 --- a/XenAdmin/Diagnostics/Checks/AssertCanEvacuateCheck.cs +++ b/XenAdmin/Diagnostics/Checks/AssertCanEvacuateCheck.cs @@ -126,7 +126,6 @@ namespace XenAdmin.Diagnostics.Checks { log.Debug("Didn't recognise reason", e); log.Debug(exception); - log.Debug(e, e); VM vm = Host.Connection.Resolve(kvp.Key); @@ -229,7 +228,6 @@ namespace XenAdmin.Diagnostics.Checks catch (Exception e) { log.Debug("Exception parsing exception", e); - log.Debug(e, e); throw new Failure(new List(exception)); } diff --git a/XenAdmin/Diagnostics/Checks/DR/AssertCanBeRecoveredCheck.cs b/XenAdmin/Diagnostics/Checks/DR/AssertCanBeRecoveredCheck.cs index 5e8ec2030..7e24c7c94 100644 --- a/XenAdmin/Diagnostics/Checks/DR/AssertCanBeRecoveredCheck.cs +++ b/XenAdmin/Diagnostics/Checks/DR/AssertCanBeRecoveredCheck.cs @@ -140,8 +140,7 @@ namespace XenAdmin.Diagnostics.Checks.DR } catch (Exception e) { - log.ErrorFormat("There was an error calling assert_can_be_recovered for object {0}", xenObject.Name()); - log.Error(e, e); + log.Error($"There was an error calling assert_can_be_recovered for object {xenObject.Name()}.", e); } return null; } diff --git a/XenAdmin/Diagnostics/Checks/HostMemoryPostUpgradeCheck.cs b/XenAdmin/Diagnostics/Checks/HostMemoryPostUpgradeCheck.cs index 89df8cf36..b3cf9bd15 100644 --- a/XenAdmin/Diagnostics/Checks/HostMemoryPostUpgradeCheck.cs +++ b/XenAdmin/Diagnostics/Checks/HostMemoryPostUpgradeCheck.cs @@ -95,9 +95,10 @@ namespace XenAdmin.Diagnostics.Checks var result = Host.call_plugin(Host.Connection.Session, Host.opaque_ref, "prepare_host_upgrade.py", "getDom0DefaultMemory", installMethodConfig); return long.TryParse(result, out dom0MemoryAfterUpgrade); } - catch (Failure failure) + catch (Exception exception) { - log.WarnFormat("Plugin call prepare_host_upgrade.getDom0DefaultMemory on {0} failed with {1}", Host.Name(), failure.Message); + var failure = exception as Failure; + log.WarnFormat("Plugin call prepare_host_upgrade.getDom0DefaultMemory on {0} failed with {1}({2})", Host.Name(), exception.Message, failure?.ErrorDescription.Count>3? failure.ErrorDescription[3]:""); return false; } } @@ -114,16 +115,9 @@ namespace XenAdmin.Diagnostics.Checks productVersion = version.ContainsKey("product-version") ? (string)version["product-version"] : null; return platformVersion != null || productVersion != null; } - catch (Failure failure) - { - log.WarnFormat("Plugin call prepare_host_upgrade.getVersion on {0} failed with {1}", Host.Name(), failure.Message); - - return false; - } catch (Exception exception) { - log.WarnFormat("Exception while trying to get the upgrade version: {0}", exception.Message); - + log.WarnFormat("Plugin call prepare_host_upgrade.getVersion on {0} failed with {1}", Host.Name(), exception.Message); return false; } } diff --git a/XenAdmin/Diagnostics/Checks/HostNeedsRebootCheck.cs b/XenAdmin/Diagnostics/Checks/HostNeedsRebootCheck.cs index 5dc2cf332..8acb5fc50 100644 --- a/XenAdmin/Diagnostics/Checks/HostNeedsRebootCheck.cs +++ b/XenAdmin/Diagnostics/Checks/HostNeedsRebootCheck.cs @@ -77,6 +77,12 @@ namespace XenAdmin.Diagnostics.Checks livePatchCodesByHost[Host.uuid] == livepatch_status.ok_livepatch_complete || updateSequenceIsLivePatchable) { + var livePatchingRestricted = Helpers.FeatureForbidden(Host.Connection, Host.RestrictLivePatching); + var livePatchingRDisabled = Helpers.GetPoolOfOne(Host.Connection)?.live_patching_disabled == true; + + if (livePatchingRestricted || livePatchingRDisabled) + return new HostNeedsReboot(this, Host, livePatchingRestricted, livePatchingRDisabled); + successfulCheckDescription = string.Format(Messages.UPDATES_WIZARD_NO_REBOOT_NEEDED_LIVE_PATCH, Host); return null; } diff --git a/XenAdmin/Diagnostics/Checks/PVGuestsCheck.cs b/XenAdmin/Diagnostics/Checks/PVGuestsCheck.cs new file mode 100644 index 000000000..78e4db1e9 --- /dev/null +++ b/XenAdmin/Diagnostics/Checks/PVGuestsCheck.cs @@ -0,0 +1,86 @@ +/* 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.Linq; +using XenAdmin.Core; +using XenAPI; +using XenAdmin.Diagnostics.Problems; +using XenAdmin.Diagnostics.Problems.PoolProblem; +using System.Collections.Generic; +using System.Web.Script.Serialization; + +namespace XenAdmin.Diagnostics.Checks +{ + class PVGuestsCheck : HostPostLivenessCheck + { + private readonly Pool _pool; + private readonly bool _upgrade; + private readonly Dictionary _installMethodConfig; + private readonly bool _manualUpgrade; + private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + + public PVGuestsCheck(Pool pool, bool upgrade, Dictionary installMethodConfig = null, bool manualUpgrade = false) + : base(Helpers.GetMaster(pool.Connection)) + { + _pool = pool; + _upgrade = upgrade; + _installMethodConfig = installMethodConfig; + _manualUpgrade = manualUpgrade; + } + + protected override Problem RunHostCheck() + { + string upgradePlatformVersion; + if (!_pool.Connection.Cache.VMs.Any(vm => vm.IsPvVm())) + return null; + if (!_upgrade || _manualUpgrade) + return new PoolHasPVGuestWarningUrl(this, _pool, _upgrade); + try + { + var result = Host.call_plugin(Host.Connection.Session, Host.opaque_ref, "prepare_host_upgrade.py", "getVersion", _installMethodConfig); + var serializer = new JavaScriptSerializer(); + var version = (Dictionary)serializer.DeserializeObject(result); + upgradePlatformVersion = version.ContainsKey("platform-version") ? (string)version["platform-version"] : null; + } + catch (Exception exception) + { + log.Warn($"Plugin call prepare_host_upgrade.getVersion on {Host.Name()} threw an exception.", exception); + return new PoolHasPVGuestWarningUrl(this, _pool, _upgrade); + } + if (Helpers.QuebecOrGreater(upgradePlatformVersion)) + return new PoolHasPVGuestWarningUrl(this, _pool, _upgrade); + return null; + } + + public override string Description => Messages.PV_GUESTS_CHECK_DESCRIPTION; + } +} diff --git a/XenAdmin/Diagnostics/Checks/PatchPrecheckCheck.cs b/XenAdmin/Diagnostics/Checks/PatchPrecheckCheck.cs index 6430b2466..6c77e911e 100644 --- a/XenAdmin/Diagnostics/Checks/PatchPrecheckCheck.cs +++ b/XenAdmin/Diagnostics/Checks/PatchPrecheckCheck.cs @@ -132,15 +132,8 @@ namespace XenAdmin.Diagnostics.Checks } catch (Failure f) { - log.Error(f.ToString()); - if(f.ErrorDescription.Count>0) - log.Error(f.ErrorDescription[0]); - if (f.ErrorDescription.Count > 1) - log.Error(f.ErrorDescription[1]); - if (f.ErrorDescription.Count > 2) - log.Error(f.ErrorDescription[2]); - if (f.ErrorDescription.Count > 3) - log.Error(f.ErrorDescription[3]); + log.Error(string.Join(",", f.ErrorDescription.ToArray()), f); + // try and find problem from the xapi failure Problem problem = FindProblem(f); return problem ?? new PrecheckFailed(this, Host, f); @@ -261,9 +254,9 @@ namespace XenAdmin.Diagnostics.Checks var resultReclaimable = Host.call_plugin(Host.Connection.Session, Host.opaque_ref, "disk-space", "get_reclaimable_disk_space", args); reclaimableDiskSpace = Convert.ToInt64(resultReclaimable); } - catch (Failure failure) + catch (Exception exception) { - log.WarnFormat("Plugin call disk-space.get_reclaimable_disk_space on {0} failed with {1}", Host.Name(), failure.Message); + log.WarnFormat("Plugin call disk-space.get_reclaimable_disk_space on {0} failed with {1}", Host.Name(), exception.Message); } diskSpaceReq = new DiskSpaceRequirements(DiskSpaceRequirements.OperationTypes.install, Host, Patch.Name(), requiredSpace, foundSpace, reclaimableDiskSpace); diff --git a/XenAdmin/Diagnostics/Checks/PrepareToUpgradeCheck.cs b/XenAdmin/Diagnostics/Checks/PrepareToUpgradeCheck.cs index bb2cfdb52..84d0e81d3 100644 --- a/XenAdmin/Diagnostics/Checks/PrepareToUpgradeCheck.cs +++ b/XenAdmin/Diagnostics/Checks/PrepareToUpgradeCheck.cs @@ -31,7 +31,6 @@ using System; using System.Collections.Generic; -using XenAdmin.Core; using XenAdmin.Diagnostics.Problems; using XenAdmin.Diagnostics.Problems.HostProblem; using XenAPI; @@ -62,16 +61,13 @@ namespace XenAdmin.Diagnostics.Checks if (result.ToLower() == "true") return null; } - catch (Failure failure) + catch (Exception exception) { - if (failure.ErrorDescription.Count == 4) + var failure = exception as Failure; + if (failure?.ErrorDescription.Count == 4) return new HostPrepareToUpgradeProblem(this, Host, failure.ErrorDescription[3]); - log.ErrorFormat("Error testing upgrade hotfix: {0}", failure); - } - catch (Exception e) - { - log.ErrorFormat("Error testing upgrade hotfix: {0}", e); + log.Error("Error testing upgrade hotfix.", exception); } return new HostPrepareToUpgradeProblem(this, Host); diff --git a/XenAdmin/Diagnostics/Checks/SafeToUpgradeCheck.cs b/XenAdmin/Diagnostics/Checks/SafeToUpgradeCheck.cs index 915474900..52c581359 100644 --- a/XenAdmin/Diagnostics/Checks/SafeToUpgradeCheck.cs +++ b/XenAdmin/Diagnostics/Checks/SafeToUpgradeCheck.cs @@ -67,10 +67,10 @@ namespace XenAdmin.Diagnostics.Checks return new HostNotSafeToUpgradeWarning(this, Host, HostNotSafeToUpgradeReason.Default); } } - catch (Failure failure) + catch (Exception exception) { //note: handle the case when we get UNKNOWN_XENAPI_PLUGIN_FUNCTION - testSafe2Upgrade - log.WarnFormat("Plugin call prepare_host_upgrade.testSafe2Upgrade on {0} failed with {1}", Host.Name(), failure.Message); + log.Warn($"Plugin call prepare_host_upgrade.testSafe2Upgrade on {Host.Name()} threw an exception.", exception); } return null; diff --git a/XenAdmin/Diagnostics/Hotfixing/HotfixFactory.cs b/XenAdmin/Diagnostics/Hotfixing/HotfixFactory.cs index b515a363e..5b39fe1f8 100644 --- a/XenAdmin/Diagnostics/Hotfixing/HotfixFactory.cs +++ b/XenAdmin/Diagnostics/Hotfixing/HotfixFactory.cs @@ -40,23 +40,32 @@ namespace XenAdmin.Diagnostics.Hotfixing public enum HotfixableServerVersion { Dundee, - ElyLima + ElyLima, + Naples } private readonly Hotfix dundeeHotfix = new SingleHotfix { Filename = "RPU003", - UUID = "149be566-421d-4661-bfca-e70970f86a36" + UUID = "b651dd22-df7d-45a4-8c0a-6be037bc1714" }; private readonly Hotfix elyLimaHotfix = new SingleHotfix { Filename = "RPU004", - UUID = "d72c237a-eaaf-4d98-be63-48e2add8dc3a" + UUID = "1821854d-0171-4696-a9c4-01daf75a45a0" + }; + + private readonly Hotfix naplesHotfix = new SingleHotfix + { + Filename = "RPU005", + UUID = "b43ea62d-2804-4589-9164-f6cc5867d011" }; public Hotfix Hotfix(Host host) { + if (Helpers.NaplesOrGreater(host) && !Helpers.QuebecOrGreater(host)) + return Hotfix(HotfixableServerVersion.Naples); if (Helpers.ElyOrGreater(host) && !Helpers.NaplesOrGreater(host)) return Hotfix(HotfixableServerVersion.ElyLima); if (Helpers.DundeeOrGreater(host) && !Helpers.ElyOrGreater(host)) @@ -66,6 +75,8 @@ namespace XenAdmin.Diagnostics.Hotfixing public Hotfix Hotfix(HotfixableServerVersion version) { + if (version == HotfixableServerVersion.Naples) + return naplesHotfix; if (version == HotfixableServerVersion.ElyLima) return elyLimaHotfix; if (version == HotfixableServerVersion.Dundee) diff --git a/XenAdmin/Diagnostics/Problems/HostProblem/HostNeedsReboot.cs b/XenAdmin/Diagnostics/Problems/HostProblem/HostNeedsReboot.cs index c50978d2e..c46946568 100644 --- a/XenAdmin/Diagnostics/Problems/HostProblem/HostNeedsReboot.cs +++ b/XenAdmin/Diagnostics/Problems/HostProblem/HostNeedsReboot.cs @@ -29,7 +29,6 @@ * SUCH DAMAGE. */ -using System; using XenAdmin.Diagnostics.Checks; using XenAPI; @@ -38,21 +37,23 @@ namespace XenAdmin.Diagnostics.Problems.HostProblem public class HostNeedsReboot : Information { private readonly Host host; + private readonly bool livePatchingRestricted; + private readonly bool livePatchingDisabled; - public HostNeedsReboot(Check check, Host host) + public HostNeedsReboot(Check check, Host host, bool livePatchingRestricted = false, bool livePatchingDisabled = false) : base(check) { this.host = host; + this.livePatchingRestricted = livePatchingRestricted; + this.livePatchingDisabled = livePatchingDisabled; } - public override string Title - { - get { return Description; } - } + public override string Title => Description; - public override string Description - { - get { return String.Format(Messages.UPDATES_WIZARD_REBOOT_NEEDED, host.name_label); } - } + public override string Description => livePatchingRestricted + ? string.Format(Messages.UPDATES_WIZARD_REBOOT_NEEDED_LIVEPATCH_RESTRICTED, host.name_label) + : livePatchingDisabled + ? string.Format(Messages.UPDATES_WIZARD_REBOOT_NEEDED_LIVEPATCH_DISABLED, host.name_label) + : string.Format(Messages.UPDATES_WIZARD_REBOOT_NEEDED, host.name_label); } } diff --git a/XenAdmin/Diagnostics/Problems/HostProblem/HostPrepareToUpgradeProblem.cs b/XenAdmin/Diagnostics/Problems/HostProblem/HostPrepareToUpgradeProblem.cs index 3ddcb29f5..c3cc8e05e 100644 --- a/XenAdmin/Diagnostics/Problems/HostProblem/HostPrepareToUpgradeProblem.cs +++ b/XenAdmin/Diagnostics/Problems/HostProblem/HostPrepareToUpgradeProblem.cs @@ -53,7 +53,7 @@ namespace XenAdmin.Diagnostics.Problems.HostProblem public override string Description => _shortMessage; - public override string HelpMessage => Messages.PATCHINGWIZARD_MORE_INFO; + public override string HelpMessage => Messages.MORE_INFO; protected override Actions.AsyncAction CreateAction(out bool cancelled) { diff --git a/XenAdminTests/UnitTests/UnitTestHelper/VerifyPropertyCounter.cs b/XenAdmin/Diagnostics/Problems/PoolProblem/PoolHasPVGuestWarningUrl.cs similarity index 59% rename from XenAdminTests/UnitTests/UnitTestHelper/VerifyPropertyCounter.cs rename to XenAdmin/Diagnostics/Problems/PoolProblem/PoolHasPVGuestWarningUrl.cs index 2b3c9d56e..b1c237f1b 100644 --- a/XenAdminTests/UnitTests/UnitTestHelper/VerifyPropertyCounter.cs +++ b/XenAdmin/Diagnostics/Problems/PoolProblem/PoolHasPVGuestWarningUrl.cs @@ -29,30 +29,29 @@ * SUCH DAMAGE. */ -using System.Linq; -using NUnit.Framework; +using XenAdmin.Diagnostics.Checks; +using System; +using XenAPI; -namespace XenAdminTests.UnitTests.UnitTestHelper +namespace XenAdmin.Diagnostics.Problems.PoolProblem { - class VerifyPropertyCounter : IUnitTestVerifier + class PoolHasPVGuestWarningUrl : WarningWithInformationUrl { - private readonly object classToVerify = null; + private readonly bool _upgrade; + private readonly Pool _pool; - /// A class with getters and setters to verify - public VerifyPropertyCounter(object classToVerify) + public PoolHasPVGuestWarningUrl(Check check, Pool pool, bool upgrade) + : base(check) { - this.classToVerify = classToVerify; - } - - /// - /// Verify the number of properties on the provided class are as expected - /// - /// expected number of properties - public void Verify(object expectedNumberOfProperties) - { - int propertyCount = classToVerify.GetType().GetProperties().Count(); - Assert.AreEqual((int)expectedNumberOfProperties, propertyCount, "Number of properties on the class tested"); + _pool = pool; + _upgrade = upgrade; } + private string PVGuestCheckUrl => string.Format(InvisibleMessages.PV_GUESTS_CHECK_URL); + public override Uri UriToLaunch => new Uri(PVGuestCheckUrl); + public override string Title => Description; + public override string Description => _upgrade ? string.Format(Messages.POOL_HAS_PV_GUEST_UPGRADE_WARNING, _pool.Name()) : string.Format(Messages.POOL_HAS_PV_GUEST_UPDATE_WARNING, _pool.Name()); + public override string HelpMessage => LinkText; + public override string LinkText => Messages.LEARN_MORE; } } diff --git a/XenAdmin/Diagnostics/Problems/UtilityProblem/CfuNotAvailableProblem.cs b/XenAdmin/Diagnostics/Problems/UtilityProblem/CfuNotAvailableProblem.cs index 080eeba3a..9849cd50e 100644 --- a/XenAdmin/Diagnostics/Problems/UtilityProblem/CfuNotAvailableProblem.cs +++ b/XenAdmin/Diagnostics/Problems/UtilityProblem/CfuNotAvailableProblem.cs @@ -60,10 +60,7 @@ namespace XenAdmin.Diagnostics.Problems.UtilityProblem return null; } - public override string HelpMessage - { - get { return Messages.PATCHINGWIZARD_MORE_INFO; } - } + public override string HelpMessage => Messages.MORE_INFO; public sealed override string Title { diff --git a/XenAdmin/Diagnostics/Problems/WarningWithMoreInfo.cs b/XenAdmin/Diagnostics/Problems/WarningWithMoreInfo.cs index ca9e30a7c..190492310 100644 --- a/XenAdmin/Diagnostics/Problems/WarningWithMoreInfo.cs +++ b/XenAdmin/Diagnostics/Problems/WarningWithMoreInfo.cs @@ -41,7 +41,7 @@ namespace XenAdmin.Diagnostics.Problems { } - public override string HelpMessage => Messages.PATCHINGWIZARD_MORE_INFO; + public override string HelpMessage => Messages.MORE_INFO; protected override Actions.AsyncAction CreateAction(out bool cancelled) { diff --git a/XenAdmin/Dialogs/AddServerDialog.Designer.cs b/XenAdmin/Dialogs/AddServerDialog.Designer.cs index 87097e2de..93825cbca 100644 --- a/XenAdmin/Dialogs/AddServerDialog.Designer.cs +++ b/XenAdmin/Dialogs/AddServerDialog.Designer.cs @@ -185,7 +185,6 @@ namespace XenAdmin.Dialogs this.CancelButton = this.CancelButton2; this.Controls.Add(this.tableLayoutPanelType); this.Name = "AddServerDialog"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.AddServerDialog_FormClosing); this.Load += new System.EventHandler(this.AddServerDialog_Load); this.Shown += new System.EventHandler(this.AddServerDialog_Shown); this.groupBox1.ResumeLayout(false); diff --git a/XenAdmin/Dialogs/AddServerDialog.cs b/XenAdmin/Dialogs/AddServerDialog.cs index ac1ffe3a1..0963b7654 100644 --- a/XenAdmin/Dialogs/AddServerDialog.cs +++ b/XenAdmin/Dialogs/AddServerDialog.cs @@ -219,9 +219,8 @@ namespace XenAdmin.Dialogs XenConnectionUI.BeginConnect(conn, true, Owner, false); } - private void conn_CachePopulated(object sender, EventArgs e) + private void conn_CachePopulated(IXenConnection conn) { - IXenConnection conn = (IXenConnection)sender; conn.CachePopulated -= conn_CachePopulated; OnCachePopulated(conn); } @@ -334,11 +333,5 @@ namespace XenAdmin.Dialogs { pictureBoxError.Visible = labelError.Visible = (labelError.Text != ""); } - - private void AddServerDialog_FormClosing(object sender, FormClosingEventArgs e) - { - if (connection != null) - XenConnectionUI.connectionDialogs.Remove(connection); - } } } diff --git a/XenAdmin/Dialogs/AddVGPUDialog.Designer.cs b/XenAdmin/Dialogs/AddVGPUDialog.Designer.cs new file mode 100644 index 000000000..f2a1cae50 --- /dev/null +++ b/XenAdmin/Dialogs/AddVGPUDialog.Designer.cs @@ -0,0 +1,90 @@ +namespace XenAdmin.Dialogs +{ + partial class AddVGPUDialog + { + /// + /// 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(AddVGPUDialog)); + this.buttonAdd = new System.Windows.Forms.Button(); + this.buttonCancel = new System.Windows.Forms.Button(); + this.comboBoxTypes = new XenAdmin.Controls.VgpuComboBox(); + this.labelType = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // buttonAdd + // + this.buttonAdd.DialogResult = System.Windows.Forms.DialogResult.OK; + resources.ApplyResources(this.buttonAdd, "buttonAdd"); + this.buttonAdd.Name = "buttonAdd"; + this.buttonAdd.UseVisualStyleBackColor = true; + this.buttonAdd.Click += new System.EventHandler(this.buttonAdd_Click); + // + // buttonCancel + // + this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + resources.ApplyResources(this.buttonCancel, "buttonCancel"); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.UseVisualStyleBackColor = true; + // + // comboBoxTypes + // + this.comboBoxTypes.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable; + this.comboBoxTypes.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + resources.ApplyResources(this.comboBoxTypes, "comboBoxTypes"); + this.comboBoxTypes.FormattingEnabled = true; + this.comboBoxTypes.Name = "comboBoxTypes"; + this.comboBoxTypes.SelectedIndexChanged += new System.EventHandler(this.comboBoxTypes_SelectedIndexChanged); + // + // labelType + // + resources.ApplyResources(this.labelType, "labelType"); + this.labelType.Name = "labelType"; + // + // AddVGPUDialog + // + this.AcceptButton = this.buttonAdd; + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.CancelButton = this.buttonCancel; + this.Controls.Add(this.labelType); + this.Controls.Add(this.comboBoxTypes); + this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.buttonAdd); + this.Name = "AddVGPUDialog"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button buttonAdd; + private System.Windows.Forms.Button buttonCancel; + private Controls.VgpuComboBox comboBoxTypes; + private System.Windows.Forms.Label labelType; + } +} \ No newline at end of file diff --git a/XenAdmin/Dialogs/AddVGPUDialog.cs b/XenAdmin/Dialogs/AddVGPUDialog.cs new file mode 100644 index 000000000..60564fd7f --- /dev/null +++ b/XenAdmin/Dialogs/AddVGPUDialog.cs @@ -0,0 +1,113 @@ +/* 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.Linq; +using XenAdmin.Controls; +using XenAdmin.Core; +using XenAPI; + +namespace XenAdmin.Dialogs +{ + public partial class AddVGPUDialog : XenDialogBase + { + private VM _vm; + private List existingVGpus; + public GpuTuple SelectedTuple { private set; get; } + + public AddVGPUDialog(VM vm, List VGpus) + { + _vm = vm; + existingVGpus = VGpus; + InitializeComponent(); + PopulateComboBox(); + } + + private void PopulateComboBox() + { + GPU_group[] gpu_groups = _vm.Connection.Cache.GPU_groups.Where(g => g.PGPUs.Count > 0 && g.supported_VGPU_types.Count != 0).ToArray(); + Array.Sort(gpu_groups); + foreach (GPU_group gpu_group in gpu_groups) + { + if (Helpers.FeatureForbidden(_vm.Connection, Host.RestrictVgpu) || !_vm.CanHaveVGpu()) + { + if (gpu_group.HasPassthrough()) + comboBoxTypes.Items.Add(new GpuTuple(gpu_group, null, null)); //GPU pass-through item + } + else + { + HashSet> commonTypesSet = new HashSet>(gpu_group.supported_VGPU_types); + + foreach (var existingVgpu in existingVGpus) + { + var existingType = _vm.Connection.Resolve(existingVgpu.type); + if (existingType != null && existingType.compatible_types_in_vm != null) + { + var compatibleTypesSet = new HashSet>(existingType.compatible_types_in_vm); + commonTypesSet.IntersectWith(compatibleTypesSet); + } + } + + var commonTypes = _vm.Connection.ResolveAll(commonTypesSet); + commonTypes.Sort(); + commonTypes.Reverse(); + + if (gpu_group.HasVGpu() && commonTypes.Count > 0) + comboBoxTypes.Items.Add( + new GpuTuple(gpu_group, _vm.Connection.ResolveAll(gpu_group.supported_VGPU_types).ToArray())); // Group item + + var disabledTypes = _vm.Connection.ResolveAll(gpu_group.supported_VGPU_types.Except(gpu_group.enabled_VGPU_types)); + + foreach (var vgpuType in commonTypes) + comboBoxTypes.Items.Add(new GpuTuple(gpu_group, vgpuType, disabledTypes.ToArray())); // GPU_type item + + if (commonTypes.Count == 1 && !disabledTypes.Contains(commonTypes[0])) + comboBoxTypes.SelectedItem = comboBoxTypes.Items[0]; + } + } + } + + private void buttonAdd_Click(object sender, EventArgs e) + { + GpuTuple tuple = comboBoxTypes.SelectedItem as GpuTuple; + if (tuple == null || tuple.VgpuTypes == null || tuple.VgpuTypes.Length == 0) + SelectedTuple = null; + else + SelectedTuple = tuple; + } + + private void comboBoxTypes_SelectedIndexChanged(object sender, EventArgs e) + { + buttonAdd.Enabled = true; + } + } +} diff --git a/XenAdmin/Dialogs/AddVGPUDialog.ja.resx b/XenAdmin/Dialogs/AddVGPUDialog.ja.resx new file mode 100644 index 000000000..471b25d74 --- /dev/null +++ b/XenAdmin/Dialogs/AddVGPUDialog.ja.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + 419, 115 + + + + 562, 122, 562, 122 + + \ No newline at end of file diff --git a/XenAdmin/Dialogs/AddVGPUDialog.resx b/XenAdmin/Dialogs/AddVGPUDialog.resx new file mode 100644 index 000000000..646bb7b4a --- /dev/null +++ b/XenAdmin/Dialogs/AddVGPUDialog.resx @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + False + + + + Segoe UI, 9pt + + + 355, 80 + + + 75, 23 + + + 1 + + + Add + + + buttonAdd + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + Segoe UI, 9pt + + + 436, 80 + + + 75, 23 + + + 2 + + + Cancel + + + buttonCancel + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + Segoe UI, 9pt + + + 12, 40 + + + 499, 24 + + + 0 + + + comboBoxTypes + + + XenAdmin.Controls.VgpuComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + $this + + + 1 + + + True + + + Segoe UI, 9pt + + + 12, 13 + + + 129, 15 + + + 4 + + + Select virtual GPU type: + + + labelType + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + True + + + 96, 96 + + + 523, 115 + + + Segoe UI, 9pt + + + + 562, 122, 562, 122 + + + Add virtual GPU + + + AddVGPUDialog + + + XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + \ No newline at end of file diff --git a/XenAdmin/Dialogs/AddVGPUDialog.zh-CN.resx b/XenAdmin/Dialogs/AddVGPUDialog.zh-CN.resx new file mode 100644 index 000000000..d4e6466ce --- /dev/null +++ b/XenAdmin/Dialogs/AddVGPUDialog.zh-CN.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + 413, 112 + + + + 7707, 781, 7707, 781 + + \ No newline at end of file diff --git a/XenAdmin/Dialogs/AttachDiskDialog.cs b/XenAdmin/Dialogs/AttachDiskDialog.cs index 71742a92d..83b957914 100644 --- a/XenAdmin/Dialogs/AttachDiskDialog.cs +++ b/XenAdmin/Dialogs/AttachDiskDialog.cs @@ -212,7 +212,7 @@ namespace XenAdmin.Dialogs VDI TheVDI = item.TheVDI; // Run this stuff off the event thread, since it involves a server call - System.Threading.ThreadPool.QueueUserWorkItem((System.Threading.WaitCallback)delegate(object o) + System.Threading.ThreadPool.QueueUserWorkItem(delegate { // Get a spare userdevice string[] uds = VM.get_allowed_VBD_devices(connection.DuplicateSession(), TheVM.opaque_ref); @@ -221,14 +221,14 @@ namespace XenAdmin.Dialogs Program.Invoke(Program.MainWindow, delegate() { using (var dlg = new ThreeButtonDialog( - new ThreeButtonDialog.Details( - SystemIcons.Error, - FriendlyErrorNames.VBDS_MAX_ALLOWED, Messages.DISK_ATTACH))) + new ThreeButtonDialog.Details( + SystemIcons.Error, + FriendlyErrorNames.VBDS_MAX_ALLOWED, Messages.DISK_ATTACH))) { dlg.ShowDialog(Program.MainWindow); } }); - // Give up + return; } string ud = uds[0]; @@ -246,12 +246,29 @@ namespace XenAdmin.Dialogs vbd.unpluggable = true; // Try to hot plug the VBD. - new VbdSaveAndPlugAction(TheVM, vbd, TheVDI.Name(), null, false,NewDiskDialog.ShowMustRebootBoxCD,NewDiskDialog.ShowVBDWarningBox).RunAsync(); + var action = new VbdSaveAndPlugAction(TheVM, vbd, TheVDI.Name(), null, false); + action.ShowUserInstruction += Action_ShowUserInstruction; + action.RunAsync(); }); Close(); } + private void Action_ShowUserInstruction(string message) + { + Program.Invoke(Program.MainWindow, () => + { + if (!Program.RunInAutomatedTestMode) + { + using (var dlg = new ThreeButtonDialog( + new ThreeButtonDialog.Details(SystemIcons.Information, message))) + { + dlg.ShowDialog(Program.MainWindow); + } + } + }); + } + private void CancelBtn_Click(object sender, EventArgs e) { Close(); diff --git a/XenAdmin/Dialogs/ChangeServerPasswordDialog.Designer.cs b/XenAdmin/Dialogs/ChangeServerPasswordDialog.Designer.cs index a22cdda72..3617e9d1d 100644 --- a/XenAdmin/Dialogs/ChangeServerPasswordDialog.Designer.cs +++ b/XenAdmin/Dialogs/ChangeServerPasswordDialog.Designer.cs @@ -52,8 +52,8 @@ namespace XenAdmin.Dialogs // // oldPassBox // - this.tableLayoutPanel1.SetColumnSpan(this.oldPassBox, 2); resources.ApplyResources(this.oldPassBox, "oldPassBox"); + this.tableLayoutPanel1.SetColumnSpan(this.oldPassBox, 2); this.oldPassBox.Name = "oldPassBox"; this.oldPassBox.UseSystemPasswordChar = true; this.oldPassBox.TextChanged += new System.EventHandler(this.oldPassBox_TextChanged); @@ -65,16 +65,16 @@ namespace XenAdmin.Dialogs // // newPassBox // - this.tableLayoutPanel1.SetColumnSpan(this.newPassBox, 2); resources.ApplyResources(this.newPassBox, "newPassBox"); + this.tableLayoutPanel1.SetColumnSpan(this.newPassBox, 2); this.newPassBox.Name = "newPassBox"; this.newPassBox.UseSystemPasswordChar = true; this.newPassBox.TextChanged += new System.EventHandler(this.newPassBox_TextChanged); // // confirmBox // - this.tableLayoutPanel1.SetColumnSpan(this.confirmBox, 2); resources.ApplyResources(this.confirmBox, "confirmBox"); + this.tableLayoutPanel1.SetColumnSpan(this.confirmBox, 2); this.confirmBox.Name = "confirmBox"; this.confirmBox.UseSystemPasswordChar = true; this.confirmBox.TextChanged += new System.EventHandler(this.confirmBox_TextChanged); @@ -103,24 +103,23 @@ namespace XenAdmin.Dialogs // resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); this.tableLayoutPanel1.Controls.Add(this.ServerNameLabel, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.OldPasswordLabel, 0, 1); - this.tableLayoutPanel1.Controls.Add(this.oldPassBox, 1, 1); - this.tableLayoutPanel1.Controls.Add(this.NewPasswordLabel, 0, 3); - this.tableLayoutPanel1.Controls.Add(this.newPassBox, 1, 3); - this.tableLayoutPanel1.Controls.Add(this.RetypeNewPasswordLabel, 0, 4); - this.tableLayoutPanel1.Controls.Add(this.confirmBox, 1, 4); + this.tableLayoutPanel1.Controls.Add(this.OldPasswordLabel, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.oldPassBox, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.NewPasswordLabel, 0, 4); + this.tableLayoutPanel1.Controls.Add(this.newPassBox, 1, 4); + this.tableLayoutPanel1.Controls.Add(this.RetypeNewPasswordLabel, 0, 5); + this.tableLayoutPanel1.Controls.Add(this.confirmBox, 1, 5); this.tableLayoutPanel1.Controls.Add(this.okButton, 1, 7); this.tableLayoutPanel1.Controls.Add(this.cancelButton, 2, 7); - this.tableLayoutPanel1.Controls.Add(this.currentPasswordError, 1, 2); - this.tableLayoutPanel1.Controls.Add(this.newPasswordError, 1, 5); - this.tableLayoutPanel1.Controls.Add(this.noteLabel, 0, 6); + this.tableLayoutPanel1.Controls.Add(this.currentPasswordError, 1, 3); + this.tableLayoutPanel1.Controls.Add(this.newPasswordError, 1, 6); + this.tableLayoutPanel1.Controls.Add(this.noteLabel, 0, 1); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; // // ServerNameLabel // resources.ApplyResources(this.ServerNameLabel, "ServerNameLabel"); this.tableLayoutPanel1.SetColumnSpan(this.ServerNameLabel, 3); - this.ServerNameLabel.MaximumSize = new System.Drawing.Size(367, 32000); this.ServerNameLabel.Name = "ServerNameLabel"; // // currentPasswordError diff --git a/XenAdmin/Dialogs/ChangeServerPasswordDialog.cs b/XenAdmin/Dialogs/ChangeServerPasswordDialog.cs index 0fd9111ff..fb118958b 100644 --- a/XenAdmin/Dialogs/ChangeServerPasswordDialog.cs +++ b/XenAdmin/Dialogs/ChangeServerPasswordDialog.cs @@ -30,42 +30,42 @@ */ using System; -using System.Collections.Generic; using System.ComponentModel; using System.Windows.Forms; - using XenAdmin.Actions; +using XenAdmin.Core; +using XenAPI; namespace XenAdmin.Dialogs { public partial class ChangeServerPasswordDialog : XenDialogBase { - private readonly XenAPI.Host host; - private readonly XenAPI.Pool pool; + private readonly Host host; + private readonly Pool pool; - public ChangeServerPasswordDialog(XenAPI.Host host) + public ChangeServerPasswordDialog(Host host) { InitializeComponent(); this.host = host; - host.PropertyChanged += new PropertyChangedEventHandler(Server_PropertyChanged); + host.PropertyChanged += Server_PropertyChanged; UpdateText(); - checkConfirmEnablement(); + UpdateButtons(); } - public ChangeServerPasswordDialog(XenAPI.Pool pool) + public ChangeServerPasswordDialog(Pool pool) { InitializeComponent(); this.pool = pool; - pool.PropertyChanged += new PropertyChangedEventHandler(Server_PropertyChanged); + pool.PropertyChanged += Server_PropertyChanged; UpdateText(); - checkConfirmEnablement(); + UpdateButtons(); } private void Server_PropertyChanged(object sender, PropertyChangedEventArgs e) @@ -84,15 +84,15 @@ namespace XenAdmin.Dialogs if (host != null) { - XenAPI.Pool thePool = Core.Helpers.GetPoolOfOne(host.Connection); + Pool thePool = Helpers.GetPoolOfOne(host.Connection); name = thePool.Name(); } if (pool != null) name = pool.Name(); - this.Text = string.Format(Messages.CHANGEPASS_DIALOG_TITLE, name); - ServerNameLabel.Text = string.Format(Messages.CHANGEPASS_ROOT_PASS, name); + this.Text = string.Format(Messages.CHANGEPASS_DIALOG_TITLE, name.Ellipsise(30)); + ServerNameLabel.Text = string.Format(Messages.CHANGEPASS_ROOT_PASS, name.Ellipsise(30)); } private void okButton_Click(object sender, EventArgs e) @@ -113,8 +113,7 @@ namespace XenAdmin.Dialogs // Check new passwords match if (!newPassBox.Text.Equals(confirmBox.Text)) { - newPasswordError.Visible = true; - newPasswordError.Error = Messages.PASSWORDS_DONT_MATCH; + newPasswordError.ShowError(Messages.PASSWORDS_DONT_MATCH); newPassBox.Focus(); newPassBox.SelectAll(); return; @@ -125,46 +124,48 @@ namespace XenAdmin.Dialogs : new ChangeHostPasswordAction(host.Connection, oldPassBox.Text.ToCharArray(), newPassBox.Text.ToCharArray()); action.RunAsync(); - this.DialogResult = DialogResult.OK; + DialogResult = DialogResult.OK; Close(); } private void cancelButton_Click(object sender, EventArgs e) { - this.DialogResult = DialogResult.Cancel; + DialogResult = DialogResult.Cancel; Close(); } protected override void OnClosing(CancelEventArgs e) { if (host != null) - host.PropertyChanged -= new PropertyChangedEventHandler(Server_PropertyChanged); + host.PropertyChanged -= Server_PropertyChanged; if (pool != null) - pool.PropertyChanged -= new PropertyChangedEventHandler(Server_PropertyChanged); + pool.PropertyChanged -= Server_PropertyChanged; base.OnClosing(e); } private void oldPassBox_TextChanged(object sender, EventArgs e) { currentPasswordError.Visible = false; - checkConfirmEnablement(); + UpdateButtons(); } private void newPassBox_TextChanged(object sender, EventArgs e) { newPasswordError.Visible = false; - checkConfirmEnablement(); + UpdateButtons(); } private void confirmBox_TextChanged(object sender, EventArgs e) { newPasswordError.Visible = false; - checkConfirmEnablement(); + UpdateButtons(); } - private void checkConfirmEnablement() + private void UpdateButtons() { - okButton.Enabled = oldPassBox.Text != "" && newPassBox.Text != "" && confirmBox.Text != ""; + okButton.Enabled = !string.IsNullOrEmpty(oldPassBox.Text) && + !string.IsNullOrEmpty(newPassBox.Text) && + !string.IsNullOrEmpty(confirmBox.Text); } } } diff --git a/XenAdmin/Dialogs/ChangeServerPasswordDialog.ja.resx b/XenAdmin/Dialogs/ChangeServerPasswordDialog.ja.resx index 8d37d7f60..b10973616 100644 --- a/XenAdmin/Dialogs/ChangeServerPasswordDialog.ja.resx +++ b/XenAdmin/Dialogs/ChangeServerPasswordDialog.ja.resx @@ -112,28 +112,25 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + + Left + + True - - - Fill - - + Segoe UI, 9pt - 10, 28 - - - 10, 0, 3, 0 + 3, 72 135, 29 @@ -144,14 +141,11 @@ 現在のルート パスワード(&C): - - MiddleLeft - OldPasswordLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -159,6 +153,9 @@ 1 + + Left, Right + True @@ -183,8 +180,11 @@ 0, 0, 3, 10 + + 367, 32000 + - 388, 18 + 367, 15 12 @@ -193,7 +193,7 @@ ServerNameLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -201,20 +201,17 @@ 0 + + Left + True - - Fill - Segoe UI, 9pt - 10, 57 - - - 10, 0, 3, 0 + 3, 123 135, 29 @@ -225,14 +222,11 @@ 新しいルート パスワード(&N): - - MiddleLeft - NewPasswordLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -240,8 +234,8 @@ 3 - - Fill + + Left, Right Segoe UI, 9pt @@ -259,7 +253,7 @@ newPassBox - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -267,20 +261,17 @@ 4 + + Left + True - - Fill - Segoe UI, 9pt - 10, 86 - - - 10, 0, 3, 0 + 3, 152 135, 29 @@ -291,14 +282,11 @@ パスワードの確認入力(&R): - - MiddleLeft - RetypeNewPasswordLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -306,8 +294,8 @@ 5 - - Fill + + Left, Right Segoe UI, 9pt @@ -325,7 +313,7 @@ confirmBox - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -358,7 +346,7 @@ okButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -388,7 +376,7 @@ cancelButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -509,7 +497,7 @@ noteLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -539,7 +527,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -548,10 +536,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="ServerNameLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="OldPasswordLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="oldPassBox" Row="1" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="NewPasswordLabel" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="newPassBox" Row="3" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="RetypeNewPasswordLabel" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="confirmBox" Row="4" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="okButton" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="cancelButton" Row="7" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="currentPasswordError" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="newPasswordError" Row="5" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="noteLabel" Row="6" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,22,AutoSize,0,AutoSize,0,AutoSize,22,AutoSize,0,AutoSize,0" /></TableLayoutSettings> - - - Fill + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="ServerNameLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="OldPasswordLabel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="oldPassBox" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="NewPasswordLabel" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="newPassBox" Row="4" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="RetypeNewPasswordLabel" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="confirmBox" Row="5" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="okButton" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="cancelButton" Row="7" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="currentPasswordError" Row="3" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="newPasswordError" Row="6" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="noteLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,22,AutoSize,0,AutoSize,0,AutoSize,22,AutoSize,0,Absolute,20" /></TableLayoutSettings> Segoe UI, 9pt @@ -569,7 +554,7 @@ oldPassBox - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -577,7 +562,7 @@ 2 - + True diff --git a/XenAdmin/Dialogs/ChangeServerPasswordDialog.resx b/XenAdmin/Dialogs/ChangeServerPasswordDialog.resx index c1cfe741f..066544e3d 100644 --- a/XenAdmin/Dialogs/ChangeServerPasswordDialog.resx +++ b/XenAdmin/Dialogs/ChangeServerPasswordDialog.resx @@ -112,31 +112,28 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + + Left + + True - - - Fill - - + Segoe UI, 9pt - 10, 25 - - - 10, 0, 3, 0 + 3, 72 - 133, 29 + 128, 15 0 @@ -144,14 +141,11 @@ &Current root password: - - MiddleLeft - OldPasswordLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -159,6 +153,9 @@ 1 + + Left, Right + True @@ -183,6 +180,9 @@ 0, 0, 3, 10 + + 367, 32000 + 367, 15 @@ -193,7 +193,7 @@ ServerNameLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -201,23 +201,20 @@ 0 + + Left + True - - Fill - Segoe UI, 9pt - 10, 76 - - - 10, 0, 3, 0 + 3, 123 - 133, 29 + 112, 15 2 @@ -225,14 +222,11 @@ &New root password: - - MiddleLeft - NewPasswordLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -240,17 +234,17 @@ 3 - - Fill + + Left, Right Segoe UI, 9pt - 149, 79 + 142, 119 - 237, 23 + 244, 23 3 @@ -259,7 +253,7 @@ newPassBox - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -267,23 +261,20 @@ 4 + + Left + True - - Fill - Segoe UI, 9pt - 10, 105 - - - 10, 0, 3, 0 + 3, 152 - 133, 29 + 133, 15 4 @@ -291,14 +282,11 @@ &Re-enter new password: - - MiddleLeft - RetypeNewPasswordLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -306,17 +294,17 @@ 5 - - Fill + + Left, Right Segoe UI, 9pt - 149, 108 + 142, 148 - 237, 23 + 244, 23 5 @@ -325,7 +313,7 @@ confirmBox - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -340,7 +328,7 @@ Segoe UI, 9pt - 230, 200 + 230, 204 3, 8, 3, 3 @@ -358,7 +346,7 @@ okButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -373,7 +361,7 @@ Segoe UI, 9pt - 311, 200 + 311, 204 75, 23 @@ -388,7 +376,7 @@ cancelButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -412,13 +400,13 @@ Segoe UI, 9pt - 146, 54 + 139, 94 0, 0, 0, 0 - 243, 22 + 250, 22 13 @@ -454,13 +442,13 @@ Segoe UI, 9pt - 146, 134 + 139, 174 0, 0, 0, 0 - 243, 22 + 250, 22 14 @@ -490,10 +478,10 @@ NoControl - 3, 159 + 3, 25 - 3, 3, 3, 3 + 3, 0, 3, 10 363, 30 @@ -503,13 +491,13 @@ Note that if you lose or forget the password, it cannot be recovered. -(Remember that passwords are case sensitive) +(Remember that passwords are case sensitive). noteLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -539,7 +527,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -548,19 +536,16 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="ServerNameLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="OldPasswordLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="oldPassBox" Row="1" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="NewPasswordLabel" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="newPassBox" Row="3" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="RetypeNewPasswordLabel" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="confirmBox" Row="4" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="okButton" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="cancelButton" Row="7" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="currentPasswordError" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="newPasswordError" Row="5" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="noteLabel" Row="6" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,22,AutoSize,0,AutoSize,0,AutoSize,22,AutoSize,0,AutoSize,0" /></TableLayoutSettings> - - - Fill + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="ServerNameLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="OldPasswordLabel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="oldPassBox" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="NewPasswordLabel" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="newPassBox" Row="4" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="RetypeNewPasswordLabel" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="confirmBox" Row="5" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="okButton" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="cancelButton" Row="7" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="currentPasswordError" Row="3" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="newPasswordError" Row="6" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="noteLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,22,AutoSize,0,AutoSize,0,AutoSize,22,AutoSize,0,Absolute,20" /></TableLayoutSettings> Segoe UI, 9pt - 149, 28 + 142, 68 - 237, 23 + 244, 23 1 @@ -569,7 +554,7 @@ oldPassBox - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -577,7 +562,7 @@ 2 - + True diff --git a/XenAdmin/Dialogs/ChangeServerPasswordDialog.zh-CN.resx b/XenAdmin/Dialogs/ChangeServerPasswordDialog.zh-CN.resx index cd6e019e4..cdc98ec03 100644 --- a/XenAdmin/Dialogs/ChangeServerPasswordDialog.zh-CN.resx +++ b/XenAdmin/Dialogs/ChangeServerPasswordDialog.zh-CN.resx @@ -112,28 +112,25 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + + Left + + True - - - Fill - - + Segoe UI, 9pt - 10, 28 - - - 10, 0, 3, 0 + 3, 72 135, 29 @@ -144,14 +141,11 @@ root 用户的当前密码(&C): - - MiddleLeft - OldPasswordLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -159,6 +153,9 @@ 1 + + Left, Right + True @@ -183,6 +180,9 @@ 0, 0, 3, 10 + + 367, 32000 + 388, 18 @@ -193,7 +193,7 @@ ServerNameLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -201,20 +201,17 @@ 0 + + Left + True - - Fill - Segoe UI, 9pt - 10, 57 - - - 10, 0, 3, 0 + 3, 123 135, 29 @@ -225,14 +222,11 @@ root 用户的新密码(&N): - - MiddleLeft - NewPasswordLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -240,8 +234,8 @@ 3 - - Fill + + Left, Right Segoe UI, 9pt @@ -259,7 +253,7 @@ newPassBox - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -267,20 +261,17 @@ 4 + + Left + True - - Fill - Segoe UI, 9pt - 10, 86 - - - 10, 0, 3, 0 + 3, 152 135, 29 @@ -291,14 +282,11 @@ 重新输入新密码(&R): - - MiddleLeft - RetypeNewPasswordLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -306,8 +294,8 @@ 5 - - Fill + + Left, Right Segoe UI, 9pt @@ -325,7 +313,7 @@ confirmBox - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -358,7 +346,7 @@ okButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -388,7 +376,7 @@ cancelButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -503,13 +491,13 @@ 请注意,如果丢失或忘记密码,则无法进行恢复。 -(请记住,密码区分大小写) +(请记住,密码区分大小写)。 noteLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -539,7 +527,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -548,10 +536,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="ServerNameLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="OldPasswordLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="oldPassBox" Row="1" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="NewPasswordLabel" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="newPassBox" Row="3" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="RetypeNewPasswordLabel" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="confirmBox" Row="4" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="okButton" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="cancelButton" Row="7" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="currentPasswordError" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="newPasswordError" Row="5" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="noteLabel" Row="6" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,22,AutoSize,0,AutoSize,0,AutoSize,22,AutoSize,0,AutoSize,0" /></TableLayoutSettings> - - - Fill + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="ServerNameLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="OldPasswordLabel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="oldPassBox" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="NewPasswordLabel" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="newPassBox" Row="4" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="RetypeNewPasswordLabel" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="confirmBox" Row="5" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="okButton" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="cancelButton" Row="7" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="currentPasswordError" Row="3" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="newPasswordError" Row="6" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="noteLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,22,AutoSize,0,AutoSize,0,AutoSize,22,AutoSize,0,Absolute,20" /></TableLayoutSettings> Segoe UI, 9pt @@ -569,7 +554,7 @@ oldPassBox - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -577,7 +562,7 @@ 2 - + True diff --git a/XenAdmin/Dialogs/ConnectingToServerDialog.cs b/XenAdmin/Dialogs/ConnectingToServerDialog.cs index 31e43e300..3af21fd57 100644 --- a/XenAdmin/Dialogs/ConnectingToServerDialog.cs +++ b/XenAdmin/Dialogs/ConnectingToServerDialog.cs @@ -31,7 +31,6 @@ using System; using System.Windows.Forms; -using XenAdmin.Core; using XenAdmin.Network; @@ -39,67 +38,38 @@ namespace XenAdmin.Dialogs { public partial class ConnectingToServerDialog : XenDialogBase { - private readonly IXenConnection _connection; private Form ownerForm; + private bool endBegun; public ConnectingToServerDialog(IXenConnection connection) : base(connection) { - this._connection = connection; InitializeComponent(); Icon = Properties.Resources.AppIcon; - - FormFontFixer.Fix(this); - - this.lblStatus.Text = String.Format(Messages.LABEL_ATTEMPT, _connection.Hostname); + lblStatus.Text = string.Format(Messages.LABEL_ATTEMPT, connection.Hostname); } - private void btnCancel_Click(object sender, EventArgs e) - { - Close(); - } + internal override string HelpName => "AddServerDialog"; - private void ConnectingToServer_Load(object sender, EventArgs e) - { - this.CenterToParent(); - } - - /// - /// May be called off the event thread. Will do the necessary invoke. - /// - public void SetText(string text) - { - Program.Invoke(Program.MainWindow, delegate() - { - this.lblStatus.Text = text; - }); - } - - internal override string HelpName - { - get { return "AddServerDialog"; } - } - - private bool endBegun = false; protected override void OnFormClosing(FormClosingEventArgs e) { - if (_connection.InProgress && !_connection.IsConnected && !endBegun) + if (connection != null && connection.InProgress && !connection.IsConnected && !endBegun) { //if we are still trying to connect then we need to end it. This call will close this dialog as well, //so set a guard to skip this block when we re-enter. endBegun = true; - _connection.EndConnect(); + connection.EndConnect(); e.Cancel = true; //CA-65004: if this dialog is closed by closing the parent form, returning //without calling the base class method causes the parent form to stay open - if (e.CloseReason == CloseReason.FormOwnerClosing && getOwnerForm() == ownerForm) + if (e.CloseReason == CloseReason.FormOwnerClosing && GetOwnerForm() == ownerForm) ownerForm.Close(); return; } - if (_connection != null) - XenConnectionUI.connectionDialogs.Remove(_connection); + if (connection != null) + XenConnectionUI.connectionDialogs.Remove(connection); base.OnFormClosing(e); } @@ -108,11 +78,11 @@ namespace XenAdmin.Dialogs /// Gets the Form set as this Connection's owner in BeginConnect. All the dialogs spawned during the connection attempt /// are displayed with this Form as their Owner. If no Owner has been set, will return Program.MainWindow. /// - /// - private Form getOwnerForm() + public Form GetOwnerForm() { - return ownerForm != null && !ownerForm.IsDisposed && - !ownerForm.Disposing && !Program.Exiting ? ownerForm : Program.MainWindow; + return ownerForm != null && !ownerForm.IsDisposed && !ownerForm.Disposing && !Program.Exiting + ? ownerForm + : Program.MainWindow; } /// @@ -122,19 +92,19 @@ namespace XenAdmin.Dialogs /// May be null, in which case Program.MainWindow is used. /// If true, if connection to the master fails we will start trying to connect to /// each remembered slave in turn. - protected internal void BeginConnect(Form owner, bool initiateMasterSearch) + internal void BeginConnect(Form owner, bool initiateMasterSearch) { - if (_connection != null && _connection is XenConnection) + if (connection is XenConnection conn) { ownerForm = owner; RegisterEventHandlers(); - ((XenConnection) _connection).BeginConnect(initiateMasterSearch, HideAndPromptForNewPassword); + conn.BeginConnect(initiateMasterSearch, HideAndPromptForNewPassword); - if (_connection.InProgress) + if (conn.InProgress && !IsDisposed && !Disposing && !Program.Exiting) //CA-328267 { if (!Visible) - Show(getOwnerForm()); + Show(GetOwnerForm()); Focus(); } @@ -143,98 +113,72 @@ namespace XenAdmin.Dialogs private void RegisterEventHandlers() { - // unregister default ConnectionResult event handler - _connection.ConnectionResult -= XenConnectionUI.Connection_ConnectionResult; - - _connection.ConnectionResult += Connection_ConnectionResult; - _connection.ConnectionClosed += Connection_ConnectionClosed; - _connection.BeforeConnectionEnd += Connection_BeforeConnectionEnd; - _connection.ConnectionMessageChanged += Connection_ConnectionMessageChanged; + connection.ConnectionClosed += Connection_ConnectionClosed; + connection.BeforeConnectionEnd += Connection_BeforeConnectionEnd; + connection.ConnectionMessageChanged += Connection_ConnectionMessageChanged; } private void UnregisterEventHandlers() { - // re-register default ConnectionResult event handler (delete and add, just to make sure it is only registered once) - _connection.ConnectionResult -= XenConnectionUI.Connection_ConnectionResult; - _connection.ConnectionResult += XenConnectionUI.Connection_ConnectionResult; - - _connection.ConnectionResult -= Connection_ConnectionResult; - _connection.ConnectionClosed -= Connection_ConnectionClosed; - _connection.BeforeConnectionEnd -= Connection_BeforeConnectionEnd; - _connection.ConnectionMessageChanged -= Connection_ConnectionMessageChanged; + connection.ConnectionClosed -= Connection_ConnectionClosed; + connection.BeforeConnectionEnd -= Connection_BeforeConnectionEnd; + connection.ConnectionMessageChanged -= Connection_ConnectionMessageChanged; } - private void Connection_ConnectionResult(object sender, ConnectionResultEventArgs e) - { - CloseConnectingDialog(); - - // show connection error - if (e.Connected || e.Error == null) - return; - - IXenConnection connection = (IXenConnection)sender; - - Program.Invoke(Program.MainWindow, - delegate() - { - XenConnectionUI.ShowConnectingDialogError_(getOwnerForm(), connection, e.Error); - }); - } - - private void Connection_ConnectionClosed(object sender, EventArgs e) + private void Connection_ConnectionClosed(IXenConnection conn) { CloseConnectingDialog(); } - private void Connection_BeforeConnectionEnd(object sender, EventArgs e) + private void Connection_BeforeConnectionEnd(IXenConnection conn) { CloseConnectingDialog(); } - private void Connection_ConnectionMessageChanged(object sender, ConnectionMessageChangedEventArgs e) + private void Connection_ConnectionMessageChanged(IXenConnection conn, string message) { - if (Visible) + Program.Invoke(Program.MainWindow, () => { - SetText(e.Message); - } + if (Visible) + lblStatus.Text = message; + }); } - private void CloseConnectingDialog() + public void CloseConnectingDialog() { - // de-register event handlers UnregisterEventHandlers(); Program.Invoke(Program.MainWindow, () => - { - if (Visible) - { - OwnerActivatedOnClosed = false; - } - Close(); - }); + { + if (Visible) + OwnerActivatedOnClosed = false; + + Close(); + }); } private bool HideAndPromptForNewPassword(IXenConnection xenConnection, string oldPassword) { bool result = false; - Program.Invoke(Program.MainWindow, delegate() - { - bool wasVisible = Visible; - if (wasVisible) - { - Hide(); - } + Program.Invoke(Program.MainWindow, () => + { + bool wasVisible = Visible; + if (wasVisible) + Hide(); - // show an altered version of the add server dialog with the hostname greyed out - AddServerDialog dialog = new AddServerDialog(xenConnection, true); - result = dialog.ShowDialog(getOwnerForm()) == DialogResult.OK; + // show an altered version of the add server dialog with the hostname greyed out + using (var dialog = new AddServerDialog(xenConnection, true)) + result = dialog.ShowDialog(GetOwnerForm()) == DialogResult.OK; - if (result && wasVisible) - { - Show(getOwnerForm()); - } - }); + if (result && wasVisible) + Show(GetOwnerForm()); + }); return result; } + + private void btnCancel_Click(object sender, EventArgs e) + { + Close(); + } } } diff --git a/XenAdmin/Dialogs/ConnectingToServerDialog.designer.cs b/XenAdmin/Dialogs/ConnectingToServerDialog.designer.cs index 37d0f65e3..ab0870259 100644 --- a/XenAdmin/Dialogs/ConnectingToServerDialog.designer.cs +++ b/XenAdmin/Dialogs/ConnectingToServerDialog.designer.cs @@ -78,7 +78,6 @@ namespace XenAdmin.Dialogs this.Controls.Add(this.tableLayoutPanel1); this.MinimizeBox = true; this.Name = "ConnectingToServerDialog"; - this.Load += new System.EventHandler(this.ConnectingToServer_Load); this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); this.ResumeLayout(false); diff --git a/XenAdmin/Dialogs/ConversionDialog.Designer.cs b/XenAdmin/Dialogs/ConversionDialog.Designer.cs new file mode 100644 index 000000000..417def812 --- /dev/null +++ b/XenAdmin/Dialogs/ConversionDialog.Designer.cs @@ -0,0 +1,522 @@ +namespace XenAdmin.Dialogs +{ + partial class ConversionDialog + { + /// + /// 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() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConversionDialog)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + this.tableLayoutMain = new System.Windows.Forms.TableLayoutPanel(); + this.dataGridViewConversions = new XenAdmin.Controls.DataGridViewEx.DataGridViewEx(); + this.ColumnVm = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.ColumnSourceServer = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.ColumnStartTime = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.ColumnFinishTime = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.ColumnStatus = new System.Windows.Forms.DataGridViewImageColumn(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + this.dataGridViewDetails = new System.Windows.Forms.DataGridView(); + this.columnKey = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.columnValue = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.labelDetails = new System.Windows.Forms.Label(); + this.buttonClose = new System.Windows.Forms.Button(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.contextItemRefresh = new System.Windows.Forms.ToolStripMenuItem(); + this.contextItemFetchLogs = new System.Windows.Forms.ToolStripMenuItem(); + this.contextItemRetry = new System.Windows.Forms.ToolStripMenuItem(); + this.contextItemCancel = new System.Windows.Forms.ToolStripMenuItem(); + this.tableLayoutPanelTop = new System.Windows.Forms.TableLayoutPanel(); + this.toolStripTop = new XenAdmin.Controls.ToolStripEx(); + this.toolStripButtonNew = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButtonCancel = new System.Windows.Forms.ToolStripButton(); + this.toolStripButtonRetry = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripDdbFilterStatus = new XenAdmin.Controls.FilterStatusToolStripDropDownButton(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripSplitButtonRefresh = new System.Windows.Forms.ToolStripSplitButton(); + this.toolStripMenuItemRefreshSelected = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItemRefreshAll = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripButtonClear = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripSplitButtonLogs = new System.Windows.Forms.ToolStripSplitButton(); + this.menuItemFetchSelectedLog = new System.Windows.Forms.ToolStripMenuItem(); + this.menuItemFetchAllLogs = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripButtonExport = new System.Windows.Forms.ToolStripButton(); + this.toolStripLabelFiltersOnOff = new System.Windows.Forms.ToolStripLabel(); + this.timerVpx = new System.Windows.Forms.Timer(this.components); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.statusLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.statusLinkLabel = new XenAdmin.Dialogs.ConversionDialog.ActionableLinkLabel(); + this.tableLayoutMain.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewConversions)).BeginInit(); + this.tableLayoutPanel3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewDetails)).BeginInit(); + this.contextMenuStrip1.SuspendLayout(); + this.tableLayoutPanelTop.SuspendLayout(); + this.toolStripTop.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutMain + // + resources.ApplyResources(this.tableLayoutMain, "tableLayoutMain"); + this.tableLayoutMain.Controls.Add(this.dataGridViewConversions, 0, 0); + this.tableLayoutMain.Controls.Add(this.tableLayoutPanel3, 1, 0); + this.tableLayoutMain.Controls.Add(this.buttonClose, 1, 1); + this.tableLayoutMain.Name = "tableLayoutMain"; + // + // dataGridViewConversions + // + this.dataGridViewConversions.BackgroundColor = System.Drawing.SystemColors.Window; + this.dataGridViewConversions.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; + this.dataGridViewConversions.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dataGridViewConversions.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.ColumnVm, + this.ColumnSourceServer, + this.ColumnStartTime, + this.ColumnFinishTime, + this.ColumnStatus}); + resources.ApplyResources(this.dataGridViewConversions, "dataGridViewConversions"); + this.dataGridViewConversions.Name = "dataGridViewConversions"; + this.dataGridViewConversions.ReadOnly = true; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle2.Font = new System.Drawing.Font("Segoe UI", 9F); + dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dataGridViewConversions.RowHeadersDefaultCellStyle = dataGridViewCellStyle2; + this.dataGridViewConversions.SelectionChanged += new System.EventHandler(this.dataGridViewConversions_SelectionChanged); + this.dataGridViewConversions.SortCompare += new System.Windows.Forms.DataGridViewSortCompareEventHandler(this.dataGridViewConversions_SortCompare); + this.dataGridViewConversions.KeyUp += new System.Windows.Forms.KeyEventHandler(this.dataGridViewConversions_KeyUp); + this.dataGridViewConversions.MouseUp += new System.Windows.Forms.MouseEventHandler(this.dataGridViewConversions_MouseUp); + // + // ColumnVm + // + resources.ApplyResources(this.ColumnVm, "ColumnVm"); + this.ColumnVm.Name = "ColumnVm"; + this.ColumnVm.ReadOnly = true; + // + // ColumnSourceServer + // + resources.ApplyResources(this.ColumnSourceServer, "ColumnSourceServer"); + this.ColumnSourceServer.Name = "ColumnSourceServer"; + this.ColumnSourceServer.ReadOnly = true; + // + // ColumnStartTime + // + resources.ApplyResources(this.ColumnStartTime, "ColumnStartTime"); + this.ColumnStartTime.Name = "ColumnStartTime"; + this.ColumnStartTime.ReadOnly = true; + // + // ColumnFinishTime + // + resources.ApplyResources(this.ColumnFinishTime, "ColumnFinishTime"); + this.ColumnFinishTime.Name = "ColumnFinishTime"; + this.ColumnFinishTime.ReadOnly = true; + // + // ColumnStatus + // + this.ColumnStatus.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle1.NullValue = "System.Drawing.Bitmap"; + this.ColumnStatus.DefaultCellStyle = dataGridViewCellStyle1; + resources.ApplyResources(this.ColumnStatus, "ColumnStatus"); + this.ColumnStatus.Name = "ColumnStatus"; + this.ColumnStatus.ReadOnly = true; + this.ColumnStatus.Resizable = System.Windows.Forms.DataGridViewTriState.False; + this.ColumnStatus.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + // + // tableLayoutPanel3 + // + this.tableLayoutPanel3.BackColor = System.Drawing.SystemColors.Control; + resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3"); + this.tableLayoutPanel3.Controls.Add(this.dataGridViewDetails, 0, 1); + this.tableLayoutPanel3.Controls.Add(this.labelDetails, 0, 0); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + // + // dataGridViewDetails + // + this.dataGridViewDetails.AllowUserToAddRows = false; + this.dataGridViewDetails.AllowUserToDeleteRows = false; + this.dataGridViewDetails.AllowUserToResizeColumns = false; + this.dataGridViewDetails.AllowUserToResizeRows = false; + this.dataGridViewDetails.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader; + this.dataGridViewDetails.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells; + this.dataGridViewDetails.BackgroundColor = System.Drawing.SystemColors.Control; + this.dataGridViewDetails.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.dataGridViewDetails.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; + this.dataGridViewDetails.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dataGridViewDetails.ColumnHeadersVisible = false; + this.dataGridViewDetails.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.columnKey, + this.columnValue}); + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle4.Font = new System.Drawing.Font("Segoe UI", 9F); + dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle4.Padding = new System.Windows.Forms.Padding(3); + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridViewDetails.DefaultCellStyle = dataGridViewCellStyle4; + resources.ApplyResources(this.dataGridViewDetails, "dataGridViewDetails"); + this.dataGridViewDetails.MultiSelect = false; + this.dataGridViewDetails.Name = "dataGridViewDetails"; + this.dataGridViewDetails.ReadOnly = true; + dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle5.Font = new System.Drawing.Font("Segoe UI", 9F); + dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dataGridViewDetails.RowHeadersDefaultCellStyle = dataGridViewCellStyle5; + this.dataGridViewDetails.RowHeadersVisible = false; + dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.TopLeft; + dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.WindowText; + this.dataGridViewDetails.RowsDefaultCellStyle = dataGridViewCellStyle6; + this.dataGridViewDetails.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + // + // columnKey + // + resources.ApplyResources(this.columnKey, "columnKey"); + this.columnKey.Name = "columnKey"; + this.columnKey.ReadOnly = true; + // + // columnValue + // + this.columnValue.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.columnValue.DefaultCellStyle = dataGridViewCellStyle3; + resources.ApplyResources(this.columnValue, "columnValue"); + this.columnValue.Name = "columnValue"; + this.columnValue.ReadOnly = true; + // + // labelDetails + // + resources.ApplyResources(this.labelDetails, "labelDetails"); + this.labelDetails.Name = "labelDetails"; + // + // buttonClose + // + resources.ApplyResources(this.buttonClose, "buttonClose"); + this.buttonClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.buttonClose.Name = "buttonClose"; + this.buttonClose.UseVisualStyleBackColor = true; + this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click); + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.contextItemRefresh, + this.contextItemFetchLogs, + this.contextItemRetry, + this.contextItemCancel}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + resources.ApplyResources(this.contextMenuStrip1, "contextMenuStrip1"); + // + // contextItemRefresh + // + this.contextItemRefresh.Name = "contextItemRefresh"; + resources.ApplyResources(this.contextItemRefresh, "contextItemRefresh"); + this.contextItemRefresh.Click += new System.EventHandler(this.toolStripMenuItemRefreshSelected_Click); + // + // contextItemFetchLogs + // + this.contextItemFetchLogs.Name = "contextItemFetchLogs"; + resources.ApplyResources(this.contextItemFetchLogs, "contextItemFetchLogs"); + this.contextItemFetchLogs.Click += new System.EventHandler(this.menuItemFetchSelectedLog_Click); + // + // contextItemRetry + // + this.contextItemRetry.Name = "contextItemRetry"; + resources.ApplyResources(this.contextItemRetry, "contextItemRetry"); + this.contextItemRetry.Click += new System.EventHandler(this.toolStripButtonRetry_Click); + // + // contextItemCancel + // + this.contextItemCancel.Name = "contextItemCancel"; + resources.ApplyResources(this.contextItemCancel, "contextItemCancel"); + this.contextItemCancel.Click += new System.EventHandler(this.toolStripButtonCancel_Click); + // + // tableLayoutPanelTop + // + resources.ApplyResources(this.tableLayoutPanelTop, "tableLayoutPanelTop"); + this.tableLayoutPanelTop.BackColor = System.Drawing.Color.Gainsboro; + this.tableLayoutPanelTop.Controls.Add(this.toolStripTop, 0, 0); + this.tableLayoutPanelTop.Name = "tableLayoutPanelTop"; + // + // toolStripTop + // + resources.ApplyResources(this.toolStripTop, "toolStripTop"); + this.toolStripTop.BackColor = System.Drawing.SystemColors.InactiveBorder; + this.toolStripTop.ClickThrough = true; + this.toolStripTop.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStripTop.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripButtonNew, + this.toolStripSeparator1, + this.toolStripButtonCancel, + this.toolStripButtonRetry, + this.toolStripSeparator2, + this.toolStripDdbFilterStatus, + this.toolStripSeparator3, + this.toolStripSplitButtonRefresh, + this.toolStripButtonClear, + this.toolStripSeparator4, + this.toolStripSplitButtonLogs, + this.toolStripButtonExport, + this.toolStripLabelFiltersOnOff}); + this.toolStripTop.Name = "toolStripTop"; + // + // toolStripButtonNew + // + this.toolStripButtonNew.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + resources.ApplyResources(this.toolStripButtonNew, "toolStripButtonNew"); + this.toolStripButtonNew.Name = "toolStripButtonNew"; + this.toolStripButtonNew.Click += new System.EventHandler(this.toolStripButtonNew_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1"); + // + // toolStripButtonCancel + // + this.toolStripButtonCancel.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + resources.ApplyResources(this.toolStripButtonCancel, "toolStripButtonCancel"); + this.toolStripButtonCancel.Name = "toolStripButtonCancel"; + this.toolStripButtonCancel.Click += new System.EventHandler(this.toolStripButtonCancel_Click); + // + // toolStripButtonRetry + // + this.toolStripButtonRetry.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + resources.ApplyResources(this.toolStripButtonRetry, "toolStripButtonRetry"); + this.toolStripButtonRetry.Name = "toolStripButtonRetry"; + this.toolStripButtonRetry.Click += new System.EventHandler(this.toolStripButtonRetry_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2"); + // + // toolStripDdbFilterStatus + // + this.toolStripDdbFilterStatus.AutoToolTip = false; + this.toolStripDdbFilterStatus.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + resources.ApplyResources(this.toolStripDdbFilterStatus, "toolStripDdbFilterStatus"); + this.toolStripDdbFilterStatus.Name = "toolStripDdbFilterStatus"; + this.toolStripDdbFilterStatus.FilterChanged += new System.Action(this.toolStripDdbFilterStatus_FilterChanged); + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3"); + // + // toolStripSplitButtonRefresh + // + this.toolStripSplitButtonRefresh.AutoToolTip = false; + this.toolStripSplitButtonRefresh.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.toolStripSplitButtonRefresh.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItemRefreshSelected, + this.toolStripMenuItemRefreshAll}); + resources.ApplyResources(this.toolStripSplitButtonRefresh, "toolStripSplitButtonRefresh"); + this.toolStripSplitButtonRefresh.Name = "toolStripSplitButtonRefresh"; + this.toolStripSplitButtonRefresh.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripSplitButtonRefresh_DropDownItemClicked); + // + // toolStripMenuItemRefreshSelected + // + this.toolStripMenuItemRefreshSelected.Name = "toolStripMenuItemRefreshSelected"; + resources.ApplyResources(this.toolStripMenuItemRefreshSelected, "toolStripMenuItemRefreshSelected"); + this.toolStripMenuItemRefreshSelected.Click += new System.EventHandler(this.toolStripMenuItemRefreshSelected_Click); + // + // toolStripMenuItemRefreshAll + // + this.toolStripMenuItemRefreshAll.Name = "toolStripMenuItemRefreshAll"; + resources.ApplyResources(this.toolStripMenuItemRefreshAll, "toolStripMenuItemRefreshAll"); + this.toolStripMenuItemRefreshAll.Click += new System.EventHandler(this.toolStripMenuItemRefreshAll_Click); + // + // toolStripButtonClear + // + this.toolStripButtonClear.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + resources.ApplyResources(this.toolStripButtonClear, "toolStripButtonClear"); + this.toolStripButtonClear.Name = "toolStripButtonClear"; + this.toolStripButtonClear.Click += new System.EventHandler(this.toolStripButtonClear_Click); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4"); + // + // toolStripSplitButtonLogs + // + this.toolStripSplitButtonLogs.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.toolStripSplitButtonLogs.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuItemFetchSelectedLog, + this.menuItemFetchAllLogs}); + resources.ApplyResources(this.toolStripSplitButtonLogs, "toolStripSplitButtonLogs"); + this.toolStripSplitButtonLogs.Name = "toolStripSplitButtonLogs"; + this.toolStripSplitButtonLogs.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripSplitButtonLogs_DropDownItemClicked); + // + // menuItemFetchSelectedLog + // + this.menuItemFetchSelectedLog.Name = "menuItemFetchSelectedLog"; + resources.ApplyResources(this.menuItemFetchSelectedLog, "menuItemFetchSelectedLog"); + this.menuItemFetchSelectedLog.Click += new System.EventHandler(this.menuItemFetchSelectedLog_Click); + // + // menuItemFetchAllLogs + // + this.menuItemFetchAllLogs.Name = "menuItemFetchAllLogs"; + resources.ApplyResources(this.menuItemFetchAllLogs, "menuItemFetchAllLogs"); + this.menuItemFetchAllLogs.Click += new System.EventHandler(this.menuItemFetchAllLogs_Click); + // + // toolStripButtonExport + // + this.toolStripButtonExport.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + resources.ApplyResources(this.toolStripButtonExport, "toolStripButtonExport"); + this.toolStripButtonExport.Name = "toolStripButtonExport"; + this.toolStripButtonExport.Click += new System.EventHandler(this.toolStripButtonExport_Click); + // + // toolStripLabelFiltersOnOff + // + this.toolStripLabelFiltersOnOff.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + resources.ApplyResources(this.toolStripLabelFiltersOnOff, "toolStripLabelFiltersOnOff"); + this.toolStripLabelFiltersOnOff.Name = "toolStripLabelFiltersOnOff"; + // + // timerVpx + // + this.timerVpx.Interval = 1000; + this.timerVpx.Tick += new System.EventHandler(this.timerVpx_Tick); + // + // statusStrip1 + // + resources.ApplyResources(this.statusStrip1, "statusStrip1"); + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.statusLabel, + this.statusLinkLabel}); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.ShowItemToolTips = true; + this.statusStrip1.TabStop = true; + // + // statusLabel + // + resources.ApplyResources(this.statusLabel, "statusLabel"); + this.statusLabel.Name = "statusLabel"; + this.statusLabel.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + // + // statusLinkLabel + // + this.statusLinkLabel.ActiveLinkColor = System.Drawing.Color.Blue; + resources.ApplyResources(this.statusLinkLabel, "statusLinkLabel"); + this.statusLinkLabel.IsLink = true; + this.statusLinkLabel.LinkColor = System.Drawing.Color.Blue; + this.statusLinkLabel.Name = "statusLinkLabel"; + this.statusLinkLabel.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; + this.statusLinkLabel.VisitedLinkColor = System.Drawing.Color.Blue; + // + // ConversionDialog + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.CancelButton = this.buttonClose; + this.Controls.Add(this.tableLayoutMain); + this.Controls.Add(this.tableLayoutPanelTop); + this.Controls.Add(this.statusStrip1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; + this.Name = "ConversionDialog"; + this.tableLayoutMain.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewConversions)).EndInit(); + this.tableLayoutPanel3.ResumeLayout(false); + this.tableLayoutPanel3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewDetails)).EndInit(); + this.contextMenuStrip1.ResumeLayout(false); + this.tableLayoutPanelTop.ResumeLayout(false); + this.toolStripTop.ResumeLayout(false); + this.toolStripTop.PerformLayout(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutMain; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanelTop; + private Controls.ToolStripEx toolStripTop; + private System.Windows.Forms.ToolStripButton toolStripButtonNew; + private System.Windows.Forms.ToolStripButton toolStripButtonRetry; + private System.Windows.Forms.ToolStripButton toolStripButtonCancel; + private System.Windows.Forms.ToolStripButton toolStripButtonExport; + private System.Windows.Forms.ToolStripButton toolStripButtonClear; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private Controls.FilterStatusToolStripDropDownButton toolStripDdbFilterStatus; + private System.Windows.Forms.ToolStripLabel toolStripLabelFiltersOnOff; + private System.Windows.Forms.DataGridView dataGridViewDetails; + private System.Windows.Forms.Label labelDetails; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; + private Controls.DataGridViewEx.DataGridViewEx dataGridViewConversions; + private System.Windows.Forms.Timer timerVpx; + private System.Windows.Forms.Button buttonClose; + private System.Windows.Forms.ToolStripSplitButton toolStripSplitButtonRefresh; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemRefreshAll; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemRefreshSelected; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel statusLabel; + private ActionableLinkLabel statusLinkLabel; + private System.Windows.Forms.DataGridViewTextBoxColumn columnKey; + private System.Windows.Forms.DataGridViewTextBoxColumn columnValue; + private System.Windows.Forms.ToolStripSplitButton toolStripSplitButtonLogs; + private System.Windows.Forms.ToolStripMenuItem menuItemFetchSelectedLog; + private System.Windows.Forms.ToolStripMenuItem menuItemFetchAllLogs; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.DataGridViewTextBoxColumn ColumnVm; + private System.Windows.Forms.DataGridViewTextBoxColumn ColumnSourceServer; + private System.Windows.Forms.DataGridViewTextBoxColumn ColumnStartTime; + private System.Windows.Forms.DataGridViewTextBoxColumn ColumnFinishTime; + private System.Windows.Forms.DataGridViewImageColumn ColumnStatus; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem contextItemRefresh; + private System.Windows.Forms.ToolStripMenuItem contextItemFetchLogs; + private System.Windows.Forms.ToolStripMenuItem contextItemRetry; + private System.Windows.Forms.ToolStripMenuItem contextItemCancel; + } +} + diff --git a/XenAdmin/Dialogs/ConversionDialog.cs b/XenAdmin/Dialogs/ConversionDialog.cs new file mode 100644 index 000000000..ff9fe6b47 --- /dev/null +++ b/XenAdmin/Dialogs/ConversionDialog.cs @@ -0,0 +1,1037 @@ +/* Copyright (c) Citrix Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, + * with or without modification, are permitted provided + * that the following conditions are met: + * + * * Redistributions of source code must retain the above + * copyright notice, this list of conditions and the + * following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the + * following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using XenAdmin.Actions; +using XenAdmin.Actions.Xcm; +using XenAdmin.XCM; +using XenAdmin.Core; +using XenAdmin.Network; +using XenAdmin.Wizards.ConversionWizard; +using XenAPI; + + +namespace XenAdmin.Dialogs +{ + public partial class ConversionDialog : XenDialogBase + { + #region Private fields + + private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + + private const int HEARTBEAT = 10; //seconds + private ConversionClient _conversionClient; + private Conversion[] _currentConversionList = { }; + private readonly object _conversionLock = new object(); + private volatile bool _updating; + private volatile bool _updateRequired; + private VM _conversionVm; + private VM[] _conversionVms; + private ActivateConversionVpxAction _activateAction; + + private static readonly string[] DetailHeaders = + { + Messages.CONVERSION_DETAIL_CONVERSION_ID, + Messages.CONVERSION_DETAIL_TARGET_SR, + Messages.CONVERSION_DETAIL_NETWORK_READ, + Messages.CONVERSION_DETAIL_DISK_WRITE, + Messages.CONVERSION_DETAIL_START_TIME, + Messages.CONVERSION_DETAIL_FINISH_TIME, + Messages.CONVERSION_DETAIL_DURATION, + Messages.CONVERSION_DETAIL_STATUS, + Messages.CONVERSION_DETAIL_DESCRIPTION + }; + + #endregion + + public ConversionDialog(IXenConnection conn, params VM[] conversionVms) + : base(conn) + { + InitializeComponent(); + _conversionVms = conversionVms; + + toolStripDdbFilterStatus.ImplementsIncomplete = true; + toolStripDdbFilterStatus.ImplementsQueued = true; + + toolStripSplitButtonRefresh.DefaultItem = toolStripMenuItemRefreshAll; + toolStripSplitButtonRefresh.Text = toolStripMenuItemRefreshAll.Text; + toolStripSplitButtonLogs.DefaultItem = menuItemFetchAllLogs; + toolStripSplitButtonLogs.Text = menuItemFetchAllLogs.Text; + + statusLabel.Image = null; + statusLabel.Text = string.Empty; + statusLinkLabel.Reset(); + SetFilterLabel(); + UpdateButtons(); + } + + private Conversion[] CurrentConversionList + { + get + { + lock (_conversionLock) + return _currentConversionList; + } + set + { + lock (_conversionLock) + _currentConversionList = value ?? new Conversion[] { }; + } + } + + private bool FilterIsOn => toolStripDdbFilterStatus.FilterIsOn; + + protected override void OnShown(EventArgs e) + { + base.OnShown(e); + Text = string.Format(Messages.CONVERSION_MANAGER_TITLE, Helpers.GetName(Helpers.GetPoolOfOne(connection)).Ellipsise(80)); + + if (_conversionVms.Length == 0) //shouldn't happen, but just in case + { + statusLabel.Image = Images.StaticImages._000_error_h32bit_16; + statusLabel.Text = Messages.CONVERSION_CANNOT_FIND_VPX; + statusLinkLabel.Reset(); + return; + } + + if (_conversionVms.Length == 1) + { + _conversionVm = _conversionVms[0]; + ConnectToVpx(); + return; + } + + using (var dlg = new ConversionVmSelectionDialog(connection, _conversionVms)) + { + if (dlg.ShowDialog(this) == DialogResult.OK) + { + _conversionVm = dlg.ConversionVm; + ConnectToVpx(); + } + else + { + Close(); + } + } + } + + protected override void OnFormClosing(FormClosingEventArgs e) + { + timerVpx.Stop(); + + if (_conversionVm != null) + _conversionVm.PropertyChanged -= _conversionVm_PropertyChanged; + + if (_activateAction != null) + { + _activateAction.Completed -= ActivateConversionVpxAction_Completed; + _activateAction.Changed -= ActivateConversionVpxAction_Changed; + + if (!_activateAction.IsCompleted) + _activateAction.Cancel(); + } + + base.OnFormClosing(e); + } + + internal override string HelpName => "ConversionManager"; + + + private void ConnectToVpx() + { + statusLabel.Image = Images.StaticImages.ajax_loader; + statusLabel.Text = Messages.CONVERSION_INITIALIZING_VPX; + statusLinkLabel.Reset(); + + _activateAction = new ActivateConversionVpxAction(_conversionVm); + _activateAction.Completed += ActivateConversionVpxAction_Completed; + _activateAction.Changed += ActivateConversionVpxAction_Changed; + _activateAction.RunAsync(); + } + + private void ActivateConversionVpxAction_Completed(ActionBase obj) + { + if (!(obj is ActivateConversionVpxAction action)) + return; + + action.Completed -= ActivateConversionVpxAction_Completed; + action.Changed -= ActivateConversionVpxAction_Changed; + + Program.Invoke(this, () => + { + if (!action.Succeeded) + { + statusLabel.Image = Images.StaticImages._000_error_h32bit_16; + statusLabel.Text = action.Exception.Message; + statusLinkLabel.Reset(Messages.CONVERSION_TRY_AGAIN, ConnectToVpx); + return; + } + + var useSsl = Properties.Settings.Default.ConversionClientUseSsl; + _conversionClient = new ConversionClient(connection, action.ServiceIp, useSsl); + + // if we're reconnecting the conversion VM, we need to clear the old one + if (_conversionVm != null) + _conversionVm.PropertyChanged -= _conversionVm_PropertyChanged; + _conversionVm = action.ConversionVm; + _conversionVm.PropertyChanged += _conversionVm_PropertyChanged; + + CheckVersionCompatibility(); + }); + } + + private void ActivateConversionVpxAction_Changed(ActionBase obj) + { + if (!(obj is ActivateConversionVpxAction action)) + return; + + Program.Invoke(this, () => { statusLabel.Text = action.Description; }); + } + + private void _conversionVm_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName != "power_state" || _conversionVm == null) + return; + + if (_conversionVm.power_state != vm_power_state.Running) + { + timerVpx.Stop(); + CurrentConversionList = null; + Program.Invoke(this, BuildConversionList); + ConnectToVpx(); + } + } + + private void CheckVersionCompatibility() + { + statusLabel.Text = Messages.CONVERSION_VERSION_CHECK; + + ThreadPool.QueueUserWorkItem(obj => + { + const int sleep = 3000, timeout = 120000; + var tries = timeout / sleep; + + Exception ex = null; + string version = null; + + while (tries > 0) + { + try + { + version = _conversionClient.GetVpxVersion(); + + if (!string.IsNullOrEmpty(version)) + break; + } + catch (Exception e) + { + ex = e; + } + + Thread.Sleep(sleep); + tries--; + } + + if (string.IsNullOrEmpty(version)) + { + log.Error("Cannot retrieve XCM VPX version.", ex); + + Program.Invoke(this, () => + { + statusLabel.Image = Images.StaticImages._000_error_h32bit_16; + statusLabel.Text = Messages.CONVERSION_VERSION_CHECK_FAILURE; + statusLinkLabel.Reset(); + }); + + return; + } + + Program.Invoke(this, () => + { + if (!Version.TryParse(version, out Version result) || + result.CompareTo(new Version(Branding.ConversionVpxMinimumSupportedVersion)) < 0) + { + statusLabel.Image = Images.StaticImages._000_error_h32bit_16; + statusLabel.Text = Messages.CONVERSION_VERSION_INCOMPATIBILITY; + statusLinkLabel.Reset(Messages.MORE_INFO, () => + { + using (var dlog = new ThreeButtonDialog( + new ThreeButtonDialog.Details(null, Messages.CONVERSION_VERSION_INCOMPATIBILITY_INFO))) + { + dlog.ShowDialog(this); + } + }); + return; + } + + statusLabel.Image = Images.StaticImages.ConversionManager; + statusLabel.Text = Messages.CONVERSION_CONNECTING_VPX_SUCCESS; + statusLinkLabel.Reset(); + + timerVpx.Start(); + FetchConversionHistory(); + }); + }); + } + + private void FetchConversionHistory() + { + ThreadPool.QueueUserWorkItem(obj => + { + try + { + CurrentConversionList = _conversionClient.GetConversionHistory(); + } + catch (Exception e) + { + log.Error("Cannot fetch conversion history.", e); + CurrentConversionList = null; + + Program.Invoke(this, () => + { + statusLabel.Image = Images.StaticImages._000_error_h32bit_16; + statusLabel.Text = string.Format(Messages.CONVERSION_CONNECTING_VPX_INTERRUPTION, HEARTBEAT); + statusLinkLabel.Reset(); + }); + } + + if (_updating) + { + _updateRequired = true; + return; + } + + Program.Invoke(this, BuildConversionList); + }); + } + + private void FetchConversionDetails(Conversion conversion) + { + ThreadPool.QueueUserWorkItem(obj => + { + Conversion refreshedConversion; + try + { + refreshedConversion = _conversionClient.GetConversionDetails(conversion); + } + catch (Exception e) + { + log.Error($"Cannot fetch details for conversion {conversion.Id}", e); + + Program.Invoke(this, () => + { + statusLabel.Image = Images.StaticImages._000_error_h32bit_16; + statusLabel.Text = Messages.CONVERSION_DETAIL_GET_FAILURE; + statusLinkLabel.Reset(); + }); + return; + } + + if (_updating) + { + _updateRequired = true; + return; + } + + Program.Invoke(this, () => + { + UpdateConversionRow(refreshedConversion); + UpdateButtons(); + }); + }); + } + + private void CreateConversion(ConversionConfig config) + { + ThreadPool.QueueUserWorkItem(obj => + { + Conversion conv; + try + { + conv = _conversionClient.CreateConversion(config); + } + catch (Exception e) + { + log.Error("Failed to create new conversion", e); + + Program.Invoke(this, () => + { + statusLabel.Image = Images.StaticImages._000_error_h32bit_16; + statusLabel.Text = Messages.CONVERSION_CREATE_FAILURE; + statusLinkLabel.Reset(); + }); + return; + } + + FetchConversionDetails(conv); + }); + } + + + private void BuildConversionList() + { + try + { + _updating = true; + dataGridViewConversions.SuspendLayout(); + + var selectedConversionId = dataGridViewConversions.SelectedRows.Count == 1 && dataGridViewConversions.SelectedRows[0] is ConversionRow r + ? r.Conversion.Id + : null; + + dataGridViewConversions.Rows.Clear(); + var rows = CurrentConversionList.Where(c => !toolStripDdbFilterStatus.HideByStatus(c)).Select(c => new ConversionRow(c)).ToList(); + + if (dataGridViewConversions.SortedColumn == null) + { + rows.Sort((r1, r2) => CompareConversionRows(ColumnStartTime.Index, r1, r2)); + rows.Reverse(); + dataGridViewConversions.Sort(ColumnStartTime, ListSortDirection.Descending); + } + else + { + rows.Sort((r1, r2) => CompareConversionRows(dataGridViewConversions.SortedColumn.Index, r1, r2)); + + if (dataGridViewConversions.SortOrder == SortOrder.Descending) + rows.Reverse(); + } + + dataGridViewConversions.Rows.AddRange(rows.Cast().ToArray()); + + foreach (ConversionRow row in dataGridViewConversions.Rows) + { + if (row.Conversion.Id == selectedConversionId) + { + row.Selected = true; + break; + } + } + + if (dataGridViewConversions.SelectedRows.Count == 0 && dataGridViewConversions.Rows.Count > 0) + dataGridViewConversions.Rows[0].Selected = true; + } + finally + { + dataGridViewConversions.ResumeLayout(); + _updating = false; + + if (_updateRequired) + { + _updateRequired = false; + BuildConversionList(); + } + + UpdateButtons(); + } + } + + private void UpdateConversionRow(Conversion conversion) + { + foreach (ConversionRow row in dataGridViewConversions.Rows) + { + if (row.Conversion.Id == conversion.Id) + { + if (toolStripDdbFilterStatus.HideByStatus(conversion)) + { + dataGridViewConversions.Rows.Remove(row); + return; + } + + row.RefreshRow(conversion); + if (row.Selected) + BuildDetailsView(row.Conversion); + } + } + } + + private void BuildDetailsView(Conversion conversion) + { + try + { + dataGridViewDetails.SuspendLayout(); + + var details = GetDetailValues(conversion); + + for (int i = 0; i < DetailHeaders.Length; i++) + AddOrUpdateDetailRow($"{DetailHeaders[i]}:", details[i]); + } + finally + { + dataGridViewDetails.ResumeLayout(); + } + } + + private void AddOrUpdateDetailRow(string key, string val) + { + foreach (DataGridViewRow row in dataGridViewDetails.Rows) + { + if (row.Cells.Count > 1 && row.Cells[0].Value as string == key) + { + row.Cells[1].Value = val; + return; + } + } + + dataGridViewDetails.Rows.Add(new ConversionDetailRow(key, val)); + } + + private void ClearDetailsView() + { + try + { + dataGridViewDetails.SuspendLayout(); + dataGridViewDetails.Rows.Clear(); + } + finally + { + dataGridViewDetails.ResumeLayout(); + } + } + + private string[] GetDetailValues(Conversion conversion) + { + GetConversionLocalTimes(conversion, out DateTime? startTime, out DateTime? finishTime, out TimeSpan? duration); + + var startTimeString = Messages.HYPHEN; + var finishTimeString = Messages.HYPHEN; + + Program.Invoke(this, () => + { + if (startTime.HasValue) + startTimeString = HelpersGUI.DateTimeToString(startTime.Value, Messages.DATEFORMAT_DMY_HM, true); + + if (finishTime.HasValue) + finishTimeString = HelpersGUI.DateTimeToString(finishTime.Value, Messages.DATEFORMAT_DMY_HM, true); + }); + + var statusDetail = conversion.StatusDetail; + if (!string.IsNullOrWhiteSpace(conversion.Error)) + statusDetail = string.Format("{0}\n{1}", statusDetail, conversion.Error); + + return new[] + { + conversion.Id, + conversion.SRName, + string.Format(Messages.CONVERSION_DETAIL_NETWORK_READ_COMPRESSED, Util.DiskSizeString(conversion.CompressedBytesRead)), + Util.DiskSizeString(conversion.UncompressedBytesWritten), + startTimeString, + finishTimeString, + duration.HasValue ? duration.Value.ToString(@"h\:mm\:ss") : Messages.HYPHEN, + conversion.GetStatusString(), + statusDetail + }; + } + + private static void GetConversionLocalTimes(Conversion conversion, + out DateTime? startTime, out DateTime? finishTime, out TimeSpan? duration) + { + var now = DateTime.Now; + + startTime = conversion.StartTime.ToLocalTime(); + if (now < startTime) + startTime = null; + + finishTime = conversion.CompletedTime.ToLocalTime(); + if (conversion.StartTime > conversion.CompletedTime) + finishTime = null; + + if (startTime.HasValue && finishTime.HasValue) + duration = finishTime - startTime; + else if (startTime.HasValue) + duration = now - startTime; + else + duration = null; + } + + private void FetchLogs(Conversion? conversion = null) + { + string fileName; + using (SaveFileDialog dialog = new SaveFileDialog + { + AddExtension = true, + Filter = string.Format("{0} (*.txt)|*.txt|{1} (*.*)|*.*", Messages.TXT_DESCRIPTION, Messages.ALL_FILES), + FilterIndex = 0, + Title = Messages.CONVERSION_LOG_SAVE_TITLE, + RestoreDirectory = true, + DefaultExt = "txt", + CheckPathExists = false, + OverwritePrompt = true + }) + { + if (dialog.ShowDialog(this) != DialogResult.OK) + return; + fileName = dialog.FileName; + } + + new DelegatedAsyncAction(null, + string.Format(Messages.CONVERSION_LOG_SAVE, fileName), + string.Format(Messages.CONVERSION_LOG_SAVING, fileName), + string.Format(Messages.CONVERSION_LOG_SAVED, fileName), + obj => + { + var logString = conversion.HasValue + ? _conversionClient.GetConversionLog(conversion.Value) + : _conversionClient.GetVpxLogs(); + + using (StreamWriter stream = new StreamWriter(fileName, false, Encoding.UTF8)) + stream.Write(logString); + }).RunAsync(); + } + + private void UpdateButtons() + { + toolStripButtonNew.Enabled = _conversionClient != null; + + ConversionRow oneRow = null; + if (dataGridViewConversions.SelectedRows.Count == 1) + oneRow = dataGridViewConversions.SelectedRows[0] as ConversionRow; + + contextItemCancel.Visible = toolStripButtonCancel.Enabled = oneRow != null && oneRow.Conversion.CanCancel; + contextItemRetry.Visible = toolStripButtonRetry.Enabled = oneRow != null && oneRow.Conversion.CanRetry; + + contextItemRefresh.Visible = toolStripMenuItemRefreshSelected.Enabled = oneRow != null; + toolStripMenuItemRefreshAll.Enabled = dataGridViewConversions.Rows.Count > 0; + toolStripSplitButtonRefresh.Enabled = toolStripMenuItemRefreshAll.Enabled || toolStripMenuItemRefreshSelected.Enabled; + + contextItemFetchLogs.Visible = menuItemFetchSelectedLog.Enabled = oneRow != null; + menuItemFetchAllLogs.Enabled = _conversionClient != null; + toolStripSplitButtonLogs.Enabled = menuItemFetchSelectedLog.Enabled || menuItemFetchAllLogs.Enabled; + + toolStripButtonClear.Enabled = toolStripButtonExport.Enabled = dataGridViewConversions.Rows.Count > 0; + } + + private void SetFilterLabel() + { + toolStripLabelFiltersOnOff.Text = FilterIsOn ? Messages.FILTERS_ON : Messages.FILTERS_OFF; + } + + private int CompareConversionRows(int sortingColumnIndex, ConversionRow row1, ConversionRow row2) + { + var conv1 = row1.Conversion; + var conv2 = row2.Conversion; + + if (sortingColumnIndex == ColumnVm.Index) + return Conversion.CompareOnVm(conv1, conv2); + + if (sortingColumnIndex == ColumnSourceServer.Index) + return Conversion.CompareOnServer(conv1, conv2); + + if (sortingColumnIndex == ColumnStartTime.Index) + return Conversion.CompareOnStartTime(conv1, conv2); + + if (sortingColumnIndex == ColumnFinishTime.Index) + return Conversion.CompareOnCompletedTime(conv1, conv2); + + if (sortingColumnIndex == ColumnStatus.Index) + return Conversion.CompareOnStatus(conv1, conv2); + + return Conversion.CompareOnId(conv1, conv2); + } + + + #region Event handlers + + private void timerVpx_Tick(object sender, EventArgs e) + { + //the timer ticks every second, but a request is sent only every as many seconds as specified by the HEARTBEAT + if (DateTime.Now.Second % HEARTBEAT == 0) + FetchConversionHistory(); + + if (dataGridViewConversions.SelectedRows.Count == 1 && dataGridViewConversions.SelectedRows[0] is ConversionRow row && row.Conversion.InProgress) + BuildDetailsView(row.Conversion); + } + + private void dataGridViewConversions_SelectionChanged(object sender, EventArgs e) + { + UpdateButtons(); + + if (dataGridViewConversions.SelectedRows.Count == 1 && dataGridViewConversions.SelectedRows[0] is ConversionRow row) + BuildDetailsView(row.Conversion); + else + ClearDetailsView(); + } + + private void dataGridViewConversions_SortCompare(object sender, DataGridViewSortCompareEventArgs e) + { + var row1 = (ConversionRow)dataGridViewConversions.Rows[e.RowIndex1]; + var row2 = (ConversionRow)dataGridViewConversions.Rows[e.RowIndex2]; + e.SortResult = CompareConversionRows(e.Column.Index, row1, row2); + e.Handled = true; + } + + private void dataGridViewConversions_MouseUp(object sender, MouseEventArgs e) + { + if (e.Button != MouseButtons.Right) + return; + + var hitTestInfo = dataGridViewConversions.HitTest(e.X, e.Y); + + if (hitTestInfo.Type == DataGridViewHitTestType.Cell && + 0 <= hitTestInfo.RowIndex && hitTestInfo.RowIndex < dataGridViewConversions.Rows.Count) + { + dataGridViewConversions.Rows[hitTestInfo.RowIndex].Selected = true; + contextMenuStrip1.Show(dataGridViewConversions, new Point(e.X, e.Y)); + } + } + + private void dataGridViewConversions_KeyUp(object sender, KeyEventArgs e) + { + if (e.KeyCode != Keys.Apps) + return; + + if (dataGridViewConversions.SelectedRows.Count > 0) + { + var row = dataGridViewConversions.SelectedRows[0]; + contextMenuStrip1.Show(dataGridViewConversions, 3, row.Height * (row.Index + 2)); + } + } + + private void ConversionWizard_FormClosed(object sender, FormClosedEventArgs e) + { + var wizard = sender as ConversionWizard; + if (wizard == null) + return; + + wizard.FormClosed -= ConversionWizard_FormClosed; + + if (wizard.ConversionConfigs == null) + return; + + foreach (var config in wizard.ConversionConfigs) + CreateConversion(config); + } + + private void toolStripButtonNew_Click(object sender, EventArgs e) + { + var wizard = new ConversionWizard(_conversionClient); + wizard.FormClosed += ConversionWizard_FormClosed; + Program.MainWindow.ShowPerConnectionWizard(connection, wizard, this); + } + + private void toolStripButtonCancel_Click(object sender, EventArgs e) + { + if (dataGridViewConversions.SelectedRows.Count == 1 && dataGridViewConversions.SelectedRows[0] is ConversionRow row) + { + using (var dlog = new ThreeButtonDialog( + new ThreeButtonDialog.Details(SystemIcons.Warning, Messages.CONVERSION_CANCEL_CONFIRM), + ThreeButtonDialog.ButtonYes, + ThreeButtonDialog.ButtonNo)) + { + if (dlog.ShowDialog(this) == DialogResult.No) + return; + } + + ThreadPool.QueueUserWorkItem(obj => + { + try + { + _conversionClient.CancelConversion(row.Conversion); + } + catch (Exception ex) + { + log.Error($"Cannot cancel conversion {row.Conversion.Id}.", ex); + + Program.Invoke(this, () => + { + statusLabel.Image = Images.StaticImages._000_error_h32bit_16; + statusLabel.Text = Messages.CONVERSION_CANCEL_FAILURE; + statusLinkLabel.Reset(); + }); + } + }); + } + } + + private void toolStripButtonRetry_Click(object sender, EventArgs e) + { + if (dataGridViewConversions.SelectedRows.Count == 1 && dataGridViewConversions.SelectedRows[0] is ConversionRow row) + { + ThreadPool.QueueUserWorkItem(obj => + { + try + { + _conversionClient.RetryConversion(row.Conversion); + } + catch (Exception ex) + { + log.Error($"Cannot retry conversion {row.Conversion.Id}.", ex); + + Program.Invoke(this, () => + { + statusLabel.Image = Images.StaticImages._000_error_h32bit_16; + statusLabel.Text = Messages.CONVERSION_RETRY_FAILURE; + statusLinkLabel.Reset(); + }); + } + }); + } + } + + private void toolStripButtonClear_Click(object sender, EventArgs e) + { + using (var dlog = new ThreeButtonDialog( + new ThreeButtonDialog.Details(SystemIcons.Warning, Messages.CONVERSION_CLEAR_HISTORY_CONFIRM), + ThreeButtonDialog.ButtonYes, + ThreeButtonDialog.ButtonNo)) + { + if (dlog.ShowDialog(this) == DialogResult.No) + return; + } + + toolStripButtonClear.Enabled = false; + + ThreadPool.QueueUserWorkItem(obj => + { + try + { + _conversionClient.ClearConversionHistory(); + } + catch (Exception ex) + { + log.Error("Cannot clear conversion history.", ex); + + Program.Invoke(this, () => + { + statusLabel.Image = Images.StaticImages._000_error_h32bit_16; + statusLabel.Text = Messages.CONVERSION_CLEAR_HISTORY_FAILURE; + statusLinkLabel.Reset(); + toolStripButtonClear.Enabled = true; + }); + } + }); + } + + private void toolStripDdbFilterStatus_FilterChanged() + { + SetFilterLabel(); + BuildConversionList(); + } + + private void toolStripButtonExport_Click(object sender, EventArgs e) + { + bool exportAll = true; + + if (FilterIsOn) + { + using (var dlog = new ThreeButtonDialog( + new ThreeButtonDialog.Details(null, Messages.CONVERSION_EXPORT_ALL_OR_FILTERED), + new ThreeButtonDialog.TBDButton(Messages.EXPORT_ALL_BUTTON, DialogResult.Yes), + new ThreeButtonDialog.TBDButton(Messages.EXPORT_FILTERED_BUTTON, DialogResult.No, ThreeButtonDialog.ButtonType.NONE), + ThreeButtonDialog.ButtonCancel)) + { + var result = dlog.ShowDialog(this); + + if (result == DialogResult.No) + exportAll = false; + else if (result == DialogResult.Cancel) + return; + } + } + + string fileName; + using (SaveFileDialog dialog = new SaveFileDialog + { + AddExtension = true, + Filter = string.Format("{0} (*.csv)|*.csv|{1} (*.txt)|*.txt|{2} (*.*)|*.*", + Messages.CSV_DESCRIPTION, Messages.TXT_DESCRIPTION, Messages.ALL_FILES), + FilterIndex = 0, + Title = Messages.EXPORT_ALL, + RestoreDirectory = true, + DefaultExt = "csv", + CheckPathExists = false, + OverwritePrompt = true + }) + { + if (dialog.ShowDialog(this) != DialogResult.OK) + return; + fileName = dialog.FileName; + } + + new DelegatedAsyncAction(null, + string.Format(Messages.CONVERSION_EXPORT, fileName), + string.Format(Messages.CONVERSION_EXPORTING, fileName), + string.Format(Messages.CONVERSION_EXPORTED, fileName), + s => + { + using (StreamWriter stream = new StreamWriter(fileName, false, Encoding.UTF8)) + { + stream.WriteLine(string.Join(",", DetailHeaders.Select(v => $"\"{v}\""))); + + if (exportAll) + { + var exportable = new List(CurrentConversionList); + foreach (var conv in exportable) + stream.WriteLine(string.Join(",", GetDetailValues(conv).Select(v => $"\"{v}\""))); + } + else + { + foreach (ConversionRow row in dataGridViewConversions.Rows) + { + if (row != null) + stream.WriteLine(string.Join(",", GetDetailValues(row.Conversion).Select(v => $"\"{v}\""))); + } + } + } + }).RunAsync(); + } + + private void toolStripSplitButtonRefresh_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + toolStripSplitButtonRefresh.DefaultItem = e.ClickedItem; + toolStripSplitButtonRefresh.Text = toolStripSplitButtonRefresh.DefaultItem.Text; + } + + private void toolStripMenuItemRefreshSelected_Click(object sender, EventArgs e) + { + if (dataGridViewConversions.SelectedRows.Count == 1 && dataGridViewConversions.SelectedRows[0] is ConversionRow row) + FetchConversionDetails(row.Conversion); + } + + private void toolStripMenuItemRefreshAll_Click(object sender, EventArgs e) + { + FetchConversionHistory(); + } + + private void toolStripSplitButtonLogs_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + toolStripSplitButtonLogs.DefaultItem = e.ClickedItem; + toolStripSplitButtonLogs.Text = toolStripSplitButtonLogs.DefaultItem.Text; + } + + private void menuItemFetchSelectedLog_Click(object sender, EventArgs e) + { + if (dataGridViewConversions.SelectedRows.Count == 1 && dataGridViewConversions.SelectedRows[0] is ConversionRow row) + FetchLogs(row.Conversion); + } + + private void menuItemFetchAllLogs_Click(object sender, EventArgs e) + { + FetchLogs(); + } + + private void buttonClose_Click(object sender, EventArgs e) + { + Close(); + } + + #endregion + + + #region Nested items + + private class ConversionRow : DataGridViewRow + { + private readonly DataGridViewTextBoxCell cellSourceVm = new DataGridViewTextBoxCell(); + private readonly DataGridViewTextBoxCell cellsourceServer = new DataGridViewTextBoxCell(); + private readonly DataGridViewTextBoxCell cellStartTime = new DataGridViewTextBoxCell(); + private readonly DataGridViewTextBoxCell cellFinishTime = new DataGridViewTextBoxCell(); + private readonly DataGridViewImageCell cellStatus = new DataGridViewImageCell(); + + public Conversion Conversion { get; private set; } + + public ConversionRow(Conversion conversion) + { + Cells.AddRange(cellSourceVm, cellsourceServer, cellStartTime, cellFinishTime, cellStatus); + RefreshRow(conversion); + } + + public void RefreshRow(Conversion conversion) + { + Conversion = conversion; + cellSourceVm.Value = conversion.Configuration.SourceVmName; + cellsourceServer.Value = conversion.Configuration.SourceServer.Hostname; + + GetConversionLocalTimes(conversion, out DateTime? startTime, out DateTime? finishTime, out _); + + cellStartTime.Value = startTime.HasValue + ? HelpersGUI.DateTimeToString(startTime.Value, Messages.DATEFORMAT_DMY_HM, true) + : Messages.HYPHEN; + + cellFinishTime.Value = finishTime.HasValue + ? HelpersGUI.DateTimeToString(finishTime.Value, Messages.DATEFORMAT_DMY_HM, true) + : Messages.HYPHEN; + + cellStatus.Value = Images.GetImageFor(conversion); + } + } + + private class ConversionDetailRow : DataGridViewRow + { + private readonly DataGridViewTextBoxCell cellKey = new DataGridViewTextBoxCell(); + private readonly DataGridViewTextBoxCell cellValue = new DataGridViewTextBoxCell(); + + private readonly Font boldFont = new Font(Program.DefaultFont, FontStyle.Bold); + + public ConversionDetailRow(string key, string val) + { + cellKey.Style.Font = boldFont; + Cells.AddRange(cellKey, cellValue); + cellKey.Value = key; + cellValue.Value = val; + } + + protected override void Dispose(bool disposing) + { + if (disposing) + boldFont.Dispose(); + + base.Dispose(disposing); + } + } + + private class ActionableLinkLabel : ToolStripStatusLabel + { + private Action _linkAction; + + protected override void OnClick(EventArgs e) + { + base.OnClick(e); + _linkAction?.Invoke(); + } + + public void Reset(string text = "", Action linkAction = null) + { + Text = text; + _linkAction = linkAction; + } + } + + #endregion + } +} diff --git a/XenAdmin/Dialogs/ConversionDialog.ja.resx b/XenAdmin/Dialogs/ConversionDialog.ja.resx new file mode 100644 index 000000000..d00213b78 --- /dev/null +++ b/XenAdmin/Dialogs/ConversionDialog.ja.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/XenAdmin/Dialogs/ConversionDialog.resx b/XenAdmin/Dialogs/ConversionDialog.resx new file mode 100644 index 000000000..999190370 --- /dev/null +++ b/XenAdmin/Dialogs/ConversionDialog.resx @@ -0,0 +1,912 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 2 + + + Source VM + + + 10 + + + True + + + WMware Server + + + 10 + + + True + + + Start Time + + + 10 + + + True + + + Finish Time + + + 10 + + + True + + + + + + 16 + + + 19 + + + + Fill + + + + Segoe UI, 9pt + + + 13, 13 + + + 588, 364 + + + 0 + + + dataGridViewConversions + + + XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutMain + + + 0 + + + Single + + + 1 + + + True + + + Column1 + + + 5 + + + True + + + Column2 + + + Fill + + + Segoe UI, 9pt + + + 1, 23 + + + 0, 0, 0, 0 + + + 312, 340 + + + 1 + + + dataGridViewDetails + + + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 0 + + + Left + + + True + + + Segoe UI, 9pt, style=Bold + + + 4, 4 + + + 3, 3, 3, 3 + + + 45, 15 + + + 0 + + + Details + + + labelDetails + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 1 + + + Fill + + + Segoe UI, 9pt + + + 607, 13 + + + 2 + + + 314, 364 + + + 1 + + + tableLayoutPanel3 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutMain + + + 1 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="dataGridViewDetails" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelDetails" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Percent,100" /></TableLayoutSettings> + + + Right + + + Segoe UI, 9pt + + + NoControl + + + 846, 383 + + + 75, 23 + + + 2 + + + Close + + + buttonClose + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutMain + + + 2 + + + Fill + + + Segoe UI, 9pt + + + 0, 27 + + + 10, 10, 10, 3 + + + 2 + + + 934, 412 + + + 1 + + + tableLayoutMain + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="dataGridViewConversions" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel3" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="buttonClose" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,65,Percent,35" /><Rows Styles="Percent,100,AutoSize,0" /></TableLayoutSettings> + + + 353, 17 + + + 131, 22 + + + Re&fresh + + + 131, 22 + + + Fetch &Logs + + + 131, 22 + + + &Retry + + + 131, 22 + + + &Cancel + + + 132, 92 + + + contextMenuStrip1 + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + GrowAndShrink + + + 1 + + + 17, 17 + + + False + + + Fill + + + Segoe UI, 9pt + + + Segoe UI, 9pt + + + Magenta + + + 107, 22 + + + &New Conversion... + + + 6, 25 + + + Segoe UI, 9pt + + + Magenta + + + 47, 22 + + + &Cancel + + + Cancel + + + Segoe UI, 9pt + + + Magenta + + + 38, 22 + + + &Retry + + + 6, 25 + + + Segoe UI, 9pt + + + Magenta + + + 97, 22 + + + Filter by Stat&us + + + 6, 25 + + + 160, 22 + + + Refresh &Selected + + + 160, 22 + + + Refresh &All + + + Segoe UI, 9pt + + + Magenta + + + 62, 22 + + + Re&fresh + + + Segoe UI, 9pt + + + Magenta + + + 55, 22 + + + Cl&ear All + + + 6, 25 + + + 182, 22 + + + Fetch &Selected Log... + + + 182, 22 + + + Fetch &All Logs... + + + Segoe UI, 9pt + + + Magenta + + + 80, 22 + + + Fetch &Logs + + + Segoe UI, 9pt + + + Magenta + + + 61, 22 + + + E&xport All + + + Segoe UI, 9pt + + + 104, 22 + + + Filters are ON/OFF + + + 1, 1 + + + 1, 1, 1, 1 + + + 932, 25 + + + 0 + + + toolStrip1 + + + toolStripTop + + + XenAdmin.Controls.ToolStripEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanelTop + + + 0 + + + Top + + + Segoe UI, 9pt + + + 0, 0 + + + 1 + + + 934, 27 + + + 0 + + + tableLayoutPanelTop + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="toolStripTop" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="Absolute,27" /></TableLayoutSettings> + + + 136, 17 + + + 237, 17 + + + Segoe UI, 9pt + + + Segoe UI, 9pt + + + MiddleLeft + + + 118, 17 + + + toolStripStatusLabel1 + + + MiddleLeft + + + Segoe UI, 9pt + + + 118, 17 + + + toolStripStatusLabel2 + + + 0, 439 + + + 934, 22 + + + 3 + + + statusStrip1 + + + System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + True + + + 96, 96 + + + 934, 461 + + + Segoe UI, 9pt + + + 850, 500 + + + Manage Conversions + + + ColumnVm + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ColumnSourceServer + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ColumnStartTime + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ColumnFinishTime + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ColumnStatus + + + System.Windows.Forms.DataGridViewImageColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + columnKey + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + columnValue + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + contextItemRefresh + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + contextItemFetchLogs + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + contextItemRetry + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + contextItemCancel + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripButtonNew + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator1 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripButtonCancel + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripButtonRetry + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator2 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripDdbFilterStatus + + + XenAdmin.Controls.FilterStatusToolStripDropDownButton, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + toolStripSeparator3 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSplitButtonRefresh + + + System.Windows.Forms.ToolStripSplitButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItemRefreshSelected + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItemRefreshAll + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripButtonClear + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator4 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSplitButtonLogs + + + System.Windows.Forms.ToolStripSplitButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuItemFetchSelectedLog + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuItemFetchAllLogs + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripButtonExport + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripLabelFiltersOnOff + + + System.Windows.Forms.ToolStripLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + timerVpx + + + System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + statusLabel + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + statusLinkLabel + + + XenAdmin.Dialogs.ConversionDialog+ActionableLinkLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + ConversionDialog + + + XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + \ No newline at end of file diff --git a/XenAdmin/Dialogs/ConversionDialog.zh-CN.resx b/XenAdmin/Dialogs/ConversionDialog.zh-CN.resx new file mode 100644 index 000000000..d00213b78 --- /dev/null +++ b/XenAdmin/Dialogs/ConversionDialog.zh-CN.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/XenAdmin/Dialogs/ConversionVmSelectionDialog.Designer.cs b/XenAdmin/Dialogs/ConversionVmSelectionDialog.Designer.cs new file mode 100644 index 000000000..55acfa15d --- /dev/null +++ b/XenAdmin/Dialogs/ConversionVmSelectionDialog.Designer.cs @@ -0,0 +1,144 @@ +namespace XenAdmin.Dialogs +{ + partial class ConversionVmSelectionDialog + { + /// + /// 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(ConversionVmSelectionDialog)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.dataGridViewEx1 = new XenAdmin.Controls.DataGridViewEx.DataGridViewEx(); + this.columnImage = new System.Windows.Forms.DataGridViewImageColumn(); + this.columnVm = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.columnUuid = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.autoHeightLabel1 = new XenAdmin.Controls.Common.AutoHeightLabel(); + this.buttonOk = new System.Windows.Forms.Button(); + this.buttonCancel = new System.Windows.Forms.Button(); + this.tableLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewEx1)).BeginInit(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); + this.tableLayoutPanel1.Controls.Add(this.dataGridViewEx1, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.autoHeightLabel1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.buttonOk, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.buttonCancel, 2, 2); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + // + // dataGridViewEx1 + // + this.dataGridViewEx1.BackgroundColor = System.Drawing.SystemColors.Window; + this.dataGridViewEx1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; + this.dataGridViewEx1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dataGridViewEx1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.columnImage, + this.columnVm, + this.columnUuid}); + this.tableLayoutPanel1.SetColumnSpan(this.dataGridViewEx1, 3); + resources.ApplyResources(this.dataGridViewEx1, "dataGridViewEx1"); + this.dataGridViewEx1.Name = "dataGridViewEx1"; + this.dataGridViewEx1.ReadOnly = true; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle1.Font = new System.Drawing.Font("Segoe UI", 9F); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dataGridViewEx1.RowHeadersDefaultCellStyle = dataGridViewCellStyle1; + this.dataGridViewEx1.CellMouseDoubleClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dataGridViewEx1_CellMouseDoubleClick); + this.dataGridViewEx1.SelectionChanged += new System.EventHandler(this.dataGridViewEx1_SelectionChanged); + // + // columnImage + // + this.columnImage.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCellsExceptHeader; + resources.ApplyResources(this.columnImage, "columnImage"); + this.columnImage.Name = "columnImage"; + this.columnImage.ReadOnly = true; + // + // columnVm + // + resources.ApplyResources(this.columnVm, "columnVm"); + this.columnVm.Name = "columnVm"; + this.columnVm.ReadOnly = true; + // + // columnUuid + // + resources.ApplyResources(this.columnUuid, "columnUuid"); + this.columnUuid.Name = "columnUuid"; + this.columnUuid.ReadOnly = true; + // + // autoHeightLabel1 + // + resources.ApplyResources(this.autoHeightLabel1, "autoHeightLabel1"); + this.tableLayoutPanel1.SetColumnSpan(this.autoHeightLabel1, 3); + this.autoHeightLabel1.Name = "autoHeightLabel1"; + // + // buttonOk + // + this.buttonOk.DialogResult = System.Windows.Forms.DialogResult.OK; + resources.ApplyResources(this.buttonOk, "buttonOk"); + this.buttonOk.Name = "buttonOk"; + this.buttonOk.UseVisualStyleBackColor = true; + // + // buttonCancel + // + this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + resources.ApplyResources(this.buttonCancel, "buttonCancel"); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.UseVisualStyleBackColor = true; + // + // ConversionVmSelectionDialog + // + this.AcceptButton = this.buttonOk; + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.CancelButton = this.buttonCancel; + this.Controls.Add(this.tableLayoutPanel1); + this.Name = "ConversionVmSelectionDialog"; + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewEx1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private Controls.DataGridViewEx.DataGridViewEx dataGridViewEx1; + private System.Windows.Forms.DataGridViewImageColumn columnImage; + private System.Windows.Forms.DataGridViewTextBoxColumn columnVm; + private System.Windows.Forms.DataGridViewTextBoxColumn columnUuid; + private Controls.Common.AutoHeightLabel autoHeightLabel1; + private System.Windows.Forms.Button buttonOk; + private System.Windows.Forms.Button buttonCancel; + } +} + diff --git a/XenAdmin/Dialogs/ConversionVmSelectionDialog.cs b/XenAdmin/Dialogs/ConversionVmSelectionDialog.cs new file mode 100644 index 000000000..8d5b24e6a --- /dev/null +++ b/XenAdmin/Dialogs/ConversionVmSelectionDialog.cs @@ -0,0 +1,113 @@ +/* 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.Windows.Forms; +using XenAdmin.Core; +using XenAdmin.Network; +using XenAPI; + +namespace XenAdmin.Dialogs +{ + public partial class ConversionVmSelectionDialog : XenDialogBase + { + private readonly IEnumerable _conversionVms; + + public ConversionVmSelectionDialog(IXenConnection connection, IEnumerable conversionVms) + : base(connection) + { + InitializeComponent(); + _conversionVms = conversionVms; + } + + public VM ConversionVm + { + get + { + foreach (var row in dataGridViewEx1.SelectedRows) + { + if (row is ConversionVmRow vmRow) + return vmRow.Vm; + } + + return null; + } + } + + internal override string HelpName => "ConversionManager"; + + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + + Text = string.Format(Messages.CONVERSION_SELECT_VPX_TITLE, Helpers.GetName(connection)); + + foreach (var vm in _conversionVms) + dataGridViewEx1.Rows.Add(new ConversionVmRow(vm)); + } + + private void dataGridViewEx1_SelectionChanged(object sender, EventArgs e) + { + buttonOk.Enabled = ConversionVm != null; + } + + private void dataGridViewEx1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) + { + if (e.ColumnIndex < 0 || e.ColumnIndex >= dataGridViewEx1.ColumnCount || + e.RowIndex < 0 || e.RowIndex >= dataGridViewEx1.RowCount) + return; + + if (ConversionVm != null) + DialogResult = DialogResult.OK; + } + + + private class ConversionVmRow : DataGridViewRow + { + private readonly DataGridViewImageCell _cellImage = new DataGridViewImageCell(); + private readonly DataGridViewTextBoxCell _cellVm = new DataGridViewTextBoxCell(); + private readonly DataGridViewTextBoxCell _cellUuid = new DataGridViewTextBoxCell(); + + public VM Vm { get; } + + public ConversionVmRow(VM vm) + { + Cells.AddRange(_cellImage, _cellVm, _cellUuid); + Vm = vm; + + _cellImage.Value = Images.GetImage16For(Images.GetIconFor(Vm)); + _cellVm.Value = vm.Name(); + _cellUuid.Value = vm.uuid; + } + } + } +} diff --git a/XenAdmin/Dialogs/ConversionVmSelectionDialog.ja.resx b/XenAdmin/Dialogs/ConversionVmSelectionDialog.ja.resx new file mode 100644 index 000000000..d00213b78 --- /dev/null +++ b/XenAdmin/Dialogs/ConversionVmSelectionDialog.ja.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/XenAdmin/Dialogs/ConversionVmSelectionDialog.resx b/XenAdmin/Dialogs/ConversionVmSelectionDialog.resx new file mode 100644 index 000000000..5f3cca526 --- /dev/null +++ b/XenAdmin/Dialogs/ConversionVmSelectionDialog.resx @@ -0,0 +1,348 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + 3 + + + True + + + + + + 5 + + + True + + + VM + + + 15 + + + True + + + Uuid + + + 15 + + + + Fill + + + + Segoe UI, 9pt + + + 3, 50 + + + 3, 20, 3, 3 + + + 508, 139 + + + 0 + + + dataGridViewEx1 + + + XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 0 + + + True + + + Fill + + + Segoe UI, 9pt + + + 3, 0 + + + 508, 30 + + + 1 + + + There are more than one Conversion Manager virtual appliances in your system. Please select the virtual appliance to use for converting your VMware VMs. + + + autoHeightLabel1 + + + XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 1 + + + Segoe UI, 9pt + + + 355, 195 + + + 75, 23 + + + 2 + + + OK + + + buttonOk + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + Segoe UI, 9pt + + + 436, 195 + + + 75, 23 + + + 3 + + + Cancel + + + buttonCancel + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + Fill + + + Segoe UI, 9pt + + + 10, 10 + + + 3 + + + 514, 221 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="dataGridViewEx1" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="autoHeightLabel1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="buttonOk" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="buttonCancel" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings> + + + True + + + 96, 96 + + + 534, 241 + + + Segoe UI, 9pt + + + 8, 8, 8, 8 + + + 10, 10, 10, 10 + + + Select Conversion Manager Virtual Appliance - {0} + + + columnImage + + + System.Windows.Forms.DataGridViewImageColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + columnVm + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + columnUuid + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ConversionVmSelectionDialog + + + XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + \ No newline at end of file diff --git a/XenAdmin/Dialogs/ConversionVmSelectionDialog.zh-CN.resx b/XenAdmin/Dialogs/ConversionVmSelectionDialog.zh-CN.resx new file mode 100644 index 000000000..d00213b78 --- /dev/null +++ b/XenAdmin/Dialogs/ConversionVmSelectionDialog.zh-CN.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/XenAdmin/Dialogs/CopyVMDialog.Designer.cs b/XenAdmin/Dialogs/CopyVMDialog.Designer.cs index f17d054e0..edb52ab97 100644 --- a/XenAdmin/Dialogs/CopyVMDialog.Designer.cs +++ b/XenAdmin/Dialogs/CopyVMDialog.Designer.cs @@ -55,7 +55,7 @@ namespace XenAdmin.Dialogs resources.ApplyResources(this.srPicker1, "srPicker1"); this.srPicker1.Connection = null; this.srPicker1.Name = "srPicker1"; - this.srPicker1.SrSelectionChanged += new System.Action(this.srPicker1_SrSelectionChanged); + this.srPicker1.SelectedIndexChanged += new System.EventHandler(this.srPicker1_SelectedIndexChanged); // // CloseButton // diff --git a/XenAdmin/Dialogs/CopyVMDialog.cs b/XenAdmin/Dialogs/CopyVMDialog.cs index 6d7f17df8..716246ed7 100644 --- a/XenAdmin/Dialogs/CopyVMDialog.cs +++ b/XenAdmin/Dialogs/CopyVMDialog.cs @@ -95,7 +95,7 @@ namespace XenAdmin.Dialogs srPicker1.selectDefaultSROrAny(); } - private void srPicker1_SrSelectionChanged(object obj) + private void srPicker1_SelectedIndexChanged(object sender, EventArgs e) { EnableMoveButton(); } diff --git a/XenAdmin/Dialogs/EditVmHaPrioritiesDialog.cs b/XenAdmin/Dialogs/EditVmHaPrioritiesDialog.cs index 151fc17f8..19587400b 100644 --- a/XenAdmin/Dialogs/EditVmHaPrioritiesDialog.cs +++ b/XenAdmin/Dialogs/EditVmHaPrioritiesDialog.cs @@ -30,16 +30,11 @@ */ using System; -using System.Collections.Generic; using System.ComponentModel; -using System.Data; using System.Drawing; -using System.Text; using System.Windows.Forms; - using XenAdmin.Actions; using XenAdmin.Controls; -using XenAdmin.Core; using XenAPI; @@ -47,8 +42,6 @@ namespace XenAdmin.Dialogs { public partial class EditVmHaPrioritiesDialog : XenDialogBase { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - /// /// Never null. /// @@ -59,16 +52,13 @@ namespace XenAdmin.Dialogs /// private readonly long originalNtol; - /// - /// - /// /// May not be null. HA must be turned off on the pool. public EditVmHaPrioritiesDialog(Pool pool) { if (pool == null) throw new ArgumentNullException("pool"); if (!pool.ha_enabled) - throw new ArgumentException("You may only show the EditVmHaPrioritiesDialog for pools that already have HA turned on"); + throw new ArgumentException("Can only configure HA for pools that already have HA turned on"); this.pool = pool; InitializeComponent(); @@ -78,23 +68,6 @@ namespace XenAdmin.Dialogs pool.PropertyChanged += pool_PropertyChanged; originalNtol = pool.ha_host_failures_to_tolerate; - if (pool.ha_statefiles.Length != 1) - { - log.ErrorFormat("Cannot show dialog: pool {0} has {1} statefiles, but this dialog can only handle exactly 1. Closing dialog.", - pool.Name(), pool.ha_statefiles.Length); - this.Close(); - return; - } - - XenRef vdiRef = new XenRef(pool.ha_statefiles[0]); - VDI vdi = pool.Connection.Resolve(vdiRef); - if (vdi == null) - { - log.Error("Could not resolve HA statefile reference. Closing dialog."); - this.Close(); - return; - } - pictureBoxWarningIcon.Image = SystemIcons.Warning.ToBitmap(); Rebuild(); } diff --git a/XenAdmin/Dialogs/EvacuateHostDialog.cs b/XenAdmin/Dialogs/EvacuateHostDialog.cs index 672849fcf..c2b8779e8 100644 --- a/XenAdmin/Dialogs/EvacuateHostDialog.cs +++ b/XenAdmin/Dialogs/EvacuateHostDialog.cs @@ -814,8 +814,6 @@ namespace XenAdmin.Dialogs catch (Exception e) { log.Debug("Exception processing exception", e); - log.Debug(e, e); - AddDefaultSuspendOperation(vmRef); } } diff --git a/XenAdmin/Dialogs/ExitMaintenanceModeDialog.Designer.cs b/XenAdmin/Dialogs/ExitMaintenanceModeDialog.Designer.cs index 13ef3bf20..fabb04910 100644 --- a/XenAdmin/Dialogs/ExitMaintenanceModeDialog.Designer.cs +++ b/XenAdmin/Dialogs/ExitMaintenanceModeDialog.Designer.cs @@ -1,6 +1,6 @@ namespace XenAdmin.Dialogs { - partial class RestoreVMsDialog + partial class ExitMaintenanceModeDialog { /// /// Required designer variable. @@ -28,7 +28,7 @@ /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RestoreVMsDialog)); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ExitMaintenanceModeDialog)); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); this.tableLayoutPanelBody = new System.Windows.Forms.TableLayoutPanel(); this.labelBlurb = new System.Windows.Forms.Label(); diff --git a/XenAdmin/Dialogs/ExitMaintenanceModeDialog.cs b/XenAdmin/Dialogs/ExitMaintenanceModeDialog.cs index 90b2f76c9..e4ca75cb9 100644 --- a/XenAdmin/Dialogs/ExitMaintenanceModeDialog.cs +++ b/XenAdmin/Dialogs/ExitMaintenanceModeDialog.cs @@ -38,24 +38,26 @@ using XenAdmin.Core; namespace XenAdmin.Dialogs { - public partial class RestoreVMsDialog : XenDialogBase + public partial class ExitMaintenanceModeDialog : XenDialogBase { private List VMsToRestore; private Host TargetHost; + /// - /// A dialog which shows a list of VMs, their current locations and state and asks the user whether they want to restore them to their original locations. + /// A dialog which shows a list of VMs with their current locations and state, + /// and asks the user whether they want to restore them to their original locations. /// - /// List of VMs that would be restored. Do not pass null or an empty list, this dialog makes no sense otherwise. + /// List of VMs to be restored. Do not pass null or an + /// empty list, this dialog makes no sense otherwise. /// The host which is exiting maintenance mode - public RestoreVMsDialog(List VMsToRestore, Host Host) + public ExitMaintenanceModeDialog(List VMsToRestore, Host Host) + :base(VMsToRestore[0].Connection) { InitializeComponent(); - System.Diagnostics.Trace.Assert(VMsToRestore != null && VMsToRestore.Count > 0, "There are no VMs to restore"); this.VMsToRestore = VMsToRestore; TargetHost = Host; labelBlurb.Text = String.Format(labelBlurb.Text, Helpers.GetName(Host).Ellipsise(50)); - this.connection = VMsToRestore[0].Connection; foreach (VM v in VMsToRestore) v.PropertyChanged += v_PropertyChanged; @@ -91,24 +93,15 @@ namespace XenAdmin.Dialogs } } - protected class VMRestoreRow : DataGridViewRow + private class VMRestoreRow : DataGridViewRow { public VMRestoreRow(VM vm) { - // The image cell, shows the current state of the VM - DataGridViewImageCell iconCell = new DataGridViewImageCell(); - iconCell.Value = Images.GetImage16For(vm); - Cells.Add(iconCell); - - // The VM name cell - DataGridViewTextBoxCell nameCell = new DataGridViewTextBoxCell(); - nameCell.Value = Helpers.GetName(vm); - Cells.Add(nameCell); + var iconCell = new DataGridViewImageCell {Value = Images.GetImage16For(vm)}; + var nameCell = new DataGridViewTextBoxCell {Value = Helpers.GetName(vm)}; + var locationCell = new DataGridViewTextBoxCell {Value = Helpers.GetName(vm.Connection.Resolve(vm.resident_on))}; - // The current location cell - DataGridViewTextBoxCell locationCell = new DataGridViewTextBoxCell(); - locationCell.Value = Helpers.GetName(vm.Connection.Resolve(vm.resident_on)); - Cells.Add(locationCell); + Cells.AddRange(iconCell, nameCell, locationCell); } } diff --git a/XenAdmin/Dialogs/ExitMaintenanceModeDialog.ja.resx b/XenAdmin/Dialogs/ExitMaintenanceModeDialog.ja.resx index 1e5dc0c9e..3be7446c6 100644 --- a/XenAdmin/Dialogs/ExitMaintenanceModeDialog.ja.resx +++ b/XenAdmin/Dialogs/ExitMaintenanceModeDialog.ja.resx @@ -471,7 +471,7 @@ System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - RestoreVMsDialog + ExitMaintenanceModeDialog XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null diff --git a/XenAdmin/Dialogs/ExitMaintenanceModeDialog.resx b/XenAdmin/Dialogs/ExitMaintenanceModeDialog.resx index 518410899..3179dedb6 100644 --- a/XenAdmin/Dialogs/ExitMaintenanceModeDialog.resx +++ b/XenAdmin/Dialogs/ExitMaintenanceModeDialog.resx @@ -471,7 +471,7 @@ VMs to restore: System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - RestoreVMsDialog + ExitMaintenanceModeDialog XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null diff --git a/XenAdmin/Dialogs/ExitMaintenanceModeDialog.zh-CN.resx b/XenAdmin/Dialogs/ExitMaintenanceModeDialog.zh-CN.resx index fd4d52927..c14232ed5 100644 --- a/XenAdmin/Dialogs/ExitMaintenanceModeDialog.zh-CN.resx +++ b/XenAdmin/Dialogs/ExitMaintenanceModeDialog.zh-CN.resx @@ -471,7 +471,7 @@ System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - RestoreVMsDialog + ExitMaintenanceModeDialog XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null diff --git a/XenAdmin/Dialogs/HealthCheck/HealthCheckOverviewDialog.cs b/XenAdmin/Dialogs/HealthCheck/HealthCheckOverviewDialog.cs index aea27503a..b477cd1cd 100644 --- a/XenAdmin/Dialogs/HealthCheck/HealthCheckOverviewDialog.cs +++ b/XenAdmin/Dialogs/HealthCheck/HealthCheckOverviewDialog.cs @@ -46,7 +46,6 @@ namespace XenAdmin.Dialogs.HealthCheck { public partial class HealthCheckOverviewDialog : XenDialogBase { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); internal override string HelpName { get { return "HealthCheckOverviewDialog"; } } diff --git a/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.cs b/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.cs index 71d546437..9c7242f9d 100644 --- a/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.cs +++ b/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.cs @@ -58,9 +58,9 @@ namespace XenAdmin.Dialogs.HealthCheck internal override string HelpName { get { return "HealthCheckSettingsDialog"; } } public HealthCheckSettingsDialog(Pool pool, bool enrollNow) + :base(pool.Connection) { this.pool = pool; - this.connection = pool.Connection; healthCheckSettings = pool.HealthCheckSettings(); if (enrollNow) healthCheckSettings.Status = HealthCheckStatus.Enabled; diff --git a/XenAdmin/Dialogs/InputPromptDialog.zh-CN.resx b/XenAdmin/Dialogs/InputPromptDialog.zh-CN.resx index 17fa86215..bda5b1152 100644 --- a/XenAdmin/Dialogs/InputPromptDialog.zh-CN.resx +++ b/XenAdmin/Dialogs/InputPromptDialog.zh-CN.resx @@ -135,7 +135,7 @@ 0 - 文本 + text promptLabel diff --git a/XenAdmin/Dialogs/LicenseManager/LicenseCheckableDataGridView/LicenseCheckableDataGridView.cs b/XenAdmin/Dialogs/LicenseManager/LicenseCheckableDataGridView/LicenseCheckableDataGridView.cs index e374c9a2f..67a6f9ba9 100644 --- a/XenAdmin/Dialogs/LicenseManager/LicenseCheckableDataGridView/LicenseCheckableDataGridView.cs +++ b/XenAdmin/Dialogs/LicenseManager/LicenseCheckableDataGridView/LicenseCheckableDataGridView.cs @@ -41,9 +41,6 @@ namespace XenAdmin.Controls { public class LicenseCheckableDataGridView : CheckableDataGridView.CheckableDataGridView, ILicenseCheckableDataGridViewView { - public delegate void RefreshAllEvent(object sender, EventArgs e); - public event RefreshAllEvent RefreshAll; - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public DataGridViewImageColumn StatusImageColumn { @@ -127,12 +124,5 @@ namespace XenAdmin.Controls } }); } - - [EditorBrowsable(EditorBrowsableState.Never)] - public void TriggerRefreshAllEvent() - { - if (RefreshAll != null) - RefreshAll(this, EventArgs.Empty); - } } } diff --git a/XenAdmin/Dialogs/LicenseManager/LicenseCheckableDataGridView/LicenseCheckableDataGridViewController.cs b/XenAdmin/Dialogs/LicenseManager/LicenseCheckableDataGridView/LicenseCheckableDataGridViewController.cs index dbfc7a23d..173a99ec4 100644 --- a/XenAdmin/Dialogs/LicenseManager/LicenseCheckableDataGridView/LicenseCheckableDataGridViewController.cs +++ b/XenAdmin/Dialogs/LicenseManager/LicenseCheckableDataGridView/LicenseCheckableDataGridViewController.cs @@ -40,8 +40,6 @@ namespace XenAdmin.Controls { public class LicenseCheckableDataGridViewController : CheckableDataGridViewController { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private const int DefaultSortIndex = 4; public LicenseCheckableDataGridViewController() diff --git a/XenAdmin/Dialogs/LicenseManager/LicenseDataGridViewRow.cs b/XenAdmin/Dialogs/LicenseManager/LicenseDataGridViewRow.cs index 1645e4cda..7184f585b 100644 --- a/XenAdmin/Dialogs/LicenseManager/LicenseDataGridViewRow.cs +++ b/XenAdmin/Dialogs/LicenseManager/LicenseDataGridViewRow.cs @@ -32,8 +32,6 @@ using System; using System.Collections.Generic; using System.Drawing; -using System.Linq; -using XenAdmin.Controls; using XenAdmin.Controls.CheckableDataGridView; using XenAdmin.Core; using XenAPI; @@ -52,12 +50,8 @@ namespace XenAdmin.Dialogs private readonly ILicenseStatus licenseStatus; - public LicenseDataGridViewRow() : this(null) - { - - } - - public LicenseDataGridViewRow(IXenObject xenObject) : this(xenObject, new LicenseStatus(xenObject)) + public LicenseDataGridViewRow(IXenObject xenObject = null) + : this(xenObject, new LicenseStatus(xenObject)) { } @@ -73,9 +67,9 @@ namespace XenAdmin.Dialogs licenseStatus.BeginUpdate(); } - private void licenseStatus_ItemUpdated(object sender, EventArgs e) + private void licenseStatus_ItemUpdated() { - Program.Invoke(Program.MainWindow, TriggerCellTextUpdatedEvent); + Program.Invoke(DataGridView?.Parent, TriggerCellTextUpdatedEvent); } public override Queue CellText @@ -391,12 +385,5 @@ namespace XenAdmin.Dialogs } base.Dispose(disposing); } - - protected void TriggerRefreshAllEvent() - { - var view = DataGridView as LicenseCheckableDataGridView; - if (view != null) - view.TriggerRefreshAllEvent(); - } } } diff --git a/XenAdmin/Dialogs/LicenseManager/LicenseManager.cs b/XenAdmin/Dialogs/LicenseManager/LicenseManager.cs index 58a60442e..4845012a3 100644 --- a/XenAdmin/Dialogs/LicenseManager/LicenseManager.cs +++ b/XenAdmin/Dialogs/LicenseManager/LicenseManager.cs @@ -68,8 +68,7 @@ namespace XenAdmin.Dialogs checkableDataGridView.SelectionChanged += checkableDataGridView_SelectionChanged; checkableDataGridView.RowUpdated += checkableDataGridView_RowUpdated; checkableDataGridView.RowChecked += checkableDataGridView_RowChecked; - checkableDataGridView.RefreshAll += checkableDataGridView_RefreshAll; - + //Buttons cancelButton.Click += closeButton_Click; releaseLicenseButton.Click += releaseLicenseButton_Click; @@ -147,11 +146,6 @@ namespace XenAdmin.Dialogs Controller.Repopulate(itemsToShow, selectedItems); } - void checkableDataGridView_RefreshAll(object sender, EventArgs eventArgs) - { - Program.Invoke(this, Controller.Repopulate); - } - #region ILicenseManagerView Members [EditorBrowsable(EditorBrowsableState.Never)] public LicenseManagerController Controller { set; private get; } diff --git a/XenAdmin/Dialogs/LicenseManager/LicenseStatus.cs b/XenAdmin/Dialogs/LicenseManager/LicenseStatus.cs index 1a191d989..f066e6edf 100644 --- a/XenAdmin/Dialogs/LicenseManager/LicenseStatus.cs +++ b/XenAdmin/Dialogs/LicenseManager/LicenseStatus.cs @@ -32,7 +32,8 @@ using System; using System.ComponentModel; using System.Linq; -using XenAdmin.Utils; +using System.Threading; +using XenAdmin.Network; using XenAPI; namespace XenAdmin.Dialogs @@ -44,15 +45,17 @@ namespace XenAdmin.Dialogs TimeSpan LicenseExpiresIn { get; } TimeSpan LicenseExpiresExactlyIn { get; } DateTime? ExpiryDate { get; } - event LicenseStatus.StatusUpdatedEvent ItemUpdated; + event Action ItemUpdated; bool Updated { get; } void BeginUpdate(); - Host LicencedHost { get; } + Host LicensedHost { get; } string LicenseEntitlements { get; } } public class LicenseStatus : ILicenseStatus { + private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + public enum HostState { Unknown, @@ -66,14 +69,11 @@ namespace XenAdmin.Dialogs Unavailable } - private readonly EventHandlerList events = new EventHandlerList(); - protected EventHandlerList Events { get { return events; } } + private readonly EventHandlerList _events = new EventHandlerList(); + private const string StatusUpdatedEventKey = "LicenseStatusStatusUpdatedEventKey"; - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public Host LicencedHost { get; private set; } - private readonly AsyncServerTime serverTime = new AsyncServerTime(); - public delegate void StatusUpdatedEvent(object sender, EventArgs e); + public Host LicensedHost { get; private set; } public static bool IsInfinite(TimeSpan span) { @@ -85,9 +85,9 @@ namespace XenAdmin.Dialogs return span.TotalDays < 30; } - private IXenObject XenObject { get; set; } + private IXenObject XenObject { get; } - public bool Updated { get; set; } + public bool Updated { get; private set; } public LicenseStatus(IXenObject xo) { @@ -95,13 +95,10 @@ namespace XenAdmin.Dialogs XenObject = xo; if (XenObject is Host host) - LicencedHost = host; + LicensedHost = host; if (XenObject is Pool pool) SetMinimumLicenseValueHost(pool); - serverTime.ServerTimeObtained -= ServerTimeUpdatedEventHandler; - serverTime.ServerTimeObtained += ServerTimeUpdatedEventHandler; - if (XenObject != null) { XenObject.Connection.ConnectionStateChanged -= Connection_ConnectionStateChanged; @@ -109,9 +106,9 @@ namespace XenAdmin.Dialogs } } - void Connection_ConnectionStateChanged(object sender, EventArgs e) + private void Connection_ConnectionStateChanged(IXenConnection conn) { - if (LicencedHost != null) + if (LicensedHost != null) { TriggerStatusUpdatedEvent(); } @@ -119,15 +116,15 @@ namespace XenAdmin.Dialogs private void SetMinimumLicenseValueHost(Pool pool) { - LicencedHost = pool.Connection.Resolve(pool.master); + LicensedHost = pool.Connection.Resolve(pool.master); - if(LicencedHost == null) + if(LicensedHost == null) return; foreach (Host host in pool.Connection.Cache.Hosts) { - if(host.LicenseExpiryUTC() < LicencedHost.LicenseExpiryUTC()) - LicencedHost = host; + if(host.LicenseExpiryUTC() < LicensedHost.LicenseExpiryUTC()) + LicensedHost = host; } } @@ -141,37 +138,52 @@ namespace XenAdmin.Dialogs public void BeginUpdate() { SetDefaultOptions(); - serverTime.Fetch(LicencedHost); + ThreadPool.QueueUserWorkItem(GetServerTime, LicensedHost); } - private void ServerTimeUpdatedEventHandler() + private void GetServerTime(object state) { - if (LicencedHost != null) + Host host = state as Host; + if (host?.Connection?.Session == null) { - CalculateLicenseState(); - TriggerStatusUpdatedEvent(); + log.Error("Will not fetch server time: host or connection could not be resolved"); + return; } - } - protected void CalculateLicenseState() - { - LicenseExpiresExactlyIn = CalculateLicenceExpiresIn(); - CurrentState = CalculateCurrentState(); - Updated = true; + try + { + //Note we're using the get_servertime call which returns the UTC time + var serverTime = Host.get_servertime(host.Connection.Session, host.opaque_ref); + + if (LicensedHost != null) + { + //ServerTime is UTC + DateTime currentRefTime = serverTime; + LicenseExpiresExactlyIn = LicensedHost.LicenseExpiryUTC().Subtract(currentRefTime); + + CurrentState = CalculateCurrentState(); + Updated = true; + + TriggerStatusUpdatedEvent(); + } + } + catch (Exception e) + { + log.Error($"Failed to fetch server time for host {host.name_label}: ", e); + } } private void TriggerStatusUpdatedEvent() { - StatusUpdatedEvent handler = Events[StatusUpdatedEventKey] as StatusUpdatedEvent; - if (handler != null) - handler.Invoke(this, EventArgs.Empty); + if (_events[StatusUpdatedEventKey] is Action handler) + handler.Invoke(); } private bool InRegularGrace { get { - return LicencedHost.license_params != null && LicencedHost.license_params.ContainsKey("grace") && LicenseExpiresIn.Ticks > 0 && LicencedHost.license_params["grace"] == "regular grace"; + return LicensedHost.license_params != null && LicensedHost.license_params.ContainsKey("grace") && LicenseExpiresIn.Ticks > 0 && LicensedHost.license_params["grace"] == "regular grace"; } } @@ -179,17 +191,10 @@ namespace XenAdmin.Dialogs { get { - return LicencedHost.license_params != null && LicencedHost.license_params.ContainsKey("grace") && LicenseExpiresIn.Ticks > 0 && LicencedHost.license_params["grace"] == "upgrade grace"; + return LicensedHost.license_params != null && LicensedHost.license_params.ContainsKey("grace") && LicenseExpiresIn.Ticks > 0 && LicensedHost.license_params["grace"] == "upgrade grace"; } } - protected virtual TimeSpan CalculateLicenceExpiresIn() - { - //ServerTime is UTC - DateTime currentRefTime = serverTime.ServerTime; - return LicencedHost.LicenseExpiryUTC().Subtract(currentRefTime); - } - internal static bool PoolIsMixedFreeAndExpiring(IXenObject xenObject) { if (xenObject is Pool) @@ -232,8 +237,7 @@ namespace XenAdmin.Dialogs internal static bool PoolHasMixedLicenses(IXenObject xenObject) { - var pool = xenObject as Pool; - if (pool != null) + if (xenObject is Pool pool) { if (xenObject.Connection.Cache.Hosts.Length == 1) return false; @@ -290,13 +294,13 @@ namespace XenAdmin.Dialogs } #region ILicenseStatus Members - public event StatusUpdatedEvent ItemUpdated + public event Action ItemUpdated { - add { Events.AddHandler(StatusUpdatedEventKey, value); } - remove { Events.RemoveHandler(StatusUpdatedEventKey, value); } + add => _events.AddHandler(StatusUpdatedEventKey, value); + remove => _events.RemoveHandler(StatusUpdatedEventKey, value); } - public Host.Edition LicenseEdition { get { return Host.GetEdition(LicencedHost.edition); } } + public Host.Edition LicenseEdition => Host.GetEdition(LicensedHost.edition); public HostState CurrentState { get; private set; } @@ -317,8 +321,8 @@ namespace XenAdmin.Dialogs { get { - if (LicencedHost.license_params != null && LicencedHost.license_params.ContainsKey("expiry")) - return LicencedHost.LicenseExpiryUTC().ToLocalTime(); + if (LicensedHost.license_params != null && LicensedHost.license_params.ContainsKey("expiry")) + return LicensedHost.LicenseExpiryUTC().ToLocalTime(); return null; } } @@ -371,13 +375,10 @@ namespace XenAdmin.Dialogs { if(disposing) { - if (serverTime != null) - serverTime.ServerTimeObtained -= ServerTimeUpdatedEventHandler; - if (XenObject != null && XenObject.Connection != null) XenObject.Connection.ConnectionStateChanged -= Connection_ConnectionStateChanged; - Events.Dispose(); + _events.Dispose(); } disposed = true; } diff --git a/XenAdmin/Dialogs/MessageBoxTest.Designer.cs b/XenAdmin/Dialogs/MessageBoxTest.Designer.cs deleted file mode 100644 index b9cbe4e67..000000000 --- a/XenAdmin/Dialogs/MessageBoxTest.Designer.cs +++ /dev/null @@ -1,206 +0,0 @@ -namespace XenAdmin.Dialogs -{ - partial class MessageBoxTest - { - /// - /// 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(MessageBoxTest)); - this.FormatBox = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.Parameter1Box = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.label4 = new System.Windows.Forms.Label(); - this.Parameter3Box = new System.Windows.Forms.TextBox(); - this.label5 = new System.Windows.Forms.Label(); - this.Parameter2Box = new System.Windows.Forms.TextBox(); - this.label6 = new System.Windows.Forms.Label(); - this.label7 = new System.Windows.Forms.Label(); - this.CloseButton = new System.Windows.Forms.Button(); - this.label8 = new System.Windows.Forms.Label(); - this.Button1Box = new System.Windows.Forms.TextBox(); - this.Button2Box = new System.Windows.Forms.TextBox(); - this.Button3Box = new System.Windows.Forms.TextBox(); - this.label9 = new System.Windows.Forms.Label(); - this.label10 = new System.Windows.Forms.Label(); - this.SuspendLayout(); - // - // FormatBox - // - this.FormatBox.AcceptsReturn = true; - resources.ApplyResources(this.FormatBox, "FormatBox"); - this.FormatBox.Name = "FormatBox"; - this.FormatBox.TextChanged += new System.EventHandler(this.textBox1_TextChanged); - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.Name = "label2"; - // - // Parameter1Box - // - resources.ApplyResources(this.Parameter1Box, "Parameter1Box"); - this.Parameter1Box.Name = "Parameter1Box"; - this.Parameter1Box.TextChanged += new System.EventHandler(this.textBox1_TextChanged); - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // label4 - // - resources.ApplyResources(this.label4, "label4"); - this.label4.Name = "label4"; - // - // Parameter3Box - // - resources.ApplyResources(this.Parameter3Box, "Parameter3Box"); - this.Parameter3Box.Name = "Parameter3Box"; - this.Parameter3Box.TextChanged += new System.EventHandler(this.textBox1_TextChanged); - // - // label5 - // - resources.ApplyResources(this.label5, "label5"); - this.label5.Name = "label5"; - // - // Parameter2Box - // - resources.ApplyResources(this.Parameter2Box, "Parameter2Box"); - this.Parameter2Box.Name = "Parameter2Box"; - this.Parameter2Box.TextChanged += new System.EventHandler(this.textBox1_TextChanged); - // - // label6 - // - resources.ApplyResources(this.label6, "label6"); - this.label6.Name = "label6"; - // - // label7 - // - resources.ApplyResources(this.label7, "label7"); - this.label7.Name = "label7"; - // - // CloseButton - // - resources.ApplyResources(this.CloseButton, "CloseButton"); - this.CloseButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.CloseButton.Name = "CloseButton"; - this.CloseButton.UseVisualStyleBackColor = true; - // - // label8 - // - resources.ApplyResources(this.label8, "label8"); - this.label8.Name = "label8"; - // - // Button1Box - // - resources.ApplyResources(this.Button1Box, "Button1Box"); - this.Button1Box.Name = "Button1Box"; - this.Button1Box.TextChanged += new System.EventHandler(this.textBox1_TextChanged); - // - // Button2Box - // - resources.ApplyResources(this.Button2Box, "Button2Box"); - this.Button2Box.Name = "Button2Box"; - this.Button2Box.TextChanged += new System.EventHandler(this.textBox1_TextChanged); - // - // Button3Box - // - resources.ApplyResources(this.Button3Box, "Button3Box"); - this.Button3Box.Name = "Button3Box"; - this.Button3Box.TextChanged += new System.EventHandler(this.textBox1_TextChanged); - // - // label9 - // - resources.ApplyResources(this.label9, "label9"); - this.label9.Name = "label9"; - // - // label10 - // - resources.ApplyResources(this.label10, "label10"); - this.label10.Name = "label10"; - // - // MessageBoxTest - // - this.AcceptButton = this.CloseButton; - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.CancelButton = this.CloseButton; - this.Controls.Add(this.label10); - this.Controls.Add(this.label9); - this.Controls.Add(this.Button3Box); - this.Controls.Add(this.Button2Box); - this.Controls.Add(this.Button1Box); - this.Controls.Add(this.label8); - this.Controls.Add(this.CloseButton); - this.Controls.Add(this.label7); - this.Controls.Add(this.label6); - this.Controls.Add(this.label5); - this.Controls.Add(this.Parameter2Box); - this.Controls.Add(this.label4); - this.Controls.Add(this.Parameter3Box); - this.Controls.Add(this.label3); - this.Controls.Add(this.Parameter1Box); - this.Controls.Add(this.label2); - this.Controls.Add(this.label1); - this.Controls.Add(this.FormatBox); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; - this.HelpButton = false; - this.Name = "MessageBoxTest"; - this.ShowInTaskbar = true; - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.TextBox FormatBox; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox Parameter1Box; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.TextBox Parameter3Box; - private System.Windows.Forms.Label label5; - private System.Windows.Forms.TextBox Parameter2Box; - private System.Windows.Forms.Label label6; - private System.Windows.Forms.Label label7; - private System.Windows.Forms.Button CloseButton; - private System.Windows.Forms.Label label8; - private System.Windows.Forms.TextBox Button1Box; - private System.Windows.Forms.TextBox Button2Box; - private System.Windows.Forms.TextBox Button3Box; - private System.Windows.Forms.Label label9; - private System.Windows.Forms.Label label10; - } -} \ No newline at end of file diff --git a/XenAdmin/Dialogs/MessageBoxTest.cs b/XenAdmin/Dialogs/MessageBoxTest.cs deleted file mode 100644 index 5fe99681c..000000000 --- a/XenAdmin/Dialogs/MessageBoxTest.cs +++ /dev/null @@ -1,128 +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.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; - -namespace XenAdmin.Dialogs -{ - public partial class MessageBoxTest : XenDialogBase - { - private readonly System.Threading.Timer timer; - private readonly List argBoxes = new List(); - - private ThreeButtonDialog tbd = null; - - public MessageBoxTest() - { - timer = new System.Threading.Timer(refreshTick, null, System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite); - - InitializeComponent(); - - argBoxes.Add(Parameter1Box); - argBoxes.Add(Parameter2Box); - argBoxes.Add(Parameter3Box); - - Button1Box.Text = "OK"; - Button2Box.Text = "Cancel"; - - textBox1_TextChanged(null, null); - } - - private void textBox1_TextChanged(object sender, EventArgs e) - { - timer.Change(500, System.Threading.Timeout.Infinite); - - Parameter1Box.Enabled = FormatBox.Text.Contains("{0}"); - Parameter2Box.Enabled = FormatBox.Text.Contains("{1}"); - Parameter3Box.Enabled = FormatBox.Text.Contains("{2}"); - } - - private void refreshTick(object state) - { - timer.Change(System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite); - Program.Invoke(this, refreshTick_); - } - - private void refreshTick_() - { - Point loc = tbd == null ? new Point(100, 100) : tbd.Location; - - List args = new List(); - foreach (TextBox tb in argBoxes) - { - if (tb.Enabled) - args.Add(tb.Text); - } - - string msg; - try - { - msg = string.Format(FormatBox.Text, args.ToArray()); - } - catch (FormatException) - { - msg = FormatBox.Text; - } - - bool two = Button3Box.Text == ""; - ThreeButtonDialog d; - if (two) - { - d = new ThreeButtonDialog( - new ThreeButtonDialog.Details(SystemIcons.Information, msg), - new ThreeButtonDialog.TBDButton(Button1Box.Text, DialogResult.OK, ThreeButtonDialog.ButtonType.ACCEPT), - new ThreeButtonDialog.TBDButton(Button2Box.Text, DialogResult.OK, ThreeButtonDialog.ButtonType.CANCEL)); - } - else - { - d = new ThreeButtonDialog( - new ThreeButtonDialog.Details(SystemIcons.Information, msg), - new ThreeButtonDialog.TBDButton(Button1Box.Text, DialogResult.OK, ThreeButtonDialog.ButtonType.NONE), - new ThreeButtonDialog.TBDButton(Button2Box.Text, DialogResult.OK, ThreeButtonDialog.ButtonType.ACCEPT), - new ThreeButtonDialog.TBDButton(Button3Box.Text, DialogResult.OK, ThreeButtonDialog.ButtonType.CANCEL)); - } - d.Show(); - d.Location = loc; - Focus(); - BringToFront(); - - if (tbd != null) - tbd.Close(); - tbd = d; - } - } -} \ No newline at end of file diff --git a/XenAdmin/Dialogs/MessageBoxTest.ja.resx b/XenAdmin/Dialogs/MessageBoxTest.ja.resx deleted file mode 100644 index 4da3a87b3..000000000 --- a/XenAdmin/Dialogs/MessageBoxTest.ja.resx +++ /dev/null @@ -1,702 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Top, Bottom, Left, Right - - - - Tahoma, 8pt - - - 107, 23 - - - - True - - - 498, 145 - - - 1 - - - FormatBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 17 - - - True - - - Tahoma, 8pt - - - 13, 26 - - - 89, 17 - - - 0 - - - Message format: - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 16 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 113, 173 - - - 135, 17 - - - 2 - - - 例: Your {0} has been {1}. - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 15 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 201 - - - 362, 19 - - - 4 - - - Parameter1Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 14 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 31, 204 - - - 71, 17 - - - 3 - - - Parameter 1: - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 13 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 31, 256 - - - 71, 17 - - - 9 - - - Parameter 3: - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 11 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 253 - - - 362, 19 - - - 10 - - - Parameter3Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 12 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 31, 230 - - - 71, 17 - - - 6 - - - Parameter 2: - - - label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 9 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 227 - - - 362, 19 - - - 7 - - - Parameter2Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 10 - - - Bottom, Right - - - True - - - Tahoma, 8pt - - - 475, 204 - - - 52, 17 - - - 5 - - - 例: noun - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 8 - - - Bottom, Right - - - True - - - Tahoma, 8pt - - - 475, 230 - - - 78, 17 - - - 8 - - - 例: verbalized - - - label7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 7 - - - Bottom, Right - - - Tahoma, 8pt - - - 530, 401 - - - 75, 23 - - - 17 - - - 閉じる - - - CloseButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 6 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 49, 294 - - - 52, 17 - - - 11 - - - Button 1: - - - label8 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 5 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 291 - - - 362, 19 - - - 12 - - - Button1Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 318 - - - 362, 19 - - - 14 - - - Button2Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 345 - - - 362, 19 - - - 16 - - - Button3Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 49, 324 - - - 52, 17 - - - 13 - - - Button 2: - - - label9 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 49, 351 - - - 52, 17 - - - 15 - - - Button 3: - - - label10 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - True - - - 51 - - - 96, 96 - - - 617, 436 - - - Tahoma, 8pt - - - 0, 0, 0, 0 - - - CenterScreen - - - Message Box Test - - - MessageBoxTest - - - XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - \ No newline at end of file diff --git a/XenAdmin/Dialogs/MessageBoxTest.resx b/XenAdmin/Dialogs/MessageBoxTest.resx deleted file mode 100644 index 41d7bc0e7..000000000 --- a/XenAdmin/Dialogs/MessageBoxTest.resx +++ /dev/null @@ -1,702 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Top, Bottom, Left, Right - - - - Tahoma, 8pt - - - 107, 23 - - - - True - - - 498, 145 - - - 1 - - - FormatBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 17 - - - True - - - Tahoma, 8pt - - - 13, 26 - - - 88, 13 - - - 0 - - - Message format: - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 16 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 113, 173 - - - 184, 13 - - - 2 - - - For example: Your {0} has been {1}. - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 15 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 201 - - - 362, 20 - - - 4 - - - Parameter1Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 14 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 31, 204 - - - 70, 13 - - - 3 - - - Parameter 1: - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 13 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 31, 256 - - - 70, 13 - - - 9 - - - Parameter 3: - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 11 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 253 - - - 362, 20 - - - 10 - - - Parameter3Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 12 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 31, 230 - - - 70, 13 - - - 6 - - - Parameter 2: - - - label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 9 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 227 - - - 362, 20 - - - 7 - - - Parameter2Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 10 - - - Bottom, Right - - - True - - - Tahoma, 8pt - - - 475, 204 - - - 97, 13 - - - 5 - - - For example: noun - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 8 - - - Bottom, Right - - - True - - - Tahoma, 8pt - - - 475, 230 - - - 122, 13 - - - 8 - - - For example: verbalized - - - label7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 7 - - - Bottom, Right - - - Tahoma, 8pt - - - 530, 401 - - - 75, 23 - - - 17 - - - Close - - - CloseButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 6 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 49, 294 - - - 52, 13 - - - 11 - - - Button 1: - - - label8 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 5 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 291 - - - 362, 20 - - - 12 - - - Button1Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 318 - - - 362, 20 - - - 14 - - - Button2Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 345 - - - 362, 20 - - - 16 - - - Button3Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 49, 324 - - - 52, 13 - - - 13 - - - Button 2: - - - label9 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 49, 351 - - - 52, 13 - - - 15 - - - Button 3: - - - label10 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - True - - - 51 - - - 96, 96 - - - 617, 436 - - - Tahoma, 8pt - - - 0, 0, 0, 0 - - - CenterScreen - - - Message Box Test - - - MessageBoxTest - - - XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - \ No newline at end of file diff --git a/XenAdmin/Dialogs/MessageBoxTest.zh-CN.resx b/XenAdmin/Dialogs/MessageBoxTest.zh-CN.resx deleted file mode 100644 index 16f64957a..000000000 --- a/XenAdmin/Dialogs/MessageBoxTest.zh-CN.resx +++ /dev/null @@ -1,702 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Top, Bottom, Left, Right - - - - Tahoma, 8pt - - - 107, 23 - - - - True - - - 498, 145 - - - 1 - - - FormatBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 17 - - - True - - - Tahoma, 8pt - - - 13, 26 - - - 85, 18 - - - 0 - - - Message format: - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 16 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 113, 173 - - - 184, 18 - - - 2 - - - For example: Your {0} has been {1}. - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 15 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 201 - - - 362, 20 - - - 4 - - - Parameter1Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 14 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 31, 204 - - - 67, 18 - - - 3 - - - Parameter 1: - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 13 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 31, 256 - - - 67, 18 - - - 9 - - - Parameter 3: - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 11 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 253 - - - 362, 20 - - - 10 - - - Parameter3Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 12 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 31, 230 - - - 67, 18 - - - 6 - - - Parameter 2: - - - label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 9 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 227 - - - 362, 20 - - - 7 - - - Parameter2Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 10 - - - Bottom, Right - - - True - - - Tahoma, 8pt - - - 475, 204 - - - 95, 18 - - - 5 - - - For example: noun - - - label6 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 8 - - - Bottom, Right - - - True - - - Tahoma, 8pt - - - 475, 230 - - - 120, 18 - - - 8 - - - For example: verbalized - - - label7 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 7 - - - Bottom, Right - - - Tahoma, 8pt - - - 530, 401 - - - 75, 23 - - - 17 - - - 关闭 - - - CloseButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 6 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 49, 294 - - - 49, 18 - - - 11 - - - Button 1: - - - label8 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 5 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 291 - - - 362, 20 - - - 12 - - - Button1Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 318 - - - 362, 20 - - - 14 - - - Button2Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - Bottom, Left, Right - - - Tahoma, 8pt - - - 107, 345 - - - 362, 20 - - - 16 - - - Button3Box - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 49, 324 - - - 49, 18 - - - 13 - - - Button 2: - - - label9 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - Bottom, Left - - - True - - - Tahoma, 8pt - - - 49, 351 - - - 49, 18 - - - 15 - - - Button 3: - - - label10 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - True - - - 51 - - - 96, 96 - - - 617, 436 - - - Tahoma, 8pt - - - 0, 0, 0, 0 - - - CenterScreen - - - Message Box Test - - - MessageBoxTest - - - XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - \ No newline at end of file diff --git a/XenAdmin/Dialogs/MoveVirtualDiskDialog.Designer.cs b/XenAdmin/Dialogs/MoveVirtualDiskDialog.Designer.cs index b21564ee8..92a204a3b 100644 --- a/XenAdmin/Dialogs/MoveVirtualDiskDialog.Designer.cs +++ b/XenAdmin/Dialogs/MoveVirtualDiskDialog.Designer.cs @@ -65,7 +65,7 @@ this.tableLayoutPanel2.SetColumnSpan(this.srPicker1, 2); this.srPicker1.Connection = null; this.srPicker1.Name = "srPicker1"; - this.srPicker1.SrSelectionChanged += new System.Action(this.srPicker1_SrSelectionChanged); + this.srPicker1.SelectedIndexChanged += new System.EventHandler(this.srPicker1_SelectedIndexChanged); this.srPicker1.DoubleClickOnRow += new System.EventHandler(this.srPicker1_DoubleClickOnRow); // // tableLayoutPanel2 diff --git a/XenAdmin/Dialogs/MoveVirtualDiskDialog.cs b/XenAdmin/Dialogs/MoveVirtualDiskDialog.cs index c9aca3bec..391232bac 100644 --- a/XenAdmin/Dialogs/MoveVirtualDiskDialog.cs +++ b/XenAdmin/Dialogs/MoveVirtualDiskDialog.cs @@ -84,7 +84,7 @@ namespace XenAdmin.Dialogs get { return SrPicker.SRPickerType.MoveOrCopy; } } - private void srPicker1_SrSelectionChanged(object obj) + private void srPicker1_SelectedIndexChanged(object sender, EventArgs e) { updateButtons(); } diff --git a/XenAdmin/Dialogs/Network/CertificateChangedDialog.cs b/XenAdmin/Dialogs/Network/CertificateChangedDialog.cs index d05e2a433..10e4a23ee 100644 --- a/XenAdmin/Dialogs/Network/CertificateChangedDialog.cs +++ b/XenAdmin/Dialogs/Network/CertificateChangedDialog.cs @@ -46,7 +46,7 @@ namespace XenAdmin.Dialogs.Network public CertificateChangedDialog(X509Certificate certificate, string hostname) { InitializeComponent(); - AlwaysIgnoreCheckBox.Enabled = Registry.AlwaysShowSSLCertificates == SSLCertificateTypes.None; + AlwaysIgnoreCheckBox.Enabled = Registry.SSLCertificateTypes == SSLCertificateTypes.None; NewCertificate = certificate; _hostname = hostname; diff --git a/XenAdmin/Dialogs/Network/UnknownCertificateDialog.cs b/XenAdmin/Dialogs/Network/UnknownCertificateDialog.cs index 0685e953f..7800a9506 100644 --- a/XenAdmin/Dialogs/Network/UnknownCertificateDialog.cs +++ b/XenAdmin/Dialogs/Network/UnknownCertificateDialog.cs @@ -46,7 +46,7 @@ namespace XenAdmin.Dialogs.Network public UnknownCertificateDialog(X509Certificate certificate,string hostname) { InitializeComponent(); - AutoAcceptCheckBox.Enabled = Registry.AlwaysShowSSLCertificates != SSLCertificateTypes.All; + AutoAcceptCheckBox.Enabled = Registry.SSLCertificateTypes != SSLCertificateTypes.All; _hostname = hostname; Certificate = certificate; diff --git a/XenAdmin/Dialogs/NetworkingProperties.cs b/XenAdmin/Dialogs/NetworkingProperties.cs index 01c152ac5..242d372a7 100644 --- a/XenAdmin/Dialogs/NetworkingProperties.cs +++ b/XenAdmin/Dialogs/NetworkingProperties.cs @@ -60,11 +60,12 @@ namespace XenAdmin.Dialogs InitializeComponent(); } - public NetworkingProperties(Host host,PIF selectedPIF):this() + public NetworkingProperties(Host host, PIF selectedPIF) + :base(host.Connection) { + InitializeComponent(); Host = host; Pool = null; - connection = host.Connection; ObjectName = Helpers.GetName(host); AllowManagementOnVLAN = !Helpers.FeatureForbidden(connection, Host.RestrictManagementOnVLAN); @@ -75,10 +76,11 @@ namespace XenAdmin.Dialogs - public NetworkingProperties(Pool pool,PIF selectedPIF):this() + public NetworkingProperties(Pool pool, PIF selectedPIF) + : base(pool.Connection) { + InitializeComponent(); Pool = pool; - connection = pool.Connection; ObjectName = Helpers.GetName(Pool); AllowManagementOnVLAN = !Helpers.FeatureForbidden(connection, Host.RestrictManagementOnVLAN); diff --git a/XenAdmin/Dialogs/NewCustomFieldDialog.cs b/XenAdmin/Dialogs/NewCustomFieldDialog.cs index b91bdbb06..9a4e4a507 100644 --- a/XenAdmin/Dialogs/NewCustomFieldDialog.cs +++ b/XenAdmin/Dialogs/NewCustomFieldDialog.cs @@ -30,27 +30,18 @@ */ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; - -using XenAdmin.Core; using XenAdmin.CustomFields; -using XenAdmin.SettingsPanels; -using XenAdmin.XenSearch; using XenAdmin.Network; namespace XenAdmin.Dialogs { public partial class NewCustomFieldDialog : XenDialogBase { - public NewCustomFieldDialog(IXenConnection c) + public NewCustomFieldDialog(IXenConnection conn) + :base(conn) { InitializeComponent(); - this.connection = c; + okButton.Enabled = !string.IsNullOrEmpty(NameTextBox.Text); TypeComboBox.SelectedIndex = 0; } diff --git a/XenAdmin/Dialogs/NewDiskDialog.Designer.cs b/XenAdmin/Dialogs/NewDiskDialog.Designer.cs index 1869a0453..e3893c61a 100644 --- a/XenAdmin/Dialogs/NewDiskDialog.Designer.cs +++ b/XenAdmin/Dialogs/NewDiskDialog.Designer.cs @@ -29,7 +29,6 @@ namespace XenAdmin.Dialogs private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NewDiskDialog)); - this.DiskSizeNumericUpDown = new System.Windows.Forms.NumericUpDown(); this.SrListBox = new XenAdmin.Controls.SrPicker(); this.CloseButton = new System.Windows.Forms.Button(); this.OkButton = new System.Windows.Forms.Button(); @@ -39,44 +38,25 @@ namespace XenAdmin.Dialogs this.label3 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.tableLayoutPanelError = new System.Windows.Forms.TableLayoutPanel(); - this.labelError = new System.Windows.Forms.Label(); - this.pictureBoxError = new System.Windows.Forms.PictureBox(); - this.comboBoxUnits = new System.Windows.Forms.ComboBox(); this.label4 = new System.Windows.Forms.Label(); this.label6 = new System.Windows.Forms.Label(); - ((System.ComponentModel.ISupportInitialize)(this.DiskSizeNumericUpDown)).BeginInit(); + this.diskSpinner1 = new XenAdmin.Controls.DiskSpinner(); this.tableLayoutPanel1.SuspendLayout(); - this.tableLayoutPanelError.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxError)).BeginInit(); this.SuspendLayout(); // - // DiskSizeNumericUpDown - // - resources.ApplyResources(this.DiskSizeNumericUpDown, "DiskSizeNumericUpDown"); - this.DiskSizeNumericUpDown.Maximum = new decimal(new int[] { - 1000000000, - 0, - 0, - 0}); - this.DiskSizeNumericUpDown.Name = "DiskSizeNumericUpDown"; - this.DiskSizeNumericUpDown.Value = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.DiskSizeNumericUpDown.TextChanged += new System.EventHandler(this.DiskSizeNumericUpDown_TextChanged); - this.DiskSizeNumericUpDown.ValueChanged += new System.EventHandler(this.DiskSizeNumericUpDown_ValueChanged); - this.DiskSizeNumericUpDown.KeyUp += new System.Windows.Forms.KeyEventHandler(this.DiskSizeNumericUpDown_KeyUp); - // // SrListBox // - this.tableLayoutPanel1.SetColumnSpan(this.SrListBox, 4); + this.tableLayoutPanel1.SetColumnSpan(this.SrListBox, 3); this.SrListBox.Connection = null; resources.ApplyResources(this.SrListBox, "SrListBox"); this.SrListBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; this.SrListBox.Name = "SrListBox"; - this.SrListBox.SrSelectionChanged += new System.Action(this.SrListBox_SrSelectionChanged); + this.SrListBox.NodeIndent = 3; + this.SrListBox.RootAlwaysExpanded = false; + this.SrListBox.ShowCheckboxes = false; + this.SrListBox.ShowDescription = true; + this.SrListBox.ShowImages = true; + this.SrListBox.ShowRootLines = true; this.SrListBox.SelectedIndexChanged += new System.EventHandler(this.srListBox_SelectedIndexChanged); // // CloseButton @@ -97,7 +77,7 @@ namespace XenAdmin.Dialogs // // NameTextBox // - this.tableLayoutPanel1.SetColumnSpan(this.NameTextBox, 4); + this.tableLayoutPanel1.SetColumnSpan(this.NameTextBox, 3); resources.ApplyResources(this.NameTextBox, "NameTextBox"); this.NameTextBox.Name = "NameTextBox"; this.NameTextBox.TextChanged += new System.EventHandler(this.NameTextBox_TextChanged); @@ -109,7 +89,7 @@ namespace XenAdmin.Dialogs // // DescriptionTextBox // - this.tableLayoutPanel1.SetColumnSpan(this.DescriptionTextBox, 4); + this.tableLayoutPanel1.SetColumnSpan(this.DescriptionTextBox, 3); resources.ApplyResources(this.DescriptionTextBox, "DescriptionTextBox"); this.DescriptionTextBox.Name = "DescriptionTextBox"; this.DescriptionTextBox.TextChanged += new System.EventHandler(this.NameTextBox_TextChanged); @@ -127,52 +107,19 @@ namespace XenAdmin.Dialogs // tableLayoutPanel1 // resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); - this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanelError, 3, 4); - this.tableLayoutPanel1.Controls.Add(this.comboBoxUnits, 2, 4); - this.tableLayoutPanel1.Controls.Add(this.CloseButton, 4, 9); + this.tableLayoutPanel1.Controls.Add(this.CloseButton, 3, 6); this.tableLayoutPanel1.Controls.Add(this.label2, 0, 2); this.tableLayoutPanel1.Controls.Add(this.label1, 0, 4); this.tableLayoutPanel1.Controls.Add(this.NameTextBox, 1, 2); this.tableLayoutPanel1.Controls.Add(this.DescriptionTextBox, 1, 3); this.tableLayoutPanel1.Controls.Add(this.SrListBox, 1, 5); this.tableLayoutPanel1.Controls.Add(this.label3, 0, 3); - this.tableLayoutPanel1.Controls.Add(this.DiskSizeNumericUpDown, 1, 4); this.tableLayoutPanel1.Controls.Add(this.label4, 0, 5); this.tableLayoutPanel1.Controls.Add(this.label6, 0, 1); - this.tableLayoutPanel1.Controls.Add(this.OkButton, 3, 9); + this.tableLayoutPanel1.Controls.Add(this.OkButton, 2, 6); + this.tableLayoutPanel1.Controls.Add(this.diskSpinner1, 1, 4); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; // - // tableLayoutPanelError - // - resources.ApplyResources(this.tableLayoutPanelError, "tableLayoutPanelError"); - this.tableLayoutPanel1.SetColumnSpan(this.tableLayoutPanelError, 2); - this.tableLayoutPanelError.Controls.Add(this.labelError, 1, 0); - this.tableLayoutPanelError.Controls.Add(this.pictureBoxError, 0, 0); - this.tableLayoutPanelError.Name = "tableLayoutPanelError"; - // - // labelError - // - resources.ApplyResources(this.labelError, "labelError"); - this.labelError.ForeColor = System.Drawing.Color.Red; - this.labelError.Name = "labelError"; - // - // pictureBoxError - // - resources.ApplyResources(this.pictureBoxError, "pictureBoxError"); - this.pictureBoxError.Name = "pictureBoxError"; - this.pictureBoxError.TabStop = false; - // - // comboBoxUnits - // - this.comboBoxUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - resources.ApplyResources(this.comboBoxUnits, "comboBoxUnits"); - this.comboBoxUnits.FormattingEnabled = true; - this.comboBoxUnits.Items.AddRange(new object[] { - resources.GetString("comboBoxUnits.Items"), - resources.GetString("comboBoxUnits.Items1")}); - this.comboBoxUnits.Name = "comboBoxUnits"; - this.comboBoxUnits.SelectedIndexChanged += new System.EventHandler(this.comboBoxUnits_SelectedIndexChanged); - // // label4 // resources.ApplyResources(this.label4, "label4"); @@ -181,9 +128,16 @@ namespace XenAdmin.Dialogs // label6 // resources.ApplyResources(this.label6, "label6"); - this.tableLayoutPanel1.SetColumnSpan(this.label6, 5); + this.tableLayoutPanel1.SetColumnSpan(this.label6, 4); this.label6.Name = "label6"; // + // diskSpinner1 + // + resources.ApplyResources(this.diskSpinner1, "diskSpinner1"); + this.tableLayoutPanel1.SetColumnSpan(this.diskSpinner1, 3); + this.diskSpinner1.Name = "diskSpinner1"; + this.diskSpinner1.SelectedSizeChanged += new System.Action(this.diskSpinner1_SelectedSizeChanged); + // // NewDiskDialog // this.AcceptButton = this.OkButton; @@ -192,12 +146,8 @@ namespace XenAdmin.Dialogs this.Controls.Add(this.tableLayoutPanel1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; this.Name = "NewDiskDialog"; - ((System.ComponentModel.ISupportInitialize)(this.DiskSizeNumericUpDown)).EndInit(); this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); - this.tableLayoutPanelError.ResumeLayout(false); - this.tableLayoutPanelError.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxError)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -208,7 +158,6 @@ namespace XenAdmin.Dialogs private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label1; - private System.Windows.Forms.NumericUpDown DiskSizeNumericUpDown; private XenAdmin.Controls.SrPicker SrListBox; private System.Windows.Forms.Button CloseButton; private System.Windows.Forms.Button OkButton; @@ -217,10 +166,6 @@ namespace XenAdmin.Dialogs private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label6; - private System.Windows.Forms.ComboBox comboBoxUnits; - private System.Windows.Forms.Label labelError; - private System.Windows.Forms.PictureBox pictureBoxError; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanelError; - + private Controls.DiskSpinner diskSpinner1; } } diff --git a/XenAdmin/Dialogs/NewDiskDialog.cs b/XenAdmin/Dialogs/NewDiskDialog.cs index 23bf5f09d..57650c009 100644 --- a/XenAdmin/Dialogs/NewDiskDialog.cs +++ b/XenAdmin/Dialogs/NewDiskDialog.cs @@ -45,74 +45,44 @@ namespace XenAdmin.Dialogs { public partial class NewDiskDialog : XenDialogBase { - private enum DiskSizeUnits { MB, GB } - #region Private fields private readonly VM TheVM; - private readonly SR TheSR; - private VDI DiskTemplate; - private bool CanResize; - private long MinSize; - private decimal min; - private decimal max; - - private bool SelectionNull = true; private readonly IEnumerable _VDINamesInUse = new List(); - private const int DecimalPlacesGB = 3; // show 3 decimal places for GB (CA-91322) - private const int DecimalPlacesMB = 0; - private const int IncrementGB = 1; - private const int IncrementMB = 256; - - private const decimal MinimumDiskSizeGB = 0.001m; - private const int MinimumDiskSizeMB = 1; - private DiskSizeUnits currentSelectedUnits = DiskSizeUnits.GB; - #endregion #region Constructors - private NewDiskDialog(IXenConnection connection, IEnumerable vdiNamesInUse) - : base(connection) - { - if (connection == null) - throw new ArgumentNullException("connection"); - - InitializeComponent(); - - _VDINamesInUse = vdiNamesInUse; - SrListBox.Connection = connection; - NameTextBox.Text = GetDefaultVDIName(); - max = (decimal)Math.Pow(1024, 4);//1 Petabit - min = 0; - comboBoxUnits.SelectedItem = comboBoxUnits.Items[0]; - SetNumUpDownIncrementAndDecimals(DiskSizeNumericUpDown, comboBoxUnits.SelectedItem.ToString()); - updateErrorsAndButtons(); - } - public NewDiskDialog(IXenConnection connection, SR sr) - : this(connection, new List()) + : base(connection ?? throw new ArgumentNullException(nameof(connection))) { - TheSR = sr; + InitializeComponent(); + + NameTextBox.Text = GetDefaultVDIName(); + SrListBox.Connection = connection; SrListBox.Usage = SrPicker.SRPickerType.InstallFromTemplate; SrListBox.SetAffinity(null); - SrListBox.selectSRorNone(TheSR); + SrListBox.selectSRorNone(sr); + diskSpinner1.Populate(); } public NewDiskDialog(IXenConnection connection, VM vm) - : this(connection, vm, SrPicker.SRPickerType.VM, null, vm.Home(), true, 0, new List()) + : this(connection, vm, vm.Home()) { } - public NewDiskDialog(IXenConnection connection, VM vm, SrPicker.SRPickerType pickerUsage, VDI diskTemplate, - Host affinity, bool canResize, long minSize, IEnumerable vdiNamesInUse) - : this(connection, vdiNamesInUse) + public NewDiskDialog(IXenConnection connection, VM vm, Host affinity, + SrPicker.SRPickerType pickerUsage = SrPicker.SRPickerType.VM, VDI diskTemplate = null, + bool canResize = true, long minSize = 0, IEnumerable vdiNamesInUse = null) + : base(connection ?? throw new ArgumentNullException(nameof(connection))) { + InitializeComponent(); + TheVM = vm; - DiskTemplate = diskTemplate; - CanResize = canResize; - MinSize = minSize; + _VDINamesInUse = vdiNamesInUse ?? new List(); + + SrListBox.Connection = connection; SrListBox.Usage = pickerUsage; SrListBox.SetAffinity(affinity); @@ -121,37 +91,32 @@ namespace XenAdmin.Dialogs { SrListBox.DefaultSR = connection.Resolve(pool_sr.default_SR); //if default sr resolves to null the first sr in the list will be selected } - SrListBox.selectDefaultSROrAny(); - LoadValues(); + if (diskTemplate == null) + { + NameTextBox.Text = GetDefaultVDIName(); + SrListBox.selectDefaultSROrAny(); + diskSpinner1.Populate(minSize: minSize); + } + else + { + DiskTemplate = diskTemplate; + NameTextBox.Text = DiskTemplate.Name(); + DescriptionTextBox.Text = DiskTemplate.Description(); + SrListBox.selectSRorDefaultorAny(connection.Resolve(DiskTemplate.SR)); + Text = Messages.EDIT_DISK; + OkButton.Text = Messages.OK; + diskSpinner1.Populate(DiskTemplate.virtual_size, minSize); + } + + diskSpinner1.CanResize = canResize; } #endregion - private void LoadValues() - { - if (DiskTemplate == null) - return; + public bool DontCreateVDI { get; set; } - NameTextBox.Text = DiskTemplate.Name(); - DescriptionTextBox.Text = DiskTemplate.Description(); - SrListBox.selectSRorDefaultorAny(connection.Resolve(DiskTemplate.SR)); - - // select the appropriate unit, based on size (CA-45905) - currentSelectedUnits = DiskTemplate.virtual_size >= Util.BINARY_GIGA ? DiskSizeUnits.GB : DiskSizeUnits.MB; - SelectedUnits = currentSelectedUnits; - SetNumUpDownIncrementAndDecimals(DiskSizeNumericUpDown, SelectedUnits.ToString()); - decimal newValue = (decimal)Math.Round((double)DiskTemplate.virtual_size / GetUnits(), DiskSizeNumericUpDown.DecimalPlaces); - DiskSizeNumericUpDown.Value = newValue >= DiskSizeNumericUpDown.Minimum && newValue <= DiskSizeNumericUpDown.Maximum ? - newValue : DiskSizeNumericUpDown.Maximum; - - if (MinSize > 0) - min = (decimal)((double)MinSize / GetUnits()); - DiskSizeNumericUpDown.Enabled = CanResize; - - Text = Messages.EDIT_DISK; - OkButton.Text = Messages.OK; - } + internal override string HelpName => DiskTemplate == null ? "NewDiskDialog" : "EditNewDiskDialog"; private string GetDefaultVDIName() { @@ -163,21 +128,14 @@ namespace XenAdmin.Dialogs return Helpers.MakeUniqueName(Messages.DEFAULT_VDI_NAME, usedNames); } - private void SrListBox_SrSelectionChanged(object obj) - { - SelectionNull = obj == null; - } - private void srListBox_SelectedIndexChanged(object sender, EventArgs e) { - updateErrorsAndButtons(); + UpdateErrorsAndButtons(); } private void OkButton_Click(object sender, EventArgs e) { - - - if (SrListBox.SR == null || SelectionNull || NameTextBox.Text == "" || !connection.IsConnected) + if (SrListBox.SR == null || NameTextBox.Text == "" || !connection.IsConnected) return; if (DontCreateVDI) @@ -231,17 +189,22 @@ namespace XenAdmin.Dialogs vbd.userdevice = ud; // Now try to plug the VBD. - new XenAdmin.Actions.VbdSaveAndPlugAction(TheVM, vbd, vdi.Name(), session, false, ShowMustRebootBoxCD, ShowVBDWarningBox).RunAsync(); + var plugAction = new VbdSaveAndPlugAction(TheVM, vbd, vdi.Name(), session, false); + plugAction.ShowUserInstruction += PlugAction_ShowUserInstruction; + plugAction.RunAsync(); }); + action.VM = TheVM; - new Dialogs.ActionProgressDialog(action, ProgressBarStyle.Blocks).ShowDialog(); + using (var dialog = new ActionProgressDialog(action, ProgressBarStyle.Blocks)) + dialog.ShowDialog(); if (!action.Succeeded) return; } else { CreateDiskAction action = new CreateDiskAction(vdi); - new Dialogs.ActionProgressDialog(action, ProgressBarStyle.Marquee).ShowDialog(); + using (var dialog = new ActionProgressDialog(action, ProgressBarStyle.Marquee)) + dialog.ShowDialog(); if (!action.Succeeded) return; } @@ -249,6 +212,21 @@ namespace XenAdmin.Dialogs Close(); } + private void PlugAction_ShowUserInstruction(string message) + { + Program.Invoke(Program.MainWindow, () => + { + if (!Program.RunInAutomatedTestMode) + { + using (var dlg = new ThreeButtonDialog( + new ThreeButtonDialog.Details(SystemIcons.Information, message))) + { + dlg.ShowDialog(Program.MainWindow); + } + } + }); + } + private static bool HasBootableDisk(VM vm) { var c = vm.Connection; @@ -275,20 +253,6 @@ namespace XenAdmin.Dialogs return false; } - private void SetNumUpDownIncrementAndDecimals(NumericUpDown upDown, string units) - { - if (units == Messages.VAL_GIGB) - { - upDown.DecimalPlaces = DecimalPlacesGB; - upDown.Increment = IncrementGB; - } - else - { - upDown.DecimalPlaces = DecimalPlacesMB; - upDown.Increment = IncrementMB; - } - } - public VDI NewDisk() { VDI vdi = new VDI(); @@ -296,7 +260,7 @@ namespace XenAdmin.Dialogs vdi.read_only = DiskTemplate != null ? DiskTemplate.read_only : false; vdi.SR = new XenAPI.XenRef(SrListBox.SR); - vdi.virtual_size = Convert.ToInt64(DiskSizeNumericUpDown.Value * GetUnits()); + vdi.virtual_size = diskSpinner1.SelectedSize; vdi.name_label = NameTextBox.Text; vdi.name_description = DescriptionTextBox.Text; vdi.sharable = DiskTemplate != null ? DiskTemplate.sharable : false; @@ -305,11 +269,6 @@ namespace XenAdmin.Dialogs return vdi; } - private long GetUnits() - { - return (SelectedUnits == DiskSizeUnits.GB ? Util.BINARY_GIGA : Util.BINARY_MEGA); - } - public VBD NewDevice() { @@ -327,101 +286,51 @@ namespace XenAdmin.Dialogs private void NameTextBox_TextChanged(object sender, EventArgs e) { - updateErrorsAndButtons(); + UpdateErrorsAndButtons(); } - private DiskSizeUnits SelectedUnits + private void diskSpinner1_SelectedSizeChanged() { - get { return comboBoxUnits.SelectedIndex == 0 ? DiskSizeUnits.GB : DiskSizeUnits.MB; } - set { comboBoxUnits.SelectedIndex = value == DiskSizeUnits.GB ? 0 : 1; } + UpdateErrorsAndButtons(); } - private decimal GetDiskTooSmallMessageMinSize() - { - return min == 0 ? SelectedUnits == DiskSizeUnits.GB ? MinimumDiskSizeGB : MinimumDiskSizeMB : min; - } - - private void updateErrorsAndButtons() + private void UpdateErrorsAndButtons() { // Ordering is important here, we want to show the most relevant message + // The error should be shown only for size errors - if (comboBoxUnits.SelectedItem == null) + if (!diskSpinner1.IsSizeValid) + { + OkButton.Enabled = false; return; + } - if (!SrListBox.ValidSelectionExists) + SrListBox.DiskSize = diskSpinner1.SelectedSize; + SrListBox.UpdateDiskSize(); + + if (!SrListBox.ValidSelectionExists)//all SRs disabled { OkButton.Enabled = false; - setError(Messages.NO_VALID_DISK_LOCATION); + diskSpinner1.SetError(Messages.NO_VALID_DISK_LOCATION); return; } - if (SelectionNull) + + if (SrListBox.SR == null) //enabled SR exists but the user selects a disabled one { OkButton.Enabled = false; - // shouldn't happen I think, previous if block should catch this, just to be safe - setError(null); - return; - } - if (DiskSizeNumericUpDown.Text.Trim() == string.Empty) - { - OkButton.Enabled = false; - // too minor for scary error to be displayed, plus it's obvious as they have to - // delete the default entry and can see the OK button disable as they do so - setError(null); - return; - } - if (!DiskSizeValidNumber()) - { - OkButton.Enabled = false; - setError(Messages.INVALID_NUMBER); - return; - } - if (!DiskSizeValid()) - { - OkButton.Enabled = false; - setError(string.Format(Messages.DISK_TOO_SMALL, GetDiskTooSmallMessageMinSize(), - comboBoxUnits.SelectedItem.ToString())); + diskSpinner1.SetError(null); return; } + if (string.IsNullOrEmpty(NameTextBox.Text.Trim())) { OkButton.Enabled = false; - // too minor for scary error to be displayed, plus it's obvious as they have to - // delete the default entry and can see the OK button disable as they do so - setError(null); + diskSpinner1.SetError(null); return; } OkButton.Enabled = true; - setError(null); - } - - private void setError(string error) - { - if (string.IsNullOrEmpty(error)) - tableLayoutPanelError.Visible = false; - else - { - tableLayoutPanelError.Visible = true; - labelError.Text = error; - } - } - - private bool DiskSizeValidNumber() - { - decimal val; - return decimal.TryParse(DiskSizeNumericUpDown.Text.Trim(), out val); - } - - private bool DiskSizeValid() - { - decimal val; - if (decimal.TryParse(DiskSizeNumericUpDown.Text.Trim(), out val)) - { - if (min == 0) - return val > min && val <= max; - return val >= min && val <= max; - } - return false; + diskSpinner1.SetError(null); } private void CloseButton_Click(object sender, EventArgs e) @@ -429,111 +338,5 @@ namespace XenAdmin.Dialogs DialogResult = DialogResult.Cancel; Close(); } - - public bool DontCreateVDI { get; set; } - - private void DiskSizeNumericUpDown_ValueChanged(object sender, EventArgs e) - { - UpdateDiskSize(); - } - - private void DiskSizeNumericUpDown_TextChanged(object sender, EventArgs e) - { - UpdateDiskSize(); - } - - private void DiskSizeNumericUpDown_KeyUp(object sender, KeyEventArgs e) - { - UpdateDiskSize(); - } - - private void UpdateDiskSize() - { - // Don't use DiskSizeNumericUpDown.Value here, as it will fire the NumericUpDown built-in validation. Use Text property instead. (CA-46028) - decimal newValue; - if (decimal.TryParse(DiskSizeNumericUpDown.Text.Trim(), out newValue)) - { - try - { - SrListBox.DiskSize = (long)(Math.Round(newValue * GetUnits())); - } - catch (OverflowException) - { - //CA-71312 - SrListBox.DiskSize = newValue < 0 ? long.MinValue : long.MaxValue; - } - SrListBox.UpdateDiskSize(); - } - RefreshMinSize(); - updateErrorsAndButtons(); - } - - private void RefreshMinSize() - { - if (DiskTemplate == null) - return; - if (MinSize > 0) - min = (decimal)((double)MinSize / GetUnits()); - } - - private void comboBoxUnits_SelectedIndexChanged(object sender, EventArgs e) - { - //Check if the new unit is different than the previous one otherwise discard the change - if (currentSelectedUnits != SelectedUnits) - { - currentSelectedUnits = SelectedUnits; - //Convert the current value to the new units - decimal newValue = (decimal)Math.Round(SelectedUnits == DiskSizeUnits.GB ? ((double)DiskSizeNumericUpDown.Value / 1024) : ((double)DiskSizeNumericUpDown.Value * 1024), DiskSizeNumericUpDown.DecimalPlaces); - DiskSizeNumericUpDown.Value = newValue >= DiskSizeNumericUpDown.Minimum && newValue <= DiskSizeNumericUpDown.Maximum ? - newValue : DiskSizeNumericUpDown.Maximum; - SetNumUpDownIncrementAndDecimals(DiskSizeNumericUpDown, comboBoxUnits.SelectedItem.ToString()); - UpdateDiskSize(); - } - } - - internal override string HelpName - { - get - { - if (DiskTemplate != null) - return "EditNewDiskDialog"; - else - return "NewDiskDialog"; - } - } - - public static void ShowVBDWarningBox() - { - Program.Invoke(Program.MainWindow, () => - { - if (!Program.RunInAutomatedTestMode) - { - using (var dlg = new ThreeButtonDialog( - new ThreeButtonDialog.Details(SystemIcons.Information, - Messages.NEWDISKWIZARD_MESSAGE, - Messages.NEWDISKWIZARD_MESSAGE_TITLE))) - { - dlg.ShowDialog(Program.MainWindow); - } - } - }); - } - - public static void ShowMustRebootBoxCD() - { - Program.Invoke(Program.MainWindow, () => - { - if (!Program.RunInAutomatedTestMode) - { - new ThreeButtonDialog( - new ThreeButtonDialog.Details(SystemIcons.Information, - Messages. - NEW_DVD_DRIVE_REBOOT, - Messages. - NEW_DVD_DRIVE_CREATED)) - .ShowDialog(Program.MainWindow); - } - }); - } } } diff --git a/XenAdmin/Dialogs/NewDiskDialog.ja.resx b/XenAdmin/Dialogs/NewDiskDialog.ja.resx index 0d2f00b29..d605cb71a 100644 --- a/XenAdmin/Dialogs/NewDiskDialog.ja.resx +++ b/XenAdmin/Dialogs/NewDiskDialog.ja.resx @@ -117,197 +117,21 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Segoe UI, 9pt - - - 73, 147 - - - 105, 23 - - - 5 - - - - Right - - - DiskSizeNumericUpDown - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 9 - True + GrowAndShrink - 5 - - - True - - - GrowAndShrink - - - 2 - - - Left - - - True - - - Segoe UI, 9pt - - - NoControl - - - 25, 4 - - - 276, 15 - - - 0 - - - このディスクをサポートできる場所がありません - - - labelError - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelError - - - 0 - - - Segoe UI, 9pt - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAelJREFUOE+V - k11P1EAUhqftirf+lI3o/+hf4kYSLgjKBVy5K6KwREhBdgOExEJCMBjMGgFR+SgECBpZFwhEkOTwnOl0 - U+CKkzzp1zzvnGmn5nZ1FEwIEcgt9F7oht0tHj6CuC/wZMkrSMM8lGNomDbZgznu9fJMx+hYp6Xl5Pqs - X5BzpFNowh/EQxewYx7IJoz6gYbUb4RwEat8lpv1NxzALmwj/oR1WIGK79tOMjnUtnXWv/CvPCBXyY78 - Kj5tzZoUn8gl9xrlV/LZFGQJutPlhBoQLbK+Izerylr/m03ZRNyGK861znlWRV4wgVQ820WkAbKPmK31 - AEFlLT1m8iXH6WK7jCB/gGlQ1wZka92iXV3rj1yIlspTxcfyFmkKZqBmbAdpQIK0Ad9h1Qa0t2bW0oAq - ATUb4MskRPmANaRv8JX1redkFZXsPCZkAnEMKrmAqOYF8gV5GS6SpCVMIryHCxdyykscsrIn/Z79CvYl - hj18kk/IH+EoGpczBk4glmhZW53l/ITgtXJZniO/hs7Abu90a3MSD7I55hH0DQ9DybWqAe9ApR54oUc/ - 3dJW1uLCbuUSIfp5qgjjLmAEYQg0oATdvp355lbWciFxF629ZH36koYR3jixl3vP0rbv/kz54uE9fmdj - rgGIa8PaA/xpMAAAAABJRU5ErkJggg== - - - - NoControl - - - 3, 3 - - - 16, 16 - - - 2 - - - pictureBoxError - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelError - - - 1 - - - Fill - - - Segoe UI, 9pt - - - 245, 144 - - - 1 - - - 379, 23 - - - 8 - - - tableLayoutPanelError - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelError" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> - - - Segoe UI, 9pt - - - GB - - - MB - - - 190, 144 - - - 49, 23 - - - 7 - - - comboBoxUnits - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 1 + 4 Bottom, Right + Segoe UI, 9pt @@ -333,7 +157,7 @@ tableLayoutPanel1 - 2 + 0 True @@ -366,7 +190,7 @@ tableLayoutPanel1 - 3 + 1 True @@ -402,7 +226,7 @@ tableLayoutPanel1 - 4 + 2 Fill @@ -432,7 +256,7 @@ tableLayoutPanel1 - 5 + 3 Fill @@ -465,7 +289,7 @@ tableLayoutPanel1 - 6 + 4 True @@ -498,7 +322,7 @@ tableLayoutPanel1 - 8 + 6 True @@ -531,7 +355,7 @@ tableLayoutPanel1 - 10 + 7 True @@ -567,7 +391,7 @@ tableLayoutPanel1 - 11 + 8 Bottom, Right @@ -597,7 +421,43 @@ tableLayoutPanel1 - 12 + 9 + + + True + + + GrowAndShrink + + + Fill + + + Segoe UI, 9pt + + + 76, 141 + + + 0, 0, 0, 0 + + + 551, 29 + + + 6 + + + diskSpinner1 + + + XenAdmin.Controls.DiskSpinner, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 10 Fill @@ -630,7 +490,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanelError" Row="4" RowSpan="1" Column="3" ColumnSpan="2" /><Control Name="comboBoxUnits" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="CloseButton" Row="9" RowSpan="1" Column="4" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="NameTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="4" /><Control Name="DescriptionTextBox" Row="3" RowSpan="1" Column="1" ColumnSpan="4" /><Control Name="SrListBox" Row="5" RowSpan="1" Column="1" ColumnSpan="4" /><Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="DiskSizeNumericUpDown" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label4" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label6" Row="1" RowSpan="1" Column="0" ColumnSpan="5" /><Control Name="OkButton" Row="9" RowSpan="1" Column="3" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,Absolute,2,Absolute,2,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="CloseButton" Row="6" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="NameTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="DescriptionTextBox" Row="3" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="SrListBox" Row="5" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label4" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label6" Row="1" RowSpan="1" Column="0" ColumnSpan="4" /><Control Name="OkButton" Row="6" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="diskSpinner1" Row="4" RowSpan="1" Column="1" ColumnSpan="3" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,Absolute,20,Absolute,20,Absolute,20" /></TableLayoutSettings> Fill @@ -666,7 +526,7 @@ tableLayoutPanel1 - 7 + 5 True diff --git a/XenAdmin/Dialogs/NewDiskDialog.resx b/XenAdmin/Dialogs/NewDiskDialog.resx index 7af78c20c..578c55764 100644 --- a/XenAdmin/Dialogs/NewDiskDialog.resx +++ b/XenAdmin/Dialogs/NewDiskDialog.resx @@ -117,197 +117,21 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Segoe UI, 9pt - - - 79, 144 - - - 105, 23 - - - 6 - - - - Right - - - DiskSizeNumericUpDown - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 9 - True + GrowAndShrink - 5 - - - True - - - GrowAndShrink - - - 2 - - - Left - - - True - - - Segoe UI, 9pt - - - NoControl - - - 25, 4 - - - 276, 15 - - - 0 - - - There are no SR locations that can support this disk - - - labelError - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelError - - - 0 - - - Segoe UI, 9pt - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAelJREFUOE+V - k11P1EAUhqftirf+lI3o/+hf4kYSLgjKBVy5K6KwREhBdgOExEJCMBjMGgFR+SgECBpZFwhEkOTwnOl0 - U+CKkzzp1zzvnGmn5nZ1FEwIEcgt9F7oht0tHj6CuC/wZMkrSMM8lGNomDbZgznu9fJMx+hYp6Xl5Pqs - X5BzpFNowh/EQxewYx7IJoz6gYbUb4RwEat8lpv1NxzALmwj/oR1WIGK79tOMjnUtnXWv/CvPCBXyY78 - Kj5tzZoUn8gl9xrlV/LZFGQJutPlhBoQLbK+Izerylr/m03ZRNyGK861znlWRV4wgVQ820WkAbKPmK31 - AEFlLT1m8iXH6WK7jCB/gGlQ1wZka92iXV3rj1yIlspTxcfyFmkKZqBmbAdpQIK0Ad9h1Qa0t2bW0oAq - ATUb4MskRPmANaRv8JX1redkFZXsPCZkAnEMKrmAqOYF8gV5GS6SpCVMIryHCxdyykscsrIn/Z79CvYl - hj18kk/IH+EoGpczBk4glmhZW53l/ITgtXJZniO/hs7Abu90a3MSD7I55hH0DQ9DybWqAe9ApR54oUc/ - 3dJW1uLCbuUSIfp5qgjjLmAEYQg0oATdvp355lbWciFxF629ZH36koYR3jixl3vP0rbv/kz54uE9fmdj - rgGIa8PaA/xpMAAAAABJRU5ErkJggg== - - - - NoControl - - - 3, 3 - - - 16, 16 - - - 2 - - - pictureBoxError - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelError - - - 1 - - - Fill - - - Segoe UI, 9pt - - - 245, 144 - - - 1 - - - 379, 23 - - - 8 - - - tableLayoutPanelError - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelError" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> - - - Segoe UI, 9pt - - - GB - - - MB - - - 190, 144 - - - 49, 23 - - - 7 - - - comboBoxUnits - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 1 + 4 Bottom, Right + Segoe UI, 9pt @@ -318,7 +142,7 @@ 75, 23 - 12 + 10 Cancel @@ -333,7 +157,7 @@ tableLayoutPanel1 - 2 + 0 True @@ -366,7 +190,7 @@ tableLayoutPanel1 - 3 + 1 True @@ -402,7 +226,7 @@ tableLayoutPanel1 - 4 + 2 Fill @@ -432,7 +256,7 @@ tableLayoutPanel1 - 5 + 3 Fill @@ -465,7 +289,7 @@ tableLayoutPanel1 - 6 + 4 True @@ -498,7 +322,7 @@ tableLayoutPanel1 - 8 + 6 True @@ -516,7 +340,7 @@ 56, 15 - 9 + 7 &Location: @@ -531,7 +355,7 @@ tableLayoutPanel1 - 10 + 7 True @@ -567,7 +391,7 @@ tableLayoutPanel1 - 11 + 8 Bottom, Right @@ -582,7 +406,7 @@ 75, 23 - 11 + 9 &Add @@ -597,7 +421,43 @@ tableLayoutPanel1 - 12 + 9 + + + True + + + GrowAndShrink + + + Fill + + + Segoe UI, 9pt + + + 76, 141 + + + 0, 0, 0, 0 + + + 551, 29 + + + 6 + + + diskSpinner1 + + + XenAdmin.Controls.DiskSpinner, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 10 Fill @@ -609,7 +469,7 @@ 10, 10 - 10 + 7 627, 382 @@ -630,7 +490,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanelError" Row="4" RowSpan="1" Column="3" ColumnSpan="2" /><Control Name="comboBoxUnits" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="CloseButton" Row="9" RowSpan="1" Column="4" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="NameTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="4" /><Control Name="DescriptionTextBox" Row="3" RowSpan="1" Column="1" ColumnSpan="4" /><Control Name="SrListBox" Row="5" RowSpan="1" Column="1" ColumnSpan="4" /><Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="DiskSizeNumericUpDown" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label4" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label6" Row="1" RowSpan="1" Column="0" ColumnSpan="5" /><Control Name="OkButton" Row="9" RowSpan="1" Column="3" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,Absolute,2,Absolute,2,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="CloseButton" Row="6" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="NameTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="DescriptionTextBox" Row="3" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="SrListBox" Row="5" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label4" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label6" Row="1" RowSpan="1" Column="0" ColumnSpan="4" /><Control Name="OkButton" Row="6" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="diskSpinner1" Row="4" RowSpan="1" Column="1" ColumnSpan="3" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,Absolute,20,Absolute,20,Absolute,20" /></TableLayoutSettings> Fill @@ -651,10 +511,10 @@ 3, 6, 3, 3 - 545, 170 + 545, 174 - 10 + 8 SrListBox @@ -666,7 +526,7 @@ tableLayoutPanel1 - 7 + 5 True diff --git a/XenAdmin/Dialogs/NewDiskDialog.zh-CN.resx b/XenAdmin/Dialogs/NewDiskDialog.zh-CN.resx index e20a3efe8..7d0e12675 100644 --- a/XenAdmin/Dialogs/NewDiskDialog.zh-CN.resx +++ b/XenAdmin/Dialogs/NewDiskDialog.zh-CN.resx @@ -117,197 +117,21 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Segoe UI, 9pt - - - 73, 147 - - - 105, 23 - - - 5 - - - - Right - - - DiskSizeNumericUpDown - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 9 - True + GrowAndShrink - 5 - - - True - - - GrowAndShrink - - - 2 - - - Left - - - True - - - Segoe UI, 9pt - - - NoControl - - - 25, 4 - - - 276, 15 - - - 0 - - - 没有可支持该磁盘的 SR 位置 - - - labelError - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelError - - - 0 - - - Segoe UI, 9pt - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAelJREFUOE+V - k11P1EAUhqftirf+lI3o/+hf4kYSLgjKBVy5K6KwREhBdgOExEJCMBjMGgFR+SgECBpZFwhEkOTwnOl0 - U+CKkzzp1zzvnGmn5nZ1FEwIEcgt9F7oht0tHj6CuC/wZMkrSMM8lGNomDbZgznu9fJMx+hYp6Xl5Pqs - X5BzpFNowh/EQxewYx7IJoz6gYbUb4RwEat8lpv1NxzALmwj/oR1WIGK79tOMjnUtnXWv/CvPCBXyY78 - Kj5tzZoUn8gl9xrlV/LZFGQJutPlhBoQLbK+Izerylr/m03ZRNyGK861znlWRV4wgVQ820WkAbKPmK31 - AEFlLT1m8iXH6WK7jCB/gGlQ1wZka92iXV3rj1yIlspTxcfyFmkKZqBmbAdpQIK0Ad9h1Qa0t2bW0oAq - ATUb4MskRPmANaRv8JX1redkFZXsPCZkAnEMKrmAqOYF8gV5GS6SpCVMIryHCxdyykscsrIn/Z79CvYl - hj18kk/IH+EoGpczBk4glmhZW53l/ITgtXJZniO/hs7Abu90a3MSD7I55hH0DQ9DybWqAe9ApR54oUc/ - 3dJW1uLCbuUSIfp5qgjjLmAEYQg0oATdvp355lbWciFxF629ZH36koYR3jixl3vP0rbv/kz54uE9fmdj - rgGIa8PaA/xpMAAAAABJRU5ErkJggg== - - - - NoControl - - - 3, 3 - - - 16, 16 - - - 2 - - - pictureBoxError - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanelError - - - 1 - - - Fill - - - Segoe UI, 9pt - - - 245, 144 - - - 1 - - - 379, 23 - - - 8 - - - tableLayoutPanelError - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelError" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> - - - Segoe UI, 9pt - - - GB - - - MB - - - 190, 144 - - - 49, 23 - - - 7 - - - comboBoxUnits - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 1 + 4 Bottom, Right + Segoe UI, 9pt @@ -333,7 +157,7 @@ tableLayoutPanel1 - 2 + 0 True @@ -366,7 +190,7 @@ tableLayoutPanel1 - 3 + 1 True @@ -402,7 +226,7 @@ tableLayoutPanel1 - 4 + 2 Fill @@ -432,7 +256,7 @@ tableLayoutPanel1 - 5 + 3 Fill @@ -465,7 +289,7 @@ tableLayoutPanel1 - 6 + 4 True @@ -498,7 +322,7 @@ tableLayoutPanel1 - 8 + 6 True @@ -531,7 +355,7 @@ tableLayoutPanel1 - 10 + 7 True @@ -567,7 +391,7 @@ tableLayoutPanel1 - 11 + 8 Bottom, Right @@ -597,7 +421,43 @@ tableLayoutPanel1 - 12 + 9 + + + True + + + GrowAndShrink + + + Fill + + + Segoe UI, 9pt + + + 76, 141 + + + 0, 0, 0, 0 + + + 551, 29 + + + 6 + + + diskSpinner1 + + + XenAdmin.Controls.DiskSpinner, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 10 Fill @@ -609,7 +469,7 @@ 12, 12 - 10 + 7 560, 349 @@ -630,7 +490,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanelError" Row="4" RowSpan="1" Column="3" ColumnSpan="2" /><Control Name="comboBoxUnits" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="CloseButton" Row="9" RowSpan="1" Column="4" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="NameTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="4" /><Control Name="DescriptionTextBox" Row="3" RowSpan="1" Column="1" ColumnSpan="4" /><Control Name="SrListBox" Row="5" RowSpan="1" Column="1" ColumnSpan="4" /><Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="DiskSizeNumericUpDown" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label4" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label6" Row="1" RowSpan="1" Column="0" ColumnSpan="5" /><Control Name="OkButton" Row="9" RowSpan="1" Column="3" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,Absolute,2,Absolute,2,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="CloseButton" Row="6" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="NameTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="DescriptionTextBox" Row="3" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="SrListBox" Row="5" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label4" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label6" Row="1" RowSpan="1" Column="0" ColumnSpan="4" /><Control Name="OkButton" Row="6" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="diskSpinner1" Row="4" RowSpan="1" Column="1" ColumnSpan="3" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,Absolute,20,Absolute,20,Absolute,20" /></TableLayoutSettings> Fill @@ -666,7 +526,7 @@ tableLayoutPanel1 - 7 + 5 True diff --git a/XenAdmin/Dialogs/NewPoolDialog.cs b/XenAdmin/Dialogs/NewPoolDialog.cs index 4fc99b2bc..597a3c935 100644 --- a/XenAdmin/Dialogs/NewPoolDialog.cs +++ b/XenAdmin/Dialogs/NewPoolDialog.cs @@ -391,12 +391,12 @@ namespace XenAdmin.Dialogs Program.BeginInvoke(this, getAllCurrentConnections); } - void Connection_CachePopulated(object sender, EventArgs e) + void Connection_CachePopulated(IXenConnection conn) { Program.BeginInvoke(this, addConnectionsToComboBox); } - void connection_ConnectionStateChanged(object sender, EventArgs e) + void connection_ConnectionStateChanged(IXenConnection conn) { Program.BeginInvoke(this, addConnectionsToComboBox); } diff --git a/XenAdmin/Dialogs/OptionsPages/ConfirmationOptionsPage.Designer.cs b/XenAdmin/Dialogs/OptionsPages/ConfirmationOptionsPage.Designer.cs index 02a959972..e62227bda 100644 --- a/XenAdmin/Dialogs/OptionsPages/ConfirmationOptionsPage.Designer.cs +++ b/XenAdmin/Dialogs/OptionsPages/ConfirmationOptionsPage.Designer.cs @@ -30,10 +30,14 @@ namespace XenAdmin.Dialogs.OptionsPages { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfirmationOptionsPage)); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.label1 = new System.Windows.Forms.Label(); this.labelBlurb = new System.Windows.Forms.Label(); this.checkBoxDontConfirmDismissAlerts = new System.Windows.Forms.CheckBox(); this.checkBoxDontConfirmDismissUpdates = new System.Windows.Forms.CheckBox(); this.checkBoxDontConfirmDismissEvents = new System.Windows.Forms.CheckBox(); + this.sectionHeaderLabel1 = new XenAdmin.Controls.SectionHeaderLabel(); + this.sectionHeaderLabel2 = new XenAdmin.Controls.SectionHeaderLabel(); + this.checkBoxIgnoreOvfWarnings = new System.Windows.Forms.CheckBox(); this.tableLayoutPanel1.SuspendLayout(); this.SuspendLayout(); // @@ -41,12 +45,21 @@ namespace XenAdmin.Dialogs.OptionsPages // resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); this.tableLayoutPanel1.BackColor = System.Drawing.Color.Transparent; - this.tableLayoutPanel1.Controls.Add(this.labelBlurb, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.checkBoxDontConfirmDismissAlerts, 0, 1); - this.tableLayoutPanel1.Controls.Add(this.checkBoxDontConfirmDismissUpdates, 0, 2); - this.tableLayoutPanel1.Controls.Add(this.checkBoxDontConfirmDismissEvents, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 6); + this.tableLayoutPanel1.Controls.Add(this.labelBlurb, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.checkBoxDontConfirmDismissAlerts, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.checkBoxDontConfirmDismissUpdates, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.checkBoxDontConfirmDismissEvents, 0, 4); + this.tableLayoutPanel1.Controls.Add(this.sectionHeaderLabel1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.sectionHeaderLabel2, 0, 5); + this.tableLayoutPanel1.Controls.Add(this.checkBoxIgnoreOvfWarnings, 0, 7); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // // labelBlurb // resources.ApplyResources(this.labelBlurb, "labelBlurb"); @@ -70,6 +83,26 @@ namespace XenAdmin.Dialogs.OptionsPages this.checkBoxDontConfirmDismissEvents.Name = "checkBoxDontConfirmDismissEvents"; this.checkBoxDontConfirmDismissEvents.UseVisualStyleBackColor = true; // + // sectionHeaderLabel1 + // + resources.ApplyResources(this.sectionHeaderLabel1, "sectionHeaderLabel1"); + this.sectionHeaderLabel1.LineColor = System.Drawing.Color.Silver; + this.sectionHeaderLabel1.LineLocation = XenAdmin.Controls.SectionHeaderLabel.VerticalAlignment.Middle; + this.sectionHeaderLabel1.Name = "sectionHeaderLabel1"; + // + // sectionHeaderLabel2 + // + resources.ApplyResources(this.sectionHeaderLabel2, "sectionHeaderLabel2"); + this.sectionHeaderLabel2.LineColor = System.Drawing.Color.Silver; + this.sectionHeaderLabel2.LineLocation = XenAdmin.Controls.SectionHeaderLabel.VerticalAlignment.Middle; + this.sectionHeaderLabel2.Name = "sectionHeaderLabel2"; + // + // checkBoxIgnoreOvfWarnings + // + resources.ApplyResources(this.checkBoxIgnoreOvfWarnings, "checkBoxIgnoreOvfWarnings"); + this.checkBoxIgnoreOvfWarnings.Name = "checkBoxIgnoreOvfWarnings"; + this.checkBoxIgnoreOvfWarnings.UseVisualStyleBackColor = true; + // // ConfirmationOptionsPage // resources.ApplyResources(this, "$this"); @@ -90,5 +123,9 @@ namespace XenAdmin.Dialogs.OptionsPages private System.Windows.Forms.CheckBox checkBoxDontConfirmDismissAlerts; private System.Windows.Forms.CheckBox checkBoxDontConfirmDismissEvents; private System.Windows.Forms.CheckBox checkBoxDontConfirmDismissUpdates; + private Controls.SectionHeaderLabel sectionHeaderLabel1; + private System.Windows.Forms.Label label1; + private Controls.SectionHeaderLabel sectionHeaderLabel2; + private System.Windows.Forms.CheckBox checkBoxIgnoreOvfWarnings; } } diff --git a/XenAdmin/Dialogs/OptionsPages/ConfirmationOptionsPage.cs b/XenAdmin/Dialogs/OptionsPages/ConfirmationOptionsPage.cs index e0a6d1c70..c49dd1872 100644 --- a/XenAdmin/Dialogs/OptionsPages/ConfirmationOptionsPage.cs +++ b/XenAdmin/Dialogs/OptionsPages/ConfirmationOptionsPage.cs @@ -29,10 +29,7 @@ * SUCH DAMAGE. */ -using System; -using System.Collections.Generic; using System.Drawing; -using System.Text; using System.Windows.Forms; using XenAdmin.Properties; @@ -56,6 +53,8 @@ namespace XenAdmin.Dialogs.OptionsPages checkBoxDontConfirmDismissAlerts.Checked = def.DoNotConfirmDismissAlerts; checkBoxDontConfirmDismissUpdates.Checked = def.DoNotConfirmDismissUpdates; checkBoxDontConfirmDismissEvents.Checked = def.DoNotConfirmDismissEvents; + + checkBoxIgnoreOvfWarnings.Checked = def.IgnoreOvfValidationWarnings; } public static void Log() @@ -63,6 +62,8 @@ namespace XenAdmin.Dialogs.OptionsPages log.InfoFormat("=== DoNotConfirmDismissAlerts: {0}", Properties.Settings.Default.DoNotConfirmDismissAlerts); log.InfoFormat("=== DoNotConfirmDismissUpdates: {0}", Properties.Settings.Default.DoNotConfirmDismissUpdates); log.InfoFormat("=== DoNotConfirmDismissEvents: {0}", Properties.Settings.Default.DoNotConfirmDismissEvents); + + log.InfoFormat("=== IgnoreOvfValidationWarnings: {0}", Properties.Settings.Default.IgnoreOvfValidationWarnings); } #region IOptionsPage Members @@ -77,26 +78,20 @@ namespace XenAdmin.Dialogs.OptionsPages if (Properties.Settings.Default.DoNotConfirmDismissEvents != checkBoxDontConfirmDismissEvents.Checked) Properties.Settings.Default.DoNotConfirmDismissEvents = checkBoxDontConfirmDismissEvents.Checked; + + if (Properties.Settings.Default.IgnoreOvfValidationWarnings != checkBoxIgnoreOvfWarnings.Checked) + Properties.Settings.Default.IgnoreOvfValidationWarnings = checkBoxIgnoreOvfWarnings.Checked; } #endregion #region IVerticalTab Members - public override string Text - { - get { return Messages.CONFIRMATIONS; } - } + public override string Text => Messages.CONFIRMATIONS; - public string SubText - { - get { return Messages.CONFIRMATIONS_DETAIL; } - } + public string SubText => Messages.CONFIRMATIONS_DETAIL; - public Image Image - { - get { return Resources._075_TickRound_h32bit_16; } - } + public Image Image => Resources._075_TickRound_h32bit_16; #endregion } diff --git a/XenAdmin/Dialogs/OptionsPages/ConfirmationOptionsPage.resx b/XenAdmin/Dialogs/OptionsPages/ConfirmationOptionsPage.resx index 332706f21..081ff9320 100644 --- a/XenAdmin/Dialogs/OptionsPages/ConfirmationOptionsPage.resx +++ b/XenAdmin/Dialogs/OptionsPages/ConfirmationOptionsPage.resx @@ -128,10 +128,46 @@ 1 - + True + + Tahoma, 8pt + + + NoControl + + + 3, 177 + + + 3, 0, 3, 10 + + + 402, 26 + + + 7 + + + You can configure [XenCenter] to display the warnings issued when validating the OVF/OVA packages you want to import. + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + True + Tahoma, 8pt @@ -139,10 +175,10 @@ NoControl - 2, 0 + 3, 28 - 2, 0, 2, 16 + 3, 0, 3, 10 426, 26 @@ -163,7 +199,7 @@ tableLayoutPanel1 - 0 + 1 Left @@ -172,7 +208,7 @@ True - 2, 44 + 2, 66 2, 2, 2, 2 @@ -196,13 +232,13 @@ tableLayoutPanel1 - 1 + 2 True - 2, 65 + 2, 87 2, 2, 2, 2 @@ -226,7 +262,7 @@ tableLayoutPanel1 - 2 + 3 Left @@ -235,7 +271,7 @@ True - 2, 86 + 2, 108 2, 2, 2, 2 @@ -259,7 +295,130 @@ tableLayoutPanel1 - 3 + 4 + + + Top + + + + + + Left + + + 0, 0, 0, 0 + + + Notifications + + + 0, 0, 0, 0 + + + 3, 3 + + + 3, 3, 3, 10 + + + 0, 15 + + + 441, 15 + + + 4 + + + False + + + sectionHeaderLabel1 + + + XenAdmin.Controls.SectionHeaderLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 5 + + + Top + + + + + + Left + + + 0, 0, 0, 0 + + + OVF/OVA package validation + + + 0, 0, 0, 0 + + + 3, 152 + + + 3, 25, 3, 10 + + + 0, 15 + + + 441, 15 + + + 5 + + + False + + + sectionHeaderLabel2 + + + XenAdmin.Controls.SectionHeaderLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 6 + + + True + + + 3, 216 + + + 217, 17 + + + 6 + + + Don't show package &validation warnings + + + checkBoxIgnoreOvfWarnings + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 7 Fill @@ -271,7 +430,7 @@ 0, 0 - 5 + 9 447, 395 @@ -292,7 +451,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelBlurb" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBoxDontConfirmDismissAlerts" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBoxDontConfirmDismissUpdates" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBoxDontConfirmDismissEvents" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100,Absolute,20" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,Absolute,20,Absolute,20,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelBlurb" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBoxDontConfirmDismissAlerts" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBoxDontConfirmDismissUpdates" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBoxDontConfirmDismissEvents" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="sectionHeaderLabel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="sectionHeaderLabel2" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBoxIgnoreOvfWarnings" Row="7" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> True diff --git a/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.Designer.cs b/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.Designer.cs index fbab19a2e..71ee5c90e 100644 --- a/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.Designer.cs +++ b/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.Designer.cs @@ -29,68 +29,32 @@ namespace XenAdmin.Dialogs.OptionsPages private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DisplayOptionsPage)); - this.GraphsTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); - this.SearchGroupBox = new XenAdmin.Controls.DecentGroupBox(); - this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); - this.label1 = new System.Windows.Forms.Label(); - this.showWholePoolOptionForSearchRadioButton = new System.Windows.Forms.RadioButton(); - this.showHostOnlyOptionForSearchRadioButton = new System.Windows.Forms.RadioButton(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); this.GraphTypeGroupBox = new XenAdmin.Controls.DecentGroupBox(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.label5 = new System.Windows.Forms.Label(); + this.label5 = new XenAdmin.Controls.Common.AutoHeightLabel(); this.GraphAreasRadioButton = new System.Windows.Forms.RadioButton(); this.pictureBox2 = new System.Windows.Forms.PictureBox(); this.GraphLinesRadioButton = new System.Windows.Forms.RadioButton(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.GraphsTableLayoutPanel.SuspendLayout(); - this.SearchGroupBox.SuspendLayout(); - this.tableLayoutPanel2.SuspendLayout(); + this.TabGroupBox = new XenAdmin.Controls.DecentGroupBox(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.checkBoxStoreTab = new System.Windows.Forms.CheckBox(); + this.tableLayoutPanel3.SuspendLayout(); this.GraphTypeGroupBox.SuspendLayout(); this.tableLayoutPanel1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.TabGroupBox.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); this.SuspendLayout(); // - // GraphsTableLayoutPanel + // tableLayoutPanel3 // - resources.ApplyResources(this.GraphsTableLayoutPanel, "GraphsTableLayoutPanel"); - this.GraphsTableLayoutPanel.Controls.Add(this.SearchGroupBox, 0, 3); - this.GraphsTableLayoutPanel.Controls.Add(this.GraphTypeGroupBox, 0, 1); - this.GraphsTableLayoutPanel.Name = "GraphsTableLayoutPanel"; - // - // SearchGroupBox - // - resources.ApplyResources(this.SearchGroupBox, "SearchGroupBox"); - this.SearchGroupBox.Controls.Add(this.tableLayoutPanel2); - this.SearchGroupBox.Name = "SearchGroupBox"; - this.SearchGroupBox.TabStop = false; - // - // tableLayoutPanel2 - // - resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2"); - this.tableLayoutPanel2.Controls.Add(this.label1, 0, 0); - this.tableLayoutPanel2.Controls.Add(this.showWholePoolOptionForSearchRadioButton, 0, 2); - this.tableLayoutPanel2.Controls.Add(this.showHostOnlyOptionForSearchRadioButton, 0, 1); - this.tableLayoutPanel2.Name = "tableLayoutPanel2"; - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // showWholePoolOptionForSearchRadioButton - // - resources.ApplyResources(this.showWholePoolOptionForSearchRadioButton, "showWholePoolOptionForSearchRadioButton"); - this.showWholePoolOptionForSearchRadioButton.Name = "showWholePoolOptionForSearchRadioButton"; - this.showWholePoolOptionForSearchRadioButton.TabStop = true; - this.showWholePoolOptionForSearchRadioButton.UseVisualStyleBackColor = true; - // - // showHostOnlyOptionForSearchRadioButton - // - resources.ApplyResources(this.showHostOnlyOptionForSearchRadioButton, "showHostOnlyOptionForSearchRadioButton"); - this.showHostOnlyOptionForSearchRadioButton.Name = "showHostOnlyOptionForSearchRadioButton"; - this.showHostOnlyOptionForSearchRadioButton.TabStop = true; - this.showHostOnlyOptionForSearchRadioButton.UseVisualStyleBackColor = true; + resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3"); + this.tableLayoutPanel3.Controls.Add(this.GraphTypeGroupBox, 0, 0); + this.tableLayoutPanel3.Controls.Add(this.TabGroupBox, 0, 1); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; // // GraphTypeGroupBox // @@ -142,24 +106,45 @@ namespace XenAdmin.Dialogs.OptionsPages this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.TabStop = false; // + // TabGroupBox + // + resources.ApplyResources(this.TabGroupBox, "TabGroupBox"); + this.TabGroupBox.Controls.Add(this.tableLayoutPanel2); + this.TabGroupBox.Name = "TabGroupBox"; + this.TabGroupBox.TabStop = false; + // + // tableLayoutPanel2 + // + resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2"); + this.tableLayoutPanel2.Controls.Add(this.checkBoxStoreTab, 0, 0); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + // + // checkBoxStoreTab + // + resources.ApplyResources(this.checkBoxStoreTab, "checkBoxStoreTab"); + this.checkBoxStoreTab.Checked = true; + this.checkBoxStoreTab.CheckState = System.Windows.Forms.CheckState.Checked; + this.checkBoxStoreTab.Name = "checkBoxStoreTab"; + this.checkBoxStoreTab.UseVisualStyleBackColor = true; + // // DisplayOptionsPage // resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.Controls.Add(this.GraphsTableLayoutPanel); + this.Controls.Add(this.tableLayoutPanel3); this.Name = "DisplayOptionsPage"; - this.GraphsTableLayoutPanel.ResumeLayout(false); - this.GraphsTableLayoutPanel.PerformLayout(); - this.SearchGroupBox.ResumeLayout(false); - this.SearchGroupBox.PerformLayout(); - this.tableLayoutPanel2.ResumeLayout(false); - this.tableLayoutPanel2.PerformLayout(); + this.tableLayoutPanel3.ResumeLayout(false); + this.tableLayoutPanel3.PerformLayout(); this.GraphTypeGroupBox.ResumeLayout(false); this.GraphTypeGroupBox.PerformLayout(); this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.TabGroupBox.ResumeLayout(false); + this.TabGroupBox.PerformLayout(); + this.tableLayoutPanel2.ResumeLayout(false); + this.tableLayoutPanel2.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -167,18 +152,16 @@ namespace XenAdmin.Dialogs.OptionsPages #endregion - private System.Windows.Forms.TableLayoutPanel GraphsTableLayoutPanel; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; private XenAdmin.Controls.DecentGroupBox GraphTypeGroupBox; private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.RadioButton GraphAreasRadioButton; private System.Windows.Forms.RadioButton GraphLinesRadioButton; - private System.Windows.Forms.Label label5; - private Controls.DecentGroupBox SearchGroupBox; - private System.Windows.Forms.RadioButton showWholePoolOptionForSearchRadioButton; - private System.Windows.Forms.RadioButton showHostOnlyOptionForSearchRadioButton; - private System.Windows.Forms.Label label1; + private XenAdmin.Controls.Common.AutoHeightLabel label5; + private Controls.DecentGroupBox TabGroupBox; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; private System.Windows.Forms.PictureBox pictureBox2; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.CheckBox checkBoxStoreTab; } } diff --git a/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.cs b/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.cs index fadef424d..7b353b74d 100644 --- a/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.cs +++ b/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.cs @@ -29,12 +29,8 @@ * SUCH DAMAGE. */ -using System; -using System.Collections.Generic; -using System.ComponentModel; + using System.Drawing; -using System.Data; -using System.Text; using System.Windows.Forms; using XenAdmin.Properties; @@ -48,23 +44,20 @@ namespace XenAdmin.Dialogs.OptionsPages public DisplayOptionsPage() { InitializeComponent(); - - build(); + Build(); } - private void build() + private void Build() { GraphAreasRadioButton.Checked = Properties.Settings.Default.FillAreaUnderGraphs; GraphLinesRadioButton.Checked = !Properties.Settings.Default.FillAreaUnderGraphs; - - showHostOnlyOptionForSearchRadioButton.Checked = Properties.Settings.Default.ShowJustHostInSearch; - showWholePoolOptionForSearchRadioButton.Checked = !Properties.Settings.Default.ShowJustHostInSearch; + checkBoxStoreTab.Checked = Properties.Settings.Default.RememberLastSelectedTab; } public static void Log() { - log.Info("=== FillAreaUnderGraphs: " + Properties.Settings.Default.FillAreaUnderGraphs.ToString()); - log.Info("=== ShowHostOnlyInSearch: " + Properties.Settings.Default.ShowJustHostInSearch.ToString()); + log.Info("=== FillAreaUnderGraphs: " + Properties.Settings.Default.FillAreaUnderGraphs); + log.Info("=== RememberLastSelectedTab: " + Properties.Settings.Default.RememberLastSelectedTab); } #region IOptionsPage Members @@ -74,8 +67,8 @@ namespace XenAdmin.Dialogs.OptionsPages if (GraphAreasRadioButton.Checked != Properties.Settings.Default.FillAreaUnderGraphs) Properties.Settings.Default.FillAreaUnderGraphs = GraphAreasRadioButton.Checked; - if (showHostOnlyOptionForSearchRadioButton.Checked != Properties.Settings.Default.ShowJustHostInSearch) - Properties.Settings.Default.ShowJustHostInSearch = showHostOnlyOptionForSearchRadioButton.Checked; + if (checkBoxStoreTab.Checked != Properties.Settings.Default.RememberLastSelectedTab) + Properties.Settings.Default.RememberLastSelectedTab = checkBoxStoreTab.Checked; } @@ -83,20 +76,11 @@ namespace XenAdmin.Dialogs.OptionsPages #region IVerticalTab Members - public override string Text - { - get { return Messages.DISPLAY; } - } + public override string Text => Messages.DISPLAY; - public string SubText - { - get { return Messages.DISPLAY_DETAILS; } - } + public string SubText => Messages.DISPLAY_DETAILS; - public Image Image - { - get { return Resources._001_PerformanceGraph_h32bit_16; } - } + public Image Image => Resources._001_PerformanceGraph_h32bit_16; #endregion } diff --git a/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.ja.resx b/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.ja.resx index 89df85079..5ca7182a5 100644 --- a/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.ja.resx +++ b/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.ja.resx @@ -118,200 +118,16 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - + GrowAndShrink - + 1 - - True - - - GrowAndShrink - - - True - - - 1 - - - True - - - Fill - - - NoControl - - - - 0, 0 - - - 0, 0, 0, 0 - - - 6, 0, 0, 5 - - - 609, 18 - - - 1 - - - リソース ペインでホストが選択されたときに何を [検索] タブに表示するかを選択します。 - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 0 - - - True - - - NoControl - - - 3, 44 - - - 6, 0, 0, 10 - - - 218, 27 - - - 3 - - - プール全体に関する情報を表示(&P) - - - showWholePoolOptionForSearchRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 1 - - - True - - - NoControl - - - 3, 21 - - - 6, 0, 0, 0 - - - 213, 17 - - - 2 - - - そのホストのみに関する情報を表示 (&H) - - - showHostOnlyOptionForSearchRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 2 - - - Fill - - - 7, 20 - - - 3 - - - 609, 74 - - - 4 - - - tableLayoutPanel2 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SearchGroupBox - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="showWholePoolOptionForSearchRadioButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="showHostOnlyOptionForSearchRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> - - - Fill - - - Tahoma, 8pt - - - 3, 307 - - - 3, 3, 3, 6 - - - 7, 7, 7, 7 - - - 623, 101 - - - 4 - - - 検索オプション - - - SearchGroupBox - - - XenAdmin.Controls.DecentGroupBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - GraphsTableLayoutPanel - - - 0 - True @@ -330,6 +146,7 @@ Fill + Tahoma, 8pt @@ -408,8 +225,8 @@ 10, 167 - - 19, 0, 0, 10 + + 20, 3, 3, 3 420, 99 @@ -477,8 +294,8 @@ 10, 49 - - 19, 0, 0, 0 + + 20, 3, 3, 3 420, 89 @@ -507,9 +324,6 @@ 3, 16 - - 7, 7, 7, 7 - 5 @@ -562,43 +376,151 @@ XenAdmin.Controls.DecentGroupBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - GraphsTableLayoutPanel + tableLayoutPanel3 - 1 - - - Fill - - - Tahoma, 8pt - - - 0, 0 - - - 6 - - - 629, 411 - - - 1 - - - GraphsTableLayoutPanel - - - 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="SearchGroupBox" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="GraphTypeGroupBox" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + + True + + + GrowAndShrink + + + True + + + 1 + + + True + + + NoControl + + + 3, 3 + + + 3, 0, 0, 0 + + + 254, 17 + + + 0 + + + リソースに対して最後に選択したタブを記憶する + + + checkBoxStoreTab + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + Fill + + + 3, 16 + + + 1 + + + 617, 23 + + + 0 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabGroupBox + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBoxStoreTab" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Absolute,23,Absolute,23,Absolute,23" /></TableLayoutSettings> + + + Fill + + + Tahoma, 8pt + + + 3, 286 + + + 3, 3, 3, 6 + + + 623, 45 + + + 1 + + + タブ オプション + + + TabGroupBox + + + XenAdmin.Controls.DecentGroupBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel3 + + + 1 + + + Fill + + + Tahoma, 8pt + + + 0, 0 + + + 3 + + + 629, 411 + + + 0 + + + tableLayoutPanel3 + + + 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="GraphTypeGroupBox" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="TabGroupBox" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,Percent,100,Absolute,20,Absolute,20,Absolute,20" /></TableLayoutSettings> True diff --git a/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.resx b/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.resx index 67e9dff0d..2664f1322 100644 --- a/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.resx +++ b/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.resx @@ -1,618 +1,540 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - GrowAndShrink - - - 1 - - - True - - - GrowAndShrink - - - True - - - 1 - - - True - - - Fill - - - NoControl - - - - 0, 0 - - - 0, 0, 0, 0 - - - 6, 0, 0, 5 - - - 609, 18 - - - 1 - - - Choose what to show on the Search tab when a host is selected in the Resources pane. - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 0 - - - True - - - NoControl - - - 3, 44 - - - 6, 0, 0, 10 - - - 218, 27 - - - 3 - - - Show information about the whole &pool - - - showWholePoolOptionForSearchRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 1 - - - True - - - NoControl - - - 3, 21 - - - 6, 0, 0, 0 - - - 213, 17 - - - 2 - - - Show information about just that &host - - - showHostOnlyOptionForSearchRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 2 - - - Fill - - - 7, 20 - - - 3 - - - 609, 74 - - - 4 - - - tableLayoutPanel2 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SearchGroupBox - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="showWholePoolOptionForSearchRadioButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="showHostOnlyOptionForSearchRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> - - - Fill - - - Tahoma, 8pt - - - 3, 307 - - - 3, 3, 3, 6 - - - 7, 7, 7, 7 - - - 623, 101 - - - 4 - - - Search options - - - SearchGroupBox - - - XenAdmin.Controls.DecentGroupBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - GraphsTableLayoutPanel - - - 0 - - - True - - - GrowAndShrink - - - True - - - 1 - - - True - - - Fill - - - Tahoma, 8pt - - - NoControl - - - 10, 7 - - - 3, 0, 3, 3 - - - 597, 13 - - - 1 - - - Configure the appearance of the performance graphs displayed on the Performance tab. - - - label5 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 0 - - - True - - - Tahoma, 8pt - - - NoControl - - - 10, 26 - - - 4, 0, 0, 0 - - - 83, 17 - - - 0 - - - &Area graph - - - GraphAreasRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 1 - - - Tahoma, 8pt - - - NoControl - - - 10, 167 - - - 19, 0, 0, 10 - - - 420, 99 - - - AutoSize - - - 2 - - - pictureBox2 - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 2 - - - True - - - Tahoma, 8pt - - - NoControl - - - 10, 144 - - - 4, 0, 0, 0 - - - 79, 17 - - - 1 - - - &Line graph - - - GraphLinesRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 3 - - - Tahoma, 8pt - - - NoControl - - - 10, 49 - - - 19, 0, 0, 0 - - - 420, 89 - - - AutoSize - - - 2 - - - pictureBox1 - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 4 - - - Fill - - - 3, 16 - - - 7, 7, 7, 7 - - - 5 - - - 617, 276 - - - 4 - - - tableLayoutPanel1 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GraphTypeGroupBox - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label5" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="GraphAreasRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="pictureBox2" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="GraphLinesRadioButton" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="pictureBox1" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> - - - Fill - - - Tahoma, 8pt - - - 3, 3 - - - 3, 3, 3, 6 - - - 623, 298 - - - 0 - - - Graph type - - - GraphTypeGroupBox - - - XenAdmin.Controls.DecentGroupBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - GraphsTableLayoutPanel - - - 1 - - - Fill - - - Tahoma, 8pt - - - 0, 0 - - - 6 - - - 629, 411 - - - 1 - - - GraphsTableLayoutPanel - - - 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="SearchGroupBox" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="GraphTypeGroupBox" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> - - - True - - - 96, 96 - - - 629, 411 - - - DisplayOptionsPage - - - System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + GrowAndShrink + + + 1 + + + True + + + GrowAndShrink + + + True + + + 1 + + + True + + + Fill + + + + Tahoma, 8pt + + + NoControl + + + 3, 0 + + + 3, 0, 3, 6 + + + 611, 13 + + + 0 + + + Configure the appearance of the performance graphs displayed on the Performance tab. + + + label5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + True + + + Tahoma, 8pt + + + NoControl + + + 3, 22 + + + 3, 0, 0, 0 + + + 82, 17 + + + 1 + + + &Area graph + + + GraphAreasRadioButton + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + Tahoma, 8pt + + + NoControl + + + 20, 163 + + + 20, 3, 3, 3 + + + 401, 89 + + + AutoSize + + + 2 + + + pictureBox2 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + True + + + Tahoma, 8pt + + + NoControl + + + 3, 140 + + + 3, 0, 0, 0 + + + 78, 17 + + + 2 + + + &Line graph + + + GraphLinesRadioButton + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + Tahoma, 8pt + + + NoControl + + + 20, 45 + + + 20, 3, 3, 3 + + + 401, 89 + + + AutoSize + + + 2 + + + pictureBox1 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 4 + + + Fill + + + 3, 16 + + + 5 + + + 617, 255 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GraphTypeGroupBox + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label5" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="GraphAreasRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="pictureBox2" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="GraphLinesRadioButton" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="pictureBox1" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + + + Fill + + + Tahoma, 8pt + + + 3, 3 + + + 3, 3, 3, 6 + + + 623, 277 + + + 0 + + + Graph type + + + GraphTypeGroupBox + + + XenAdmin.Controls.DecentGroupBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel3 + + + 0 + + + True + + + GrowAndShrink + + + True + + + 1 + + + True + + + NoControl + + + 3, 3 + + + 3, 0, 0, 0 + + + 254, 17 + + + 0 + + + Remember the last selected Tab for a resource + + + checkBoxStoreTab + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + Fill + + + 3, 16 + + + 1 + + + 617, 23 + + + 0 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabGroupBox + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBoxStoreTab" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Absolute,23,Absolute,23,Absolute,23" /></TableLayoutSettings> + + + Fill + + + Tahoma, 8pt + + + 3, 286 + + + 3, 3, 3, 6 + + + 623, 45 + + + 1 + + + Tab options + + + TabGroupBox + + + XenAdmin.Controls.DecentGroupBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel3 + + + 1 + + + Fill + + + Tahoma, 8pt + + + 0, 0 + + + 3 + + + 629, 411 + + + 0 + + + tableLayoutPanel3 + + + 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="GraphTypeGroupBox" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="TabGroupBox" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,Percent,100,Absolute,20,Absolute,20,Absolute,20" /></TableLayoutSettings> + + + True + + + 96, 96 + + + 629, 411 + + + DisplayOptionsPage + + + System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.zh-CN.resx b/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.zh-CN.resx index 472b08b92..4ed21bb7f 100644 --- a/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.zh-CN.resx +++ b/XenAdmin/Dialogs/OptionsPages/DisplayOptionsPage.zh-CN.resx @@ -118,200 +118,16 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - + GrowAndShrink - + 1 - - True - - - GrowAndShrink - - - True - - - 1 - - - True - - - Fill - - - NoControl - - - - 0, 0 - - - 0, 0, 0, 0 - - - 6, 0, 0, 5 - - - 609, 18 - - - 1 - - - 选择在“资源”窗格中选择了某个主机时要在“搜索”选项卡上显示的内容。 - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 0 - - - True - - - NoControl - - - 3, 44 - - - 6, 0, 0, 10 - - - 218, 27 - - - 3 - - - 显示与整个池有关的信息(&P) - - - showWholePoolOptionForSearchRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 1 - - - True - - - NoControl - - - 3, 21 - - - 6, 0, 0, 0 - - - 213, 17 - - - 2 - - - 仅显示与该主机有关的信息(&H) - - - showHostOnlyOptionForSearchRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 2 - - - Fill - - - 7, 20 - - - 3 - - - 609, 74 - - - 4 - - - tableLayoutPanel2 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - SearchGroupBox - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="showWholePoolOptionForSearchRadioButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="showHostOnlyOptionForSearchRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> - - - Fill - - - Tahoma, 8pt - - - 3, 307 - - - 3, 3, 3, 6 - - - 7, 7, 7, 7 - - - 623, 101 - - - 4 - - - 搜索选项 - - - SearchGroupBox - - - XenAdmin.Controls.DecentGroupBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - GraphsTableLayoutPanel - - - 0 - True @@ -330,6 +146,7 @@ Fill + Tahoma, 8pt @@ -408,8 +225,8 @@ 10, 167 - - 19, 0, 0, 10 + + 20, 3, 3, 3 420, 99 @@ -477,8 +294,8 @@ 10, 49 - - 19, 0, 0, 0 + + 20, 3, 3, 3 420, 89 @@ -507,9 +324,6 @@ 3, 16 - - 7, 7, 7, 7 - 5 @@ -562,43 +376,151 @@ XenAdmin.Controls.DecentGroupBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - GraphsTableLayoutPanel + tableLayoutPanel3 - 1 - - - Fill - - - Tahoma, 8pt - - - 0, 0 - - - 6 - - - 629, 411 - - - 1 - - - GraphsTableLayoutPanel - - - 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="SearchGroupBox" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="GraphTypeGroupBox" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + + True + + + GrowAndShrink + + + True + + + 1 + + + True + + + NoControl + + + 3, 3 + + + 3, 0, 0, 0 + + + 254, 17 + + + 0 + + + 记住资源的最后一个选定的选项卡 + + + checkBoxStoreTab + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + Fill + + + 3, 16 + + + 1 + + + 617, 23 + + + 0 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + TabGroupBox + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBoxStoreTab" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Absolute,23,Absolute,23,Absolute,23" /></TableLayoutSettings> + + + Fill + + + Tahoma, 8pt + + + 3, 286 + + + 3, 3, 3, 6 + + + 623, 45 + + + 1 + + + 选项卡选项 + + + TabGroupBox + + + XenAdmin.Controls.DecentGroupBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel3 + + + 1 + + + Fill + + + Tahoma, 8pt + + + 0, 0 + + + 3 + + + 629, 411 + + + 0 + + + tableLayoutPanel3 + + + 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="GraphTypeGroupBox" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="TabGroupBox" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,Percent,100,Absolute,20,Absolute,20,Absolute,20" /></TableLayoutSettings> True diff --git a/XenAdmin/Dialogs/OptionsPages/PluginOptionsPage.cs b/XenAdmin/Dialogs/OptionsPages/PluginOptionsPage.cs index a68aee6ea..0c6d0fe2a 100644 --- a/XenAdmin/Dialogs/OptionsPages/PluginOptionsPage.cs +++ b/XenAdmin/Dialogs/OptionsPages/PluginOptionsPage.cs @@ -73,9 +73,10 @@ namespace XenAdmin.Dialogs.OptionsPages public static void Log() { - log.Info(string.Format("=== DisabledPlugins: {0}", Properties.Settings.Default.DisabledPlugins.Length == 0 - ? "" - : string.Join(",", Properties.Settings.Default.DisabledPlugins))); + log.InfoFormat("=== DisabledPlugins: {0}", + Properties.Settings.Default.DisabledPlugins.Length == 0 + ? "" + : string.Join(",", Properties.Settings.Default.DisabledPlugins)); } #region Private methods diff --git a/XenAdmin/Dialogs/OptionsPages/PluginOptionsPage.ja.resx b/XenAdmin/Dialogs/OptionsPages/PluginOptionsPage.ja.resx index 6956df7c0..45cff5b81 100644 --- a/XenAdmin/Dialogs/OptionsPages/PluginOptionsPage.ja.resx +++ b/XenAdmin/Dialogs/OptionsPages/PluginOptionsPage.ja.resx @@ -262,7 +262,7 @@ 7 - ネット上の [XenCenter] プラグイン + [XenCenter] プラグインをオンラインで検索 linkLabel1 @@ -301,7 +301,7 @@ 1 - Plugins フォルダのスキャン(&S) + Plug-ins フォルダのスキャン(&S) refreshButton @@ -364,7 +364,7 @@ 1 - Plugins フォルダのスキャン中... お待ちください。 + Plug-ins フォルダのスキャン中... お待ちください。 label4 diff --git a/XenAdmin/Dialogs/OptionsPages/PluginOptionsPage.resx b/XenAdmin/Dialogs/OptionsPages/PluginOptionsPage.resx index 5efdf5297..e1eeccfdc 100644 --- a/XenAdmin/Dialogs/OptionsPages/PluginOptionsPage.resx +++ b/XenAdmin/Dialogs/OptionsPages/PluginOptionsPage.resx @@ -190,7 +190,7 @@ 2 - &Available plugins: + &Available plug-ins: label2 @@ -226,7 +226,7 @@ 0 - Plugins can be used to extend [XenCenter]'s functionality. + Plug-ins can be used to extend [XenCenter]'s functionality. labelIntro @@ -262,7 +262,7 @@ 7 - Find [XenCenter] plugins online + Find [XenCenter] plug-ins online linkLabel1 @@ -301,7 +301,7 @@ 1 - &Scan Plugins Folder + &Scan Plug-ins Folder refreshButton @@ -364,7 +364,7 @@ 1 - Scanning plugins folder... please wait. + Scanning plug-ins folder... please wait. label4 @@ -424,7 +424,7 @@ 8 - No plugins found. + No plug-ins found. labelNoPlugins @@ -460,7 +460,7 @@ 4 - Plugin details: + Plug-in details: label3 diff --git a/XenAdmin/Dialogs/OptionsPages/SecurityOptionsPage.cs b/XenAdmin/Dialogs/OptionsPages/SecurityOptionsPage.cs index 434134dd2..fdcfe336d 100644 --- a/XenAdmin/Dialogs/OptionsPages/SecurityOptionsPage.cs +++ b/XenAdmin/Dialogs/OptionsPages/SecurityOptionsPage.cs @@ -56,12 +56,12 @@ namespace XenAdmin.Dialogs.OptionsPages private void build() { // SSL Certificates - CertificateFoundCheckBox.Checked = Properties.Settings.Default.WarnUnrecognizedCertificate || - Registry.AlwaysShowSSLCertificates == SSLCertificateTypes.All; - CertificateChangedCheckBox.Checked = Properties.Settings.Default.WarnChangedCertificate || - Registry.AlwaysShowSSLCertificates != SSLCertificateTypes.None; - CertificateFoundCheckBox.Enabled = Registry.AlwaysShowSSLCertificates != SSLCertificateTypes.All; - CertificateChangedCheckBox.Enabled = Registry.AlwaysShowSSLCertificates == SSLCertificateTypes.None; + CertificateFoundCheckBox.Checked = Properties.Settings.Default.WarnUnrecognizedCertificate || + Registry.SSLCertificateTypes == SSLCertificateTypes.All; + CertificateChangedCheckBox.Checked = Properties.Settings.Default.WarnChangedCertificate || + Registry.SSLCertificateTypes != SSLCertificateTypes.None; + CertificateFoundCheckBox.Enabled = Registry.SSLCertificateTypes != SSLCertificateTypes.All; + CertificateChangedCheckBox.Enabled = Registry.SSLCertificateTypes == SSLCertificateTypes.None; } public static void Log() @@ -86,20 +86,11 @@ namespace XenAdmin.Dialogs.OptionsPages #region IVerticalTab Members - public override string Text - { - get { return Messages.SECURITY; } - } + public override string Text => Messages.SECURITY; - public string SubText - { - get { return Messages.SECURITY_DESC; } - } + public string SubText => Messages.SECURITY_DESC; - public Image Image - { - get { return Resources.padlock; } - } + public Image Image => Resources.padlock; #endregion } diff --git a/XenAdmin/Dialogs/OvfValidationDialog.Designer.cs b/XenAdmin/Dialogs/OvfValidationDialog.Designer.cs new file mode 100644 index 000000000..291a0bae1 --- /dev/null +++ b/XenAdmin/Dialogs/OvfValidationDialog.Designer.cs @@ -0,0 +1,141 @@ +namespace XenAdmin.Dialogs +{ + partial class OvfValidationDialog + { + /// + /// 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(OvfValidationDialog)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.buttonContinue = new System.Windows.Forms.Button(); + this.buttonCancel = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.dataGridViewEx1 = new XenAdmin.Controls.DataGridViewEx.DataGridViewEx(); + this.columnWarning = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.tableLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewEx1)).BeginInit(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); + this.tableLayoutPanel1.Controls.Add(this.buttonContinue, 1, 3); + this.tableLayoutPanel1.Controls.Add(this.buttonCancel, 2, 3); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.dataGridViewEx1, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.checkBox1, 0, 2); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + // + // buttonContinue + // + resources.ApplyResources(this.buttonContinue, "buttonContinue"); + this.buttonContinue.DialogResult = System.Windows.Forms.DialogResult.OK; + this.buttonContinue.Name = "buttonContinue"; + this.buttonContinue.UseVisualStyleBackColor = true; + // + // buttonCancel + // + resources.ApplyResources(this.buttonCancel, "buttonCancel"); + this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.UseVisualStyleBackColor = true; + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.tableLayoutPanel1.SetColumnSpan(this.label1, 3); + this.label1.Name = "label1"; + // + // dataGridViewEx1 + // + dataGridViewCellStyle1.BackColor = System.Drawing.Color.AliceBlue; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.Color.AliceBlue; + this.dataGridViewEx1.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1; + this.dataGridViewEx1.BackgroundColor = System.Drawing.SystemColors.Window; + this.dataGridViewEx1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; + this.dataGridViewEx1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dataGridViewEx1.ColumnHeadersVisible = false; + this.dataGridViewEx1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.columnWarning}); + this.tableLayoutPanel1.SetColumnSpan(this.dataGridViewEx1, 3); + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle2.Font = new System.Drawing.Font("Segoe UI", 9F); + dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridViewEx1.DefaultCellStyle = dataGridViewCellStyle2; + resources.ApplyResources(this.dataGridViewEx1, "dataGridViewEx1"); + this.dataGridViewEx1.HideSelection = true; + this.dataGridViewEx1.Name = "dataGridViewEx1"; + this.dataGridViewEx1.ReadOnly = true; + // + // columnWarning + // + resources.ApplyResources(this.columnWarning, "columnWarning"); + this.columnWarning.Name = "columnWarning"; + this.columnWarning.ReadOnly = true; + // + // checkBox1 + // + resources.ApplyResources(this.checkBox1, "checkBox1"); + this.tableLayoutPanel1.SetColumnSpan(this.checkBox1, 3); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.UseVisualStyleBackColor = true; + // + // OvfValidationDialog + // + this.AcceptButton = this.buttonContinue; + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.CancelButton = this.buttonCancel; + this.Controls.Add(this.tableLayoutPanel1); + this.HelpButton = false; + this.Name = "OvfValidationDialog"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OvfValidationDialog_FormClosing); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewEx1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Button buttonContinue; + private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.Label label1; + private Controls.DataGridViewEx.DataGridViewEx dataGridViewEx1; + private System.Windows.Forms.DataGridViewTextBoxColumn columnWarning; + private System.Windows.Forms.CheckBox checkBox1; + } +} + diff --git a/devtools/ResxCheck/Program.cs b/XenAdmin/Dialogs/OvfValidationDialog.cs similarity index 56% rename from devtools/ResxCheck/Program.cs rename to XenAdmin/Dialogs/OvfValidationDialog.cs index 9cc8e94d2..60538d681 100644 --- a/devtools/ResxCheck/Program.cs +++ b/XenAdmin/Dialogs/OvfValidationDialog.cs @@ -1,46 +1,71 @@ -/* 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.Linq; -using System.Text; - -namespace ResxCheck -{ - class Program - { - static void Main(string[] args) - { - ResxCheck.FindUnusedMessages(@"..\..\..\..",false); - } - } -} \ No newline at end of file +/* 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.Windows.Forms; + + +namespace XenAdmin.Dialogs +{ + public partial class OvfValidationDialog : XenDialogBase + { + private readonly IEnumerable _warnings; + + public OvfValidationDialog(IEnumerable warnings) + { + InitializeComponent(); + _warnings = warnings; + } + + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + + var rows = new List(); + + foreach (string warning in _warnings) + { + var row = new LicenseDataGridViewRow(); + row.Cells.Add(new DataGridViewTextBoxCell {Value = warning}); + rows.Add(row); + } + + dataGridViewEx1.Rows.AddRange(rows.ToArray()); + } + + private void OvfValidationDialog_FormClosing(object sender, FormClosingEventArgs e) + { + Properties.Settings.Default.IgnoreOvfValidationWarnings = checkBox1.Checked; + Settings.TrySaveSettings(); + } + } +} diff --git a/XenAdmin/Dialogs/OvfValidationDialog.ja.resx b/XenAdmin/Dialogs/OvfValidationDialog.ja.resx new file mode 100644 index 000000000..d00213b78 --- /dev/null +++ b/XenAdmin/Dialogs/OvfValidationDialog.ja.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/XenAdmin/Dialogs/OvfValidationDialog.resx b/XenAdmin/Dialogs/OvfValidationDialog.resx new file mode 100644 index 000000000..9b08fb549 --- /dev/null +++ b/XenAdmin/Dialogs/OvfValidationDialog.resx @@ -0,0 +1,360 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + 3 + + + True + + + + GrowAndShrink + + + + Segoe UI, 9pt + + + 339, 262 + + + 75, 25 + + + 75, 25 + + + 3 + + + C&ontinue + + + buttonContinue + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + True + + + GrowAndShrink + + + Segoe UI, 9pt + + + 420, 262 + + + 75, 25 + + + 75, 25 + + + 4 + + + Cancel + + + buttonCancel + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + True + + + Fill + + + Segoe UI, 9pt + + + 3, 0 + + + 3, 0, 3, 15 + + + 492, 45 + + + 0 + + + The following warnings were issued while validating the package to import. Please review these warnings. You can find more details in the application logs. If you want to proceed with the import, click Continue. + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + True + + + columnWarning + + + Fill + + + Segoe UI, 9pt + + + 3, 63 + + + 492, 168 + + + 1 + + + dataGridViewEx1 + + + XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 3 + + + True + + + Segoe UI, 9pt + + + 3, 237 + + + 176, 19 + + + 2 + + + &Don't show this dialog again + + + checkBox1 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 4 + + + Fill + + + Segoe UI, 9pt + + + 10, 10 + + + 4 + + + 498, 290 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="buttonContinue" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="buttonCancel" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="dataGridViewEx1" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="checkBox1" Row="2" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + + + True + + + 96, 96 + + + 518, 310 + + + Segoe UI, 9pt + + + 10, 10, 10, 10 + + + Review Package Validation Results + + + columnWarning + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + OvfValidationDialog + + + XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + \ No newline at end of file diff --git a/XenAdmin/Dialogs/OvfValidationDialog.zh-CN.resx b/XenAdmin/Dialogs/OvfValidationDialog.zh-CN.resx new file mode 100644 index 000000000..d00213b78 --- /dev/null +++ b/XenAdmin/Dialogs/OvfValidationDialog.zh-CN.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/XenAdmin/Dialogs/PasswordsRequestDialog.Designer.cs b/XenAdmin/Dialogs/PasswordsRequestDialog.Designer.cs index 1644d8e0e..a5ee4c46d 100644 --- a/XenAdmin/Dialogs/PasswordsRequestDialog.Designer.cs +++ b/XenAdmin/Dialogs/PasswordsRequestDialog.Designer.cs @@ -35,8 +35,13 @@ namespace XenAdmin.Dialogs this.CancelBtn = new System.Windows.Forms.Button(); this.ApplicationLabel = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); - this.OKAlwaysTooltipContainer = new XenAdmin.Controls.ToolTipContainer(); - this.OKAlwaysTooltipContainer.SuspendLayout(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.label2 = new System.Windows.Forms.Label(); + this.tableLayoutPanel1.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.SuspendLayout(); // // OKThisTimeButton @@ -48,14 +53,15 @@ namespace XenAdmin.Dialogs // // OKAlwaysButton // - this.OKAlwaysButton.DialogResult = System.Windows.Forms.DialogResult.Yes; resources.ApplyResources(this.OKAlwaysButton, "OKAlwaysButton"); + this.OKAlwaysButton.DialogResult = System.Windows.Forms.DialogResult.Yes; this.OKAlwaysButton.Name = "OKAlwaysButton"; this.OKAlwaysButton.UseVisualStyleBackColor = true; // // label1 // resources.ApplyResources(this.label1, "label1"); + this.tableLayoutPanel1.SetColumnSpan(this.label1, 3); this.label1.Name = "label1"; // // CancelBtn @@ -68,35 +74,62 @@ namespace XenAdmin.Dialogs // ApplicationLabel // resources.ApplyResources(this.ApplicationLabel, "ApplicationLabel"); + this.tableLayoutPanel1.SetColumnSpan(this.ApplicationLabel, 3); this.ApplicationLabel.Name = "ApplicationLabel"; // // label3 // resources.ApplyResources(this.label3, "label3"); + this.tableLayoutPanel1.SetColumnSpan(this.label3, 3); this.label3.Name = "label3"; // - // OKAlwaysTooltipContainer + // tableLayoutPanel1 // - resources.ApplyResources(this.OKAlwaysTooltipContainer, "OKAlwaysTooltipContainer"); - this.OKAlwaysTooltipContainer.Controls.Add(this.OKAlwaysButton); - this.OKAlwaysTooltipContainer.Name = "OKAlwaysTooltipContainer"; + resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.OKAlwaysButton, 1, 4); + this.tableLayoutPanel1.Controls.Add(this.CancelBtn, 2, 4); + this.tableLayoutPanel1.Controls.Add(this.ApplicationLabel, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.label3, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.OKThisTimeButton, 0, 4); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 3); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + // + // tableLayoutPanel2 + // + resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2"); + this.tableLayoutPanel1.SetColumnSpan(this.tableLayoutPanel2, 3); + this.tableLayoutPanel2.Controls.Add(this.pictureBox1, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.label2, 1, 0); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + // + // pictureBox1 + // + resources.ApplyResources(this.pictureBox1, "pictureBox1"); + this.pictureBox1.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16; + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.TabStop = false; + // + // label2 + // + resources.ApplyResources(this.label2, "label2"); + this.label2.Name = "label2"; // // PasswordsRequestDialog // this.AcceptButton = this.OKThisTimeButton; + resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.CancelButton = this.CancelBtn; - resources.ApplyResources(this, "$this"); - this.Controls.Add(this.OKAlwaysTooltipContainer); - this.Controls.Add(this.label3); - this.Controls.Add(this.ApplicationLabel); - this.Controls.Add(this.CancelBtn); - this.Controls.Add(this.label1); - this.Controls.Add(this.OKThisTimeButton); + this.Controls.Add(this.tableLayoutPanel1); this.HelpButton = false; this.Name = "PasswordsRequestDialog"; this.Load += new System.EventHandler(this.PasswordsRequestDialog_Load); - this.OKAlwaysTooltipContainer.ResumeLayout(false); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + this.tableLayoutPanel2.ResumeLayout(false); + this.tableLayoutPanel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -110,6 +143,9 @@ namespace XenAdmin.Dialogs private System.Windows.Forms.Button CancelBtn; private System.Windows.Forms.Label ApplicationLabel; private System.Windows.Forms.Label label3; - private XenAdmin.Controls.ToolTipContainer OKAlwaysTooltipContainer; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Label label2; } } diff --git a/XenAdmin/Dialogs/PasswordsRequestDialog.cs b/XenAdmin/Dialogs/PasswordsRequestDialog.cs index 96f5b8177..bcb3ad434 100644 --- a/XenAdmin/Dialogs/PasswordsRequestDialog.cs +++ b/XenAdmin/Dialogs/PasswordsRequestDialog.cs @@ -30,11 +30,7 @@ */ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; using System.Drawing; -using System.Text; using System.Windows.Forms; @@ -50,15 +46,14 @@ namespace XenAdmin.Dialogs { InitializeComponent(); - OKAlwaysTooltipContainer.SetToolTip(Messages.PASSWORDS_REQUEST_ALWAYS_DISABLED_TOOLTIP_BODY); - - bool p = Properties.Settings.Default.RequirePass; - OKAlwaysButton.Enabled = !p; + bool requirePass = Properties.Settings.Default.RequirePass; + OKAlwaysButton.Enabled = !requirePass; + tableLayoutPanel2.Visible = requirePass; } public string Application { - set { ApplicationLabel.Text = value; } + set => ApplicationLabel.Text = value; } private void PasswordsRequestDialog_Load(object sender, EventArgs e) diff --git a/XenAdmin/Dialogs/PasswordsRequestDialog.ja.resx b/XenAdmin/Dialogs/PasswordsRequestDialog.ja.resx index a6b172d88..dc8168b68 100644 --- a/XenAdmin/Dialogs/PasswordsRequestDialog.ja.resx +++ b/XenAdmin/Dialogs/PasswordsRequestDialog.ja.resx @@ -112,52 +112,67 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + - Bottom, Right + Top, Right - + + + True + + + GrowAndShrink + + Segoe UI, 9pt 82, 114 + + 155, 25 + 152, 23 - 0 - 今回は提供する + 今回のみパスワードを入力する OKThisTimeButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 5 - - Fill + + True + + + GrowAndShrink Segoe UI, 9pt - 0, 0 + 267, 130 + + + 140, 25 152, 23 @@ -166,22 +181,286 @@ 1 - 常に提供する + 常にパスワードを入力する OKAlwaysButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - OKAlwaysTooltipContainer + tableLayoutPanel1 1 - Top, Left, Right + Left, Right + + + True + + + True + + + GrowAndShrink + + + 3 + + + GrowAndShrink + + + Segoe UI, 9pt + + + NoControl + + + 413, 130 + + + 75, 25 + + + 75, 25 + + + 2 + + + キャンセル + + + CancelBtn + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + Left, Right + + + True + + + Segoe UI, 9pt + + + 3, 40 + + + 3, 0, 3, 10 + + + 485, 0 + + + 485, 15 + + + 1 + + + applicationLabel + + + TopCenter + + + ApplicationLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + Left, Right + + + True + + + Segoe UI, 9pt + + + 3, 65 + + + 3, 0, 3, 15 + + + 485, 15 + + + 2 + + + サーバーのアドレスおよびパスワードをこのアプリケーションに提供しますか? + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 4 + + + True + + + GrowAndShrink + + + 2 + + + Segoe UI, 9pt + + + 3, 3 + + + 16, 16 + + + 0 + + + pictureBox1 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + Left, Right + + + True + + + Segoe UI, 9pt + + + 25, 3 + + + 485, 0 + + + 463, 15 + + + 0 + + + マスター パスワードを設定したため、パスワードの入力は今回のみにすることができます。 + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 1 + + + Fill + + + Segoe UI, 9pt + + + 0, 95 + + + 0, 0, 0, 10 + + + 1 + + + 491, 22 + + + 3 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 6 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> + + + Fill + + + Segoe UI, 9pt + + + 10, 10 + + + 5 + + + 491, 168 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="OKAlwaysButton" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="CancelBtn" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="ApplicationLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="label3" Row="2" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="OKThisTimeButton" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel2" Row="3" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> Segoe UI, 9pt @@ -190,7 +469,13 @@ NoControl - 12, 9 + 3, 0 + + + 3, 0, 3, 10 + + + 485, 0 461, 41 @@ -205,143 +490,35 @@ label1 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 - 4 - - - Bottom, Right - - - Segoe UI, 9pt - - - NoControl - - - 398, 114 - - - 75, 23 - - - 3 - - - キャンセル - - - CancelBtn - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - Segoe UI, 9pt - - - 12, 46 - - - 461, 23 - - - 4 - - - TopCenter - - - ApplicationLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - True - - - Segoe UI, 9pt - - - 12, 73 - - - 433, 15 - - - 5 - - - サーバーのアドレスおよびパスワードをこのアプリケーションに提供しますか? - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - Bottom, Right - - - Segoe UI, 9pt - - - 240, 114 - - - 152, 23 - - - 9 - - - OKAlwaysTooltipContainer - - - XenAdmin.Controls.ToolTipContainer, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - $this - - 0 - + True 96, 96 + + True + + + GrowAndShrink + 485, 149 Tahoma, 8pt + + 10, 10, 10, 10 + [XenCenter] diff --git a/XenAdmin/Dialogs/PasswordsRequestDialog.resx b/XenAdmin/Dialogs/PasswordsRequestDialog.resx index 5ac0c1b80..217af1cf7 100644 --- a/XenAdmin/Dialogs/PasswordsRequestDialog.resx +++ b/XenAdmin/Dialogs/PasswordsRequestDialog.resx @@ -112,109 +112,106 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + - Bottom, Right + Top, Right - + + + True + + + GrowAndShrink + + Segoe UI, 9pt - 82, 114 + 106, 130 + + + 155, 25 - 152, 23 + 155, 25 - 0 - Give Passwords This Time + Give passwords &this time OKThisTimeButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 5 - - Fill + + True + + + GrowAndShrink Segoe UI, 9pt - 0, 0 + 267, 130 + + + 140, 25 - 152, 23 + 140, 25 1 - Give Passwords Always + Give passwords &always OKAlwaysButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - OKAlwaysTooltipContainer + tableLayoutPanel1 1 - Top, Left, Right + Left, Right - - Segoe UI, 9pt + + True - - NoControl + + True - - 12, 9 + + GrowAndShrink - - 461, 41 + + 3 - - 2 - - - The following application has asked [XenCenter] for the connection details to your servers, including your passwords: - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - - - Bottom, Right + + GrowAndShrink Segoe UI, 9pt @@ -223,13 +220,16 @@ NoControl - 398, 114 + 413, 130 + + + 75, 25 - 75, 23 + 75, 25 - 3 + 2 Cancel @@ -238,25 +238,40 @@ CancelBtn - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 - 3 + 2 + + + Left, Right + + + True Segoe UI, 9pt - 12, 46 + 3, 40 + + + 3, 0, 3, 10 + + + 485, 0 - 461, 23 + 485, 15 - 4 + 1 + + + applicationLabel TopCenter @@ -265,13 +280,16 @@ ApplicationLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 - 2 + 3 + + + Left, Right True @@ -280,13 +298,16 @@ Segoe UI, 9pt - 12, 73 + 3, 65 + + + 3, 0, 3, 15 - 433, 15 + 485, 15 - 5 + 2 Do you want to give your server addresses and passwords to this application? @@ -295,53 +316,209 @@ label3 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 - 1 + 4 - - Bottom, Right + + True - + + GrowAndShrink + + + 2 + + Segoe UI, 9pt - - 240, 114 + + 3, 3 - - 152, 23 + + 16, 16 - - 9 - - - OKAlwaysTooltipContainer - - - XenAdmin.Controls.ToolTipContainer, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - $this - - + 0 - + + pictureBox1 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + Left, Right + + + True + + + Segoe UI, 9pt + + + 25, 3 + + + 485, 0 + + + 463, 15 + + + 0 + + + You can give passwords only this time because you have set a master password. + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 1 + + + Fill + + + Segoe UI, 9pt + + + 0, 95 + + + 0, 0, 0, 10 + + + 1 + + + 491, 22 + + + 3 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 6 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> + + + Fill + + + Segoe UI, 9pt + + + 10, 10 + + + 5 + + + 491, 168 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="OKAlwaysButton" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="CancelBtn" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="ApplicationLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="label3" Row="2" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="OKThisTimeButton" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel2" Row="3" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + + + Segoe UI, 9pt + + + NoControl + + + 3, 0 + + + 3, 0, 3, 10 + + + 485, 0 + + + 485, 30 + + + 0 + + + The following application has asked [XenCenter] for the connection details to your servers, including your passwords: + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + True 96, 96 + + True + + + GrowAndShrink + - 485, 149 + 511, 188 Tahoma, 8pt + + 10, 10, 10, 10 + [XenCenter] @@ -351,4 +528,4 @@ XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - + \ No newline at end of file diff --git a/XenAdmin/Dialogs/PasswordsRequestDialog.zh-CN.resx b/XenAdmin/Dialogs/PasswordsRequestDialog.zh-CN.resx index d1ba0ce03..cc8bfca54 100644 --- a/XenAdmin/Dialogs/PasswordsRequestDialog.zh-CN.resx +++ b/XenAdmin/Dialogs/PasswordsRequestDialog.zh-CN.resx @@ -112,52 +112,67 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + - Bottom, Right + Top, Right - + + + True + + + GrowAndShrink + + Segoe UI, 9pt 82, 114 + + 155, 25 + 152, 23 - 0 - 此次提供密码 + 本次提供密码(&T) OKThisTimeButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 5 - - Fill + + True + + + GrowAndShrink Segoe UI, 9pt - 0, 0 + 267, 130 + + + 140, 25 152, 23 @@ -166,22 +181,286 @@ 1 - 始终提供密码 + 始终提供密码(&A) OKAlwaysButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - OKAlwaysTooltipContainer + tableLayoutPanel1 1 - Top, Left, Right + Left, Right + + + True + + + True + + + GrowAndShrink + + + 3 + + + GrowAndShrink + + + Segoe UI, 9pt + + + NoControl + + + 413, 130 + + + 75, 25 + + + 75, 25 + + + 2 + + + 取消 + + + CancelBtn + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + Left, Right + + + True + + + Segoe UI, 9pt + + + 3, 40 + + + 3, 0, 3, 10 + + + 485, 0 + + + 485, 15 + + + 1 + + + applicationLabel + + + TopCenter + + + ApplicationLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + Left, Right + + + True + + + Segoe UI, 9pt + + + 3, 65 + + + 3, 0, 3, 15 + + + 485, 15 + + + 2 + + + 是否要将您的服务器地址和密码提供给此应用程序? + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 4 + + + True + + + GrowAndShrink + + + 2 + + + Segoe UI, 9pt + + + 3, 3 + + + 16, 16 + + + 0 + + + pictureBox1 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + Left, Right + + + True + + + Segoe UI, 9pt + + + 25, 3 + + + 485, 0 + + + 463, 15 + + + 0 + + + 由于您设置了主密码,因此只能本次提供密码。 + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 1 + + + Fill + + + Segoe UI, 9pt + + + 0, 95 + + + 0, 0, 0, 10 + + + 1 + + + 491, 22 + + + 3 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 6 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> + + + Fill + + + Segoe UI, 9pt + + + 10, 10 + + + 5 + + + 491, 168 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="OKAlwaysButton" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="CancelBtn" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="ApplicationLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="label3" Row="2" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="OKThisTimeButton" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel2" Row="3" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> Segoe UI, 9pt @@ -190,7 +469,13 @@ NoControl - 12, 9 + 3, 0 + + + 3, 0, 3, 10 + + + 485, 0 461, 41 @@ -205,143 +490,35 @@ label1 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 - 4 - - - Bottom, Right - - - Segoe UI, 9pt - - - NoControl - - - 398, 114 - - - 75, 23 - - - 3 - - - 取消 - - - CancelBtn - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - Segoe UI, 9pt - - - 12, 46 - - - 461, 23 - - - 4 - - - TopCenter - - - ApplicationLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - True - - - Segoe UI, 9pt - - - 12, 73 - - - 433, 15 - - - 5 - - - 是否要将您的服务器地址和密码提供给此应用程序? - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - Bottom, Right - - - Segoe UI, 9pt - - - 240, 114 - - - 152, 23 - - - 9 - - - OKAlwaysTooltipContainer - - - XenAdmin.Controls.ToolTipContainer, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - $this - - 0 - + True 96, 96 + + True + + + GrowAndShrink + 485, 149 Tahoma, 8pt + + 10, 10, 10, 10 + [XenCenter] diff --git a/XenAdmin/Dialogs/PropertiesDialog.cs b/XenAdmin/Dialogs/PropertiesDialog.cs index 640ed7293..e721f7895 100755 --- a/XenAdmin/Dialogs/PropertiesDialog.cs +++ b/XenAdmin/Dialogs/PropertiesDialog.cs @@ -335,13 +335,6 @@ namespace XenAdmin.Dialogs private void btnOK_Click(object sender, EventArgs e) { - // Have any of the fields in the tab pages changed? - if (!HasChanged) - { - Close(); - return; - } - if (!ValidToSave) { // Keep dialog open and allow user to correct the error as @@ -350,6 +343,13 @@ namespace XenAdmin.Dialogs return; } + // Have any of the fields in the tab pages changed? + if (!HasChanged) + { + Close(); + return; + } + // Yes, save to the LocalXenObject. List actions = SaveSettings(); @@ -521,8 +521,7 @@ namespace XenAdmin.Dialogs VMHAEditPage.StartNtolUpdate(); if (GpuEditPage != null) { - VMHAEditPage.GpuGroup = GpuEditPage.GpuGroup; - VMHAEditPage.VgpuType = GpuEditPage.VgpuType; + VMHAEditPage.VGpus = GpuEditPage.VGpus; VMHAEditPage.RefillPrioritiesComboBox(); } return; diff --git a/XenAdmin/Dialogs/PvsCacheConfigurationDialog.cs b/XenAdmin/Dialogs/PvsCacheConfigurationDialog.cs index 2cfa7644d..5a7952590 100644 --- a/XenAdmin/Dialogs/PvsCacheConfigurationDialog.cs +++ b/XenAdmin/Dialogs/PvsCacheConfigurationDialog.cs @@ -47,11 +47,11 @@ namespace XenAdmin.Dialogs public partial class PvsCacheConfigurationDialog : VerticallyTabbedDialog { public PvsCacheConfigurationDialog(IXenConnection connection) + :base(connection) { InitializeComponent(); - System.Diagnostics.Trace.Assert(connection != null); - this.connection = connection; + System.Diagnostics.Debug.Assert(connection != null); Text = string.Format(Messages.PVS_CACHE_CONFIG_DIALOG_TITLE, connection.Name); diff --git a/XenAdmin/Dialogs/PvsSiteDialog.cs b/XenAdmin/Dialogs/PvsSiteDialog.cs index 4ea10cafd..2a307820e 100644 --- a/XenAdmin/Dialogs/PvsSiteDialog.cs +++ b/XenAdmin/Dialogs/PvsSiteDialog.cs @@ -45,15 +45,15 @@ namespace XenAdmin.Dialogs /// /// May not be null. public PvsSiteDialog(PVS_site site) + : base(site?.Connection) { - System.Diagnostics.Trace.Assert(site != null); - connection = site.Connection; + System.Diagnostics.Debug.Assert(site != null); pvsSite = site; InitializeComponent(); Text = string.Format(Messages.PVS_SITE_DIALOG_TITLE, pvsSite.Name().Ellipsise(50)); - System.Diagnostics.Trace.Assert(gridView.Columns.Count > 0); + System.Diagnostics.Debug.Assert(gridView.Columns.Count > 0); gridView.Columns[0].DefaultCellStyle.NullValue = null; RegisterEventHandlers(); diff --git a/XenAdmin/Dialogs/ReconnectAsDialog.Designer.cs b/XenAdmin/Dialogs/ReconnectAsDialog.Designer.cs index 3caf3ff77..810a516e5 100644 --- a/XenAdmin/Dialogs/ReconnectAsDialog.Designer.cs +++ b/XenAdmin/Dialogs/ReconnectAsDialog.Designer.cs @@ -65,7 +65,7 @@ namespace XenAdmin.Dialogs // pictureBoxAdPicture // resources.ApplyResources(this.pictureBoxAdPicture, "pictureBoxAdPicture"); - this.pictureBoxAdPicture.Image = global::XenAdmin.Properties.Resources._000_User_h32bit_16; + this.pictureBoxAdPicture.Image = global::XenAdmin.Properties.Resources._000_User_h32bit_32; this.pictureBoxAdPicture.Name = "pictureBoxAdPicture"; this.pictureBoxAdPicture.TabStop = false; // @@ -94,9 +94,9 @@ namespace XenAdmin.Dialogs // // flowLayoutPanel1 // + resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1"); this.flowLayoutPanel1.Controls.Add(this.buttonCancel); this.flowLayoutPanel1.Controls.Add(this.buttonOK); - resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1"); this.flowLayoutPanel1.Name = "flowLayoutPanel1"; // // buttonCancel diff --git a/XenAdmin/Dialogs/ReconnectAsDialog.cs b/XenAdmin/Dialogs/ReconnectAsDialog.cs index 9f6990171..e6e24fb49 100644 --- a/XenAdmin/Dialogs/ReconnectAsDialog.cs +++ b/XenAdmin/Dialogs/ReconnectAsDialog.cs @@ -61,7 +61,7 @@ namespace XenAdmin.Dialogs xc.Password = textBoxPassword.Text; xc.ExpectPasswordIsCorrect = true; // start logout then wait for connection to become disconnected - xc.ConnectionStateChanged += new EventHandler(xc_ConnectionStateChanged); + xc.ConnectionStateChanged += xc_ConnectionStateChanged; if (!new DisconnectCommand(Program.MainWindow, xc, true).Execute()) { @@ -71,15 +71,15 @@ namespace XenAdmin.Dialogs Close(); } - private void xc_ConnectionStateChanged(object sender, EventArgs e) + private void xc_ConnectionStateChanged(IXenConnection conn) { if (xc.IsConnected) return; - xc.ConnectionStateChanged -= new EventHandler(xc_ConnectionStateChanged); + xc.ConnectionStateChanged -= xc_ConnectionStateChanged; Timer t = new Timer(500); t.AutoReset = false; - t.Elapsed += new ElapsedEventHandler(t_Elapsed); + t.Elapsed += t_Elapsed; t.Start(); } @@ -87,14 +87,14 @@ namespace XenAdmin.Dialogs { Program.Invoke(Program.MainWindow, delegate { - xc.CachePopulated += new EventHandler(xc_CachePopulated); + xc.CachePopulated += xc_CachePopulated; XenConnectionUI.BeginConnect(xc, true, Program.MainWindow, true); }); } - void xc_CachePopulated(object sender, EventArgs e) + void xc_CachePopulated(IXenConnection conn) { - xc.CachePopulated -= new EventHandler(xc_CachePopulated); + xc.CachePopulated -= xc_CachePopulated; Program.MainWindow.TrySelectNewObjectInTree(xc, true, true, false); } diff --git a/XenAdmin/Dialogs/ReconnectAsDialog.ja.resx b/XenAdmin/Dialogs/ReconnectAsDialog.ja.resx index 1f32a3384..f6c9175dd 100644 --- a/XenAdmin/Dialogs/ReconnectAsDialog.ja.resx +++ b/XenAdmin/Dialogs/ReconnectAsDialog.ja.resx @@ -159,12 +159,12 @@ 0 + + Left + True - - Fill - Segoe UI, 9pt @@ -195,17 +195,14 @@ 2 - - Top + + Left, Right Segoe UI, 9pt - 146, 84 - - - 3, 3, 20, 3 + 110, 93 295, 23 @@ -225,12 +222,12 @@ 3 + + Left + True - - Fill - Segoe UI, 9pt @@ -261,17 +258,14 @@ 4 - - Top + + Left, Right Segoe UI, 9pt - 146, 113 - - - 3, 3, 20, 3 + 110, 122 295, 23 @@ -291,6 +285,12 @@ 5 + + True + + + GrowAndShrink + Segoe UI, 9pt @@ -415,7 +415,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxAdPicture" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelBlurb" Row="0" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="labelUsername" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxUsername" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="labelPassword" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxPassword" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Absolute,52,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxAdPicture" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelBlurb" Row="0" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="labelUsername" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxUsername" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="labelPassword" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxPassword" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,Percent,100" /><Rows Styles="Percent,100,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> Fill @@ -424,10 +424,7 @@ Segoe UI, 9pt - 58, 6 - - - 6, 6, 6, 6 + 41, 0 397, 80 @@ -470,6 +467,9 @@ 0, 0, 0, 0 + + 10, 10, 10, 10 + 別のアカウントで再接続 diff --git a/XenAdmin/Dialogs/ReconnectAsDialog.resx b/XenAdmin/Dialogs/ReconnectAsDialog.resx index d9600a961..90072907e 100644 --- a/XenAdmin/Dialogs/ReconnectAsDialog.resx +++ b/XenAdmin/Dialogs/ReconnectAsDialog.resx @@ -139,7 +139,7 @@ 3, 3 - 46, 39 + 32, 32 CenterImage @@ -159,20 +159,20 @@ 0 + + Left + True - - Fill - Segoe UI, 9pt - 55, 92 + 41, 97 - 63, 29 + 63, 15 1 @@ -195,20 +195,17 @@ 2 - - Top + + Left, Right Segoe UI, 9pt - 124, 95 - - - 3, 3, 20, 3 + 110, 93 - 317, 23 + 328, 23 2 @@ -225,20 +222,20 @@ 3 + + Left + True - - Fill - Segoe UI, 9pt - 55, 121 + 41, 126 - 63, 29 + 60, 15 3 @@ -261,20 +258,17 @@ 4 - - Top + + Left, Right Segoe UI, 9pt - 124, 124 - - - 3, 3, 20, 3 + 110, 122 - 317, 23 + 328, 23 4 @@ -291,11 +285,17 @@ 5 + + True + + + GrowAndShrink + Segoe UI, 9pt - 256, 3 + 250, 3 75, 23 @@ -325,7 +325,7 @@ Segoe UI, 9pt - 175, 3 + 169, 3 75, 23 @@ -358,13 +358,13 @@ Segoe UI, 9pt - 124, 160 + 110, 158 3, 10, 3, 3 - 334, 32 + 328, 29 5 @@ -388,7 +388,7 @@ Segoe UI, 9pt - 0, 0 + 10, 10 6, 6, 6, 6 @@ -397,7 +397,7 @@ 4 - 461, 195 + 441, 190 0 @@ -415,7 +415,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxAdPicture" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelBlurb" Row="0" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="labelUsername" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxUsername" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="labelPassword" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxPassword" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Absolute,52,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxAdPicture" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelBlurb" Row="0" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="labelUsername" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxUsername" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="labelPassword" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxPassword" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,Percent,100" /><Rows Styles="Percent,100,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> Fill @@ -424,16 +424,13 @@ Segoe UI, 9pt - 58, 6 - - - 6, 6, 6, 6 + 41, 0 397, 80 - 397, 80 + 397, 90 0 @@ -462,7 +459,7 @@ To log out of this server and log in again using a different user account, enter 96, 96 - 461, 195 + 461, 210 Segoe UI, 9pt @@ -470,6 +467,9 @@ To log out of this server and log in again using a different user account, enter 0, 0, 0, 0 + + 10, 10, 10, 10 + Reconnect As Different User diff --git a/XenAdmin/Dialogs/ReconnectAsDialog.zh-CN.resx b/XenAdmin/Dialogs/ReconnectAsDialog.zh-CN.resx index 4bb06b5e1..f6896a85d 100644 --- a/XenAdmin/Dialogs/ReconnectAsDialog.zh-CN.resx +++ b/XenAdmin/Dialogs/ReconnectAsDialog.zh-CN.resx @@ -159,12 +159,12 @@ 0 + + Left + True - - Fill - Segoe UI, 9pt @@ -195,17 +195,14 @@ 2 - - Top + + Left, Right Segoe UI, 9pt - 105, 84 - - - 3, 3, 20, 3 + 110, 93 336, 23 @@ -225,12 +222,12 @@ 3 + + Left + True - - Fill - Segoe UI, 9pt @@ -261,17 +258,14 @@ 4 - - Top + + Left, Right Segoe UI, 9pt - 127, 124 - - - 3, 3, 20, 3 + 110, 122 314, 23 @@ -291,6 +285,12 @@ 5 + + True + + + GrowAndShrink + Segoe UI, 9pt @@ -415,7 +415,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxAdPicture" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelBlurb" Row="0" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="labelUsername" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxUsername" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="labelPassword" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxPassword" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Absolute,52,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxAdPicture" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelBlurb" Row="0" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="labelUsername" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxUsername" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="labelPassword" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxPassword" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,Percent,100" /><Rows Styles="Percent,100,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> Fill @@ -424,10 +424,7 @@ Segoe UI, 9pt - 58, 6 - - - 6, 6, 6, 6 + 41, 0 397, 80 @@ -470,6 +467,9 @@ 0, 0, 0, 0 + + 10, 10, 10, 10 + 以其他用户身份重新连接 diff --git a/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.Designer.cs b/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.Designer.cs index 2c4899715..fe2dbdad9 100644 --- a/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.Designer.cs +++ b/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.Designer.cs @@ -89,7 +89,6 @@ namespace XenAdmin.Dialogs.RestoreSession this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.cancelButton.Name = "cancelButton"; this.cancelButton.UseVisualStyleBackColor = true; - this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); // // okButton // diff --git a/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.cs b/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.cs index f0fd16996..fb989e3dd 100644 --- a/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.cs +++ b/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.cs @@ -30,8 +30,6 @@ */ using System; -using System.Collections.Generic; -using System.Text; using System.Windows.Forms; using XenCenterLib; @@ -40,25 +38,17 @@ namespace XenAdmin.Dialogs.RestoreSession { public partial class ChangeMasterPasswordDialog : XenDialogBase { - private byte[] OldProposedPassword; - private byte[] passHash; + private readonly byte[] OldProposedPassword; public ChangeMasterPasswordDialog(byte[] proposedPassword) { InitializeComponent(); OldProposedPassword = proposedPassword; currentPasswordError.Visible = false; - currentPasswordError.Error = Messages.PASSWORD_INCORRECT; newPasswordError.Visible = false; } - public byte[] NewPassword - { - get - { - return passHash; - } - } + public byte[] NewPassword { get; private set; } private void currentTextBox_TextChanged(object sender, EventArgs e) { @@ -77,41 +67,25 @@ namespace XenAdmin.Dialogs.RestoreSession private void okButton_Click(object sender, EventArgs e) { - if (!string.IsNullOrEmpty(masterTextBox.Text) && masterTextBox.Text == reEnterMasterTextBox.Text) - { - if (Settings.PassCorrect(currentTextBox.Text,OldProposedPassword)) - { - passHash = EncryptionUtils.ComputeHash(masterTextBox.Text); - DialogResult = DialogResult.OK; - Close(); - } - else - { - currentPasswordError.Visible = true; - currentTextBox.Focus(); - currentTextBox.SelectAll(); - } - } - else if (masterTextBox.Text != reEnterMasterTextBox.Text) - { - newPasswordError.Error = Messages.PASSWORDS_DONT_MATCH; - newPasswordError.Visible = true; - masterTextBox.Focus(); - masterTextBox.SelectAll(); - } - else - { - newPasswordError.Error = Messages.PASSWORDS_EMPTY; - newPasswordError.Visible = true; - masterTextBox.Focus(); - masterTextBox.SelectAll(); - } - } + var oldPasswordCorrect = Settings.PassCorrect(currentTextBox.Text, OldProposedPassword); - private void cancelButton_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Cancel; - Close(); + if (oldPasswordCorrect && !string.IsNullOrEmpty(masterTextBox.Text) && + masterTextBox.Text == reEnterMasterTextBox.Text) + { + NewPassword = EncryptionUtils.ComputeHash(masterTextBox.Text); + DialogResult = DialogResult.OK; + return; + } + + if (!oldPasswordCorrect) + currentPasswordError.ShowError(Messages.PASSWORD_INCORRECT); + else if (masterTextBox.Text != reEnterMasterTextBox.Text) + newPasswordError.ShowError(Messages.PASSWORDS_DONT_MATCH); + else + newPasswordError.ShowError(Messages.PASSWORDS_EMPTY); + + currentTextBox.Focus(); + currentTextBox.SelectAll(); } } -} \ No newline at end of file +} diff --git a/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.ja.resx b/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.ja.resx index ce9d2467a..c8aa72682 100644 --- a/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.ja.resx +++ b/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.ja.resx @@ -118,8 +118,8 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Fill + + Left, Right @@ -147,8 +147,8 @@ 8 - - Fill + + Left, Right Segoe UI, 9pt @@ -174,8 +174,8 @@ 4 - - Fill + + Left, Right Segoe UI, 9pt @@ -201,20 +201,17 @@ 6 + + Left + True - - Fill - Segoe UI, 9pt - 8, 75 - - - 0, 0, 0, 0 + 3, 87 163, 23 @@ -225,9 +222,6 @@ 現在のマスター パスワード(&C): - - MiddleLeft - currentLabel @@ -240,20 +234,17 @@ 2 + + Left + True - - Fill - Segoe UI, 9pt - 8, 140 - - - 0, 0, 0, 0 + 3, 141 144, 29 @@ -264,9 +255,6 @@ 新しいマスター パスワード(&N): - - MiddleLeft - masterLabel @@ -279,20 +267,17 @@ 5 + + Left + True - - Fill - Segoe UI, 9pt - 8, 169 - - - 0, 0, 0, 0 + 3, 170 144, 29 @@ -303,9 +288,6 @@ パスワードの確認入力(&R): - - MiddleLeft - reEnterMasterLabel @@ -388,7 +370,10 @@ GrowAndShrink - Fill + Top + + + Segoe UI, 9pt @@ -424,7 +409,10 @@ GrowAndShrink - Fill + Top + + + Segoe UI, 9pt @@ -459,78 +447,6 @@ 2 - - noteLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 0 - - - masterBlurbLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 1 - - - flowLayoutPanel1 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 10 - - - Fill - - - Segoe UI, 9pt - - - 0, 0 - - - 8, 8, 8, 8 - - - 8 - - - 425, 300 - - - 9 - - - tableLayoutPanel1 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="noteLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="masterBlurbLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="currentLabel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="currentPasswordError" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="masterTextBox" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="masterLabel" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="reEnterMasterTextBox" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="reEnterMasterLabel" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="currentTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="newPasswordError" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Absolute,22,AutoSize,0,AutoSize,0,Absolute,22,Percent,100" /></TableLayoutSettings> - Fill @@ -578,10 +494,7 @@ NoControl - 8, 8 - - - 0, 0, 0, 10 + 3, 0 409, 57 @@ -643,18 +556,63 @@ 10 + + Fill + + + Segoe UI, 9pt + + + 8, 8 + + + 3, 0, 3, 0 + + + 8 + + + 409, 251 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="noteLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="masterBlurbLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="currentLabel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="currentPasswordError" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="masterTextBox" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="masterLabel" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="reEnterMasterTextBox" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="reEnterMasterLabel" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="currentTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="newPasswordError" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Absolute,25,AutoSize,0,AutoSize,0,Absolute,25,AutoSize,0" /></TableLayoutSettings> + True 96, 96 + + True + + + GrowAndShrink + 425, 300 Segoe UI, 9pt + + 8, 8, 8, 8 + マスター パスワードの変更 diff --git a/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.resx b/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.resx index 43e0c91b9..34681df52 100644 --- a/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.resx +++ b/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.resx @@ -118,22 +118,22 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Fill + + Left, Right Segoe UI, 9pt - 153, 92 + 151, 83 - 261, 23 + 255, 23 - 1 + 3 currentTextBox @@ -147,20 +147,20 @@ 8 - - Fill + + Left, Right Segoe UI, 9pt - 153, 143 + 151, 137 - 261, 23 + 255, 23 - 3 + 6 masterTextBox @@ -174,20 +174,20 @@ 4 - - Fill + + Left, Right Segoe UI, 9pt - 153, 172 + 151, 166 - 261, 23 + 255, 23 - 5 + 8 reEnterMasterTextBox @@ -201,33 +201,27 @@ 6 + + Left + True - - Fill - Segoe UI, 9pt - 8, 89 - - - 0, 0, 0, 0 + 3, 87 - 142, 29 + 142, 15 - 0 + 2 &Current master password: - - MiddleLeft - currentLabel @@ -240,33 +234,27 @@ 2 + + Left + True - - Fill - Segoe UI, 9pt - 8, 140 - - - 0, 0, 0, 0 + 3, 141 - 142, 29 + 126, 15 - 2 + 5 &New master password: - - MiddleLeft - masterLabel @@ -279,33 +267,27 @@ 5 + + Left + True - - Fill - Segoe UI, 9pt - 8, 169 - - - 0, 0, 0, 0 + 3, 170 - 142, 29 + 133, 15 - 4 + 7 &Re-enter new password: - - MiddleLeft - reEnterMasterLabel @@ -325,13 +307,13 @@ Segoe UI, 9pt - 189, 3 + 183, 3 75, 25 - 7 + 1 Cancel @@ -358,13 +340,13 @@ Segoe UI, 9pt - 108, 3 + 102, 3 75, 25 - 6 + 0 OK @@ -388,22 +370,25 @@ GrowAndShrink - Fill + Top + + + Segoe UI, 9pt - 150, 198 + 148, 192 0, 0, 0, 0 - 267, 22 + 261, 22 - 8 + 9 newPasswordError @@ -424,22 +409,25 @@ GrowAndShrink - Fill + Top + + + Segoe UI, 9pt - 150, 118 + 148, 109 0, 0, 0, 0 - 267, 22 + 261, 22 - 8 + 4 currentPasswordError @@ -459,78 +447,6 @@ 2 - - noteLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 0 - - - masterBlurbLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 1 - - - flowLayoutPanel1 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 10 - - - Fill - - - Segoe UI, 9pt - - - 0, 0 - - - 8, 8, 8, 8 - - - 8 - - - 425, 257 - - - 9 - - - tableLayoutPanel1 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="noteLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="masterBlurbLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="currentLabel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="currentPasswordError" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="masterTextBox" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="masterLabel" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="reEnterMasterTextBox" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="reEnterMasterLabel" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="currentTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="newPasswordError" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Absolute,22,AutoSize,0,AutoSize,0,Absolute,22,Percent,100" /></TableLayoutSettings> - Fill @@ -541,20 +457,20 @@ NoControl - 8, 44 + 3, 35 - 0, 3, 0, 15 + 3, 5, 3, 15 - 409, 30 + 403, 30 - 11 + 1 Note that if you lose or forget the password, it cannot be recovered. -(Remember that passwords are case sensitive.) +(Remember that passwords are case sensitive). noteLabel @@ -578,16 +494,13 @@ NoControl - 8, 8 - - - 0, 0, 0, 3 + 3, 0 - 409, 30 + 403, 30 - 10 + 0 The master password protects all your saved server login credentials. @@ -621,16 +534,16 @@ You will need to enter this password at the beginning of each session. Segoe UI, 9pt - 150, 220 + 148, 217 0, 0, 0, 0 - 267, 29 + 261, 34 - 8 + 10 flowLayoutPanel1 @@ -644,18 +557,63 @@ You will need to enter this password at the beginning of each session. 10 + + Fill + + + Segoe UI, 9pt + + + 8, 8 + + + 3, 0, 3, 0 + + + 8 + + + 409, 251 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="noteLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="masterBlurbLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="currentLabel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="currentPasswordError" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="masterTextBox" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="masterLabel" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="reEnterMasterTextBox" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="reEnterMasterLabel" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="currentTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="newPasswordError" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Absolute,25,AutoSize,0,AutoSize,0,Absolute,25,AutoSize,0" /></TableLayoutSettings> + True 96, 96 + + True + + + GrowAndShrink + - 425, 257 + 425, 267 Segoe UI, 9pt + + 8, 8, 8, 8 + Change Master Password diff --git a/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.zh-CN.resx b/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.zh-CN.resx index cec00a755..9b9b929eb 100644 --- a/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.zh-CN.resx +++ b/XenAdmin/Dialogs/RestoreSession/ChangeMasterPasswordDialog.zh-CN.resx @@ -118,8 +118,8 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Fill + + Left, Right @@ -147,8 +147,8 @@ 8 - - Fill + + Left, Right Segoe UI, 9pt @@ -174,8 +174,8 @@ 4 - - Fill + + Left, Right Segoe UI, 9pt @@ -201,20 +201,17 @@ 6 + + Left + True - - Fill - Segoe UI, 9pt - 8, 75 - - - 0, 0, 0, 0 + 3, 87 163, 23 @@ -225,9 +222,6 @@ 当前主密码(&C): - - MiddleLeft - currentLabel @@ -240,20 +234,17 @@ 2 + + Left + True - - Fill - Segoe UI, 9pt - 8, 140 - - - 0, 0, 0, 0 + 3, 141 144, 29 @@ -264,9 +255,6 @@ 新主密码(&N): - - MiddleLeft - masterLabel @@ -279,20 +267,17 @@ 5 + + Left + True - - Fill - Segoe UI, 9pt - 8, 169 - - - 0, 0, 0, 0 + 3, 170 144, 29 @@ -303,9 +288,6 @@ 重新输入新密码(&R): - - MiddleLeft - reEnterMasterLabel @@ -388,7 +370,10 @@ GrowAndShrink - Fill + Top + + + Segoe UI, 9pt @@ -424,7 +409,10 @@ GrowAndShrink - Fill + Top + + + Segoe UI, 9pt @@ -459,78 +447,6 @@ 2 - - noteLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 0 - - - masterBlurbLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 1 - - - flowLayoutPanel1 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 10 - - - Fill - - - Segoe UI, 9pt - - - 0, 0 - - - 8, 8, 8, 8 - - - 8 - - - 425, 300 - - - 9 - - - tableLayoutPanel1 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="noteLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="masterBlurbLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="currentLabel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="currentPasswordError" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="masterTextBox" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="masterLabel" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="reEnterMasterTextBox" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="reEnterMasterLabel" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="currentTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="newPasswordError" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Absolute,22,AutoSize,0,AutoSize,0,Absolute,22,Percent,100" /></TableLayoutSettings> - Fill @@ -554,7 +470,7 @@ 请注意,如果丢失或忘记密码,则无法进行恢复。 -(请记住,密码区分大小写。) +(请记住,密码区分大小写)。 noteLabel @@ -578,10 +494,7 @@ NoControl - 8, 8 - - - 0, 0, 0, 10 + 3, 0 409, 40 @@ -644,18 +557,63 @@ 10 + + Fill + + + Segoe UI, 9pt + + + 8, 8 + + + 3, 0, 3, 0 + + + 8 + + + 409, 251 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="noteLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="masterBlurbLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="currentLabel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="currentPasswordError" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="masterTextBox" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="masterLabel" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="reEnterMasterTextBox" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="reEnterMasterLabel" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="currentTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="newPasswordError" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Absolute,25,AutoSize,0,AutoSize,0,Absolute,25,AutoSize,0" /></TableLayoutSettings> + True 96, 96 + + True + + + GrowAndShrink + 425, 300 Segoe UI, 9pt + + 8, 8, 8, 8 + 更改主密码 diff --git a/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.cs b/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.cs index c490e1445..2fa55b431 100644 --- a/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.cs +++ b/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.cs @@ -51,7 +51,6 @@ namespace XenAdmin.Dialogs.RestoreSession if (Settings.PassCorrect(masterTextBox.Text,TemporaryMasterPassword)) { DialogResult = DialogResult.OK; - Close(); } else { diff --git a/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.ja.resx b/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.ja.resx index c7092c409..664afc780 100644 --- a/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.ja.resx +++ b/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.ja.resx @@ -112,16 +112,16 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + Bottom, Right - + Segoe UI, 9pt @@ -134,7 +134,7 @@ 75, 23 - + 4 @@ -145,7 +145,7 @@ okButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -178,7 +178,7 @@ cancelButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -186,6 +186,9 @@ 5 + + Left, Right + 4 @@ -220,7 +223,7 @@ masterBlurbLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -252,14 +255,11 @@ マスター パスワード(&M): - - MiddleLeft - label1 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -274,7 +274,7 @@ GrowAndShrink - Fill + Top 入力したパスワードが間違っています。 @@ -328,7 +328,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -339,9 +339,6 @@ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="masterBlurbLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="masterTextBox" Row="1" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="passwordError" Row="2" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="okButton" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="cancelButton" Row="3" RowSpan="1" Column="3" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> - - Fill - Segoe UI, 9pt @@ -358,7 +355,7 @@ masterTextBox - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -366,7 +363,7 @@ 2 - + True diff --git a/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.resx b/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.resx index 4bf377460..ce976c12e 100644 --- a/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.resx +++ b/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.resx @@ -112,16 +112,16 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + Bottom, Right - + Segoe UI, 9pt @@ -134,7 +134,7 @@ 75, 23 - + 4 @@ -145,7 +145,7 @@ okButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -178,7 +178,7 @@ cancelButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -186,6 +186,9 @@ 5 + + Left, Right + 4 @@ -220,7 +223,7 @@ masterBlurbLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -252,14 +255,11 @@ &Master password: - - MiddleLeft - label1 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -274,7 +274,7 @@ GrowAndShrink - Fill + Top The password you typed was incorrect @@ -328,7 +328,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -339,9 +339,6 @@ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="masterBlurbLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="masterTextBox" Row="1" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="passwordError" Row="2" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="okButton" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="cancelButton" Row="3" RowSpan="1" Column="3" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> - - Fill - Segoe UI, 9pt @@ -358,7 +355,7 @@ masterTextBox - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -366,7 +363,7 @@ 2 - + True diff --git a/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.zh-CN.resx b/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.zh-CN.resx index 6927ffb91..e0664dc02 100644 --- a/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.zh-CN.resx +++ b/XenAdmin/Dialogs/RestoreSession/EnterMasterPasswordDialog.zh-CN.resx @@ -112,16 +112,16 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + Bottom, Right - + Segoe UI, 9pt @@ -134,7 +134,7 @@ 75, 23 - + 4 @@ -145,7 +145,7 @@ okButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -178,7 +178,7 @@ cancelButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -186,6 +186,9 @@ 5 + + Left, Right + 4 @@ -220,7 +223,7 @@ masterBlurbLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -252,14 +255,11 @@ 主密码(&M): - - MiddleLeft - label1 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -274,7 +274,7 @@ GrowAndShrink - Fill + Top 键入的密码不正确 @@ -328,7 +328,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -339,9 +339,6 @@ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="masterBlurbLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="masterTextBox" Row="1" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="passwordError" Row="2" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="okButton" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="cancelButton" Row="3" RowSpan="1" Column="3" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> - - Fill - Segoe UI, 9pt @@ -358,7 +355,7 @@ masterTextBox - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -366,7 +363,7 @@ 2 - + True diff --git a/XenAdmin/Dialogs/LoadSessionDialog.Designer.cs b/XenAdmin/Dialogs/RestoreSession/LoadSessionDialog.Designer.cs similarity index 89% rename from XenAdmin/Dialogs/LoadSessionDialog.Designer.cs rename to XenAdmin/Dialogs/RestoreSession/LoadSessionDialog.Designer.cs index c1caa7a8b..24a0d1214 100644 --- a/XenAdmin/Dialogs/LoadSessionDialog.Designer.cs +++ b/XenAdmin/Dialogs/RestoreSession/LoadSessionDialog.Designer.cs @@ -1,4 +1,4 @@ -namespace XenAdmin.Dialogs +namespace XenAdmin.Dialogs.RestoreSession { partial class LoadSessionDialog { @@ -36,6 +36,7 @@ namespace XenAdmin.Dialogs this.cancelButton = new System.Windows.Forms.Button(); this.passwordFailure1 = new XenAdmin.Controls.Common.PasswordFailure(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.label1 = new System.Windows.Forms.Label(); this.tableLayoutPanel1.SuspendLayout(); this.SuspendLayout(); // @@ -53,8 +54,8 @@ namespace XenAdmin.Dialogs // // passBox // - this.tableLayoutPanel1.SetColumnSpan(this.passBox, 3); resources.ApplyResources(this.passBox, "passBox"); + this.tableLayoutPanel1.SetColumnSpan(this.passBox, 3); this.passBox.Name = "passBox"; this.passBox.UseSystemPasswordChar = true; this.passBox.TextChanged += new System.EventHandler(this.passBox_TextChanged); @@ -84,13 +85,20 @@ namespace XenAdmin.Dialogs // resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); this.tableLayoutPanel1.Controls.Add(this.EnterPassLabel, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.passLabel, 0, 1); - this.tableLayoutPanel1.Controls.Add(this.passBox, 1, 1); - this.tableLayoutPanel1.Controls.Add(this.passwordFailure1, 1, 2); - this.tableLayoutPanel1.Controls.Add(this.cancelButton, 3, 3); - this.tableLayoutPanel1.Controls.Add(this.okButton, 2, 3); + this.tableLayoutPanel1.Controls.Add(this.passLabel, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.passBox, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.passwordFailure1, 1, 3); + this.tableLayoutPanel1.Controls.Add(this.cancelButton, 3, 4); + this.tableLayoutPanel1.Controls.Add(this.okButton, 2, 4); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.tableLayoutPanel1.SetColumnSpan(this.label1, 4); + this.label1.Name = "label1"; + // // LoadSessionDialog // this.AcceptButton = this.okButton; @@ -100,8 +108,6 @@ namespace XenAdmin.Dialogs this.Controls.Add(this.tableLayoutPanel1); this.Name = "LoadSessionDialog"; this.Load += new System.EventHandler(this.LoadSessionDialog_Load); - this.HelpButtonClicked += new System.ComponentModel.CancelEventHandler(this.LoadSessionDialog_HelpButtonClicked); - this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.LoadSessionDialog_HelpRequested); this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); this.ResumeLayout(false); @@ -117,5 +123,6 @@ namespace XenAdmin.Dialogs private System.Windows.Forms.Button cancelButton; private XenAdmin.Controls.Common.PasswordFailure passwordFailure1; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Label label1; } } \ No newline at end of file diff --git a/XenAdmin/Dialogs/LoadSessionDialog.cs b/XenAdmin/Dialogs/RestoreSession/LoadSessionDialog.cs similarity index 71% rename from XenAdmin/Dialogs/LoadSessionDialog.cs rename to XenAdmin/Dialogs/RestoreSession/LoadSessionDialog.cs index 8853719da..59601bdc7 100644 --- a/XenAdmin/Dialogs/LoadSessionDialog.cs +++ b/XenAdmin/Dialogs/RestoreSession/LoadSessionDialog.cs @@ -30,69 +30,47 @@ */ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; using System.Drawing; -using System.Text; using System.Windows.Forms; using XenCenterLib; -namespace XenAdmin.Dialogs +namespace XenAdmin.Dialogs.RestoreSession { public partial class LoadSessionDialog : XenDialogBase { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public LoadSessionDialog() : this(false) - { - } - - public LoadSessionDialog(bool isRetry) + public LoadSessionDialog(bool isRetry = false) { InitializeComponent(); - Icon = Properties.Resources.AppIcon; - passwordFailure1.Visible = isRetry; } + internal override string HelpName => "LoadSessionDialog"; public byte[] PasswordHash { get { - byte[] result = null; - if (this.passBox.Text != null && passBox.Text.Length > 0) + if (!string.IsNullOrEmpty(passBox.Text)) { try { - result = EncryptionUtils.ComputeHash(passBox.Text); + return EncryptionUtils.ComputeHash(passBox.Text); } catch (Exception exp) { log.Error("Could not hash entered password.", exp); - result = null; } } - return result; + return null; } } - private void LoadSessionDialog_HelpRequested(object sender, HelpEventArgs hlpevent) - { - Help.HelpManager.Launch("LoadSessionDialog"); - hlpevent.Handled = true; - } - - private void LoadSessionDialog_HelpButtonClicked(object sender, CancelEventArgs e) - { - Help.HelpManager.Launch("LoadSessionDialog"); - e.Cancel = true; - } - private void passBox_TextChanged(object sender, EventArgs e) { + passwordFailure1.Visible = false; okButton.Enabled = !string.IsNullOrEmpty(passBox.Text); } diff --git a/XenAdmin/Dialogs/LoadSessionDialog.ja.resx b/XenAdmin/Dialogs/RestoreSession/LoadSessionDialog.ja.resx similarity index 100% rename from XenAdmin/Dialogs/LoadSessionDialog.ja.resx rename to XenAdmin/Dialogs/RestoreSession/LoadSessionDialog.ja.resx diff --git a/XenAdmin/Dialogs/LoadSessionDialog.resx b/XenAdmin/Dialogs/RestoreSession/LoadSessionDialog.resx similarity index 80% rename from XenAdmin/Dialogs/LoadSessionDialog.resx rename to XenAdmin/Dialogs/RestoreSession/LoadSessionDialog.resx index e90460fbd..081688030 100644 --- a/XenAdmin/Dialogs/LoadSessionDialog.resx +++ b/XenAdmin/Dialogs/RestoreSession/LoadSessionDialog.resx @@ -112,37 +112,31 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Left - - + True 4 + Left True - + Segoe UI, 9pt - 3, 35 - - - 3, 3, 10, 3 + 3, 72 99, 15 @@ -157,7 +151,7 @@ passLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -165,17 +159,17 @@ 1 - - Fill + + Left, Right Segoe UI, 9pt - 115, 31 + 108, 68 - 337, 23 + 344, 23 1 @@ -184,7 +178,7 @@ passBox - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -208,13 +202,13 @@ Segoe UI, 9pt - 112, 57 + 105, 94 0, 0, 0, 0 - 343, 22 + 350, 22 5 @@ -238,7 +232,7 @@ Segoe UI, 9pt - 377, 92 + 377, 126 75, 23 @@ -253,7 +247,7 @@ cancelButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -271,7 +265,7 @@ Segoe UI, 9pt - 296, 92 + 296, 126 75, 23 @@ -286,7 +280,7 @@ okButton - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -294,6 +288,42 @@ 5 + + True + + + Top + + + Segoe UI, 9pt + + + 3, 25 + + + 3, 0, 3, 10 + + + 449, 30 + + + 6 + + + If you have forgotten the master password, click Cancel, and use the Options dialog to set a new one. + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 6 + Fill @@ -304,10 +334,10 @@ 12, 12 - 4 + 5 - 455, 118 + 455, 152 6 @@ -316,7 +346,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -325,19 +355,22 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="EnterPassLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="4" /><Control Name="passLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="passBox" Row="1" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="passwordFailure1" Row="2" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="cancelButton" Row="3" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="okButton" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="EnterPassLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="4" /><Control Name="passLabel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="passBox" Row="2" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="passwordFailure1" Row="3" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="cancelButton" Row="4" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="okButton" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="4" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + + + Top Segoe UI, 9pt - 3, 3 + 3, 0 - 3, 3, 3, 10 + 3, 0, 3, 10 - 285, 15 + 449, 15 0 @@ -349,7 +382,7 @@ EnterPassLabel - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -357,14 +390,14 @@ 0 - + True 96, 96 - 479, 142 + 479, 176 Tahoma, 8pt diff --git a/XenAdmin/Dialogs/LoadSessionDialog.zh-CN.resx b/XenAdmin/Dialogs/RestoreSession/LoadSessionDialog.zh-CN.resx similarity index 100% rename from XenAdmin/Dialogs/LoadSessionDialog.zh-CN.resx rename to XenAdmin/Dialogs/RestoreSession/LoadSessionDialog.zh-CN.resx diff --git a/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.Designer.cs b/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.Designer.cs index 41f325ec0..358b0d96c 100644 --- a/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.Designer.cs +++ b/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.Designer.cs @@ -93,7 +93,6 @@ namespace XenAdmin.Dialogs.RestoreSession this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.cancelButton.Name = "cancelButton"; this.cancelButton.UseVisualStyleBackColor = true; - this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); // // newPasswordError // diff --git a/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.cs b/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.cs index a5d5cd071..83ee82597 100644 --- a/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.cs +++ b/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.cs @@ -30,8 +30,6 @@ */ using System; -using System.Collections.Generic; -using System.Text; using System.Windows.Forms; using XenCenterLib; @@ -40,21 +38,13 @@ namespace XenAdmin.Dialogs.RestoreSession { public partial class SetMasterPasswordDialog : XenDialogBase { - private byte[] passHash; - public SetMasterPasswordDialog() { InitializeComponent(); newPasswordError.Visible = false; } - public byte[] NewPassword - { - get - { - return passHash; - } - } + public byte[] NewPassword { get; private set; } private void masterTextBox_TextChanged(object sender, EventArgs e) { @@ -70,29 +60,18 @@ namespace XenAdmin.Dialogs.RestoreSession { if (!string.IsNullOrEmpty(masterTextBox.Text) && masterTextBox.Text == reEnterMasterTextBox.Text) { - passHash = EncryptionUtils.ComputeHash(masterTextBox.Text); + NewPassword = EncryptionUtils.ComputeHash(masterTextBox.Text); DialogResult = DialogResult.OK; - Close(); + return; } - else if (masterTextBox.Text != reEnterMasterTextBox.Text) - { - newPasswordError.Error = Messages.PASSWORDS_DONT_MATCH; - newPasswordError.Visible = true; - masterTextBox.Focus(); - masterTextBox.SelectAll(); - } - else - { - newPasswordError.Error = Messages.PASSWORDS_EMPTY; - newPasswordError.Visible = true; - masterTextBox.Focus(); - masterTextBox.SelectAll(); - } - } - private void cancelButton_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Cancel; + if (masterTextBox.Text != reEnterMasterTextBox.Text) + newPasswordError.ShowError(Messages.PASSWORDS_DONT_MATCH); + else + newPasswordError.ShowError(Messages.PASSWORDS_EMPTY); + + masterTextBox.Focus(); + masterTextBox.SelectAll(); } } } \ No newline at end of file diff --git a/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.ja.resx b/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.ja.resx index d1f920bb3..79763215d 100644 --- a/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.ja.resx +++ b/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.ja.resx @@ -131,6 +131,31 @@ 2 + + Left + + + True + + + + Segoe UI, 9pt + + + NoControl + + + 3, 94 + + + 99, 15 + + + 2 + + + マスター パスワード(&M): + masterLabel @@ -143,6 +168,33 @@ 0 + + True + + + GrowAndShrink + + + Top + + + + + + Segoe UI, 9pt + + + 114, 145 + + + 0, 0, 0, 0 + + + 332, 22 + + + 6 + newPasswordError @@ -155,6 +207,21 @@ 1 + + Left, Right + + + Segoe UI, 9pt + + + 117, 90 + + + 326, 23 + + + 3 + masterTextBox @@ -167,6 +234,21 @@ 2 + + Left, Right + + + Segoe UI, 9pt + + + 117, 119 + + + 326, 23 + + + 5 + reEnterMasterTextBox @@ -179,6 +261,27 @@ 4 + + Left + + + True + + + Segoe UI, 9pt + + + 3, 123 + + + 108, 15 + + + 4 + + + パスワードの確認入力(&R): + reEnterMasterLabel @@ -191,6 +294,33 @@ 5 + + True + + + Fill + + + Segoe UI, 9pt + + + 3, 3 + + + 3, 3, 3, 3 + + + 456, 99999 + + + 440, 30 + + + 0 + + + マスター パスワードにより、保存されているすべてのサーバー用のログイン情報が保護されます。[XenCenter] セッションを開始するときに、このマスター パスワードを入力します。 + masterBlurbLabel @@ -203,6 +333,93 @@ 6 + + True + + + GrowAndShrink + + + Bottom, Right + + + Segoe UI, 9pt + + + 254, 3 + + + 75, 23 + + + 1 + + + キャンセル + + + cancelButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 0 + + + Bottom, Right + + + Segoe UI, 9pt + + + 173, 3 + + + 75, 23 + + + 0 + + + OK + + + okButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 1 + + + Fill + + + RightToLeft + + + Segoe UI, 9pt + + + 114, 170 + + + 0, 3, 0, 3 + + + 332, 30 + + + 7 + flowLayoutPanel1 @@ -218,7 +435,6 @@ Fill - Segoe UI, 9pt @@ -288,336 +504,6 @@ 3 - - True - - - Fill - - - Segoe UI, 9pt - - - 0, 98 - - - 0, 0, 0, 0 - - - 110, 29 - - - 2 - - - パスワードの確認入力(&R): - - - MiddleLeft - - - reEnterMasterLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 5 - - - True - - - Fill - - - Segoe UI, 9pt - - - NoControl - - - 0, 31 - - - 0, 0, 0, 0 - - - 146, 23 - - - 0 - - - マスター パスワード(&M): - - - MiddleLeft - - - masterLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 0 - - - Top, Left, Right - - - Segoe UI, 9pt - - - 113, 101 - - - 651, 23 - - - 3 - - - reEnterMasterTextBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 4 - - - Top, Left, Right - - - Segoe UI, 9pt - - - 113, 72 - - - 651, 23 - - - 1 - - - masterTextBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 2 - - - True - - - Fill - - - Segoe UI, 9pt - - - 3, 3 - - - 3, 3, 3, 3 - - - 456, 99999 - - - 761, 21 - - - 6 - - - マスター パスワードにより、保存されているすべてのサーバー用のログイン情報が保護されます。[XenCenter] セッションを開始するときに、このマスター パスワードを入力します。 - - - masterBlurbLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 6 - - - Bottom, Right - - - Segoe UI, 9pt - - - 498, 3 - - - 75, 23 - - - 4 - - - OK - - - okButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 1 - - - Bottom, Right - - - Segoe UI, 9pt - - - 579, 3 - - - 75, 23 - - - 5 - - - キャンセル - - - cancelButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 0 - - - True - - - GrowAndShrink - - - Segoe UI, 9pt - - - 146, 77 - - - 0, 0, 0, 0 - - - 0, 0 - - - 14 - - - newPasswordError - - - XenAdmin.Controls.Common.PasswordFailure, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tableLayoutPanel1 - - - 1 - - - True - - - GrowAndShrink - - - cancelButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 0 - - - okButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 1 - - - Fill - - - RightToLeft - - - Segoe UI, 9pt - - - 146, 135 - - - 0, 0, 0, 0 - - - 840, 63 - - - 15 - - - flowLayoutPanel1 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 7 - True diff --git a/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.resx b/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.resx index 96fef600b..82dec1520 100644 --- a/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.resx +++ b/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.resx @@ -131,6 +131,31 @@ 2 + + Left + + + True + + + + Segoe UI, 9pt + + + NoControl + + + 3, 94 + + + 99, 15 + + + 2 + + + &Master password: + masterLabel @@ -143,6 +168,33 @@ 0 + + True + + + GrowAndShrink + + + Top + + + + + + Segoe UI, 9pt + + + 114, 145 + + + 0, 0, 0, 0 + + + 332, 22 + + + 6 + newPasswordError @@ -155,6 +207,21 @@ 1 + + Left, Right + + + Segoe UI, 9pt + + + 117, 90 + + + 326, 23 + + + 3 + masterTextBox @@ -167,6 +234,21 @@ 2 + + Left, Right + + + Segoe UI, 9pt + + + 117, 119 + + + 326, 23 + + + 5 + reEnterMasterTextBox @@ -179,6 +261,27 @@ 4 + + Left + + + True + + + Segoe UI, 9pt + + + 3, 123 + + + 108, 15 + + + 4 + + + &Re-enter password: + reEnterMasterLabel @@ -191,6 +294,33 @@ 5 + + True + + + Fill + + + Segoe UI, 9pt + + + 3, 3 + + + 3, 3, 3, 3 + + + 456, 99999 + + + 440, 30 + + + 0 + + + The master password protects all your saved server login credentials. You will need to enter this password at the beginning of each session. + masterBlurbLabel @@ -203,6 +333,93 @@ 6 + + True + + + GrowAndShrink + + + Bottom, Right + + + Segoe UI, 9pt + + + 254, 3 + + + 75, 23 + + + 1 + + + Cancel + + + cancelButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 0 + + + Bottom, Right + + + Segoe UI, 9pt + + + 173, 3 + + + 75, 23 + + + 0 + + + OK + + + okButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 1 + + + Fill + + + RightToLeft + + + Segoe UI, 9pt + + + 114, 170 + + + 0, 3, 0, 3 + + + 332, 30 + + + 7 + flowLayoutPanel1 @@ -218,7 +435,6 @@ Fill - Segoe UI, 9pt @@ -229,10 +445,10 @@ 6 - 456, 185 + 446, 203 - 15 + 0 tableLayoutPanel1 @@ -268,13 +484,13 @@ 456, 99999 - 450, 30 + 440, 30 - 11 + 1 - Note that if you lose or forget the password, it cannot be recovered. (Remember that passwords are case sensitive) + Note that if you lose or forget the password, it cannot be recovered. (Remember that passwords are case sensitive). noteLabel @@ -288,336 +504,6 @@ 3 - - True - - - Fill - - - Segoe UI, 9pt - - - 0, 116 - - - 0, 0, 0, 0 - - - 108, 29 - - - 2 - - - &Re-enter password: - - - MiddleLeft - - - reEnterMasterLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 5 - - - True - - - Fill - - - Segoe UI, 9pt - - - NoControl - - - 0, 87 - - - 0, 0, 0, 0 - - - 108, 29 - - - 0 - - - &Master password: - - - MiddleLeft - - - masterLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 0 - - - Top, Left, Right - - - Segoe UI, 9pt - - - 111, 119 - - - 342, 23 - - - 3 - - - reEnterMasterTextBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 4 - - - Top, Left, Right - - - Segoe UI, 9pt - - - 111, 90 - - - 342, 23 - - - 1 - - - masterTextBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 2 - - - True - - - Fill - - - Segoe UI, 9pt - - - 3, 3 - - - 3, 3, 3, 3 - - - 456, 99999 - - - 450, 30 - - - 6 - - - The master password protects all your saved server login credentials. You will need to enter this password at the beginning of each session. - - - masterBlurbLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 6 - - - Bottom, Right - - - Segoe UI, 9pt - - - 189, 3 - - - 75, 23 - - - 4 - - - OK - - - okButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 1 - - - Bottom, Right - - - Segoe UI, 9pt - - - 270, 3 - - - 75, 23 - - - 5 - - - Cancel - - - cancelButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 0 - - - True - - - GrowAndShrink - - - Segoe UI, 9pt - - - 108, 145 - - - 0, 0, 0, 0 - - - 28, 22 - - - 14 - - - newPasswordError - - - XenAdmin.Controls.Common.PasswordFailure, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tableLayoutPanel1 - - - 1 - - - True - - - GrowAndShrink - - - cancelButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 0 - - - okButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 1 - - - Fill - - - RightToLeft - - - Segoe UI, 9pt - - - 108, 170 - - - 0, 3, 0, 3 - - - 348, 29 - - - 15 - - - flowLayoutPanel1 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 7 - True @@ -631,7 +517,7 @@ GrowAndShrink - 480, 209 + 470, 227 Microsoft Sans Serif, 8.25pt diff --git a/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.zh-CN.resx b/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.zh-CN.resx index 4e816daac..2cd2e5b47 100644 --- a/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.zh-CN.resx +++ b/XenAdmin/Dialogs/RestoreSession/SetMasterPasswordDialog.zh-CN.resx @@ -131,6 +131,31 @@ 2 + + Left + + + True + + + + Segoe UI, 9pt + + + NoControl + + + 3, 94 + + + 99, 15 + + + 2 + + + 主密码(&M): + masterLabel @@ -143,6 +168,33 @@ 0 + + True + + + GrowAndShrink + + + Top + + + + + + Segoe UI, 9pt + + + 114, 145 + + + 0, 0, 0, 0 + + + 332, 22 + + + 6 + newPasswordError @@ -155,6 +207,21 @@ 1 + + Left, Right + + + Segoe UI, 9pt + + + 117, 90 + + + 326, 23 + + + 3 + masterTextBox @@ -167,6 +234,21 @@ 2 + + Left, Right + + + Segoe UI, 9pt + + + 117, 119 + + + 326, 23 + + + 5 + reEnterMasterTextBox @@ -179,6 +261,27 @@ 4 + + Left + + + True + + + Segoe UI, 9pt + + + 3, 123 + + + 108, 15 + + + 4 + + + 重新输入密码(&R): + reEnterMasterLabel @@ -191,6 +294,33 @@ 5 + + True + + + Fill + + + Segoe UI, 9pt + + + 3, 3 + + + 3, 3, 3, 3 + + + 456, 99999 + + + 440, 30 + + + 0 + + + 主密码将保护所有保存的服务器登录凭据。您需要在每个会话开始时输入此密码。 + masterBlurbLabel @@ -203,6 +333,93 @@ 6 + + True + + + GrowAndShrink + + + Bottom, Right + + + Segoe UI, 9pt + + + 254, 3 + + + 75, 23 + + + 1 + + + 取消 + + + cancelButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 0 + + + Bottom, Right + + + Segoe UI, 9pt + + + 173, 3 + + + 75, 23 + + + 0 + + + 确定 + + + okButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 1 + + + Fill + + + RightToLeft + + + Segoe UI, 9pt + + + 114, 170 + + + 0, 3, 0, 3 + + + 332, 30 + + + 7 + flowLayoutPanel1 @@ -218,7 +435,6 @@ Fill - Segoe UI, 9pt @@ -274,7 +490,7 @@ 11 - 请注意,如果丢失或忘记密码,则无法进行恢复。(请记住,密码区分大小写) + 请注意,如果丢失或忘记密码,则无法进行恢复。(请记住,密码区分大小写)。 noteLabel @@ -288,336 +504,6 @@ 3 - - True - - - Fill - - - Segoe UI, 9pt - - - 0, 98 - - - 0, 0, 0, 0 - - - 110, 29 - - - 2 - - - 重新输入密码(&R): - - - MiddleLeft - - - reEnterMasterLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 5 - - - True - - - Fill - - - Segoe UI, 9pt - - - NoControl - - - 0, 40 - - - 0, 0, 0, 0 - - - 108, 23 - - - 0 - - - 主密码(&M): - - - MiddleLeft - - - masterLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 0 - - - Top, Left, Right - - - Segoe UI, 9pt - - - 113, 101 - - - 651, 23 - - - 3 - - - reEnterMasterTextBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 4 - - - Top, Left, Right - - - Segoe UI, 9pt - - - 113, 72 - - - 651, 23 - - - 1 - - - masterTextBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 2 - - - True - - - Fill - - - Segoe UI, 9pt - - - 3, 3 - - - 3, 3, 3, 3 - - - 456, 99999 - - - 761, 21 - - - 6 - - - 主密码将保护所有保存的服务器登录凭据。您需要在每个会话开始时输入此密码。 - - - masterBlurbLabel - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 6 - - - Bottom, Right - - - Segoe UI, 9pt - - - 498, 3 - - - 75, 23 - - - 4 - - - 确定 - - - okButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 1 - - - Bottom, Right - - - Segoe UI, 9pt - - - 579, 3 - - - 75, 23 - - - 5 - - - 取消 - - - cancelButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 0 - - - True - - - GrowAndShrink - - - Segoe UI, 9pt - - - 108, 86 - - - 0, 0, 0, 0 - - - 28, 22 - - - 14 - - - newPasswordError - - - XenAdmin.Controls.Common.PasswordFailure, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tableLayoutPanel1 - - - 1 - - - True - - - GrowAndShrink - - - cancelButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 0 - - - okButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 1 - - - Fill - - - RightToLeft - - - Segoe UI, 9pt - - - 108, 153 - - - 0, 0, 0, 0 - - - 348, 45 - - - 15 - - - flowLayoutPanel1 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 7 - True diff --git a/XenAdmin/Dialogs/RoleElevationDialog.Designer.cs b/XenAdmin/Dialogs/RoleElevationDialog.Designer.cs index 561fac829..fafbfe276 100644 --- a/XenAdmin/Dialogs/RoleElevationDialog.Designer.cs +++ b/XenAdmin/Dialogs/RoleElevationDialog.Designer.cs @@ -150,6 +150,7 @@ namespace XenAdmin.Dialogs // pictureBox1 // resources.ApplyResources(this.pictureBox1, "pictureBox1"); + this.pictureBox1.Image = global::XenAdmin.Properties.Resources._000_WarningAlert_h32bit_32; this.pictureBox1.Name = "pictureBox1"; this.tableLayoutPanel1.SetRowSpan(this.pictureBox1, 2); this.pictureBox1.TabStop = false; diff --git a/XenAdmin/Dialogs/RoleElevationDialog.cs b/XenAdmin/Dialogs/RoleElevationDialog.cs index 677c88170..ce666900d 100644 --- a/XenAdmin/Dialogs/RoleElevationDialog.cs +++ b/XenAdmin/Dialogs/RoleElevationDialog.cs @@ -44,13 +44,13 @@ namespace XenAdmin.Dialogs public partial class RoleElevationDialog : XenDialogBase { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public Session elevatedSession = null; + + public Session elevatedSession; public string elevatedPassword; public string elevatedUsername; public string originalUsername; public string originalPassword; - private List authorizedRoles; /// @@ -62,13 +62,9 @@ namespace XenAdmin.Dialogs /// A list of roles that are able to complete the task /// A description of the current action, if null or empty will not be displayed public RoleElevationDialog(IXenConnection connection, Session session, List authorizedRoles, string actionTitle) + :base(connection) { InitializeComponent(); - Image icon = SystemIcons.Exclamation.ToBitmap(); - pictureBox1.Image = icon; - pictureBox1.Width = icon.Width; - pictureBox1.Height = icon.Height; - this.connection = connection; UserDetails ud = session.CurrentUserDetails; labelCurrentUserValue.Text = ud.UserDisplayName ?? ud.UserName ?? Messages.UNKNOWN_AD_USER; labelCurrentRoleValue.Text = Role.FriendlyCSVRoleList(session.Roles); @@ -134,8 +130,6 @@ namespace XenAdmin.Dialogs } ShowNotAuthorisedDialog(); - return; - } catch (Exception ex) { @@ -148,6 +142,9 @@ namespace XenAdmin.Dialogs { dlg.ShowDialog(Parent); } + + TextBoxPassword.Focus(); + TextBoxPassword.SelectAll(); } finally { @@ -189,6 +186,9 @@ namespace XenAdmin.Dialogs { dlg.ShowDialog(this); } + + TextBoxPassword.Focus(); + TextBoxPassword.SelectAll(); } private bool SessionAuthorized(Session s) diff --git a/XenAdmin/Dialogs/RoleSelectionDialog.cs b/XenAdmin/Dialogs/RoleSelectionDialog.cs index a39e5897c..fb0e06e5e 100644 --- a/XenAdmin/Dialogs/RoleSelectionDialog.cs +++ b/XenAdmin/Dialogs/RoleSelectionDialog.cs @@ -66,7 +66,7 @@ namespace XenAdmin.Dialogs var allAreGroups = subjects.Length > 0 && subjects.All(s => s.IsGroup); var allAreUsers = subjects.Length > 0 && subjects.All(s => !s.IsGroup); - pictureBoxSubjectType.Image = allAreUsers ? Properties.Resources._000_User_h32bit_16 : Properties.Resources._000_UserAndGroup_h32bit_32; + pictureBoxSubjectType.Image = allAreUsers ? Properties.Resources._000_User_h32bit_32 : Properties.Resources._000_UserAndGroup_h32bit_32; if (subjects.Length == 1) { diff --git a/XenAdmin/Dialogs/ScheduledSnapshots/ScheduledSnapshotsDialog.cs b/XenAdmin/Dialogs/ScheduledSnapshots/ScheduledSnapshotsDialog.cs index 55e281766..a9380aa08 100644 --- a/XenAdmin/Dialogs/ScheduledSnapshots/ScheduledSnapshotsDialog.cs +++ b/XenAdmin/Dialogs/ScheduledSnapshots/ScheduledSnapshotsDialog.cs @@ -48,8 +48,6 @@ namespace XenAdmin.Dialogs.ScheduledSnapshots { public partial class ScheduledSnapshotsDialog: XenDialogBase { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private readonly Pool Pool; private bool updatingPolicies; diff --git a/XenAdmin/Dialogs/ScheduledSnapshots/ScheduledSnapshotsDialog.resx b/XenAdmin/Dialogs/ScheduledSnapshots/ScheduledSnapshotsDialog.resx index 3c10c05e9..cbc19ba5d 100644 --- a/XenAdmin/Dialogs/ScheduledSnapshots/ScheduledSnapshotsDialog.resx +++ b/XenAdmin/Dialogs/ScheduledSnapshots/ScheduledSnapshotsDialog.resx @@ -1054,7 +1054,7 @@ 12, 12, 12, 12 - Snapshot Schedules + VM Snapshot Schedules ColumnName diff --git a/XenAdmin/Dialogs/VMAppliances/VMAppliancesDialog.cs b/XenAdmin/Dialogs/VMAppliances/VMAppliancesDialog.cs index 802f9bd0b..d721b3b3d 100644 --- a/XenAdmin/Dialogs/VMAppliances/VMAppliancesDialog.cs +++ b/XenAdmin/Dialogs/VMAppliances/VMAppliancesDialog.cs @@ -49,8 +49,8 @@ namespace XenAdmin.Dialogs.VMAppliances { public partial class VMAppliancesDialog : XenDialogBase { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); public readonly Pool Pool; + public VMAppliancesDialog(Pool pool) { Pool = pool; diff --git a/XenAdmin/Dialogs/VMDialogs/MoveVMDialog.Designer.cs b/XenAdmin/Dialogs/VMDialogs/MoveVMDialog.Designer.cs index b99925c18..6ef0ee530 100644 --- a/XenAdmin/Dialogs/VMDialogs/MoveVMDialog.Designer.cs +++ b/XenAdmin/Dialogs/VMDialogs/MoveVMDialog.Designer.cs @@ -44,7 +44,7 @@ resources.ApplyResources(this.srPicker1, "srPicker1"); this.srPicker1.Connection = null; this.srPicker1.Name = "srPicker1"; - this.srPicker1.SrSelectionChanged += new System.Action(this.srPicker1_SrSelectionChanged); + this.srPicker1.SelectedIndexChanged += new System.EventHandler(this.srPicker1_SelectedIndexChanged); // // buttonMove // diff --git a/XenAdmin/Dialogs/VMDialogs/MoveVMDialog.cs b/XenAdmin/Dialogs/VMDialogs/MoveVMDialog.cs index 760c6d41e..e01bea24b 100644 --- a/XenAdmin/Dialogs/VMDialogs/MoveVMDialog.cs +++ b/XenAdmin/Dialogs/VMDialogs/MoveVMDialog.cs @@ -83,7 +83,7 @@ namespace XenAdmin.Dialogs.VMDialogs buttonMove.Enabled = srPicker1.SR != null; } - private void srPicker1_SrSelectionChanged(object obj) + private void srPicker1_SelectedIndexChanged(object sender, EventArgs e) { EnableMoveButton(); } diff --git a/XenAdmin/Dialogs/VmSnapshotDialog.Designer.cs b/XenAdmin/Dialogs/VmSnapshotDialog.Designer.cs index ec5b7ceee..16ea2587a 100644 --- a/XenAdmin/Dialogs/VmSnapshotDialog.Designer.cs +++ b/XenAdmin/Dialogs/VmSnapshotDialog.Designer.cs @@ -28,34 +28,31 @@ namespace XenAdmin.Dialogs /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(VmSnapshotDialog)); this.labelName = new System.Windows.Forms.Label(); this.textBoxName = new System.Windows.Forms.TextBox(); - this.buttonCancel = new System.Windows.Forms.Button(); - this.buttonOk = new System.Windows.Forms.Button(); this.label1 = new System.Windows.Forms.Label(); this.textBoxDescription = new System.Windows.Forms.TextBox(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.buttonOk = new System.Windows.Forms.Button(); + this.buttonCancel = new System.Windows.Forms.Button(); this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.flowLayoutPanel3 = new System.Windows.Forms.FlowLayoutPanel(); - this.memoryRadioButton = new System.Windows.Forms.RadioButton(); - this.CheckpointInfoPictureBox = new System.Windows.Forms.PictureBox(); - this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel(); - this.quiesceCheckBox = new System.Windows.Forms.CheckBox(); - this.pictureBoxQuiesceInfo = new System.Windows.Forms.PictureBox(); - this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.labelCheckpointInfo = new System.Windows.Forms.Label(); + this.labelQuiesceInfo = new System.Windows.Forms.Label(); + this.labelSnapshotInfo = new System.Windows.Forms.Label(); this.diskRadioButton = new System.Windows.Forms.RadioButton(); + this.quiesceCheckBox = new System.Windows.Forms.CheckBox(); + this.memoryRadioButton = new System.Windows.Forms.RadioButton(); this.pictureBoxSnapshotsInfo = new System.Windows.Forms.PictureBox(); - this.toolTip = new System.Windows.Forms.ToolTip(this.components); + this.CheckpointInfoPictureBox = new System.Windows.Forms.PictureBox(); + this.pictureBoxQuiesceInfo = new System.Windows.Forms.PictureBox(); this.tableLayoutPanel1.SuspendLayout(); this.groupBox1.SuspendLayout(); - this.flowLayoutPanel3.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.CheckpointInfoPictureBox)).BeginInit(); - this.flowLayoutPanel2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxQuiesceInfo)).BeginInit(); - this.flowLayoutPanel1.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxSnapshotsInfo)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.CheckpointInfoPictureBox)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxQuiesceInfo)).BeginInit(); this.SuspendLayout(); // // labelName @@ -65,10 +62,41 @@ namespace XenAdmin.Dialogs // // textBoxName // + this.tableLayoutPanel1.SetColumnSpan(this.textBoxName, 2); resources.ApplyResources(this.textBoxName, "textBoxName"); this.textBoxName.Name = "textBoxName"; this.textBoxName.TextChanged += new System.EventHandler(this.textBoxName_TextChanged); // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // + // textBoxDescription + // + this.tableLayoutPanel1.SetColumnSpan(this.textBoxDescription, 2); + resources.ApplyResources(this.textBoxDescription, "textBoxDescription"); + this.textBoxDescription.Name = "textBoxDescription"; + // + // tableLayoutPanel1 + // + resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); + this.tableLayoutPanel1.Controls.Add(this.buttonOk, 1, 3); + this.tableLayoutPanel1.Controls.Add(this.labelName, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.buttonCancel, 2, 3); + this.tableLayoutPanel1.Controls.Add(this.textBoxName, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.textBoxDescription, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.groupBox1, 0, 2); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + // + // buttonOk + // + resources.ApplyResources(this.buttonOk, "buttonOk"); + this.buttonOk.Name = "buttonOk"; + this.buttonOk.UseVisualStyleBackColor = true; + this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click); + // // buttonCancel // resources.ApplyResources(this.buttonCancel, "buttonCancel"); @@ -77,117 +105,93 @@ namespace XenAdmin.Dialogs this.buttonCancel.UseVisualStyleBackColor = true; this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); // - // buttonOk - // - resources.ApplyResources(this.buttonOk, "buttonOk"); - this.buttonOk.Name = "buttonOk"; - this.buttonOk.UseVisualStyleBackColor = true; - this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click); - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // textBoxDescription - // - resources.ApplyResources(this.textBoxDescription, "textBoxDescription"); - this.textBoxDescription.Name = "textBoxDescription"; - // - // tableLayoutPanel1 - // - resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); - this.tableLayoutPanel1.Controls.Add(this.labelName, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.textBoxName, 1, 0); - this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1); - this.tableLayoutPanel1.Controls.Add(this.textBoxDescription, 1, 1); - this.tableLayoutPanel1.Controls.Add(this.groupBox1, 0, 2); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - // // groupBox1 // - this.tableLayoutPanel1.SetColumnSpan(this.groupBox1, 2); - this.groupBox1.Controls.Add(this.flowLayoutPanel3); - this.groupBox1.Controls.Add(this.flowLayoutPanel2); - this.groupBox1.Controls.Add(this.flowLayoutPanel1); resources.ApplyResources(this.groupBox1, "groupBox1"); + this.tableLayoutPanel1.SetColumnSpan(this.groupBox1, 3); + this.groupBox1.Controls.Add(this.tableLayoutPanel2); this.groupBox1.Name = "groupBox1"; this.groupBox1.TabStop = false; // - // flowLayoutPanel3 + // tableLayoutPanel2 // - resources.ApplyResources(this.flowLayoutPanel3, "flowLayoutPanel3"); - this.flowLayoutPanel3.Controls.Add(this.memoryRadioButton); - this.flowLayoutPanel3.Controls.Add(this.CheckpointInfoPictureBox); - this.flowLayoutPanel3.Name = "flowLayoutPanel3"; + resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2"); + this.tableLayoutPanel2.Controls.Add(this.labelCheckpointInfo, 2, 5); + this.tableLayoutPanel2.Controls.Add(this.labelQuiesceInfo, 2, 3); + this.tableLayoutPanel2.Controls.Add(this.labelSnapshotInfo, 2, 1); + this.tableLayoutPanel2.Controls.Add(this.diskRadioButton, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.quiesceCheckBox, 1, 2); + this.tableLayoutPanel2.Controls.Add(this.memoryRadioButton, 0, 4); + this.tableLayoutPanel2.Controls.Add(this.pictureBoxSnapshotsInfo, 1, 1); + this.tableLayoutPanel2.Controls.Add(this.CheckpointInfoPictureBox, 1, 5); + this.tableLayoutPanel2.Controls.Add(this.pictureBoxQuiesceInfo, 1, 3); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; // - // memoryRadioButton + // labelCheckpointInfo // - resources.ApplyResources(this.memoryRadioButton, "memoryRadioButton"); - this.memoryRadioButton.Name = "memoryRadioButton"; - this.memoryRadioButton.TabStop = true; - this.memoryRadioButton.UseVisualStyleBackColor = true; - this.memoryRadioButton.CheckedChanged += new System.EventHandler(this.RadioButton_CheckedChanged); + resources.ApplyResources(this.labelCheckpointInfo, "labelCheckpointInfo"); + this.labelCheckpointInfo.Name = "labelCheckpointInfo"; // - // CheckpointInfoPictureBox + // labelQuiesceInfo // - this.CheckpointInfoPictureBox.Cursor = System.Windows.Forms.Cursors.Hand; - resources.ApplyResources(this.CheckpointInfoPictureBox, "CheckpointInfoPictureBox"); - this.CheckpointInfoPictureBox.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16; - this.CheckpointInfoPictureBox.Name = "CheckpointInfoPictureBox"; - this.CheckpointInfoPictureBox.TabStop = false; - this.CheckpointInfoPictureBox.MouseLeave += new System.EventHandler(this.CheckpointInfoPictureBox_MouseLeave); - this.CheckpointInfoPictureBox.Click += new System.EventHandler(this.CheckpointInfoPictureBox_Click); + resources.ApplyResources(this.labelQuiesceInfo, "labelQuiesceInfo"); + this.labelQuiesceInfo.Name = "labelQuiesceInfo"; // - // flowLayoutPanel2 + // labelSnapshotInfo // - resources.ApplyResources(this.flowLayoutPanel2, "flowLayoutPanel2"); - this.flowLayoutPanel2.Controls.Add(this.quiesceCheckBox); - this.flowLayoutPanel2.Controls.Add(this.pictureBoxQuiesceInfo); - this.flowLayoutPanel2.Name = "flowLayoutPanel2"; - // - // quiesceCheckBox - // - resources.ApplyResources(this.quiesceCheckBox, "quiesceCheckBox"); - this.quiesceCheckBox.Name = "quiesceCheckBox"; - this.quiesceCheckBox.UseVisualStyleBackColor = true; - this.quiesceCheckBox.CheckedChanged += new System.EventHandler(this.quiesceCheckBox_CheckedChanged); - // - // pictureBoxQuiesceInfo - // - this.pictureBoxQuiesceInfo.Cursor = System.Windows.Forms.Cursors.Hand; - resources.ApplyResources(this.pictureBoxQuiesceInfo, "pictureBoxQuiesceInfo"); - this.pictureBoxQuiesceInfo.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16; - this.pictureBoxQuiesceInfo.Name = "pictureBoxQuiesceInfo"; - this.pictureBoxQuiesceInfo.TabStop = false; - this.pictureBoxQuiesceInfo.MouseLeave += new System.EventHandler(this.pictureBoxQuiesceInfo_MouseLeave); - this.pictureBoxQuiesceInfo.Click += new System.EventHandler(this.pictureBoxQuiesceInfo_Click); - // - // flowLayoutPanel1 - // - resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1"); - this.flowLayoutPanel1.Controls.Add(this.diskRadioButton); - this.flowLayoutPanel1.Controls.Add(this.pictureBoxSnapshotsInfo); - this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + resources.ApplyResources(this.labelSnapshotInfo, "labelSnapshotInfo"); + this.labelSnapshotInfo.Name = "labelSnapshotInfo"; // // diskRadioButton // resources.ApplyResources(this.diskRadioButton, "diskRadioButton"); this.diskRadioButton.Checked = true; + this.tableLayoutPanel2.SetColumnSpan(this.diskRadioButton, 3); this.diskRadioButton.Name = "diskRadioButton"; this.diskRadioButton.TabStop = true; this.diskRadioButton.UseVisualStyleBackColor = true; this.diskRadioButton.CheckedChanged += new System.EventHandler(this.RadioButton_CheckedChanged); // + // quiesceCheckBox + // + resources.ApplyResources(this.quiesceCheckBox, "quiesceCheckBox"); + this.tableLayoutPanel2.SetColumnSpan(this.quiesceCheckBox, 2); + this.quiesceCheckBox.Name = "quiesceCheckBox"; + this.quiesceCheckBox.UseVisualStyleBackColor = true; + this.quiesceCheckBox.CheckedChanged += new System.EventHandler(this.quiesceCheckBox_CheckedChanged); + // + // memoryRadioButton + // + resources.ApplyResources(this.memoryRadioButton, "memoryRadioButton"); + this.tableLayoutPanel2.SetColumnSpan(this.memoryRadioButton, 3); + this.memoryRadioButton.Name = "memoryRadioButton"; + this.memoryRadioButton.TabStop = true; + this.memoryRadioButton.UseVisualStyleBackColor = true; + this.memoryRadioButton.CheckedChanged += new System.EventHandler(this.RadioButton_CheckedChanged); + // // pictureBoxSnapshotsInfo // - this.pictureBoxSnapshotsInfo.Cursor = System.Windows.Forms.Cursors.Hand; + this.pictureBoxSnapshotsInfo.Cursor = System.Windows.Forms.Cursors.Default; resources.ApplyResources(this.pictureBoxSnapshotsInfo, "pictureBoxSnapshotsInfo"); this.pictureBoxSnapshotsInfo.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16; this.pictureBoxSnapshotsInfo.Name = "pictureBoxSnapshotsInfo"; this.pictureBoxSnapshotsInfo.TabStop = false; - this.pictureBoxSnapshotsInfo.MouseLeave += new System.EventHandler(this.pictureBoxSnapshotsInfo_MouseLeave); - this.pictureBoxSnapshotsInfo.Click += new System.EventHandler(this.pictureBoxSnapshotsInfo_Click); + // + // CheckpointInfoPictureBox + // + this.CheckpointInfoPictureBox.Cursor = System.Windows.Forms.Cursors.Default; + resources.ApplyResources(this.CheckpointInfoPictureBox, "CheckpointInfoPictureBox"); + this.CheckpointInfoPictureBox.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16; + this.CheckpointInfoPictureBox.Name = "CheckpointInfoPictureBox"; + this.CheckpointInfoPictureBox.TabStop = false; + // + // pictureBoxQuiesceInfo + // + this.pictureBoxQuiesceInfo.Cursor = System.Windows.Forms.Cursors.Default; + resources.ApplyResources(this.pictureBoxQuiesceInfo, "pictureBoxQuiesceInfo"); + this.pictureBoxQuiesceInfo.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16; + this.pictureBoxQuiesceInfo.Name = "pictureBoxQuiesceInfo"; + this.pictureBoxQuiesceInfo.TabStop = false; // // VmSnapshotDialog // @@ -195,8 +199,6 @@ namespace XenAdmin.Dialogs resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.CancelButton = this.buttonCancel; - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.buttonOk); this.Controls.Add(this.tableLayoutPanel1); this.Name = "VmSnapshotDialog"; this.Load += new System.EventHandler(this.VmSnapshotDialog_Load); @@ -204,16 +206,13 @@ namespace XenAdmin.Dialogs this.tableLayoutPanel1.PerformLayout(); this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); - this.flowLayoutPanel3.ResumeLayout(false); - this.flowLayoutPanel3.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.CheckpointInfoPictureBox)).EndInit(); - this.flowLayoutPanel2.ResumeLayout(false); - this.flowLayoutPanel2.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxQuiesceInfo)).EndInit(); - this.flowLayoutPanel1.ResumeLayout(false); - this.flowLayoutPanel1.PerformLayout(); + this.tableLayoutPanel2.ResumeLayout(false); + this.tableLayoutPanel2.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxSnapshotsInfo)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.CheckpointInfoPictureBox)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxQuiesceInfo)).EndInit(); this.ResumeLayout(false); + this.PerformLayout(); } @@ -221,21 +220,21 @@ namespace XenAdmin.Dialogs private System.Windows.Forms.Label labelName; private System.Windows.Forms.TextBox textBoxName; - private System.Windows.Forms.Button buttonCancel; - private System.Windows.Forms.Button buttonOk; private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox textBoxDescription; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.ToolTip toolTip; private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3; private System.Windows.Forms.RadioButton memoryRadioButton; private System.Windows.Forms.PictureBox CheckpointInfoPictureBox; - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2; private System.Windows.Forms.CheckBox quiesceCheckBox; private System.Windows.Forms.PictureBox pictureBoxQuiesceInfo; - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; private System.Windows.Forms.RadioButton diskRadioButton; private System.Windows.Forms.PictureBox pictureBoxSnapshotsInfo; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.Label labelCheckpointInfo; + private System.Windows.Forms.Label labelQuiesceInfo; + private System.Windows.Forms.Label labelSnapshotInfo; + private System.Windows.Forms.Button buttonOk; + private System.Windows.Forms.Button buttonCancel; } } \ No newline at end of file diff --git a/XenAdmin/Dialogs/VmSnapshotDialog.cs b/XenAdmin/Dialogs/VmSnapshotDialog.cs index 9ee2fbe21..701af6b85 100644 --- a/XenAdmin/Dialogs/VmSnapshotDialog.cs +++ b/XenAdmin/Dialogs/VmSnapshotDialog.cs @@ -30,7 +30,6 @@ */ using System; -using System.Drawing; using System.Windows.Forms; using XenAdmin.Actions; using XenAPI; @@ -47,35 +46,26 @@ namespace XenAdmin.Dialogs { InitializeComponent(); _VM = vm; + UpdateWarnings(); diskRadioButton.Enabled = _VM.allowed_operations.Contains(vm_operations.snapshot); - pictureBoxSnapshotsInfo.Visible = !diskRadioButton.Enabled; - quiesceCheckBox.Enabled = _VM.allowed_operations.Contains(vm_operations.snapshot_with_quiesce) + pictureBoxSnapshotsInfo.Visible = labelSnapshotInfo.Visible = !diskRadioButton.Enabled; + var quiesceAvailable = !Helpers.QuebecOrGreater(_VM.Connection); + quiesceCheckBox.Visible = quiesceAvailable; + quiesceCheckBox.Enabled = quiesceAvailable && _VM.allowed_operations.Contains(vm_operations.snapshot_with_quiesce) && !Helpers.FeatureForbidden(_VM, Host.RestrictVss); - pictureBoxQuiesceInfo.Visible = !quiesceCheckBox.Enabled; + pictureBoxQuiesceInfo.Visible = labelQuiesceInfo.Visible = quiesceAvailable && !quiesceCheckBox.Enabled; memoryRadioButton.Enabled = _VM.allowed_operations.Contains(vm_operations.checkpoint) && !Helpers.FeatureForbidden(_VM, Host.RestrictCheckpoint); - CheckpointInfoPictureBox.Visible = !memoryRadioButton.Enabled; + CheckpointInfoPictureBox.Visible = labelCheckpointInfo.Visible = !memoryRadioButton.Enabled; UpdateOK(); } /// /// Must be accessed on the GUI thread. /// - public string SnapshotName - { - get - { - return textBoxName.Text; - } - } + public string SnapshotName => textBoxName.Text; - public string SnapshotDescription - { - get - { - return textBoxDescription.Text; - } - } + public string SnapshotDescription => textBoxDescription.Text; public SnapshotType SnapshotType { @@ -83,23 +73,22 @@ namespace XenAdmin.Dialogs { if (quiesceCheckBox.Checked) return SnapshotType.QUIESCED_DISK; - else if (diskRadioButton.Checked) + if (diskRadioButton.Checked) return SnapshotType.DISK; - else - return SnapshotType.DISK_AND_MEMORY; + return SnapshotType.DISK_AND_MEMORY; } } private void buttonOk_Click(object sender, EventArgs e) { - this.DialogResult = DialogResult.OK; - this.Close(); + DialogResult = DialogResult.OK; + Close(); } private void buttonCancel_Click(object sender, EventArgs e) { - this.DialogResult = DialogResult.Cancel; - this.Close(); + DialogResult = DialogResult.Cancel; + Close(); } private void textBoxName_TextChanged(object sender, EventArgs e) @@ -109,7 +98,7 @@ namespace XenAdmin.Dialogs private void UpdateOK() { - buttonOk.Enabled = !String.IsNullOrEmpty(textBoxName.Text.Trim())&&(diskRadioButton.Enabled ||quiesceCheckBox.Enabled||memoryRadioButton.Enabled ); + buttonOk.Enabled = !String.IsNullOrEmpty(textBoxName.Text.Trim()) && (diskRadioButton.Enabled || quiesceCheckBox.Enabled || memoryRadioButton.Enabled ); } private void RadioButton_CheckedChanged(object sender, EventArgs e) @@ -142,54 +131,29 @@ namespace XenAdmin.Dialogs } } - private void pictureBoxQuiesceInfo_Click(object sender, EventArgs e) + private void UpdateWarnings() { - string tt; + labelSnapshotInfo.Text = Messages.INFO_DISK_MODE; + if (Helpers.FeatureForbidden(_VM, Host.RestrictVss)) - tt = Messages.FIELD_DISABLED; + labelQuiesceInfo.Text = Messages.FIELD_DISABLED; else if (_VM.power_state != vm_power_state.Running) - tt = Messages.INFO_QUIESCE_MODE_POWER_STATE.Replace("\\n", "\n"); + labelQuiesceInfo.Text = Messages.INFO_QUIESCE_MODE_POWER_STATE; else if (!_VM.GetVirtualisationStatus().HasFlag(VM.VirtualisationStatus.MANAGEMENT_INSTALLED)) - tt = (_VM.HasNewVirtualisationStates() ? Messages.INFO_QUIESCE_MODE_NO_MGMNT : Messages.INFO_QUIESCE_MODE_NO_TOOLS).Replace("\\n", "\n"); + labelQuiesceInfo.Text = _VM.HasNewVirtualisationStates() + ? Messages.INFO_QUIESCE_MODE_NO_MGMNT + : Messages.INFO_QUIESCE_MODE_NO_TOOLS; else - tt = Messages.INFO_QUIESCE_MODE.Replace("\\n","\n"); // This says that VSS must be enabled. This is a guess, because we can't tell whether it is or not. - toolTip.Show(tt ,pictureBoxQuiesceInfo, 20, 0); - } + labelQuiesceInfo.Text = Messages.INFO_QUIESCE_MODE; // This says that VSS must be enabled. This is a guess, because we can't tell whether it is or not. - private void pictureBoxQuiesceInfo_MouseLeave(object sender, EventArgs e) - { - toolTip.Hide(pictureBoxQuiesceInfo); - } - - private void pictureBoxSnapshotsInfo_Click(object sender, EventArgs e) - { - toolTip.Show(Messages.INFO_DISK_MODE.Replace("\\n","\n"), pictureBoxSnapshotsInfo, 20, 0); - } - - private void pictureBoxSnapshotsInfo_MouseLeave(object sender, EventArgs e) - { - toolTip.Hide(pictureBoxSnapshotsInfo); - } - - private void CheckpointInfoPictureBox_Click(object sender, EventArgs e) - { - string tt; if (Helpers.FeatureForbidden(_VM, Host.RestrictCheckpoint)) - tt = Messages.FIELD_DISABLED; + labelCheckpointInfo.Text = Messages.FIELD_DISABLED; else if (_VM.power_state != vm_power_state.Running) - tt = Messages.INFO_DISKMEMORY_MODE_POWER_STATE.Replace("\\n", "\n"); + labelCheckpointInfo.Text = Messages.INFO_DISKMEMORY_MODE_POWER_STATE; else if (!_VM.GetVirtualisationStatus().HasFlag(VM.VirtualisationStatus.IO_DRIVERS_INSTALLED)) - tt = (_VM.HasNewVirtualisationStates() ? Messages.INFO_DISKMEMORY_MODE_NO_IO_DRIVERS : Messages.INFO_DISKMEMORY_MODE_NO_TOOLS).Replace("\\n", "\n"); + labelCheckpointInfo.Text = (_VM.HasNewVirtualisationStates() ? Messages.INFO_DISKMEMORY_MODE_NO_IO_DRIVERS : Messages.INFO_DISKMEMORY_MODE_NO_TOOLS); else - tt = Messages.INFO_DISKMEMORY_MODE_MISC.Replace("\\n", "\n"); - toolTip.Show(tt, CheckpointInfoPictureBox, 20, 0); + labelCheckpointInfo.Text = Messages.INFO_DISKMEMORY_MODE_MISC; } - - private void CheckpointInfoPictureBox_MouseLeave(object sender, EventArgs e) - { - toolTip.Hide(CheckpointInfoPictureBox); - } - - } } diff --git a/XenAdmin/Dialogs/VmSnapshotDialog.ja.resx b/XenAdmin/Dialogs/VmSnapshotDialog.ja.resx index 8447640a5..bc04a6b83 100644 --- a/XenAdmin/Dialogs/VmSnapshotDialog.ja.resx +++ b/XenAdmin/Dialogs/VmSnapshotDialog.ja.resx @@ -112,20 +112,20 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - + Fill - + Segoe UI, 9pt @@ -148,76 +148,25 @@ labelName - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 0 - - - Fill - - - Segoe UI, 9pt - - - 123, 13 - - - 0 - - - 332, 23 - - 1 - - textBoxName + + True - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + GrowAndShrink - - tableLayoutPanel1 - - - 1 - - - Bottom, Right - - - Segoe UI, 9pt - - - 383, 227 - - - 75, 23 - - - 8 - - - キャンセル - - - buttonCancel - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 + + 3 - Bottom, Right + Top, Right False @@ -225,8 +174,14 @@ Segoe UI, 9pt + + NoControl + - 275, 227 + 296, 268 + + + 3, 10, 3, 3 100, 23 @@ -241,13 +196,49 @@ buttonOk - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 - 1 + 0 + + + Top, Right + + + Segoe UI, 9pt + + + NoControl + + + 383, 227 + + + 6, 10, 3, 3 + + + 75, 23 + + + 8 + + + キャンセル + + + buttonCancel + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 True @@ -277,13 +268,13 @@ label1 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 2 + 4 Fill @@ -310,104 +301,362 @@ textBoxDescription - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 + 5 + + + True + + + GrowAndShrink + + + True + + + GrowAndShrink + + 3 - - 2 + + True - - groupBox1 + + Fill - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 4 - - - Top - - + Segoe UI, 9pt - - 0, 0 + + NoControl - - 10, 10, 10, 10 + + 45, 122 - - 3 + + 3, 3, 3, 3 - - 468, 208 + + 412, 16 - - 9 + + 12 - - tableLayoutPanel1 + + labelCheckpointInfo - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this + + tableLayoutPanel2 - - 2 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelName" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxName" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxDescription" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="groupBox1" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="Absolute,110,Percent,100" /><Rows Styles="Absolute,28,Absolute,50,AutoSize,0" /></TableLayoutSettings> - - - flowLayoutPanel3 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - + 0 - - flowLayoutPanel2 + + True - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Fill - - groupBox1 + + Segoe UI, 9pt - + + NoControl + + + 45, 75 + + + 3, 3, 3, 3 + + + 412, 16 + + + 11 + + + labelQuiesceInfo + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + 1 - - flowLayoutPanel1 + + True - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Fill - - groupBox1 + + Segoe UI, 9pt - + + NoControl + + + 45, 28 + + + 3, 3, 3, 3 + + + 412, 16 + + + 10 + + + labelSnapshotInfo + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + 2 - + + True + + Fill + + Segoe UI, 9pt + + + NoControl + + + 3, 3 + + + 454, 19 + + + 5 + + + 仮想マシンのディスクのスナップショット(&S) + + + diskRadioButton + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 3 + + + True + + + Fill + + + Segoe UI, 9pt + + + NoControl + + + 23, 50 + + + 434, 19 + + + 6 + + + VM を休止してからスナップショットを作成する (Windows のみ)(&Q) + + + quiesceCheckBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 4 + + + True + + + Bottom + + + Segoe UI, 9pt + + + NoControl + + + 3, 97 + + + 454, 19 + + + 6 + + + 仮想マシンのディスクとメモリのスナップショット(&A) + + + memoryRadioButton + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 5 + + + Segoe UI, 9pt + + + NoControl + + + 23, 28 + + + 16, 16 + + + 9 + + + pictureBoxSnapshotsInfo + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 6 + + + Segoe UI, 9pt + + + NoControl + + + 23, 122 + + + 16, 16 + + + 7 + + + CheckpointInfoPictureBox + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 7 + + + Segoe UI, 9pt + + + NoControl + + + 23, 75 + + + 16, 16 + + + 8 + + + pictureBoxQuiesceInfo + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 8 + + + Top + + + Segoe UI, 9pt + + + 5, 21 + + + 6 + + + 460, 141 + + + 13 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelCheckpointInfo" Row="5" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="labelQuiesceInfo" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="labelSnapshotInfo" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="diskRadioButton" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="quiesceCheckBox" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="memoryRadioButton" Row="4" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="pictureBoxSnapshotsInfo" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="CheckpointInfoPictureBox" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxQuiesceInfo" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,20,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + + + Top + Segoe UI, 9pt @@ -433,380 +682,92 @@ groupBox1 - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 + 6 + + + Fill + + + Segoe UI, 9pt + + + 0, 0 + + + 10, 10, 10, 10 + + 4 - - True + + 493, 300 - - memoryRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel3 - - - 0 - - - CheckpointInfoPictureBox - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel3 - - - 1 - - - Top - - - Segoe UI, 9pt - - - 5, 71 - - - 438, 25 - - - 12 - - - flowLayoutPanel3 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - True - - - Bottom - - - Segoe UI, 9pt - - - NoControl - - - 3, 3 - - - 287, 19 - - - 6 - - - 仮想マシンのディスクとメモリのスナップショット(&A) - - - memoryRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel3 - - - 0 - - - Segoe UI, 9pt - - - NoControl - - - 296, 3 - - - 16, 16 - - - 7 - - - CheckpointInfoPictureBox - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel3 - - - 1 - - - True - - - quiesceCheckBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel2 - - - 0 - - - pictureBoxQuiesceInfo - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel2 - - - 1 - - - Top - - - Segoe UI, 9pt - - - 5, 46 - - - 25, 3, 3, 3 - - - 15, 0, 0, 0 - - - 438, 25 - - - 11 - - - flowLayoutPanel2 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 1 - - - True - - - Fill - - - Segoe UI, 9pt - - - NoControl - - - 18, 5 - - - 339, 19 - - - 6 - - - VM を休止してからスナップショットを作成する (Windows のみ)(&Q) - - - quiesceCheckBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel2 - - - 0 - - - Segoe UI, 9pt - - - NoControl - - - 363, 3 - - - 16, 16 - - - 8 - - - pictureBoxQuiesceInfo - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel2 - - - 1 - - - True - - - diskRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 0 - - - pictureBoxSnapshotsInfo - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 1 - - - Top - - - Segoe UI, 9pt - - - 5, 21 - - - 438, 25 - - - 10 - - - flowLayoutPanel1 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 2 - - - True - - - Fill - - - Segoe UI, 9pt - - - NoControl - - - 3, 3 - - - 216, 19 - - - 5 - - - 仮想マシンのディスクのスナップショット(&S) - - - diskRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 0 - - - Segoe UI, 9pt - - - NoControl - - - 225, 3 - - - 16, 16 - - + 9 - - pictureBoxSnapshotsInfo + + tableLayoutPanel1 - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - flowLayoutPanel1 + + $this - + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="buttonOk" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelName" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="buttonCancel" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="textBoxName" Row="0" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxDescription" Row="1" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="groupBox1" Row="2" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Absolute,110,Percent,100,AutoSize,20" /><Rows Styles="Absolute,28,Absolute,50,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + + + Fill + + + Segoe UI, 9pt + + + 123, 13 + + + 0 + + + 357, 23 + + 1 - - 17, 17 - - + + textBoxName + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + True 96, 96 + + True + + + GrowAndShrink + 468, 263 @@ -819,12 +780,6 @@ スナップショットの作成 - - toolTip - - - System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - VmSnapshotDialog diff --git a/XenAdmin/Dialogs/VmSnapshotDialog.resx b/XenAdmin/Dialogs/VmSnapshotDialog.resx index 70e60063e..299900b15 100644 --- a/XenAdmin/Dialogs/VmSnapshotDialog.resx +++ b/XenAdmin/Dialogs/VmSnapshotDialog.resx @@ -112,20 +112,20 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - + Fill - + Segoe UI, 9pt @@ -148,76 +148,25 @@ labelName - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 0 - - - Fill - - - Segoe UI, 9pt - - - 123, 13 - - - 0 - - - 332, 23 - - 1 - - textBoxName + + True - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + GrowAndShrink - - tableLayoutPanel1 - - - 1 - - - Bottom, Right - - - Segoe UI, 9pt - - - 383, 227 - - - 75, 23 - - - 8 - - - Cancel - - - buttonCancel - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 + + 3 - Bottom, Right + Top, Right False @@ -225,8 +174,14 @@ Segoe UI, 9pt + + NoControl + - 275, 227 + 296, 268 + + + 3, 10, 3, 3 100, 23 @@ -241,13 +196,49 @@ buttonOk - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 - 1 + 0 + + + Top, Right + + + Segoe UI, 9pt + + + NoControl + + + 405, 268 + + + 6, 10, 3, 3 + + + 75, 23 + + + 8 + + + Cancel + + + buttonCancel + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 True @@ -277,13 +268,13 @@ label1 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 2 + 4 Fill @@ -301,7 +292,7 @@ True - 332, 44 + 357, 44 3 @@ -310,429 +301,135 @@ textBoxDescription - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 3 + 5 - - 2 - - - groupBox1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 4 - - - Top - - - Segoe UI, 9pt - - - 0, 0 - - - 10, 10, 10, 10 - - - 3 - - - 468, 208 - - - 9 - - - tableLayoutPanel1 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelName" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxName" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxDescription" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="groupBox1" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="Absolute,110,Percent,100" /><Rows Styles="Absolute,28,Absolute,50,AutoSize,0" /></TableLayoutSettings> - - - flowLayoutPanel3 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - flowLayoutPanel2 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 1 - - - flowLayoutPanel1 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 2 - - - Fill - - - Segoe UI, 9pt - - - 10, 88 - - - 0, 0, 0, 0 - - - 5, 5, 5, 5 - - - 448, 110 - - - 7 - - - Snapshot mode - - - groupBox1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 4 - - + True - - memoryRadioButton + + GrowAndShrink - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True - - flowLayoutPanel3 + + GrowAndShrink - - 0 + + 3 - - CheckpointInfoPictureBox + + True - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Fill - - flowLayoutPanel3 - - - 1 - - - Top - - + Segoe UI, 9pt - - 5, 71 + + NoControl - - 438, 25 + + 45, 122 - + + 3, 3, 3, 3 + + + 412, 16 + + 12 - - flowLayoutPanel3 + + labelCheckpointInfo - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox1 + + tableLayoutPanel2 - + 0 - + True - - Bottom - - - Segoe UI, 9pt - - - NoControl - - - 3, 3 - - - 287, 19 - - - 6 - - - Sn&apshot the virtual machine's disks and memory - - - memoryRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel3 - - - 0 - - - Segoe UI, 9pt - - - NoControl - - - 296, 3 - - - 16, 16 - - - 7 - - - CheckpointInfoPictureBox - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel3 - - - 1 - - - True - - - quiesceCheckBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel2 - - - 0 - - - pictureBoxQuiesceInfo - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel2 - - - 1 - - - Top - - - Segoe UI, 9pt - - - 5, 46 - - - 25, 3, 3, 3 - - - 15, 0, 0, 0 - - - 438, 25 - - - 11 - - - flowLayoutPanel2 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 1 - - - True - - + Fill - + Segoe UI, 9pt - + NoControl - - 18, 3 + + 45, 75 - - 339, 19 + + 3, 3, 3, 3 - - 6 + + 412, 16 - - &Quiesce the VM before taking the snapshot (Windows only) + + 11 - - quiesceCheckBox + + labelQuiesceInfo - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - flowLayoutPanel2 + + tableLayoutPanel2 - - 0 - - - Segoe UI, 9pt - - - NoControl - - - 363, 3 - - - 16, 16 - - - 8 - - - pictureBoxQuiesceInfo - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel2 - - + 1 - + True - - diskRadioButton + + Fill - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 0 - - - pictureBoxSnapshotsInfo - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 1 - - - Top - - + Segoe UI, 9pt - - 5, 21 + + NoControl - - 438, 25 + + 45, 28 - + + 3, 3, 3, 3 + + + 412, 16 + + 10 - - flowLayoutPanel1 + + labelSnapshotInfo - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox1 + + tableLayoutPanel2 - + 2 @@ -751,7 +448,7 @@ 3, 3 - 216, 19 + 454, 19 5 @@ -763,13 +460,85 @@ diskRadioButton - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - flowLayoutPanel1 + tableLayoutPanel2 - 0 + 3 + + + True + + + Fill + + + Segoe UI, 9pt + + + NoControl + + + 23, 50 + + + 434, 19 + + + 6 + + + &Quiesce the VM before taking the snapshot (Windows only) + + + quiesceCheckBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 4 + + + True + + + Bottom + + + Segoe UI, 9pt + + + NoControl + + + 3, 97 + + + 454, 19 + + + 6 + + + Sn&apshot the virtual machine's disks and memory + + + memoryRadioButton + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 5 Segoe UI, 9pt @@ -778,7 +547,7 @@ NoControl - 225, 3 + 23, 28 16, 16 @@ -790,41 +559,227 @@ pictureBoxSnapshotsInfo - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - flowLayoutPanel1 + tableLayoutPanel2 + 6 + + + Segoe UI, 9pt + + + NoControl + + + 23, 122 + + + 16, 16 + + + 7 + + + CheckpointInfoPictureBox + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 7 + + + Segoe UI, 9pt + + + NoControl + + + 23, 75 + + + 16, 16 + + + 8 + + + pictureBoxQuiesceInfo + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 8 + + + Top + + + Segoe UI, 9pt + + + 5, 21 + + + 6 + + + 460, 141 + + + 13 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelCheckpointInfo" Row="5" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="labelQuiesceInfo" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="labelSnapshotInfo" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="diskRadioButton" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="quiesceCheckBox" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="memoryRadioButton" Row="4" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="pictureBoxSnapshotsInfo" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="CheckpointInfoPictureBox" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxQuiesceInfo" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,20,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + + + Top + + + Segoe UI, 9pt + + + 10, 88 + + + 0, 0, 3, 0 + + + 5, 5, 5, 8 + + + 470, 170 + + + 7 + + + Snapshot mode + + + groupBox1 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 6 + + + Fill + + + Segoe UI, 9pt + + + 0, 0 + + + 10, 10, 10, 10 + + + 4 + + + 493, 300 + + + 9 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="buttonOk" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelName" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="buttonCancel" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="textBoxName" Row="0" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxDescription" Row="1" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="groupBox1" Row="2" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Absolute,110,Percent,100,AutoSize,20" /><Rows Styles="Absolute,28,Absolute,50,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + + + Fill + + + Segoe UI, 9pt + + + 123, 13 + + + 0 + + + 357, 23 + + 1 - - 17, 17 - - + + textBoxName + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + True 96, 96 + + True + + + GrowAndShrink + - 468, 263 + 493, 300 Tahoma, 8pt - 420, 260 + 420, 200 Take Snapshot - - toolTip - - - System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - VmSnapshotDialog diff --git a/XenAdmin/Dialogs/VmSnapshotDialog.zh-CN.resx b/XenAdmin/Dialogs/VmSnapshotDialog.zh-CN.resx index d1d3ed0a5..e20d4f121 100644 --- a/XenAdmin/Dialogs/VmSnapshotDialog.zh-CN.resx +++ b/XenAdmin/Dialogs/VmSnapshotDialog.zh-CN.resx @@ -112,20 +112,20 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - + Fill - + Segoe UI, 9pt @@ -148,76 +148,25 @@ labelName - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 0 - - - Fill - - - Segoe UI, 9pt - - - 123, 13 - - - 0 - - - 332, 23 - - 1 - - textBoxName + + True - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + GrowAndShrink - - tableLayoutPanel1 - - - 1 - - - Bottom, Right - - - Segoe UI, 9pt - - - 383, 227 - - - 75, 23 - - - 8 - - - 取消 - - - buttonCancel - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 + + 3 - Bottom, Right + Top, Right False @@ -225,8 +174,14 @@ Segoe UI, 9pt + + NoControl + - 275, 227 + 296, 268 + + + 3, 10, 3, 3 100, 23 @@ -241,13 +196,49 @@ buttonOk - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 - 1 + 0 + + + Top, Right + + + Segoe UI, 9pt + + + NoControl + + + 383, 227 + + + 6, 10, 3, 3 + + + 75, 23 + + + 8 + + + 取消 + + + buttonCancel + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 True @@ -277,13 +268,13 @@ label1 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 2 + 4 Fill @@ -310,104 +301,362 @@ textBoxDescription - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 + 5 + + + True + + + GrowAndShrink + + + True + + + GrowAndShrink + + 3 - - 2 + + True - - groupBox1 + + Fill - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 4 - - - Top - - + Segoe UI, 9pt - - 0, 0 + + NoControl - - 10, 10, 10, 10 + + 45, 122 - - 3 + + 3, 3, 3, 3 - - 468, 208 + + 412, 16 - - 9 + + 12 - - tableLayoutPanel1 + + labelCheckpointInfo - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this + + tableLayoutPanel2 - - 2 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelName" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxName" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxDescription" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="groupBox1" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="Absolute,110,Percent,100" /><Rows Styles="Absolute,28,Absolute,50,AutoSize,0" /></TableLayoutSettings> - - - flowLayoutPanel3 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - + 0 - - flowLayoutPanel2 + + True - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Fill - - groupBox1 + + Segoe UI, 9pt - + + NoControl + + + 45, 75 + + + 3, 3, 3, 3 + + + 412, 16 + + + 11 + + + labelQuiesceInfo + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + 1 - - flowLayoutPanel1 + + True - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Fill - - groupBox1 + + Segoe UI, 9pt - + + NoControl + + + 45, 28 + + + 3, 3, 3, 3 + + + 412, 16 + + + 10 + + + labelSnapshotInfo + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + 2 - + + True + + Fill + + Segoe UI, 9pt + + + NoControl + + + 3, 3 + + + 454, 19 + + + 5 + + + 生成虚拟机磁盘快照(&S) + + + diskRadioButton + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 3 + + + True + + + Fill + + + Segoe UI, 9pt + + + NoControl + + + 23, 50 + + + 434, 19 + + + 6 + + + 生成快照前使 VM 静止(仅限 Windows)(&Q) + + + quiesceCheckBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 4 + + + True + + + Bottom + + + Segoe UI, 9pt + + + NoControl + + + 3, 97 + + + 454, 19 + + + 6 + + + 生成虚拟机磁盘和内存快照(&A) + + + memoryRadioButton + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 5 + + + Segoe UI, 9pt + + + NoControl + + + 23, 28 + + + 16, 16 + + + 9 + + + pictureBoxSnapshotsInfo + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 6 + + + Segoe UI, 9pt + + + NoControl + + + 23, 122 + + + 16, 16 + + + 7 + + + CheckpointInfoPictureBox + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 7 + + + Segoe UI, 9pt + + + NoControl + + + 23, 75 + + + 16, 16 + + + 8 + + + pictureBoxQuiesceInfo + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 8 + + + Top + + + Segoe UI, 9pt + + + 5, 21 + + + 6 + + + 460, 141 + + + 13 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox1 + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelCheckpointInfo" Row="5" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="labelQuiesceInfo" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="labelSnapshotInfo" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="diskRadioButton" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="quiesceCheckBox" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="memoryRadioButton" Row="4" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="pictureBoxSnapshotsInfo" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="CheckpointInfoPictureBox" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxQuiesceInfo" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,20,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + + + Top + Segoe UI, 9pt @@ -433,380 +682,92 @@ groupBox1 - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 + 6 + + + Fill + + + Segoe UI, 9pt + + + 0, 0 + + + 10, 10, 10, 10 + + 4 - - True + + 493, 300 - - memoryRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel3 - - - 0 - - - CheckpointInfoPictureBox - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel3 - - - 1 - - - Top - - - Segoe UI, 9pt - - - 5, 71 - - - 438, 25 - - - 12 - - - flowLayoutPanel3 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - True - - - Bottom - - - Segoe UI, 9pt - - - NoControl - - - 3, 3 - - - 287, 19 - - - 6 - - - 生成虚拟机磁盘和内存快照(&A) - - - memoryRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel3 - - - 0 - - - Segoe UI, 9pt - - - NoControl - - - 296, 3 - - - 16, 16 - - - 7 - - - CheckpointInfoPictureBox - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel3 - - - 1 - - - True - - - quiesceCheckBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel2 - - - 0 - - - pictureBoxQuiesceInfo - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel2 - - - 1 - - - Top - - - Segoe UI, 9pt - - - 5, 46 - - - 25, 3, 3, 3 - - - 15, 0, 0, 0 - - - 438, 25 - - - 11 - - - flowLayoutPanel2 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 1 - - - True - - - Fill - - - Segoe UI, 9pt - - - NoControl - - - 18, 4 - - - 339, 19 - - - 6 - - - 生成快照前使 VM 静止(仅限 Windows)(&Q) - - - quiesceCheckBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel2 - - - 0 - - - Segoe UI, 9pt - - - NoControl - - - 363, 3 - - - 16, 16 - - - 8 - - - pictureBoxQuiesceInfo - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel2 - - - 1 - - - True - - - diskRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 0 - - - pictureBoxSnapshotsInfo - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 1 - - - Top - - - Segoe UI, 9pt - - - 5, 21 - - - 438, 25 - - - 10 - - - flowLayoutPanel1 - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 2 - - - True - - - Fill - - - Segoe UI, 9pt - - - NoControl - - - 3, 3 - - - 216, 19 - - - 5 - - - 生成虚拟机磁盘快照(&S) - - - diskRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - flowLayoutPanel1 - - - 0 - - - Segoe UI, 9pt - - - NoControl - - - 225, 3 - - - 16, 16 - - + 9 - - pictureBoxSnapshotsInfo + + tableLayoutPanel1 - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - flowLayoutPanel1 + + $this - + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="buttonOk" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelName" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="buttonCancel" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="textBoxName" Row="0" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxDescription" Row="1" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="groupBox1" Row="2" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Absolute,110,Percent,100,AutoSize,20" /><Rows Styles="Absolute,28,Absolute,50,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + + + Fill + + + Segoe UI, 9pt + + + 123, 13 + + + 0 + + + 357, 23 + + 1 - - 17, 17 - - + + textBoxName + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + True 96, 96 + + True + + + GrowAndShrink + 468, 263 @@ -819,12 +780,6 @@ 生成快照 - - toolTip - - - System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - VmSnapshotDialog diff --git a/XenAdmin/Dialogs/WarningDialogs/CloseXenCenterWarningDialog.cs b/XenAdmin/Dialogs/WarningDialogs/CloseXenCenterWarningDialog.cs index fb5d6c4b0..cd7010d8c 100644 --- a/XenAdmin/Dialogs/WarningDialogs/CloseXenCenterWarningDialog.cs +++ b/XenAdmin/Dialogs/WarningDialogs/CloseXenCenterWarningDialog.cs @@ -44,17 +44,13 @@ namespace XenAdmin.Dialogs.WarningDialogs { public partial class CloseXenCenterWarningDialog : XenDialogBase { - public CloseXenCenterWarningDialog() - : this(null) - {} - - public CloseXenCenterWarningDialog(IXenConnection connection) + public CloseXenCenterWarningDialog(IXenConnection connection = null) + :base(connection) { InitializeComponent(); if (connection != null) { - this.connection = connection; label2.Text = String.Format(Messages.DISCONNECT_WARNING, Helpers.GetName(connection).Ellipsise(50)); ExitButton.Text = Messages.DISCONNECT_ANYWAY; DontExitButton.Text = Messages.DISCONNECT_CANCEL; @@ -64,13 +60,7 @@ namespace XenAdmin.Dialogs.WarningDialogs BuildList(); } - internal override string HelpName - { - get - { - return connection == null ? Name : "DisconnectServerWarningDialog"; - } - } + internal override string HelpName => connection == null ? Name : "DisconnectServerWarningDialog"; private void BuildList() { diff --git a/XenAdmin/Dialogs/Wlb/WlbReportSubscriptionDialog.cs b/XenAdmin/Dialogs/Wlb/WlbReportSubscriptionDialog.cs index 962844430..fdf1b55aa 100644 --- a/XenAdmin/Dialogs/Wlb/WlbReportSubscriptionDialog.cs +++ b/XenAdmin/Dialogs/Wlb/WlbReportSubscriptionDialog.cs @@ -63,8 +63,7 @@ namespace XenAdmin.Dialogs.Wlb // Due to localization, changed email regex from @"^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)*[A-Z0-9-]+$" // to match anything with an @ sign in the middle private static readonly Regex emailRegex = new Regex(@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", RegexOptions.IgnoreCase); - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - + #endregion diff --git a/XenAdmin/Dialogs/XenDialogBase.cs b/XenAdmin/Dialogs/XenDialogBase.cs index 9ffddf887..0493b1cdb 100644 --- a/XenAdmin/Dialogs/XenDialogBase.cs +++ b/XenAdmin/Dialogs/XenDialogBase.cs @@ -35,10 +35,11 @@ using System.ComponentModel; using System.Windows.Forms; using XenAdmin.Network; using XenAdmin.Core; +using XenAdmin.Help; namespace XenAdmin.Dialogs { - public partial class XenDialogBase : Form + public partial class XenDialogBase : Form, IFormWithHelp { private static Dictionary> instances = new Dictionary>(); @@ -78,45 +79,35 @@ namespace XenAdmin.Dialogs } } - private IXenConnection _connection; - protected IXenConnection connection - { - get { return _connection; } - set - { - _connection = value; - if (_connection != null) - { - AddInstance(_connection, this); - } - } - } - - public XenDialogBase(IXenConnection connection) - : this() - { - this.connection = connection; - } + protected readonly IXenConnection connection; /// - /// Only use this ctor if you don't want your dialog to be - /// closed when a connection disconnects. + /// The VS designer does not seem to understand optional parameters, + /// it needs the parameterless constructor /// - public XenDialogBase() + protected XenDialogBase() { InitializeComponent(); } - private bool ownerActivatedOnClosed = true; + /// + /// If the connection is set, the dialog becomes a per-connection dialog, + /// which means it will close when the connection is disconnected + /// + protected XenDialogBase(IXenConnection conn) + : this() + { + connection = conn; + + if (connection != null) + AddInstance(connection, this); + } + /// /// Allow the XenDialogBase.OnClosed to set Owner.Activate() - this will push the Owner /// to the top of the windows stack stealing focus. /// - protected bool OwnerActivatedOnClosed - { - get { return ownerActivatedOnClosed; } - set { ownerActivatedOnClosed = value; } - } + protected bool OwnerActivatedOnClosed { get; set; } = true; protected override void OnClosed(EventArgs e) { @@ -143,31 +134,25 @@ namespace XenAdmin.Dialogs public bool HasHelp() { - return Help.HelpManager.HasHelpFor(HelpName); + return HelpManager.TryGetTopicId(HelpName, out _); } private void XenDialogBase_HelpButtonClicked(object sender, CancelEventArgs e) { - Help.HelpManager.Launch(HelpName); + HelpManager.Launch(HelpName); e.Cancel = true; } private void XenDialogBase_HelpRequested(object sender, HelpEventArgs hlpevent) { - Help.HelpManager.Launch(HelpName); + HelpManager.Launch(HelpName); hlpevent.Handled = true; } /// /// override if the reference in the help differs to the dialogs name /// - internal virtual string HelpName - { - get - { - return Name; - } - } + internal virtual string HelpName => Name; private void XenDialogBase_Shown(object sender, EventArgs e) { diff --git a/XenAdmin/Help/HelpManager.cs b/XenAdmin/Help/HelpManager.cs index 1f109609a..4c08393f2 100644 --- a/XenAdmin/Help/HelpManager.cs +++ b/XenAdmin/Help/HelpManager.cs @@ -30,12 +30,10 @@ */ using System; -using System.Collections.Generic; -using System.Text; +using System.Net; using System.Resources; -using System.Windows.Forms; -using System.Drawing; -using XenAdmin.Dialogs; +using System.Threading; +using XenAdmin.Core; namespace XenAdmin.Help @@ -44,101 +42,99 @@ namespace XenAdmin.Help { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - static readonly ResourceManager resources; + private static readonly ResourceManager resources; + private static readonly string HelpUrl = Registry.CustomHelpUrl; + private static readonly string HelpQuery = string.Empty; + private static volatile string _helpVersion; + + private static readonly object _helpLock = new object(); static HelpManager() { resources = new ResourceManager("XenAdmin.Help.HelpManager", typeof(HelpManager).Assembly); - } - internal static string GetID(string pageref) - { - return resources.GetString(pageref); - } - - public static void Launch(string pageref) - { - MainWindow w = Program.MainWindow; - - if (pageref != null) + if (string.IsNullOrEmpty(HelpUrl)) { - log.DebugFormat("User Request Help ID for {0}", pageref); + HelpUrl = InvisibleMessages.HELP_URL; - string s = GetID(pageref); - if (s != null) - { - log.DebugFormat("Help ID for {0} is {1}", pageref, s); - if (Properties.Settings.Default.DebugHelp && !Program.RunInAutomatedTestMode) - { - using (var dlg = new ThreeButtonDialog( - new ThreeButtonDialog.Details( - SystemIcons.Information, - string.Format(Messages.MESSAGEBOX_HELP_TOPICS, s, pageref), - Messages.XENCENTER))) - { - dlg.ShowDialog(w); - } - } - w.ShowHelpTopic(s); - } - else - { - log.WarnFormat("Failed to find Help ID for {0}", pageref); - // Do not show the help window with TOC if the help ID is not found with the system running in AutomatedTest mode - if (!Program.RunInAutomatedTestMode) - { - if (Properties.Settings.Default.DebugHelp) - { - using (var dlg = new ThreeButtonDialog( - new ThreeButtonDialog.Details( - SystemIcons.Error, - string.Format(Messages.MESSAGEBOX_HELP_TOPIC_NOT_FOUND, pageref), - Messages.MESSAGEBOX_HELP_TOPIC_NOT_FOUND))) - { - dlg.ShowDialog(w); - } - } - w.ShowHelpTOC(); - } - } + HelpQuery = string.Format(InvisibleMessages.HELP_URL_QUERY, + $"{Branding.XENCENTER_VERSION}.{Program.Version.Revision}".Replace('.', '_'), + Messages.XENCENTER); } + } + + internal static void SetHelpVersion() + { + ThreadPool.QueueUserWorkItem(obj => + { + try + { + var version = Program.Version; + var helpVersion = $"{version.Major}-{version.Minor}/"; + var request = WebRequest.Create(HelpUrl + helpVersion + "index.html"); + request.Method = "HEAD"; + + using (var response = request.GetResponse() as HttpWebResponse) + { + if (response != null && response.StatusCode == HttpStatusCode.OK) + _helpVersion = helpVersion; + else + _helpVersion = "current-release/"; + } + } + catch + { + _helpVersion = "current-release/"; + } + finally + { + lock (_helpLock) + Monitor.PulseAll(_helpLock); + } + }); + } + + internal static bool TryGetTopicId(string pageRef, out string topicId) + { + topicId = null; + if (pageRef == null) + return false; + + topicId = resources.GetString(pageRef); + return topicId != null; + } + + public static void Launch(string pageRef) + { + TryGetTopicId(pageRef, out string topicId); + + if (pageRef == null) + log.WarnFormat("Attempted to launch help window with null help pageRef"); + else if (topicId == null) + log.WarnFormat("Failed to find help topic ID for {0}", pageRef); else - { - log.WarnFormat("Null help ID passed to Help Manager"); - // Do not show the help window with TOC if the help ID is not found with the system running in AutomatedTest mode - if (!Program.RunInAutomatedTestMode) - { - if (Properties.Settings.Default.DebugHelp) - { - using (var dlg = new ThreeButtonDialog( - new ThreeButtonDialog.Details( - SystemIcons.Error, - string.Format(Messages.MESSAGEBOX_HELP_TOPIC_NOT_FOUND, pageref), - Messages.MESSAGEBOX_HELP_TOPIC_NOT_FOUND))) - { - dlg.ShowDialog(w); - } - } - w.ShowHelpTOC(); - } - } - } + log.DebugFormat("Found help topic ID {0} for {1}", topicId, pageRef); - public static bool HasHelpFor(string pageref) - { - return (pageref != null && pageref != "TabPageUnknown" && GetID(pageref) != null); - } + if (string.IsNullOrEmpty(_helpVersion)) + lock (_helpLock) + Monitor.Wait(_helpLock); - public static string ProduceUrl(string topicId, string helpUrl, string locale, string campaign, string medium, string source) - { - return string.Format( - helpUrl, - locale, - topicId ?? "index", - campaign.Replace('.', '_'), - medium, - source - ).ToLowerInvariant(); + var helpTopicUrl = HelpUrl + _helpVersion + $"{topicId ?? "index"}.html" + HelpQuery; + Program.OpenURL(helpTopicUrl.ToLowerInvariant()); + + // record help usage + Properties.Settings.Default.HelpLastUsed = DateTime.UtcNow.ToString("u"); + Settings.TrySaveSettings(); } } + + internal interface IFormWithHelp + { + bool HasHelp(); + } + + internal interface IControlWithHelp + { + string HelpID { get; } + } } diff --git a/XenAdmin/Help/HelpManager.ja.resx b/XenAdmin/Help/HelpManager.ja.resx index 3c89595e8..48a3c26df 100644 --- a/XenAdmin/Help/HelpManager.ja.resx +++ b/XenAdmin/Help/HelpManager.ja.resx @@ -120,6 +120,9 @@ hosts-add + + vgpu-add + rbac-join-domain @@ -195,6 +198,27 @@ vms-uninstall + + hosts-control-domain-memory + + + conversion-manager + + + conversion-manager + + + conversion-manager + + + conversion-manager + + + conversion-manager + + + conversion-manager + vms-copy @@ -204,24 +228,39 @@ vms-copy + + vms-copy + vms-relocate vms-copy + + vms-copy + vms-relocate + + vms-copy + vms-relocate rbac-roles + + vms-copy + vms-relocate + + vms-copy + vms-relocate @@ -240,6 +279,9 @@ systemalerts + + systemalerts + dr-config @@ -363,12 +405,21 @@ 6536 + + vms-snapshotschedule-manage-policy + vms-storage-properties vapps-properties + + pvs-read-cache + + + tabs + hosts-connect-save @@ -459,6 +510,9 @@ health-check + + updates-about + vms-import @@ -675,6 +729,9 @@ storage-pools-add + + storage-pools-add + rbac-overview @@ -834,6 +891,12 @@ intro-start + + pvs-read-cache + + + pvs-read-cache + hosts-reconnect @@ -867,10 +930,10 @@ upgrade - + upgrade - + upgrade @@ -909,6 +972,9 @@ users-overview + + users-overview + tabs @@ -957,6 +1023,9 @@ パフォーマンス + + pvs-read-cache + tabs @@ -993,12 +1062,18 @@ intro-xencenterwindow + + tabs + wlb-get-started-help wlb-overview + + index + hosts-reconnect @@ -1017,15 +1092,15 @@ vapps-manage - - vms-snapshotschedule-about - vms-snapshots-take vms-snapshots-newtemplate + + vms-snapshotschedule-about + cbt-overview @@ -1068,52 +1143,4 @@ updates-applying - - vms-copy - - - vms-copy - - - vms-copy - - - vms-copy - - - vms-copy - - - users-overview - - - systemalerts - - - hosts-control-domain-memory - - - pvs-read-cache - - - pvs-read-cache - - - pvs-read-cache - - - pvs-read-cache - - - tabs - - - vms-snapshotschedule-manage-policy - - - storage-pools-add - - - tabs - diff --git a/XenAdmin/Help/HelpManager.resx b/XenAdmin/Help/HelpManager.resx index b3975d399..33457dd89 100644 --- a/XenAdmin/Help/HelpManager.resx +++ b/XenAdmin/Help/HelpManager.resx @@ -120,6 +120,9 @@ hosts-add + + vgpu-add + rbac-join-domain @@ -195,6 +198,27 @@ vms-uninstall + + hosts-control-domain-memory + + + conversion-manager + + + conversion-manager + + + conversion-manager + + + conversion-manager + + + conversion-manager + + + conversion-manager + vms-copy @@ -204,24 +228,39 @@ vms-copy + + vms-copy + vms-relocate vms-copy + + vms-copy + vms-relocate + + vms-copy + vms-relocate rbac-roles + + vms-copy + vms-relocate + + vms-copy + vms-relocate @@ -240,6 +279,9 @@ systemalerts + + systemalerts + dr-config @@ -363,12 +405,21 @@ 6536 + + vms-snapshotschedule-manage-policy + vms-storage-properties vapps-properties + + pvs-read-cache + + + tabs + hosts-connect-save @@ -459,6 +510,9 @@ health-check + + updates-about + vms-import @@ -675,6 +729,9 @@ storage-pools-add + + storage-pools-add + rbac-overview @@ -834,6 +891,12 @@ intro-start + + pvs-read-cache + + + pvs-read-cache + hosts-reconnect @@ -867,10 +930,10 @@ upgrade - + upgrade - + upgrade @@ -909,6 +972,9 @@ users-overview + + users-overview + tabs @@ -957,6 +1023,9 @@ performance + + pvs-read-cache + tabs @@ -993,12 +1062,18 @@ intro-xencenterwindow + + tabs + wlb-get-started-help wlb-overview + + index + hosts-reconnect @@ -1017,15 +1092,15 @@ vapps-manage - - vms-snapshotschedule-about - vms-snapshots-take vms-snapshots-newtemplate + + vms-snapshotschedule-about + cbt-overview @@ -1068,52 +1143,4 @@ updates-applying - - vms-copy - - - vms-copy - - - vms-copy - - - vms-copy - - - vms-copy - - - users-overview - - - systemalerts - - - hosts-control-domain-memory - - - pvs-read-cache - - - pvs-read-cache - - - pvs-read-cache - - - pvs-read-cache - - - tabs - - - vms-snapshotschedule-manage-policy - - - storage-pools-add - - - tabs - \ No newline at end of file diff --git a/XenAdmin/Help/HelpManager.zh-CN.resx b/XenAdmin/Help/HelpManager.zh-CN.resx index 3c6f94503..f97a01584 100644 --- a/XenAdmin/Help/HelpManager.zh-CN.resx +++ b/XenAdmin/Help/HelpManager.zh-CN.resx @@ -120,6 +120,9 @@ hosts-add + + vgpu-add + rbac-join-domain @@ -195,6 +198,27 @@ vms-uninstall + + hosts-control-domain-memory + + + conversion-manager + + + conversion-manager + + + conversion-manager + + + conversion-manager + + + conversion-manager + + + conversion-manager + vms-copy @@ -204,24 +228,39 @@ vms-copy + + vms-copy + vms-relocate vms-copy + + vms-copy + vms-relocate + + vms-copy + vms-relocate rbac-roles + + vms-copy + vms-relocate + + vms-copy + vms-relocate @@ -240,6 +279,9 @@ systemalerts + + systemalerts + dr-config @@ -363,12 +405,21 @@ 6536 + + vms-snapshotschedule-manage-policy + vms-storage-properties vapps-properties + + pvs-read-cache + + + tabs + hosts-connect-save @@ -459,6 +510,9 @@ health-check + + updates-about + vms-import @@ -675,6 +729,9 @@ storage-pools-add + + storage-pools-add + rbac-overview @@ -834,6 +891,12 @@ intro-start + + pvs-read-cache + + + pvs-read-cache + hosts-reconnect @@ -867,10 +930,10 @@ upgrade - + upgrade - + upgrade @@ -909,6 +972,9 @@ users-overview + + users-overview + tabs @@ -957,6 +1023,9 @@ performance + + pvs-read-cache + tabs @@ -993,12 +1062,18 @@ intro-xencenterwindow + + tabs + wlb-get-started-help wlb-overview + + index + hosts-reconnect @@ -1017,15 +1092,15 @@ vapps-manage - - vms-snapshotschedule-about - vms-snapshots-take vms-snapshots-newtemplate + + vms-snapshotschedule-about + cbt-overview @@ -1068,52 +1143,4 @@ updates-applying - - vms-copy - - - vms-copy - - - vms-copy - - - vms-copy - - - vms-copy - - - users-overview - - - systemalerts - - - hosts-control-domain-memory - - - pvs-read-cache - - - pvs-read-cache - - - pvs-read-cache - - - pvs-read-cache - - - tabs - - - vms-snapshotschedule-manage-policy - - - storage-pools-add - - - tabs - diff --git a/XenAdmin/IMainWindow.cs b/XenAdmin/IMainWindow.cs index dc3ce3889..e476c428e 100644 --- a/XenAdmin/IMainWindow.cs +++ b/XenAdmin/IMainWindow.cs @@ -52,7 +52,7 @@ namespace XenAdmin void TrySelectNewObjectInTree(IXenConnection c, bool selectNode, bool expandNode, bool ensureNodeVisible); void RequestRefreshTreeView(); void ShowPerXenModelObjectWizard(IXenObject obj, Form wizard); - void ShowPerConnectionWizard(IXenConnection connection, Form wizard); + void ShowPerConnectionWizard(IXenConnection connection, Form wizard, Form parentForm = null); Form ShowForm(Type type); Form ShowForm(Type type, object[] args); void CloseActiveWizards(IXenConnection connection); diff --git a/XenAdmin/Images.cs b/XenAdmin/Images.cs index dc2e5b302..4fd62dfad 100644 --- a/XenAdmin/Images.cs +++ b/XenAdmin/Images.cs @@ -30,19 +30,17 @@ */ using System; -using System.Collections.Generic; -using System.Text; +using System.Drawing; +using System.Linq; using System.Windows.Forms; using XenAdmin.Alerts; -using XenAdmin.Model; -using System.Drawing; - using XenAdmin.Core; +using XenAdmin.Model; using XenAdmin.Network; -using XenAPI; +using XenAdmin.XCM; using XenAdmin.XenSearch; -using System.IO; -using System.Linq; +using XenAPI; + namespace XenAdmin { @@ -192,7 +190,7 @@ namespace XenAdmin ImageList16.Images.Add("000_Abort_h32bit_16.png", Properties.Resources._000_Abort_h32bit_16); //Error #endregion - System.Diagnostics.Trace.Assert(ImageList16.Images.Count == Enum.GetValues(typeof(Icons)).Length, + System.Diagnostics.Debug.Assert(ImageList16.Images.Count == Enum.GetValues(typeof(Icons)).Length, "Programmer error - you must add an entry to the image list when you add a new icon to the enum"); int i = 0; @@ -208,8 +206,6 @@ namespace XenAdmin return ImageArray16[(int)icon]; } - - public static Image GetImage16For(IXenObject o) { Icons icon = GetIconFor(o); @@ -242,6 +238,57 @@ namespace XenAdmin return ImageArray16[(int)icon]; } + public static Image GetImageForPercentage(int percent) + { + return GetImageForPercentage((long)percent); + } + + public static Image GetImageForPercentage(long percent) + { + if (percent < 9) + return StaticImages.usagebar_0; + if (percent < 18) + return StaticImages.usagebar_1; + if (percent < 27) + return StaticImages.usagebar_2; + if (percent < 36) + return StaticImages.usagebar_3; + if (percent < 45) + return StaticImages.usagebar_4; + if (percent < 54) + return StaticImages.usagebar_5; + if (percent < 63) + return StaticImages.usagebar_6; + if (percent < 72) + return StaticImages.usagebar_7; + if (percent < 81) + return StaticImages.usagebar_8; + if (percent < 90) + return StaticImages.usagebar_9; + + return StaticImages.usagebar_10; + } + + public static Image GetImageFor(Conversion conversion) + { + switch (conversion.Status) + { + case (int)ConversionStatus.Successful: + return StaticImages._075_TickRound_h32bit_16; + case (int)ConversionStatus.Failed: + return StaticImages._000_error_h32bit_16; + case (int)ConversionStatus.Cancelled: + return Images.StaticImages.cancelled_action_16; + case (int)ConversionStatus.Incomplete: + return Images.StaticImages._075_WarningRound_h32bit_16; + case (int)ConversionStatus.Running: + return Images.GetImageForPercentage(conversion.PercentComplete); + case (int)ConversionStatus.Created: + case (int)ConversionStatus.Queued: + default: + return Images.StaticImages.queued; + } + } public static Icons GetIconFor(IXenObject o) @@ -456,7 +503,6 @@ namespace XenAdmin } } - public static Icons GetIconFor(Pool pool) { if (!pool.Connection.IsConnected) @@ -486,7 +532,6 @@ namespace XenAdmin return Icons.VDI; } - public static Icons GetIconFor(XenAPI.Message.MessageType type) { switch (type) @@ -533,25 +578,6 @@ namespace XenAdmin } } - public static void GenImageHTML() - { - // create a writer and open the file - TextWriter tw = new StreamWriter("images.htm"); - tw.WriteLine("XenCenter Images"); - - tw.WriteLine(""); - - foreach (Icons icon in Enum.GetValues(typeof(Icons))) - { - tw.WriteLine("", icon, ImageList16.Images.Keys[(int)icon]); - } - - tw.WriteLine("
{0}
"); - - // close the stream - tw.Close(); - } - public static Icons GetIconFor(PIF pif) { return pif.IsPrimaryManagementInterface() ? Icons.PifPrimary : Icons.PifSecondary; @@ -702,6 +728,7 @@ namespace XenAdmin public static Image _000_TreeConnected_h32bit_16 = Properties.Resources._000_TreeConnected_h32bit_16; public static Image _000_UpgradePool_h32bit_32 = Properties.Resources._000_UpgradePool_h32bit_32; public static Image _000_User_h32bit_16 = Properties.Resources._000_User_h32bit_16; + public static Image _000_UserAndGroup_h32bit_16 = Properties.Resources._000_UserAndGroup_h32bit_16; public static Image _000_UserAndGroup_h32bit_32 = Properties.Resources._000_UserAndGroup_h32bit_32; public static Image _000_UserTemplate_h32bit_16 = Properties.Resources._000_UserTemplate_h32bit_16; public static Image _000_ViewModeList_h32bit_16 = Properties.Resources._000_ViewModeList_h32bit_16; @@ -904,6 +931,9 @@ namespace XenAdmin public static Image wizard_background = Properties.Resources.wizard_background; public static Image WLB = Properties.Resources.WLB; public static Image XS = Properties.Resources.XS; + public static Image ConversionManager = Properties.Resources.xcm; + public static Image ConversionManager_32 = Properties.Resources.xcm_32x32; + public static Image queued = Properties.Resources.queued; } } } \ No newline at end of file diff --git a/XenAdmin/Images/000_UserAndGroup_h32bit_16.png b/XenAdmin/Images/000_UserAndGroup_h32bit_16.png new file mode 100644 index 000000000..ca412e8d5 Binary files /dev/null and b/XenAdmin/Images/000_UserAndGroup_h32bit_16.png differ diff --git a/XenAdmin/Images/000_UserAndGroup_h32bit_24.png b/XenAdmin/Images/000_UserAndGroup_h32bit_24.png new file mode 100644 index 000000000..a84f3aac7 Binary files /dev/null and b/XenAdmin/Images/000_UserAndGroup_h32bit_24.png differ diff --git a/XenAdmin/Images/000_UserAndGroup_h32bit_32.png b/XenAdmin/Images/000_UserAndGroup_h32bit_32.png index d9bdfc22a..3cd087d53 100644 Binary files a/XenAdmin/Images/000_UserAndGroup_h32bit_32.png and b/XenAdmin/Images/000_UserAndGroup_h32bit_32.png differ diff --git a/XenAdmin/Images/000_User_h32bit_16.png b/XenAdmin/Images/000_User_h32bit_16.png index 5ce1617c4..a991f04a8 100644 Binary files a/XenAdmin/Images/000_User_h32bit_16.png and b/XenAdmin/Images/000_User_h32bit_16.png differ diff --git a/XenAdmin/Images/000_User_h32bit_24.png b/XenAdmin/Images/000_User_h32bit_24.png new file mode 100644 index 000000000..cef4a4504 Binary files /dev/null and b/XenAdmin/Images/000_User_h32bit_24.png differ diff --git a/XenAdmin/Images/000_User_h32bit_32.png b/XenAdmin/Images/000_User_h32bit_32.png new file mode 100644 index 000000000..5999dffec Binary files /dev/null and b/XenAdmin/Images/000_User_h32bit_32.png differ diff --git a/XenAdmin/Images/queued.png b/XenAdmin/Images/queued.png new file mode 100644 index 000000000..2d4c0bba7 Binary files /dev/null and b/XenAdmin/Images/queued.png differ diff --git a/XenAdmin/Images/xcm.png b/XenAdmin/Images/xcm.png new file mode 100644 index 000000000..3d004649e Binary files /dev/null and b/XenAdmin/Images/xcm.png differ diff --git a/XenAdmin/Images/xcm_32x32.png b/XenAdmin/Images/xcm_32x32.png new file mode 100644 index 000000000..7deb112f5 Binary files /dev/null and b/XenAdmin/Images/xcm_32x32.png differ diff --git a/XenAdmin/MainWindow.Designer.cs b/XenAdmin/MainWindow.Designer.cs index 15c2ac673..b6adaf1cc 100644 --- a/XenAdmin/MainWindow.Designer.cs +++ b/XenAdmin/MainWindow.Designer.cs @@ -139,7 +139,7 @@ namespace XenAdmin this.AddPoolToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem(); this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); this.addServerToolStripMenuItem = new XenAdmin.Commands.AddHostToSelectedPoolToolStripMenuItem(); - this.removeServerToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem(); + this.removeServerToolStripMenuItem = new XenAdmin.Commands.PoolRemoveServerToolStripMenuItem(); this.poolReconnectAsToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem(); this.disconnectPoolToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem(); this.toolStripSeparator27 = new System.Windows.Forms.ToolStripSeparator(); @@ -279,6 +279,8 @@ namespace XenAdmin this.StatusStrip = new System.Windows.Forms.StatusStrip(); this.statusLabel = new System.Windows.Forms.ToolStripStatusLabel(); this.statusProgressBar = new System.Windows.Forms.ToolStripProgressBar(); + this.menuItemRemoveFromPool = new XenAdmin.Commands.CommandToolStripMenuItem(); + this.conversionToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); @@ -794,7 +796,6 @@ namespace XenAdmin // // ToolBarContextMenu // - this.ToolBarContextMenu.ImageScalingSize = new System.Drawing.Size(40, 40); this.ToolBarContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.ShowToolbarMenuItem}); this.ToolBarContextMenu.Name = "ToolBarContextMenu"; @@ -802,9 +803,6 @@ namespace XenAdmin // // ShowToolbarMenuItem // - this.ShowToolbarMenuItem.Checked = true; - this.ShowToolbarMenuItem.CheckOnClick = true; - this.ShowToolbarMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; this.ShowToolbarMenuItem.Name = "ShowToolbarMenuItem"; resources.ApplyResources(this.ShowToolbarMenuItem, "ShowToolbarMenuItem"); this.ShowToolbarMenuItem.Click += new System.EventHandler(this.ShowToolbarMenuItem_Click); @@ -941,6 +939,7 @@ namespace XenAdmin this.exportResourceReportPoolToolStripMenuItem, this.wlbReportsToolStripMenuItem, this.wlbDisconnectToolStripMenuItem, + this.conversionToolStripMenuItem, this.toolStripSeparator9, this.changePoolPasswordToolStripMenuItem, this.toolStripMenuItem1, @@ -970,7 +969,6 @@ namespace XenAdmin // // removeServerToolStripMenuItem // - this.removeServerToolStripMenuItem.Command = new XenAdmin.Commands.RemoveHostFromPoolCommand(); this.removeServerToolStripMenuItem.Name = "removeServerToolStripMenuItem"; resources.ApplyResources(this.removeServerToolStripMenuItem, "removeServerToolStripMenuItem"); // @@ -1104,6 +1102,7 @@ namespace XenAdmin this.toolStripSeparator1, this.connectDisconnectToolStripMenuItem, this.addServerToPoolMenuItem, + this.menuItemRemoveFromPool, this.toolStripSeparator3, this.backupToolStripMenuItem, this.restoreFromBackupToolStripMenuItem, @@ -1905,6 +1904,18 @@ namespace XenAdmin this.statusProgressBar.Name = "statusProgressBar"; this.statusProgressBar.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never; // + // menuItemRemoveFromPool + // + this.menuItemRemoveFromPool.Command = new XenAdmin.Commands.RemoveHostFromPoolCommand(); + this.menuItemRemoveFromPool.Name = "menuItemRemoveFromPool"; + resources.ApplyResources(this.menuItemRemoveFromPool, "menuItemRemoveFromPool"); + // + // conversionToolStripMenuItem + // + this.conversionToolStripMenuItem.Command = new XenAdmin.Commands.LaunchConversionManagerCommand(); + this.conversionToolStripMenuItem.Name = "conversionToolStripMenuItem"; + resources.ApplyResources(this.conversionToolStripMenuItem, "conversionToolStripMenuItem"); + // // MainWindow // resources.ApplyResources(this, "$this"); @@ -1986,7 +1997,7 @@ namespace XenAdmin private XenAdmin.Commands.CommandToolStripMenuItem wlbReportsToolStripMenuItem; private XenAdmin.Commands.CommandToolStripMenuItem wlbDisconnectToolStripMenuItem; private XenAdmin.Commands.AddHostToSelectedPoolToolStripMenuItem addServerToolStripMenuItem; - private XenAdmin.Commands.CommandToolStripMenuItem removeServerToolStripMenuItem; + private XenAdmin.Commands.PoolRemoveServerToolStripMenuItem removeServerToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator9; private XenAdmin.Commands.CommandToolStripMenuItem deleteToolStripMenuItem; private XenAdmin.Commands.CommandToolStripMenuItem disconnectPoolToolStripMenuItem; @@ -2176,6 +2187,8 @@ namespace XenAdmin private XenAdmin.Commands.CommandToolStripMenuItem disableCbtToolStripMenuItem; private System.Windows.Forms.Label LicenseStatusTitleLabel; private Controls.GradientPanel.VerticalGradientPanel TitleBackPanel; + private XenAdmin.Commands.CommandToolStripMenuItem menuItemRemoveFromPool; + private XenAdmin.Commands.CommandToolStripMenuItem conversionToolStripMenuItem; } } diff --git a/XenAdmin/MainWindow.cs b/XenAdmin/MainWindow.cs index 75763c099..fb9c40aae 100755 --- a/XenAdmin/MainWindow.cs +++ b/XenAdmin/MainWindow.cs @@ -1,4 +1,4 @@ -/* Copyright (c) Citrix Systems, Inc. +/* Copyright (c) Citrix Systems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, @@ -36,7 +36,6 @@ using System.ComponentModel; using System.Configuration; using System.Diagnostics; using System.Drawing; -using System.IO; using System.Runtime.InteropServices; using System.Security.Permissions; using System.Text; @@ -69,7 +68,7 @@ namespace XenAdmin { [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] [ComVisibleAttribute(true)] - public partial class MainWindow : Form, ISynchronizeInvoke, IMainWindow + public partial class MainWindow : Form, ISynchronizeInvoke, IMainWindow, IFormWithHelp { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); @@ -630,9 +629,8 @@ namespace XenAdmin } } - private void connection_CachePopulatedOnStartup(object sender, EventArgs e) + private void connection_CachePopulatedOnStartup(IXenConnection c) { - IXenConnection c = (IXenConnection)sender; c.CachePopulated -= connection_CachePopulatedOnStartup; if (expandTreeNodesOnStartup) TrySelectNewNode(c, false, true, false); @@ -640,9 +638,8 @@ namespace XenAdmin Program.Invoke(this, ShowAboutDialogOnStartup); } - private void Connection_ConnectionStateChangedOnStartup(object sender, EventArgs e) + private void Connection_ConnectionStateChangedOnStartup(IXenConnection c) { - IXenConnection c = (IXenConnection)sender; c.ConnectionStateChanged -= Connection_ConnectionStateChangedOnStartup; Program.Invoke(Program.MainWindow, delegate @@ -668,7 +665,7 @@ namespace XenAdmin } private bool Launched = false; - internal void ProcessCommand(ArgType argType, string[] args) + internal void ProcessCommand(ArgType argType, params string[] args) { switch (argType) { @@ -694,11 +691,15 @@ namespace XenAdmin break; case ArgType.Connect: log.DebugFormat("Connecting to server '{0}'", args[0]); - IXenConnection connection = new XenConnection(); - connection.Hostname = args[0]; - connection.Port = ConnectionsManager.DEFAULT_XEN_PORT; - connection.Username = args[1]; - connection.Password = args[2]; + + var connection = new XenConnection + { + Hostname = args[0], + Port = ConnectionsManager.DEFAULT_XEN_PORT, + Username = args.Length > 1 ? args[1] : "", + Password = args.Length > 2 ? args[2] : "" + }; + if (ConnectionsManager.XenConnectionsContains(connection)) break; @@ -839,11 +840,8 @@ namespace XenAdmin /// In many cases this is already covered (e.g. if the user explicitly disconnects). This method ensures we also /// do it when we unexpectedly lose the connection. /// - /// - /// - private void connection_ClearingCache(object sender, EventArgs e) + private void connection_ClearingCache(IXenConnection connection) { - IXenConnection connection = (IXenConnection)sender; CloseActiveWizards(connection); Alert.RemoveAlert(alert => alert.Connection != null && alert.Connection.Equals(connection)); Updates.CheckServerPatches(); @@ -852,12 +850,8 @@ namespace XenAdmin RequestRefreshTreeView(); } - void connection_CachePopulated(object sender, EventArgs e) + void connection_CachePopulated(IXenConnection connection) { - IXenConnection connection = sender as IXenConnection; - if (connection == null) - return; - Host master = Helpers.GetMaster(connection); if (master == null) return; @@ -965,6 +959,7 @@ namespace XenAdmin licenseTimer.CheckActiveServerLicense(connection, false); // XCP-ng Center: Disable HealthCheck (https://github.com/xcp-ng/xenadmin/issues/144) + Updates.CheckHotfixEligibility(connection); //if (Properties.Settings.Default.ShowHealthCheckEnrollmentReminder) // ThreadPool.QueueUserWorkItem(CheckHealthCheckEnrollment, connection); //ThreadPool.QueueUserWorkItem(HealthCheck.CheckForAnalysisResults, connection); @@ -1131,6 +1126,7 @@ namespace XenAdmin case "license_params": UpdateHeader(); UpdateToolbars(); + Updates.CheckHotfixEligibility(host.Connection); break; case "other_config": // other_config may contain HideFromXenCenter @@ -1201,18 +1197,18 @@ namespace XenAdmin RequestRefreshTreeView(); } - private void Connection_ConnectionClosed(object sender, EventArgs e) + private void Connection_ConnectionClosed(IXenConnection conn) { RequestRefreshTreeView(); gc(); } // called whenever our connection with the Xen server fails (i.e., after we've successfully logged in) - private void Connection_ConnectionLost(object sender, EventArgs e) + private void Connection_ConnectionLost(IXenConnection conn) { if (Program.Exiting) return; - Program.Invoke(this, () => CloseActiveWizards((IXenConnection)sender)); + Program.Invoke(this, () => CloseActiveWizards(conn)); RequestRefreshTreeView(); gc(); } @@ -1222,7 +1218,7 @@ namespace XenAdmin GC.Collect(); } - void connection_ConnectionReconnecting(object sender, EventArgs e) + void connection_ConnectionReconnecting(IXenConnection conn) { if (Program.Exiting) return; @@ -1546,7 +1542,7 @@ namespace XenAdmin if (SearchMode) return; - if (o == null) + if (o == null || !Properties.Settings.Default.RememberLastSelectedTab) { selectedOverviewTab = p; } @@ -1558,7 +1554,7 @@ namespace XenAdmin private TabPage GetLastSelectedPage(object o) { - return o == null + return o == null || !Properties.Settings.Default.RememberLastSelectedTab ? selectedOverviewTab : selectedTabs.ContainsKey(o) ? selectedTabs[o] : null; } @@ -1664,6 +1660,7 @@ namespace XenAdmin localStorageToolStripMenuItem.Checked = Properties.Settings.Default.LocalSRsVisible; ShowHiddenObjectsToolStripMenuItem.Checked = Properties.Settings.Default.ShowHiddenVMs; connectDisconnectToolStripMenuItem.Enabled = ConnectionsManager.XenConnectionsCopy.Count > 0; + conversionToolStripMenuItem.Available = conn != null && conn.Cache.VMs.Any(v => v.IsConversionVM()); } private void xenSourceOnTheWebToolStripMenuItem_Click(object sender, EventArgs e) @@ -1735,7 +1732,12 @@ namespace XenAdmin private void DoLicenseAction(Host host, string filePath) { - ApplyLicenseAction action = new ApplyLicenseAction(host.Connection, host, filePath); + //null can happen if the application is started from, say, + //double clicking on a license file without any connections on the tree + if (host == null) + return; + + var action = new ApplyLicenseAction(host, filePath); using (var actionProgress = new ActionProgressDialog(action, ProgressBarStyle.Marquee)) { actionProgress.Text = Messages.INSTALL_LICENSE_KEY; @@ -1920,14 +1922,11 @@ namespace XenAdmin // Otherwise, find the top-level parent (= pool or standalone server) and show the search restricted to that // In the case of multiselect, if all the selections are within one pool (or standalone server), then show that report. // Otherwise show everything, as on the XenCenter node. + // show the default search. var connection = SelectionManager.Selection.GetConnectionOfAllItems(); // null for cross-pool selection - if (connection != null) + if (connection == null) { - //If ShowJustHostInSearch is enabled and only one live host is selected, we show the search for the host only - if (Properties.Settings.Default.ShowJustHostInSearch && SelectionManager.Selection.Count == 1 - && SelectionManager.Selection.FirstIsLiveHost) - { - SearchPage.XenObject = SelectionManager.Selection.FirstAsXenObject; + SearchPage.XenObject = null; } else { @@ -1935,10 +1934,7 @@ namespace XenAdmin SearchPage.XenObject = pool ?? (IXenObject)Helpers.GetMaster(connection); // pool or standalone server } } - else - SearchPage.XenObject = null; } - } else if (t == TabPageHA) { HAPage.XenObject = SelectionManager.Selection.FirstAsXenObject; @@ -2219,8 +2215,7 @@ namespace XenAdmin { dlg.ShowDialog(this); } - log.Error("Couldn't save settings"); - log.Error(ex, ex); + log.Error("Could not save settings.", ex); } base.OnClosing(e); } @@ -2240,34 +2235,29 @@ namespace XenAdmin { Program.Invoke(Program.MainWindow, delegate { - // Close and remove any active wizards for any VMs - foreach (VM vm in connection.Cache.VMs) + var vms = connection.Cache.VMs; + foreach (var kvp in activeXenModelObjectWizards) { - CloseActiveWizards(vm); + if (kvp.Key is VM vm && vms.Contains(vm)) + { + if (kvp.Value is Form wizard && !wizard.IsDisposed) + wizard.Close(); + // Close and remove any active wizards for any VMs + activeXenModelObjectWizards.Remove(vm); } - closeActivePoolWizards(connection); - }); } - /// - /// Closes all per-Connection wizards. - /// - /// - private void closeActivePoolWizards(IXenConnection connection) + if (activePoolWizards.TryGetValue(connection, out IList
wizards)) { - IList wizards; - if (activePoolWizards.TryGetValue(connection, out wizards)) - { foreach (var wizard in wizards) { if (!wizard.IsDisposed) - { wizard.Close(); } - } activePoolWizards.Remove(connection); } + }); } /// @@ -2278,13 +2268,11 @@ namespace XenAdmin { Program.Invoke(Program.MainWindow, delegate { - Form wizard; - if (activeXenModelObjectWizards.TryGetValue(obj, out wizard)) + if (activeXenModelObjectWizards.TryGetValue(obj, out Form wizard)) { if (!wizard.IsDisposed) - { wizard.Close(); - } + activeXenModelObjectWizards.Remove(obj); } }); @@ -2308,14 +2296,15 @@ namespace XenAdmin /// The connection. May be null, in which case the wizard /// is not addded to any dictionary. This should happen iff this is the New Pool Wizard. /// The new wizard to show. May not be null. - public void ShowPerConnectionWizard(IXenConnection connection, Form wizard) + /// The form owning the wizard to be launched. + public void ShowPerConnectionWizard(IXenConnection connection, Form wizard, Form parentForm = null) { if (connection != null) { if (activePoolWizards.ContainsKey(connection)) { - var w = activePoolWizards[connection].Where(x => x.GetType() == wizard.GetType()).FirstOrDefault(); + var w = activePoolWizards[connection].FirstOrDefault(x => x.GetType() == wizard.GetType()); if (w != null && !w.IsDisposed) { if (w.WindowState == FormWindowState.Minimized) @@ -2340,7 +2329,7 @@ namespace XenAdmin if (!wizard.Disposing && !wizard.IsDisposed && !Program.Exiting) { - wizard.Show(this); + wizard.Show(parentForm ?? this); } } @@ -2431,57 +2420,6 @@ namespace XenAdmin #region Help - private string TabHelpID() - { - string modelObj = getSelectedXenModelObjectType(); - - if (TheTabControl.SelectedTab == TabPageHome) - return "TabPageHome" + modelObj; - if (TheTabControl.SelectedTab == TabPageSearch) - return "TabPageSearch" + modelObj; - if (TheTabControl.SelectedTab == TabPageConsole) - return "TabPageConsole" + modelObj; - if (TheTabControl.SelectedTab == TabPageCvmConsole) - return "TabPageCvmConsole" + modelObj; - if (TheTabControl.SelectedTab == TabPageGeneral) - return "TabPageSettings" + modelObj; - if (TheTabControl.SelectedTab == TabPagePhysicalStorage || TheTabControl.SelectedTab == TabPageStorage || TheTabControl.SelectedTab == TabPageSR) - return "TabPageStorage" + modelObj; - if (TheTabControl.SelectedTab == TabPageNetwork) - return "TabPageNetwork" + modelObj; - if (TheTabControl.SelectedTab == TabPageNICs) - return "TabPageNICs" + modelObj; - if (TheTabControl.SelectedTab == TabPageWLB) - return "TabPageWLB" + modelObj; - if (TheTabControl.SelectedTab == TabPagePeformance) - return "TabPagePerformance" + modelObj; - if (TheTabControl.SelectedTab == TabPageHA) - return "TabPageHA" + modelObj; - if (TheTabControl.SelectedTab == TabPageHAUpsell) - return "TabPageHAUpsell" + modelObj; - if (TheTabControl.SelectedTab == TabPageSnapshots) - return "TabPageSnapshots" + modelObj; - if (TheTabControl.SelectedTab == TabPageBallooning) - return "TabPageBallooning" + modelObj; - if (TheTabControl.SelectedTab == TabPageAD) - return "TabPageAD" + modelObj; - if (TheTabControl.SelectedTab == TabPageADUpsell) - return "TabPageADUpsell" + modelObj; - if (TheTabControl.SelectedTab == TabPageWLBUpsell) - return "TabPageWLBUpsell"; - if (TheTabControl.SelectedTab == TabPageGPU) - return "TabPageGPU" + modelObj; - if (TheTabControl.SelectedTab == TabPageDockerProcess) - return "TabPageDockerProcess" + modelObj; - if (TheTabControl.SelectedTab == TabPageDockerDetails) - return "TabPageDockerDetails" + modelObj; - if (TheTabControl.SelectedTab == TabPagePvs) - return "TabPagePvs" + modelObj; - if (TheTabControl.SelectedTab == TabPageUSB) - return "TabPageUSB" + modelObj; - return "TabPageUnknown"; - } - private string getSelectedXenModelObjectType() { // for now, since there are few topics which depend on the selected object we shall just check the special cases @@ -2515,29 +2453,6 @@ namespace XenAdmin return ""; } - public void ShowHelpTOC() - { - ShowHelpTopic(null); - } - - public void ShowHelpTopic(string topicID) - { - var helpTopicUrl = HelpManager.ProduceUrl( - topicID, - InvisibleMessages.HELP_URL, - InvisibleMessages.LOCALE, - $"{Branding.XENCENTER_VERSION}.{Program.Version.Revision}", - "ui_link", - Messages.XENCENTER); - - if (!string.IsNullOrEmpty(helpTopicUrl)) - Program.OpenURL(helpTopicUrl); - - // record help usage - Properties.Settings.Default.HelpLastUsed = DateTime.UtcNow.ToString("u"); - Settings.TrySaveSettings(); - } - public void MainWindow_HelpRequested(object sender, HelpEventArgs hlpevent) { // CA-28064. MessageBox hack to kill the hlpevent it passes to MainWindows. @@ -2547,7 +2462,7 @@ namespace XenAdmin private void helpTopicsToolStripMenuItem_Click(object sender, EventArgs e) { - ShowHelpTOC(); + HelpManager.Launch("TOC"); } private void helpContextMenuItem_Click(object sender, EventArgs e) @@ -2557,24 +2472,35 @@ namespace XenAdmin private void LaunchHelp() { - if (alertPage.Visible) - Help.HelpManager.Launch("AlertSummaryDialog"); - else if (updatesPage.Visible) - Help.HelpManager.Launch("ManageUpdatesDialog"); - else if (eventsPage.Visible) - Help.HelpManager.Launch("EventsPane"); - else + if (TheTabControl.SelectedTab.Tag is TabPageFeature tpf && tpf.HasHelp) { - if (TheTabControl.SelectedTab.Tag is TabPageFeature && ((TabPageFeature)TheTabControl.SelectedTab.Tag).HasHelp) - ((TabPageFeature)TheTabControl.SelectedTab.Tag).LaunchHelp(); - else - Help.HelpManager.Launch(TabHelpID()); + tpf.LaunchHelp(); + return; } + + HelpManager.Launch(TabHelpID()); + } + + private string TabHelpID() + { + if (alertPage.Visible) + return alertPage.HelpID; + + if (updatesPage.Visible) + return updatesPage.HelpID; + + if (eventsPage.Visible) + return eventsPage.HelpID; + + if (TheTabControl.SelectedTab.Controls.Count > 0 && TheTabControl.SelectedTab.Controls[0] is IControlWithHelp ctrl) + return ctrl.HelpID + getSelectedXenModelObjectType(); + + return "TOC"; } public bool HasHelp() { - return Help.HelpManager.HasHelpFor(TabHelpID()); + return HelpManager.TryGetTopicId(TabHelpID(), out _); } private void viewApplicationLogToolStripMenuItem_Click(object sender, EventArgs e) @@ -3084,7 +3010,6 @@ namespace XenAdmin History.PopulateForwardDropDown(button); } - private void LicenseManagerMenuItem_Click(object sender, EventArgs e) { licenseManagerLauncher.LaunchIfRequired(false, ConnectionsManager.XenConnections, SelectionManager.Selection); diff --git a/XenAdmin/MainWindow.ja.resx b/XenAdmin/MainWindow.ja.resx index a1d18bdab..08473a064 100755 --- a/XenAdmin/MainWindow.ja.resx +++ b/XenAdmin/MainWindow.ja.resx @@ -1195,7 +1195,7 @@ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="TitleLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="LicenseStatusTitleLabel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="toolTipContainer1" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="Percent,100" /></TableLayoutSettings> - 0, 3 + 0, 0 759, 24 @@ -2079,6 +2079,12 @@ ワークロード バランス サーバーの切断(&B) + + 277, 22 + + + Conversion Manager(&E)... + 274, 6 @@ -2095,7 +2101,7 @@ 277, 22 - プールの削除(&D) + スタンドアロン サーバーにする(&E) 274, 6 @@ -2241,6 +2247,12 @@ プールへの追加(&P) + + 216, 22 + + + プールから削除(&P) + 209, 6 @@ -3996,6 +4008,18 @@ System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + menuItemRemoveFromPool + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + conversionToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + MainWindow diff --git a/XenAdmin/MainWindow.resx b/XenAdmin/MainWindow.resx index b8a8c5fa6..dce7fbae0 100644 --- a/XenAdmin/MainWindow.resx +++ b/XenAdmin/MainWindow.resx @@ -2079,6 +2079,12 @@ Disconnect Workload &Balancing Server + + 277, 22 + + + Conv&ersion Manager... + 274, 6 @@ -2095,7 +2101,7 @@ 277, 22 - &Delete Pool + Mak&e into standalone server 274, 6 @@ -2241,6 +2247,12 @@ Add to &Pool + + 216, 22 + + + Remove From &Pool + 213, 6 @@ -3996,10 +4008,22 @@ System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + menuItemRemoveFromPool + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + conversionToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + MainWindow System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - \ No newline at end of file + diff --git a/XenAdmin/MainWindow.zh-CN.resx b/XenAdmin/MainWindow.zh-CN.resx index a9931c76d..ba4e1af62 100755 --- a/XenAdmin/MainWindow.zh-CN.resx +++ b/XenAdmin/MainWindow.zh-CN.resx @@ -1195,7 +1195,7 @@ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="TitleLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="LicenseStatusTitleLabel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="toolTipContainer1" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="Percent,100" /></TableLayoutSettings> - 0, 3 + 0, 0 759, 24 @@ -2079,6 +2079,12 @@ 断开 Workload Balancing 服务器连接(&B) + + 277, 22 + + + Conversion Manager(&E)... + 274, 6 @@ -2095,7 +2101,7 @@ 277, 22 - 删除池(&D) + 拆分为独立服务器(&E) 274, 6 @@ -2241,6 +2247,12 @@ 添加到池(&P) + + 216, 22 + + + 从池中删除(&P) + 209, 6 @@ -3996,6 +4008,18 @@ System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + menuItemRemoveFromPool + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + conversionToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + MainWindow diff --git a/XenAdmin/Network/AddServerTask.cs b/XenAdmin/Network/AddServerTask.cs index f3eab6da8..d00068471 100644 --- a/XenAdmin/Network/AddServerTask.cs +++ b/XenAdmin/Network/AddServerTask.cs @@ -41,8 +41,6 @@ namespace XenAdmin.Network { class AddServerTask { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private readonly IWin32Window _parentForm; /// diff --git a/XenAdmin/Network/SSL.cs b/XenAdmin/Network/SSL.cs index 928d03d4b..873ff99bf 100644 --- a/XenAdmin/Network/SSL.cs +++ b/XenAdmin/Network/SSL.cs @@ -85,7 +85,7 @@ namespace XenAdmin.Network { return true; } - else if (!Properties.Settings.Default.WarnChangedCertificate && Registry.AlwaysShowSSLCertificates == SSLCertificateTypes.None) + else if (!Properties.Settings.Default.WarnChangedCertificate && Registry.SSLCertificateTypes == SSLCertificateTypes.None) { Settings.ReplaceCertificate(kvp.Key, certificate); log.Debug("Updating cert silently"); @@ -107,7 +107,7 @@ namespace XenAdmin.Network } } - if (!Properties.Settings.Default.WarnUnrecognizedCertificate && Registry.AlwaysShowSSLCertificates != SSLCertificateTypes.All) + if (!Properties.Settings.Default.WarnUnrecognizedCertificate && Registry.SSLCertificateTypes != SSLCertificateTypes.All) { // user has chosen to ignore new certificates Settings.AddCertificate(certificate, webreq.Address.Host); diff --git a/XenAdmin/Network/XenConnectionUI.cs b/XenAdmin/Network/XenConnectionUI.cs index 23d6c708b..27d062a52 100644 --- a/XenAdmin/Network/XenConnectionUI.cs +++ b/XenAdmin/Network/XenConnectionUI.cs @@ -62,8 +62,7 @@ namespace XenAdmin.Network if (interactive) { // CA-214953 - Focus on this connection's dialog, if one exists, otherwise create one - ConnectingToServerDialog dlg; - if (connectionDialogs.TryGetValue(connection, out dlg)) + if (connectionDialogs.TryGetValue(connection, out ConnectingToServerDialog dlg)) { UnregisterEventHandlers(connection); if (dlg.WindowState == FormWindowState.Minimized) @@ -79,15 +78,15 @@ namespace XenAdmin.Network ((XenConnection)connection).BeginConnect(initiateMasterSearch, PromptForNewPassword); } - public static bool PromptForNewPassword(IXenConnection connection, string oldPassword) + private static bool PromptForNewPassword(IXenConnection connection, string oldPassword) { bool result = false; - Program.Invoke(Program.MainWindow, delegate() - { - // show an altered version of the add server dialog with the hostname greyed out - AddServerDialog dialog = new AddServerDialog(connection, true); - result = dialog.ShowDialog(Program.MainWindow) == DialogResult.OK; - }); + Program.Invoke(Program.MainWindow, () => + { + // show an altered version of the add server dialog with the hostname greyed out + using (var dialog = new AddServerDialog(connection, true)) + result = dialog.ShowDialog(Program.MainWindow) == DialogResult.OK; + }); return result; } @@ -104,26 +103,32 @@ namespace XenAdmin.Network connection.ConnectionStateChanged -= Connection_ConnectionStateChanged; } - internal static void Connection_ConnectionResult(object sender, ConnectionResultEventArgs e) + private static void Connection_ConnectionResult(object sender, ConnectionResultEventArgs e) { - // Show connection error + if (!(sender is IXenConnection conn)) + return; + + Form ownerForm = Program.MainWindow; + + if (connectionDialogs.TryGetValue(conn, out var dlg)) + { + var form = dlg.GetOwnerForm(); + if (form != null) + ownerForm = form; + + dlg.CloseConnectingDialog(); + } + if (e.Connected || e.Error == null) return; - IXenConnection connection = (IXenConnection)sender; - - Program.Invoke(Program.MainWindow, - delegate() - { - ShowConnectingDialogError_(Program.MainWindow, connection, e.Error); - }); + Program.Invoke(Program.MainWindow, () => ShowConnectingDialogError(ownerForm, conn, e.Error)); } - internal static void ShowConnectingDialogError_(Form owner, IXenConnection connection, Exception error) + private static void ShowConnectingDialogError(Form owner, IXenConnection connection, Exception error) { - if (error is ExpressRestriction) + if (error is ExpressRestriction e) { - ExpressRestriction e = (ExpressRestriction)error; Program.Invoke(Program.MainWindow, delegate() { new LicenseWarningDialog(e.HostName, e.ExistingHostName).ShowDialog(owner); @@ -131,9 +136,8 @@ namespace XenAdmin.Network return; } - if (error is Failure) + if (error is Failure f) { - Failure f = (Failure)error; if (f.ErrorDescription[0] == Failure.HOST_IS_SLAVE) { string oldHost = connection.Name; @@ -206,13 +210,11 @@ namespace XenAdmin.Network AddError(owner, connection, string.IsNullOrEmpty(f.Message) ? Messages.ERROR_UNKNOWN : f.Message, string.Empty); } } - else if (error is WebException) + else if (error is WebException w) { - if (((XenConnection)connection).SupressErrors) + if (((XenConnection)connection).SuppressErrors) return; - WebException w = (WebException)error; - var solutionCheckXenServer = Properties.Settings.Default.ProxySetting != (int)HTTPHelper.ProxyStyle.DirectConnection ? Messages.SOLUTION_CHECK_XENSERVER_WITH_PROXY : Messages.SOLUTION_CHECK_XENSERVER; @@ -259,14 +261,12 @@ namespace XenAdmin.Network // If you're using the DbProxy AddError(owner, connection, string.Format(string.Format(Messages.ERROR_FILE_NOT_FOUND, ((XenConnection)connection).Hostname), connection.Name), Messages.SOLUTION_UNKNOWN); } - else if (error is ConnectionExists) + else if (error is ConnectionExists c) { ConnectionsManager.ClearCacheAndRemoveConnection(connection); if (!Program.RunInAutomatedTestMode) { - ConnectionExists c = error as ConnectionExists; - using (var dlg = new ThreeButtonDialog( new ThreeButtonDialog.Details( SystemIcons.Information, @@ -291,7 +291,7 @@ namespace XenAdmin.Network } else { - if (((XenConnection)connection).SupressErrors) + if (((XenConnection)connection).SuppressErrors) return; AddError(owner, connection, string.Format(Messages.ERROR_UNKNOWN, ((XenConnection)connection).Hostname), Messages.SOLUTION_UNKNOWN); @@ -344,19 +344,13 @@ namespace XenAdmin.Network } } - private static void Connection_ConnectionStateChanged(object sender, EventArgs e) + private static void Connection_ConnectionStateChanged(IXenConnection conn) { - // Close dialogs on termination - IXenConnection connection = (IXenConnection)sender; - - if (connection.IsConnected) + if (conn.IsConnected) return; - Program.Invoke(Program.MainWindow, - delegate() - { - XenDialogBase.CloseAll(connection); - }); + // Close dialogs on termination + Program.Invoke(Program.MainWindow, () => XenDialogBase.CloseAll(conn)); } } } diff --git a/XenAdmin/OrganizationalView.cs b/XenAdmin/OrganizationalView.cs index 704b65119..b53574737 100644 --- a/XenAdmin/OrganizationalView.cs +++ b/XenAdmin/OrganizationalView.cs @@ -60,7 +60,7 @@ namespace XenAdmin public override object GetGroup(IXenObject o) { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } public VirtualTreeNode RootNode @@ -107,7 +107,7 @@ namespace XenAdmin else filter = new GroupQuery(new[] { search.Query.QueryFilter, Query }, GroupQuery.GroupQueryType.And); - return new Search(new Query(scope, filter), Grouping, false, "", null, null, new Sort[] { }); + return new Search(new Query(scope, filter), Grouping, "", null, null, new Sort[] { }); } } diff --git a/XenAdmin/PasswordsRequest.cs b/XenAdmin/PasswordsRequest.cs index 8251e1356..351a889c2 100644 --- a/XenAdmin/PasswordsRequest.cs +++ b/XenAdmin/PasswordsRequest.cs @@ -30,7 +30,6 @@ */ using System; -using System.Collections.Generic; using System.Configuration; using System.Text; using System.Diagnostics; @@ -62,25 +61,27 @@ namespace XenAdmin internal static void HandleRequest(string destdir) { - Process this_process = Process.GetCurrentProcess(); - Process parent = Processes.FindParent(this_process); + log.DebugFormat("Handling password request"); - if (parent == null) + Process thisProcess = Process.GetCurrentProcess(); + Process parentProcess = Processes.FindParent(thisProcess); + + if (parentProcess == null) { log.Warn("Cannot find parent process. Ignoring request."); return; } - WindowsIdentity parent_user = Processes.GetWindowsIdentity(parent); - WindowsIdentity this_user = Processes.GetWindowsIdentity(this_process); + WindowsIdentity parentUser = Processes.GetWindowsIdentity(parentProcess); + WindowsIdentity thisUser = Processes.GetWindowsIdentity(thisProcess); - if (parent_user == null || this_user == null) + if (parentUser == null || thisUser == null) { log.Warn("Cannot find user details. Ignoring request."); return; } - if (parent_user.User != this_user.User) + if (parentUser.User != thisUser.User) { log.Warn("Passwords requested from user different to us. Ignoring request."); return; @@ -92,61 +93,52 @@ namespace XenAdmin return; } - string exepath = Processes.GetExePath(parent); + string exePath = Processes.GetExePath(parentProcess); - string token; - string token_exepath; - string user_sid; - if (ParseToken(destdir, out token, out token_exepath, out user_sid)) + if (ParseToken(destdir, out var token, out var tokenExePath, out var userSid)) { // Valid token. - if (token_exepath == exepath) + if (tokenExePath == exePath) { - if (user_sid == this_user.User.ToString()) + if (userSid == thisUser.User.ToString()) { CompleteRequest(destdir, token); return; } - else - { - // Valid token, but for the wrong user. Fall through to reprompt. - log.WarnFormat("Given token for user {0}, but running as {1}", user_sid, this_user.User); - } + + log.WarnFormat("Valid token, but for the wrong user. Will re-prompt"); } else { - // Valid token, but for the wrong app. Fall through to reprompt. - log.WarnFormat("Given token for {0}, but app is {1}", token_exepath, exepath); + log.WarnFormat("Valid token, but for the wrong app. Will re-prompt"); } } else { - // Missing or invalid token. + log.Warn("Missing or invalid token."); } - PasswordsRequestDialog d = new PasswordsRequestDialog(); - d.Application = exepath; + using (var d = new PasswordsRequestDialog { Application = exePath }) + switch (d.ShowDialog()) + { + case DialogResult.OK: + // Give passwords this time. + CompleteRequest(destdir, null); + break; - switch (d.ShowDialog()) - { - case DialogResult.OK: - // Give passwords this time. - CompleteRequest(destdir, null); - break; + case DialogResult.Yes: + // Give passwords always. + CompleteRequest(destdir, GenerateToken(exePath, thisUser.User.ToString())); + break; - case DialogResult.Yes: - // Give passwords always. - CompleteRequest(destdir, GenerateToken(exepath, this_user.User.ToString())); - break; + case DialogResult.Cancel: + WriteXML(destdir, null, "cancelled"); + break; - case DialogResult.Cancel: - WriteXML(destdir, null, "cancelled"); - break; - - default: - log.Error("Unexpected result from PasswordsRequestDialog!"); - return; - } + default: + log.Error("Unexpected result from PasswordsRequestDialog!"); + return; + } } private static bool ParseToken(string destdir, out string token, out string token_exepath, out string user_sid) diff --git a/XenAdmin/Plugins/Cmd/PowerShellCmd.cs b/XenAdmin/Plugins/Cmd/PowerShellCmd.cs index da76dd8c2..cea885de8 100644 --- a/XenAdmin/Plugins/Cmd/PowerShellCmd.cs +++ b/XenAdmin/Plugins/Cmd/PowerShellCmd.cs @@ -29,37 +29,40 @@ * SUCH DAMAGE. */ -using System; using System.Collections.Generic; using System.Diagnostics; -using System.Text; using System.Xml; using XenAPI; - using XenAdmin.Core; namespace XenAdmin.Plugins { internal class PowerShellCmd : ShellCmd { - public readonly bool Debug; // optional - "debug" attribute on the "PowerShellCmd" tag - public readonly string Function; // optional - "function" attribute on the "PowerShellCmd" tag + /// + /// (Optional) "debug" attribute on the "PowerShellCmd" tag + /// + public readonly bool Debug; + + /// + /// (Optional) "function" attribute on the "PowerShellCmd" tag + /// + public readonly string Function; + public const string ATT_DEBUG = "debug"; public const string ATT_FUNCTION = "function"; public PowerShellCmd(XmlNode node, List extraParams) : base(node, extraParams) { - Debug = Helpers.GetBoolXmlAttribute(node, ATT_DEBUG, false); + Debug = Helpers.GetBoolXmlAttribute(node, ATT_DEBUG); Function = Helpers.GetStringXmlAttribute(node, ATT_FUNCTION); - - Registry.CheckPowershell(); } public override Process CreateProcess(List procParams, IList targets) { - Registry.CheckPowershell(); + Registry.AssertPowerShellInstalled(); // get ourselves in the correct directory // put the parameters in the objInfoArray variable diff --git a/XenAdmin/Plugins/Cmd/ShellCmd.cs b/XenAdmin/Plugins/Cmd/ShellCmd.cs index ec1e3856a..839f6b196 100644 --- a/XenAdmin/Plugins/Cmd/ShellCmd.cs +++ b/XenAdmin/Plugins/Cmd/ShellCmd.cs @@ -67,7 +67,7 @@ namespace XenAdmin.Plugins this.node = node; Filename = Helpers.GetStringXmlAttribute(node, ATT_FILENAME); Window = Helpers.GetBoolXmlAttribute(node, ATT_WINDOW, true); - LogOutput = Helpers.GetBoolXmlAttribute(node, ATT_LOG_OUTPUT, false); + LogOutput = Helpers.GetBoolXmlAttribute(node, ATT_LOG_OUTPUT); _disposeTime = Helpers.GetFloatXmlAttribute(node, ATT_DISPOSE_TIME, 20.0f); // The required methods to run this plugin are a comma separated list of strings that can be parsed by the RbacMethodList class requiredMethods = new RbacMethodList(Helpers.GetStringXmlAttribute(node, ATT_REQUIRED_METHODS, "").Split(',')); diff --git a/XenAdmin/Plugins/Cmd/XenServerPowerShellCmd.cs b/XenAdmin/Plugins/Cmd/XenServerPowerShellCmd.cs index 8e2420b76..3975b43a5 100644 --- a/XenAdmin/Plugins/Cmd/XenServerPowerShellCmd.cs +++ b/XenAdmin/Plugins/Cmd/XenServerPowerShellCmd.cs @@ -32,7 +32,6 @@ using System; using System.Collections.Generic; using System.Diagnostics; -using System.IO; using System.Text; using System.Xml; @@ -43,18 +42,6 @@ namespace XenAdmin.Plugins { internal class XenServerPowershellCmd : ShellCmd { - // TODO: CA:40580: These version numbers are not checked anywhere at the moment, and thus are not documented as part of the plugin spec - /// - /// optional - "version_min" attribute on the "XenServerPowerShellCmd" tag - /// - public readonly Version SnapInMinVersion; -#pragma warning disable 649, 169 - /// - /// optional - "version_max" attribute on the "XenServerPowerShellCmd" tag - /// - public readonly Version SnapInMaxVersion; -#pragma warning restore 649, 169 - /// /// optional - "debug" attribute on the "XenServerPowerShellCmd" tag /// @@ -66,8 +53,6 @@ namespace XenAdmin.Plugins public readonly string Function; public const string ATT_DEBUG = "debug"; - public const string ATT_VERSION_MIN = "version_min"; - public const string ATT_VERSION_MAX = "version_max"; public const string ATT_FUNCTION = "function"; private const string XEN_PARAM_ARRAY_VAR_NAME = "ObjInfoArray"; @@ -90,80 +75,64 @@ namespace XenAdmin.Plugins "}};" + "__XenCenter_DebugPlugin"; - private const string InvokeExpression = - "Invoke-Expression $([System.String]::Join([System.Environment]::NewLine, (Get-Content -Path \"{0}\"))); {1}"; - public XenServerPowershellCmd(XmlNode node, List extraParams) : base(node, extraParams) { - Debug = Helpers.GetBoolXmlAttribute(node, ATT_DEBUG, false); - string versionString = Helpers.GetStringXmlAttribute(node, ATT_VERSION_MIN); - if (versionString != null) - SnapInMinVersion = new Version(versionString); - - versionString = Helpers.GetStringXmlAttribute(node, ATT_VERSION_MAX); - if (versionString != null) - SnapInMinVersion = new Version(versionString); - + Debug = Helpers.GetBoolXmlAttribute(node, ATT_DEBUG); Function = Helpers.GetStringXmlAttribute(node, ATT_FUNCTION); - - Registry.CheckXenServerPSSnapIn(); } public override Process CreateProcess(List procParams, IList targets) { - Registry.CheckXenServerPSSnapIn(); - string snapin = Registry.XenServerSnapInLocation(); - // execute the initialize script - // get ourselves in the correct directory - // put the parameters in the objInfoArray variable - // exectute the plugin, with debugging if required - string command = string.Format( - "& {{" + - " . \"{0}\";" + - " {1}" + - "}}", - Path.Combine(Path.GetDirectoryName(snapin), "Initialize-Environment.ps1"), - MakeInvocationExpression(Filename, Function, procParams, Params, targets, Debug)); + Registry.AssertPowerShellInstalled(); + Registry.AssertPowerShellExecutionPolicyNonRestricted(); - // finally we escape the entire command statement again as it is being passed into the -Command parameter in quotes + string command = MakeInvocationExpression(Filename, Function, procParams, Params, targets, Debug); + + //escape the entire command statement as it is being passed into the -Command parameter in quotes command = EscapeQuotes(EscapeBackSlashes(command)); - Process proc = new Process(); - proc.StartInfo.FileName = PluginDescriptor.PowerShellExecutable; - proc.StartInfo.Arguments = string.Format("-PSConsoleFile \"{0}\" -NoLogo -Command \"{1}\"", - EscapeQuotes(snapin), - command); - proc.StartInfo.UseShellExecute = false; - proc.StartInfo.CreateNoWindow = !Window; - proc.StartInfo.WindowStyle = !Window ? ProcessWindowStyle.Hidden : ProcessWindowStyle.Normal; - return proc; + return new Process + { + StartInfo = + { + FileName = PluginDescriptor.PowerShellExecutable, + Arguments = $"-NoLogo -Command \"Import-Module XenServerPSModule; {command}\"", + UseShellExecute = false, + CreateNoWindow = !Window, + WindowStyle = Window ? ProcessWindowStyle.Normal : ProcessWindowStyle.Hidden + } + }; } public static string EscapeQuotes(string s) { - // replacing " with \" return s.Replace("\"", "\\\""); } public static string EscapeBackSlashes(string s) { - // replacing \ with \\ return s.Replace("\\", "\\\\"); } - public static string MakeInvocationExpression(string filename, string function, IList proc_params, IList extra_params, - IList objs, bool debug) + public static string MakeInvocationExpression(string filename, string function, IList proc_params, + IList extra_params, IList objs, bool debug) { - string expression = string.Format(InvokeExpression, - Placeholders.Substitute(filename, objs), - Placeholders.Substitute(function ?? "", objs)); + filename = Placeholders.Substitute(filename, objs); + var expression = $"Invoke-Expression $(Get-Content -Path \"{filename}\" -Raw)"; + + if (!string.IsNullOrEmpty(function)) + function = Placeholders.Substitute(function, objs); + if (!string.IsNullOrEmpty(function)) + expression = $"{expression}; {function}"; + + if (debug) + expression = string.Format(DebugFunction, expression); + string xenArrayStatement = XenArrayStatement(proc_params); string extraArrayStatement = ExtraArrayStatement(extra_params, objs); - return string.Format("cd \"{0}\"; {1} {2} {3};", - Program.AssemblyDir, xenArrayStatement, extraArrayStatement, - debug ? string.Format(DebugFunction, expression) : expression); + return $"cd \"{Program.AssemblyDir}\"; {xenArrayStatement} {extraArrayStatement} {expression};"; } private static string XenArrayStatement(IList procParams) @@ -173,7 +142,8 @@ namespace XenAdmin.Plugins // now we form a statement that will initialise a powershell array in the format (a,b,c,d),(a2,b2,c2,d2),(a3,b3,c3,d3) e.t.c StringBuilder sb = new StringBuilder(); - sb.Append(string.Format("${0}=@(", XEN_PARAM_ARRAY_VAR_NAME)); + sb.AppendFormat("${0}=@(", XEN_PARAM_ARRAY_VAR_NAME); + for (int i = 0; i < count; i++) { if (i > 0) diff --git a/XenAdmin/Plugins/Features/Feature.cs b/XenAdmin/Plugins/Features/Feature.cs index 7a0b42ec3..7ef80cda1 100644 --- a/XenAdmin/Plugins/Features/Feature.cs +++ b/XenAdmin/Plugins/Features/Feature.cs @@ -30,15 +30,12 @@ */ using System; -using System.Collections.Generic; -using System.Text; -using XenAdmin.Controls; using System.Drawing; +using System.IO; using XenAdmin.XenSearch; using System.Xml; using System.Resources; using XenAdmin.Core; -using XenAPI; namespace XenAdmin.Plugins @@ -48,23 +45,47 @@ namespace XenAdmin.Plugins /// public abstract class Feature : IDisposable { - private readonly PluginDescriptor _pluginDescriptor; private readonly ResourceManager _resourceManager; protected readonly XmlNode node; - private readonly Search _search; // optional - "search" attribute, specifies a search defined in the config file to set enablement - private readonly string _name; // required - "name" attribute on the feature's tag - private readonly string _label; // optional - "label" attribute, used as a display string instead of 'name' if set. - private readonly string _description; // optional - $feature.description in resources file - private readonly string _tooltip; // optional - $feature.tooltip in resources file - private readonly Image _icon; // optional - $feature.icon in resources file + protected PluginDescriptor PluginDescriptor { get; } - public const string ATT_NAME = "name"; - public const string ATT_LABEL = "label"; - public const string ATT_DESCRIPTION = "description"; - public const string ATT_TOOLTIP = "tooltip"; - public const string ATT_ICON = "icon"; - public const string ATT_SEARCH = "search"; + /// + /// (Mandatory) "name" attribute on the feature's tag + /// + public string Name { get; } + + /// + /// (Optional) "label" attribute, used as a display string instead of 'name' if set. + /// + public string Label { get; } + + /// + /// (Optional) $feature.description in resources file + /// + public string Description { get; } + + /// + /// (Optional) $feature.tooltip in resources file + /// + public string Tooltip { get; } + + /// + /// (Optional) $feature.icon in resources file + /// + public Image Icon { get; } + + /// + /// (Optional) "search" attribute, specifies a search defined in the config file to set enablement + /// + protected Search Search { get; } + + private const string ATT_NAME = "name"; + private const string ATT_LABEL = "label"; + private const string ATT_DESCRIPTION = "description"; + private const string ATT_TOOLTIP = "tooltip"; + private const string ATT_ICON = "icon"; + private const string ATT_SEARCH = "search"; /// /// Initializes a new instance of the class. @@ -72,50 +93,51 @@ namespace XenAdmin.Plugins /// The resource manager for localization /// The XML node from the plugin config file /// The plugin descriptor. - public Feature(ResourceManager resourceManager, XmlNode node, PluginDescriptor pluginDescriptor) + protected Feature(ResourceManager resourceManager, XmlNode node, PluginDescriptor pluginDescriptor) { Util.ThrowIfParameterNull(node, "node"); Util.ThrowIfParameterNull(pluginDescriptor, "pluginDescriptor"); this.node = node; _resourceManager = resourceManager; - _pluginDescriptor = pluginDescriptor; + PluginDescriptor = pluginDescriptor; - _name = Helpers.GetStringXmlAttribute(node, ATT_NAME, ""); - _label = Helpers.GetStringXmlAttribute(node, ATT_LABEL, ""); - _description = Helpers.GetStringXmlAttribute(node, ATT_DESCRIPTION, ""); - _tooltip = Helpers.GetStringXmlAttribute(node, ATT_TOOLTIP, ""); - _icon = LoadIcon(Helpers.GetStringXmlAttribute(node, ATT_ICON, "")); - _search = PluginDescriptor.GetSearch(Helpers.GetStringXmlAttribute(node, ATT_SEARCH, "")); + Name = Helpers.GetStringXmlAttribute(node, ATT_NAME, ""); + Label = Helpers.GetStringXmlAttribute(node, ATT_LABEL, ""); + Description = Helpers.GetStringXmlAttribute(node, ATT_DESCRIPTION, ""); + Tooltip = Helpers.GetStringXmlAttribute(node, ATT_TOOLTIP, ""); + Icon = LoadIcon(Helpers.GetStringXmlAttribute(node, ATT_ICON, "")); + Search = PluginDescriptor.GetSearch(Helpers.GetStringXmlAttribute(node, ATT_SEARCH, "")); // localize if (_resourceManager != null) { - string label = _resourceManager.GetString(string.Format("{0}.{1}", Name, ATT_LABEL)); - _label = string.IsNullOrEmpty(label) ? _label : label; + string label = _resourceManager.GetString($"{Name}.{ATT_LABEL}"); + if (!string.IsNullOrEmpty(label)) + Label = label; - string description = _resourceManager.GetString(string.Format("{0}.{1}", Name, ATT_DESCRIPTION)); - _description = string.IsNullOrEmpty(description) ? _description : description; + string description = _resourceManager.GetString($"{Name}.{ATT_DESCRIPTION}"); + if (!string.IsNullOrEmpty(description)) + Description = description; - string tooltip = _resourceManager.GetString(string.Format("{0}.{1}", Name, ATT_TOOLTIP)); - _tooltip = string.IsNullOrEmpty(tooltip) ? _tooltip : tooltip; + string tooltip = _resourceManager.GetString($"{Name}.{ATT_TOOLTIP}"); + if (!string.IsNullOrEmpty(tooltip)) + Tooltip = tooltip; - string icon = _resourceManager.GetString(string.Format("{0}.{1}", Name, ATT_ICON)); - _icon = string.IsNullOrEmpty(icon) ? _icon : LoadIcon(icon); + string icon = _resourceManager.GetString($"{Name}.{ATT_ICON}"); + if (!string.IsNullOrEmpty(icon)) + Icon = LoadIcon(icon); } } public virtual string CheckForError() { - if (_name == "") - return string.Format(Messages.CANNOT_PARSE_NODE_PARAM, node.Name, ATT_NAME); - - return null; + return Name == "" ? string.Format(Messages.CANNOT_PARSE_NODE_PARAM, node.Name, ATT_NAME) : null; } private static Image LoadIcon(string path) { - return string.IsNullOrEmpty(path) ? null : Image.FromFile(path); + return string.IsNullOrEmpty(path) ? null : Image.FromFile(Path.Combine(Program.AssemblyDir, path)); } public virtual void Initialize() @@ -124,90 +146,17 @@ namespace XenAdmin.Plugins public override string ToString() { - if (!string.IsNullOrEmpty(Label)) - { - return Label; - } - - return Name; + return string.IsNullOrEmpty(Label) ? Name : Label; } - public string Label - { - get - { - return _label; - } - } - - public string Name - { - get - { - return _name; - } - } - - public string Description - { - get - { - return _description; - } - } - - public string Tooltip - { - get - { - return _tooltip; - } - } - - public Image Icon - { - get - { - return _icon; - } - } - - public string PluginName - { - get - { - return PluginDescriptor.Name; - } - } - - protected Search Search - { - get - { - return _search; - } - } + public string PluginName => PluginDescriptor.Name; public RbacMethodList GetMethodList(string name) { return PluginDescriptor.GetMethodList(name); } - public bool Enabled - { - get - { - return PluginDescriptor.Enabled; - } - } - - protected PluginDescriptor PluginDescriptor - { - get - { - return _pluginDescriptor; - } - } + public bool Enabled => PluginDescriptor.Enabled; protected virtual void Dispose(bool disposing) { diff --git a/XenAdmin/Plugins/Features/MenuItemFeature.cs b/XenAdmin/Plugins/Features/MenuItemFeature.cs index 1e0abcf4b..b85cc06a8 100644 --- a/XenAdmin/Plugins/Features/MenuItemFeature.cs +++ b/XenAdmin/Plugins/Features/MenuItemFeature.cs @@ -31,31 +31,40 @@ using System; using System.Collections.Generic; -using System.Text; -using XenAdmin.Model; -using System.Windows.Forms; using System.Xml; using XenAdmin.Core; -using XenAdmin.Actions; -using XenAPI; -using XenAdmin.Network; using System.Resources; -using System.Drawing; using XenAdmin.Commands; namespace XenAdmin.Plugins { /// - /// Class to describe a menu item which is added to Xencenter via a plugin and is used to launch a plugin command. + /// Class to describe a menu item which is added to XenCenter via a plugin and is used to launch a plugin command. /// internal class MenuItemFeature : Feature { - private readonly ParentMenuItemFeature _parentFeature; - private readonly PluginMenu _menu; // required - "menu" attribute on the "MenuItem" tag - private readonly PluginSerializationLevel _serialization; // optional - "serialized" attribute on the "MenuItem" tag - private readonly ShellCmd _shellCmd; // required - One child tag specifying a command - either "Shell", "PowerShell" or "XenServerPowerShell" - private readonly PluginContextMenu _contextMenu = PluginContextMenu.none; // optional - "contextmenu", context menu you would like this item to appear under + public readonly ParentMenuItemFeature ParentFeature; + + /// + /// (Mandatory) "menu" attribute on the "MenuItem" tag + /// + public readonly PluginMenu Menu; + + /// + /// (Optional) "serialized" attribute on the "MenuItem" tag + /// + public readonly PluginSerializationLevel Serialized; + + /// + /// (Mandatory) A child tag specifying a command - either "Shell", "PowerShell" or "XenServerPowerShell" + /// + public readonly ShellCmd ShellCmd; + + /// + /// (Optional) "contextmenu"; the context menu you would like this item to appear under + /// + public readonly PluginContextMenu ContextMenu; public const string ELEMENT_NAME = "MenuItem"; public const string TYPE_SHELL = "Shell"; @@ -67,31 +76,27 @@ namespace XenAdmin.Plugins public const string ATT_SERIALIZED = "serialized"; public const string ATT_PARAM = "param"; - public MenuItemFeature(ResourceManager resourceManager, XmlNode node, PluginDescriptor plugin) - : this(resourceManager, node, plugin, null) - { - } - public MenuItemFeature(ResourceManager resourceManager, XmlNode node, PluginDescriptor plugin, ParentMenuItemFeature parentFeature) + public MenuItemFeature(ResourceManager resourceManager, XmlNode node, PluginDescriptor plugin, ParentMenuItemFeature parentFeature = null) : base(resourceManager, node, plugin) { - _parentFeature = parentFeature; - _menu = Helpers.GetEnumXmlAttribute(node, ATT_MENU, PluginMenu.none); - _contextMenu = Helpers.GetEnumXmlAttribute(node, ATT_CONTEXT_MENU, GetContextMenuFromMenu(_menu)); - _serialization = Helpers.GetEnumXmlAttribute(node, ATT_SERIALIZED, PluginSerializationLevel.none); + ParentFeature = parentFeature; + Menu = Helpers.GetEnumXmlAttribute(node, ATT_MENU, PluginMenu.none); + ContextMenu = Helpers.GetEnumXmlAttribute(node, ATT_CONTEXT_MENU, GetContextMenuFromMenu(Menu)); + Serialized = Helpers.GetEnumXmlAttribute(node, ATT_SERIALIZED, PluginSerializationLevel.none); foreach (XmlNode child in node.ChildNodes) { switch (child.Name) { case TYPE_SHELL: - _shellCmd = new ShellCmd(child, paramsFromXML(child)); + ShellCmd = new ShellCmd(child, paramsFromXML(child)); break; case TYPE_POWERSHELL: - _shellCmd = new PowerShellCmd(child, paramsFromXML(child)); + ShellCmd = new PowerShellCmd(child, paramsFromXML(child)); break; case TYPE_XENSERVER_POWERSHELL: - _shellCmd = new XenServerPowershellCmd(child, paramsFromXML(child)); + ShellCmd = new XenServerPowershellCmd(child, paramsFromXML(child)); break; } return; @@ -100,7 +105,7 @@ namespace XenAdmin.Plugins public override string CheckForError() { - if (_menu == PluginMenu.none) + if (Menu == PluginMenu.none) return string.Format(Messages.CANNOT_PARSE_NODE_PARAM, node.Name, ATT_MENU); if (node.ChildNodes.Count != 1) @@ -133,65 +138,26 @@ namespace XenAdmin.Plugins public MenuItemFeatureCommand GetCommand(IMainWindow mainWindow, IEnumerable selection) { - return new MenuItemFeatureCommand(mainWindow, selection, this, Search, _serialization); - } - - - public ParentMenuItemFeature ParentFeature - { - get - { - return _parentFeature; - } - } - - public PluginMenu Menu - { - get - { - return _menu; - } - } - - public PluginContextMenu ContextMenu - { - get - { - return _contextMenu; - } - } - - public ShellCmd ShellCmd - { - get - { - return _shellCmd; - } + return new MenuItemFeatureCommand(mainWindow, selection, this, Search, Serialized); } public static PluginContextMenu GetContextMenuFromMenu(PluginMenu menu) { - if (menu == PluginMenu.pool) + switch (menu) { - return PluginContextMenu.pool; + case PluginMenu.pool: + return PluginContextMenu.pool; + case PluginMenu.server: + return PluginContextMenu.server; + case PluginMenu.storage: + return PluginContextMenu.storage; + case PluginMenu.templates: + return PluginContextMenu.template; + case PluginMenu.vm: + return PluginContextMenu.vm; + default: + return PluginContextMenu.none; } - else if (menu == PluginMenu.server) - { - return PluginContextMenu.server; - } - else if (menu == PluginMenu.storage) - { - return PluginContextMenu.storage; - } - else if (menu == PluginMenu.templates) - { - return PluginContextMenu.template; - } - else if (menu == PluginMenu.vm) - { - return PluginContextMenu.vm; - } - return PluginContextMenu.none; } } diff --git a/XenAdmin/Plugins/Features/TabPageFeature.cs b/XenAdmin/Plugins/Features/TabPageFeature.cs index 8f62ebe7a..622c13a74 100644 --- a/XenAdmin/Plugins/Features/TabPageFeature.cs +++ b/XenAdmin/Plugins/Features/TabPageFeature.cs @@ -142,15 +142,15 @@ namespace XenAdmin.Plugins public TabPageFeature(ResourceManager resourceManager, XmlNode node, PluginDescriptor plugin) : base(resourceManager, node, plugin) { - XenCenterOnly = Helpers.GetBoolXmlAttribute(node, ATT_XC_ONLY, false); - ContextEnabled = Helpers.GetBoolXmlAttribute(node, ATT_CONTEXT_MENU, false); + XenCenterOnly = Helpers.GetBoolXmlAttribute(node, ATT_XC_ONLY); + ContextEnabled = Helpers.GetBoolXmlAttribute(node, ATT_CONTEXT_MENU); // plugins v2 HelpLink = Helpers.GetStringXmlAttribute(node, ATT_HELP_LINK, ""); - RelativeUrl = Helpers.GetBoolXmlAttribute(node, ATT_RELATIVE, false); - Credentials = Helpers.GetBoolXmlAttribute(node, ATT_CREDENTIALS, false); + RelativeUrl = Helpers.GetBoolXmlAttribute(node, ATT_RELATIVE); + Credentials = Helpers.GetBoolXmlAttribute(node, ATT_CREDENTIALS); - Console = Helpers.GetBoolXmlAttribute(node, ATT_CONSOLE, false); + Console = Helpers.GetBoolXmlAttribute(node, ATT_CONSOLE); string urlString = Helpers.GetStringXmlAttribute(node, ATT_URL); Url = urlString == null ? "" : string.Format("{0}{1}", RelativeUrl ? string.Format("{0}/", Application.StartupPath) : "", urlString); } @@ -283,7 +283,7 @@ namespace XenAdmin.Plugins } catch (UriFormatException e) { - log.Debug(string.Format("Not displaying tab '{0}' for plugin '{1}'. Invalid properties in url '{2}'", ToString(), PluginDescriptor.Name, Url), e); + log.Debug(string.Format("Cannot display tab '{0}' for plugin '{1}'. Invalid properties in url.", ToString(), PluginDescriptor.Name), e); return false; } } @@ -333,8 +333,7 @@ namespace XenAdmin.Plugins } catch (Exception e) { - log.Error(string.Format("Failed to set TabPage url to '{0}' for plugin '{1}'", - string.Join(",", state.Uris.ConvertAll(u => u.ToString()).ToArray()), PluginDescriptor.Name), e); + log.Error(string.Format("Failed to set TabPage url for plugin '{0}'", PluginDescriptor.Name), e); } } @@ -363,7 +362,7 @@ namespace XenAdmin.Plugins if (XenCenterOnly || lastBrowserState == null) return; - log.DebugFormat("Navigating to {0} for {1}", e.Url, Helpers.GetName(lastBrowserState.Obj)); + log.DebugFormat("Navigating to last browser state url for {0}", Helpers.GetName(lastBrowserState.Obj)); DeleteUrlCacheEntry(e.Url.AbsoluteUri); if (Console) { @@ -377,7 +376,7 @@ namespace XenAdmin.Plugins { Program.AssertOnEventThread(); lastBrowserState.IsError = true; - log.DebugFormat("Got error {0} while navigating to {1}.", e.StatusCode, e.Url); + log.DebugFormat("Navigation failed with error {0}.", e.StatusCode); try { @@ -402,7 +401,7 @@ namespace XenAdmin.Plugins return; } - log.DebugFormat("Navigated to {0} for {1}", e.Url, Helpers.GetName(lastBrowserState.Obj)); + log.DebugFormat("Navigated to last browser state url for {0}", Helpers.GetName(lastBrowserState.Obj)); if (lastBrowserState.IsError && e.Url != null && e.Url.AbsoluteUri != "about:blank") { @@ -584,7 +583,7 @@ namespace XenAdmin.Plugins } catch (Failure exn) { - log.Warn(string.Format("Secret {0} for {1} on plugin {2} has disappeared! Removing from pool.gui_config.", + log.Warn(string.Format("Secret with uuid {0} for {1} on plugin {2} has disappeared! Removing from pool.gui_config.", secret_uuid, Helpers.GetName(state.Obj), PluginDescriptor.Name), exn); TryToRemoveSecret(pool, session, PluginDescriptor.Name, state.Obj); continue; @@ -594,7 +593,7 @@ namespace XenAdmin.Plugins string[] bits = val.Split(CREDENTIALS_SEPARATOR); if (bits.Length != 2) { - log.WarnFormat("Corrupt secret {0} at {1} for {2} on plugin {3}! Deleting.", val, secret_uuid, + log.WarnFormat("Corrupt secret with uuid {0} for {1} on plugin {2}! Deleting.", secret_uuid, Helpers.GetName(state.Obj), PluginDescriptor.Name); TryToDestroySecret(session, secret.opaque_ref); @@ -718,11 +717,11 @@ namespace XenAdmin.Plugins try { Secret.destroy(session, opaque_ref); - log.DebugFormat("Successfully removed secret {0}", opaque_ref); + log.DebugFormat("Successfully removed secret with opaque_ref {0}", opaque_ref); } catch (Exception exn) { - log.Error(string.Format("Failed to destroy secret {0}", opaque_ref), exn); + log.Error(string.Format("Failed to destroy secret with opaque_ref {0}", opaque_ref), exn); } } @@ -731,11 +730,11 @@ namespace XenAdmin.Plugins try { pool.RemoveXCPluginSecret(session, name, obj); - log.DebugFormat("Successfully removed secret for {0}/{1}", name, Helpers.GetName(obj)); + log.DebugFormat("Successfully removed secret for plugin {0} on object {1}.", name, Helpers.GetName(obj)); } catch (Exception exn) { - log.Error(string.Format("Failed to remove secret for {0}/{1}", name, obj), exn); + log.Error(string.Format("Failed to remove secret for plugin {0} on object {1}.", name, Helpers.GetName(obj)), exn); } } @@ -868,7 +867,7 @@ namespace XenAdmin.Plugins if (!browser.IsDisposed && browser.Document != null) browser.Document.InvokeScript("RefreshPage"); else - log.Debug("Tried to access disposed webbrowser, ignoring refresh."); + log.Debug("Tried to access disposed web browser, ignoring refresh."); }); } } @@ -912,19 +911,21 @@ namespace XenAdmin.Plugins request.UserAgent = Branding.BRAND_CONSOLE + "\\Plugin"; request.Proxy = XenAdminConfigManager.Provider.GetProxyFromSettings(connection, true); - using (StreamWriter xmlstream = new StreamWriter(request.GetRequestStream())) - { + using (var req = request.GetRequestStream()) + using (StreamWriter xmlstream = new StreamWriter(req)) xmlstream.Write(jsCallbackAndData[1]); - } + WebResponse response = request.GetResponse(); StringBuilder outputBuilder = new StringBuilder(); - using (StreamReader reader = new StreamReader(response.GetResponseStream())) + + using (var res = response.GetResponseStream()) { - while (reader.Peek() != -1) - { - outputBuilder.Append(reader.ReadLine()); - } + if (res != null) + using (StreamReader reader = new StreamReader(res)) + while (reader.Peek() != -1) + outputBuilder.Append(reader.ReadLine()); } + // The xmlrpc bit of jquery expects a function object, which turns up here as a string that you could eval to get the function // We just want the name, so we filter it out. Regex functionNameReg = new Regex("^function(.*)\\("); @@ -938,12 +939,12 @@ namespace XenAdmin.Plugins { if (browser.IsDisposed || browser.Disposing) { - log.DebugFormat("Browser has been disposed, cannot return message to plugin: {0}", outputBuilder); + log.Debug("Browser has been disposed, cannot return message to plugin."); } else if (browser.ObjectForScripting != this) { // If you don't do this, you can get old data re-entering the javascript execution after you have switched to a new object - log.DebugFormat("Scripting object has been changed, discarding message to plugin: {0}", outputBuilder); + log.Debug("Scripting object has been changed, discarding message to plugin."); } else if (browser.Document != null) { diff --git a/XenAdmin/Plugins/Placeholders.cs b/XenAdmin/Plugins/Placeholders.cs index d2b7ecb5c..6f1cb97b7 100644 --- a/XenAdmin/Plugins/Placeholders.cs +++ b/XenAdmin/Plugins/Placeholders.cs @@ -115,7 +115,7 @@ namespace XenAdmin.Plugins catch (Exception e) { // Leave the placeholder in; nothing we can do. - log.Warn(string.Format("Bad placeholder '{0}' in '{1}'", m.Value, text), e); + log.Warn("Bad placeholder", e); return m.Value; } }); @@ -192,9 +192,9 @@ namespace XenAdmin.Plugins return new Uri(u.Replace(string.Format(PlaceholderFormat, ipAddressName), ipstring)); }); } - catch (UriFormatException) + catch (UriFormatException ex) { - log.Warn(string.Format("Failed to parse url {0}", uri)); + log.Warn("Failed to parse url.", ex); return new List { new Uri("about:blank") }; } } diff --git a/XenAdmin/Program.cs b/XenAdmin/Program.cs index 7548a3fa7..cc4d3b6f9 100644 --- a/XenAdmin/Program.cs +++ b/XenAdmin/Program.cs @@ -41,9 +41,11 @@ using System.Reflection; using System.Windows.Forms; using System.Threading; using System.Drawing; +using System.Linq; using XenAdmin.Core; using XenAdmin.Network; using XenAdmin.Dialogs; +using XenAdmin.Help; using XenAdmin.XenSearch; using XenAPI; using XenCenterLib; @@ -221,7 +223,6 @@ namespace XenAdmin Search.InitSearch(Branding.Search); TreeSearch.InitSearch(); - ArgType argType = ArgType.None; AppDomain.CurrentDomain.UnhandledException -= CurrentDomain_UnhandledException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; Application.ThreadException -= Application_ThreadException; @@ -301,42 +302,25 @@ namespace XenAdmin logSystemDetails(); OptionsDialog.Log(); - if (Args.Length > 0) - log.InfoFormat("Args[0]: {0}", Args[0]); - - List sanitizedArgs = new List(Args); // Remove the '--wait' argument, which may have been passed to the splash screen - sanitizedArgs.Remove("--wait"); - string[] args = null; - if (sanitizedArgs.Count > 1) - { - argType = ParseFileArgs(sanitizedArgs, out args); + var sanitizedArgs = Args.Where(ar => ar != "--wait").ToArray(); - if (argType == ArgType.Passwords) - { - log.DebugFormat("Handling password request using '{0}'", args[0]); - try - { - PasswordsRequest.HandleRequest(args[0]); - } - catch (Exception exn) - { - log.Fatal(exn, exn); - } - Application.Exit(); - return; - } - } - else if (sanitizedArgs.Count == 1 && sanitizedArgs[0] == "messageboxtest") + var firstArgType = ParseFileArgs(sanitizedArgs, out string[] tailArgs); + + if (firstArgType == ArgType.Passwords) { - new MessageBoxTest().ShowDialog(); + try + { + PasswordsRequest.HandleRequest(tailArgs[0]); + } + catch (Exception exn) + { + log.Fatal(exn, exn); + } + Application.Exit(); return; } - else if (sanitizedArgs.Count > 0) - { - log.Warn("Unrecognised command line options"); - } try { @@ -350,39 +334,65 @@ namespace XenAdmin Application.ApplicationExit -= Application_ApplicationExit; Application.ApplicationExit += Application_ApplicationExit; - MainWindow mainWindow = new MainWindow(argType, args); + //set the help version before launching the main window; + //the call starts a different thread so it won't delay the main window launch; + //in most cases it is expected to have returned by the time the users request help; + //if they do before it has returned, the thread requesting help will wait for it + HelpManager.SetHelpVersion(); + MainWindow mainWindow = new MainWindow(firstArgType, tailArgs); Application.Run(mainWindow); log.Info("Application main thread exited"); } - private static ArgType ParseFileArgs(List args, out string[] filePath) + private static ArgType ParseFileArgs(string[] args, out string[] tailArgs) { - filePath = new string[args.Count - 1]; - for (int i = 0; i < filePath.Length; i++) - filePath[i] = args[i + 1]; + tailArgs = new string[0]; + + if (args == null || args.Length < 2) + { + log.Warn("Too few args passed in via command line"); + return ArgType.None; + } + + var firstArgType = ArgType.None; switch (args[0]) { case "import": - return ArgType.Import; + firstArgType = ArgType.Import; + break; case "license": - return ArgType.License; + firstArgType = ArgType.License; + break; case "restore": - return ArgType.Restore; + firstArgType = ArgType.Restore; + break; case "update": - return ArgType.Update; + firstArgType = ArgType.Update; + break; case "search": - return ArgType.XenSearch; + firstArgType = ArgType.XenSearch; + break; case "passwords": - return ArgType.Passwords; + firstArgType = ArgType.Passwords; + break; case "connect": - return ArgType.Connect; + firstArgType = ArgType.Connect; + break; default: - log.Warn("Unrecognised command line options"); - return ArgType.None; + log.Warn("Wrong syntax or unknown command line options."); + break; } + + if (firstArgType != ArgType.None) + { + log.InfoFormat("Command line option passed in: {0}", firstArgType.ToString()); + tailArgs = args.Skip(1).ToArray(); + } + + return firstArgType; } /// @@ -406,62 +416,39 @@ namespace XenAdmin pipe = new NamedPipes.Pipe(pipe_path); log.InfoFormat(@"Successfully created pipe '{0}' - proceeding to launch XenCenter", pipe_path); + pipe.Read += delegate(object sender, NamedPipes.PipeReadEventArgs e) { MainWindow m = MainWindow; if (m == null || RunInAutomatedTestMode) - { return; - } + Invoke(m, delegate { - log.InfoFormat(@"Received data from pipe '{0}': {1}", pipe_path, e.Message); + var bits = e.Message.Split(' ').Where(ar => ar != "--wait").ToArray(); - ArgType argType = ArgType.None; - string[] other_args; - string file_arg = ""; - string[] bits = e.Message.Split(new char[] { ' ' }, 3); - if (bits.Length == 2) - { - List args = new List(); - args.Add(bits[0]); - args.Add(bits[1]); - argType = ParseFileArgs(args, out other_args); - file_arg = other_args[0]; + var firstArgType = ParseFileArgs(bits, out string[] tailArgs); - if (argType == ArgType.Passwords) - { - log.Error("Refusing to accept passwords request down pipe. Use XenCenterMain.exe directly"); - return; - } - else if (argType == ArgType.Connect) - { - log.Error("Connect not supported down pipe. Use XenCenterMain.exe directly"); - return; - } - else if (argType == ArgType.None) - { - return; - } - } - else if (e.Message.Length > 0) + if (firstArgType == ArgType.Passwords) { - log.Error("Could not process data received from pipe."); + log.Error("Refusing to accept passwords request down pipe. Use XenCenterMain.exe directly"); return; } + if (firstArgType == ArgType.Connect) + { + log.Error("Connect not supported down pipe. Use XenCenterMain.exe directly"); + return; + } + if (firstArgType == ArgType.None) + return; + + // The C++ splash screen passes its command line as a literal string. + // This means we will get an e.Message like + // open "C:\Documents and Settings\foo.xva" + // INCLUDING the double quotes, thus we need to trim them m.WindowState = FormWindowState.Normal; - - // Note slight hack: the C++ splash screen passes its command line as a - // literal string. This means we will get an e.Message e.g. - // open "C:\Documents and Settings\foo.xva" - // INCLUDING double quotes. Thus we trim the quotes below. - if (file_arg.Length > 1 && file_arg.StartsWith("\"") && file_arg.EndsWith("\"")) - { - file_arg = file_arg.Substring(1, file_arg.Length - 2); - } - - m.ProcessCommand(argType, new string[] { file_arg }); + m.ProcessCommand(firstArgType, tailArgs[0].Trim('"')); }); }; pipe.BeginRead(); @@ -575,7 +562,7 @@ namespace XenAdmin } else { - string filepath = GetLogFile(); + string filepath = GetLogFile() ?? Messages.MESSAGEBOX_LOGFILE_MISSING; using (var d = new ThreeButtonDialog( new ThreeButtonDialog.Details( @@ -715,7 +702,7 @@ namespace XenAdmin private static void FatalError() { string msg = String.Format(Messages.MESSAGEBOX_PROGRAM_UNEXPECTED, - HelpersGUI.DateTimeToString(DateTime.Now, "yyyy-MM-dd HH:mm:ss", false), GetLogFile_()); + HelpersGUI.DateTimeToString(DateTime.Now, "yyyy-MM-dd HH:mm:ss", false), GetLogFile()); var msgWithStackTrace = string.Format("{0}\n{1}", msg, Environment.StackTrace); log.Fatal(msgWithStackTrace); @@ -748,7 +735,7 @@ namespace XenAdmin public static void ViewLogFiles() { - string s = GetLogFile_(); + string s = GetLogFile(); if (s == null) { using (var dlg = new ThreeButtonDialog(new ThreeButtonDialog.Details(SystemIcons.Error, Messages.MESSAGEBOX_LOGFILE_MISSING, Messages.XENCENTER))) @@ -762,13 +749,7 @@ namespace XenAdmin } } - private static string GetLogFile() - { - string s = GetLogFile_(); - return s ?? "MISSING LOG FILE!"; - } - - public static string GetLogFile_() + public static string GetLogFile() { foreach (log4net.Appender.IAppender appender in log.Logger.Repository.GetAppenders()) { @@ -1072,7 +1053,7 @@ namespace XenAdmin public static void OpenURL(string url) { - if (RunInAutomatedTestMode) + if (RunInAutomatedTestMode || string.IsNullOrEmpty(url)) return; try { diff --git a/XenAdmin/Properties/Resources.Designer.cs b/XenAdmin/Properties/Resources.Designer.cs index ced7ac680..00c731c8d 100755 --- a/XenAdmin/Properties/Resources.Designer.cs +++ b/XenAdmin/Properties/Resources.Designer.cs @@ -1353,6 +1353,26 @@ namespace XenAdmin.Properties { /// /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. /// + internal static System.Drawing.Bitmap _000_User_h32bit_32 { + get { + object obj = ResourceManager.GetObject("_000_User_h32bit_32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap _000_UserAndGroup_h32bit_16 { + get { + object obj = ResourceManager.GetObject("_000_UserAndGroup_h32bit_16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// internal static System.Drawing.Bitmap _000_UserAndGroup_h32bit_32 { get { object obj = ResourceManager.GetObject("_000_UserAndGroup_h32bit_32", resourceCulture); @@ -2793,6 +2813,16 @@ namespace XenAdmin.Properties { /// /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. /// + internal static System.Drawing.Bitmap queued { + get { + object obj = ResourceManager.GetObject("queued", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// internal static System.Drawing.Bitmap redhat_16x { get { object obj = ResourceManager.GetObject("redhat_16x", resourceCulture); @@ -3423,6 +3453,26 @@ namespace XenAdmin.Properties { /// /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. /// + internal static System.Drawing.Bitmap xcm { + get { + object obj = ResourceManager.GetObject("xcm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap xcm_32x32 { + get { + object obj = ResourceManager.GetObject("xcm_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// internal static System.Drawing.Bitmap XS { get { object obj = ResourceManager.GetObject("XS", resourceCulture); diff --git a/XenAdmin/Properties/Resources.ja.resx b/XenAdmin/Properties/Resources.ja.resx index c7befb4e9..aebefbcfd 100644 --- a/XenAdmin/Properties/Resources.ja.resx +++ b/XenAdmin/Properties/Resources.ja.resx @@ -1116,7 +1116,7 @@ ..\Images\turbo_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Images\linx_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1126,4 +1126,19 @@ ..\Images\usb_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\images\000_userandgroup_h32bit_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\images\000_user_h32bit_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\images\xcm.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\images\xcm_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\images\queued.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/XenAdmin/Properties/Resources.resx b/XenAdmin/Properties/Resources.resx index f8f15936e..cc0b0267a 100755 --- a/XenAdmin/Properties/Resources.resx +++ b/XenAdmin/Properties/Resources.resx @@ -1,4 +1,4 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + GrowAndShrink + + + + 1 + + + True + + + GrowAndShrink + + + True + + + GrowAndShrink + + + 2 + + + True + + + Fill + + + + 3, 36 + + + 75, 25 + + + 2 + + + ユーザー名(&U): + + + MiddleLeft + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + True + + + Fill + + + 3, 66 + + + 75, 25 + + + 4 + + + パスワード(&P): + + + MiddleLeft + + + label4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 1 + + + 71, 39 + + + 3, 3, 10, 3 + + + 378, 19 + + + 3 + + + VMwareUserTextBox + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 2 + + + 71, 69 + + + 3, 3, 10, 3 + + + 378, 19 + + + 5 + + + VMwarePassTextBox + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 3 + + + True + + + Fill + + + 3, 5 + + + 75, 26 + + + 0 + + + サーバー(&S): + + + MiddleLeft + + + label5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 4 + + + 71, 8 + + + 3, 3, 10, 3 + + + 378, 20 + + + 1 + + + VMwareServerComboBox + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 5 + + + Top, Right + + + 374, 99 + + + 3, 3, 10, 3 + + + 75, 28 + + + 6 + + + 接続(&C) + + + ConnectButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 6 + + + Fill + + + 3, 15 + + + 9 + + + 459, 131 + + + 0 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + VMwareGroupBox + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label4" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="VMwareUserTextBox" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="VMwarePassTextBox" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label5" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="VMwareServerComboBox" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="ConnectButton" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="Absolute,5,AutoSize,0,Absolute,5,AutoSize,0,Absolute,5,AutoSize,0,Absolute,5,AutoSize,0,Absolute,1" /></TableLayoutSettings> + + + 3, 40 + + + 465, 149 + + + 1 + + + VMware 資格情報 + + + VMwareGroupBox + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + 2 + + + Top, Right + + + + + + 3, 3 + + + 15, 16 + + + AutoSize + + + 0 + + + False + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 0 + + + True + + + Fill + + + 3, 0 + + + 34, 17 + + + 0 + + + label6 + + + False + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 0 + + + 24, 3 + + + 440, 35 + + + 1 + + + flowLayoutPanel1 + + + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 1 + + + Fill + + + 3, 198 + + + 1 + + + 538, 41 + + + 2 + + + tableLayoutPanel3 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,4.089219,Percent,95.91078" /><Rows Styles="Percent,50" /></TableLayoutSettings> + + + True + + + Fill + + + 3, 0 + + + 538, 17 + + + 6 + + + 変換するには、IP アドレスまたは仮想マシンを含む VMware サーバーの完全な名前を + + + MiddleLeft + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + True + + + Fill + + + 3, 17 + + + 538, 17 + + + 7 + + + 入力してください。そのサーバーの資格情報を入力してください。 + + + MiddleLeft + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + Segoe UI, 9pt + + + NoControl + + + 3, 3 + + + 458, 23 + + + 7 + + + progressBar1 + + + System.Windows.Forms.ProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel2 + + + 0 + + + 2 + + + NoControl + + + 3, 3 + + + 16, 16 + + + AutoSize + + + 6 + + + False + + + CheckPicBox + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel4 + + + 0 + + + True + + + Segoe UI, 9pt + + + NoControl + + + 3, 0 + + + 99, 21 + + + 5 + + + 接続の試行中... + + + waitMessageValueLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel3 + + + 0 + + + Fill + + + Segoe UI, 9pt + + + 26, 3 + + + 429, 42 + + + 9 + + + flowLayoutPanel3 + + + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel4 + + + 1 + + + 3, 32 + + + 1 + + + 458, 48 + + + 8 + + + tableLayoutPanel4 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel2 + + + 1 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="CheckPicBox" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="flowLayoutPanel3" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,5.164319,Percent,94.83568" /><Rows Styles="Percent,50" /></TableLayoutSettings> + + + TopDown + + + Segoe UI, 9pt + + + 3, 248 + + + 464, 92 + + + 9 + + + False + + + flowLayoutPanel2 + + + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 4 + + + Fill + + + 0, 0 + + + 9 + + + 544, 374 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="VMwareGroupBox" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel3" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="flowLayoutPanel2" Row="7" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,Absolute,3,AutoSize,0,Absolute,3,AutoSize,0,Absolute,3,AutoSize,0,Absolute,1" /></TableLayoutSettings> + + + True + + + 6, 13 + + + GrowAndShrink + + + 544, 374 + + + CredentialWizardPage + + + XenAdmin.Controls.XenTabPage, XCM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + diff --git a/XenAdmin/Wizards/ConversionWizard/CredentialsPage.resx b/XenAdmin/Wizards/ConversionWizard/CredentialsPage.resx new file mode 100644 index 000000000..8c13cab03 --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/CredentialsPage.resx @@ -0,0 +1,522 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + 1 + + + True + + + + Fill + + + + 3, 0 + + + 3, 0, 3, 20 + + + 538, 39 + + + 0 + + + Enter the IP address or full name of the VMware server hosting the virtual machines you want to convert, and provide the credentials [XenCenter] will use to connect to that server. Click Next to connect to the server and fetch the list of hosted VMs. + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + True + + + GrowAndShrink + + + 2 + + + Left + + + True + + + 3, 7 + + + 83, 13 + + + 0 + + + VMware &Server: + + + label5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + Left, Right + + + 92, 3 + + + 406, 21 + + + 1 + + + comboBoxServer + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 1 + + + Left + + + True + + + 3, 33 + + + 58, 13 + + + 2 + + + &Username: + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 2 + + + Left, Right + + + 92, 30 + + + 406, 20 + + + 3 + + + textBoxUser + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 3 + + + Left + + + True + + + 3, 59 + + + 56, 13 + + + 4 + + + &Password: + + + label4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 4 + + + Left, Right + + + 92, 56 + + + 406, 20 + + + 5 + + + textBoxPassword + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 5 + + + Fill + + + 3, 62 + + + 3, 3, 40, 3 + + + 3 + + + 501, 79 + + + 1 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label5" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="comboBoxServer" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label3" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxUser" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label4" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxPassword" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + + + True + + + GrowAndShrink + + + 2 + + + Left + + + NoControl + + + 3, 3 + + + 16, 16 + + + 6 + + + pictureBoxStatus + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutStatus + + + 0 + + + Left, Right + + + True + + + Segoe UI, 9pt + + + NoControl + + + 25, 3 + + + 510, 15 + + + 0 + + + Attempting connection... + + + labelStatus + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutStatus + + + 1 + + + Bottom + + + 3, 316 + + + 1 + + + 538, 22 + + + 2 + + + tableLayoutStatus + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxStatus" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelStatus" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,Absolute,20" /></TableLayoutSettings> + + + Fill + + + 0, 0 + + + 3 + + + 544, 341 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutStatus" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,Percent,100,Absolute,20" /></TableLayoutSettings> + + + 17, 17 + + + True + + + 96, 96 + + + GrowAndShrink + + + 544, 341 + + + _backgroundWorker + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + CredentialsPage + + + XenAdmin.Controls.XenTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + \ No newline at end of file diff --git a/XenAdmin/Wizards/ConversionWizard/CredentialsPage.zh-CN.resx b/XenAdmin/Wizards/ConversionWizard/CredentialsPage.zh-CN.resx new file mode 100644 index 000000000..b45aec60b --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/CredentialsPage.zh-CN.resx @@ -0,0 +1,810 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + GrowAndShrink + + + + 1 + + + True + + + GrowAndShrink + + + True + + + GrowAndShrink + + + 2 + + + True + + + Fill + + + + 3, 36 + + + 62, 25 + + + 2 + + + 用户名(&U): + + + MiddleLeft + + + label3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + True + + + Fill + + + 3, 66 + + + 62, 25 + + + 4 + + + 密码(&P): + + + MiddleLeft + + + label4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 1 + + + 71, 39 + + + 3, 3, 10, 3 + + + 378, 19 + + + 3 + + + VMwareUserTextBox + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 2 + + + 71, 69 + + + 3, 3, 10, 3 + + + 378, 19 + + + 5 + + + VMwarePassTextBox + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 3 + + + True + + + Fill + + + 3, 5 + + + 62, 26 + + + 0 + + + 服务器(&S): + + + MiddleLeft + + + label5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 4 + + + 71, 8 + + + 3, 3, 10, 3 + + + 378, 20 + + + 1 + + + VMwareServerComboBox + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 5 + + + Top, Right + + + 374, 99 + + + 3, 3, 10, 3 + + + 75, 28 + + + 6 + + + 连接(&C) + + + ConnectButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 6 + + + Fill + + + 3, 15 + + + 9 + + + 459, 131 + + + 0 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + VMwareGroupBox + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label4" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="VMwareUserTextBox" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="VMwarePassTextBox" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label5" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="VMwareServerComboBox" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="ConnectButton" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="Absolute,5,AutoSize,0,Absolute,5,AutoSize,0,Absolute,5,AutoSize,0,Absolute,5,AutoSize,0,Absolute,1" /></TableLayoutSettings> + + + 3, 40 + + + 465, 149 + + + 1 + + + VMware 凭据 + + + VMwareGroupBox + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + 2 + + + Top, Right + + + + + + 3, 3 + + + 15, 16 + + + AutoSize + + + 0 + + + False + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 0 + + + True + + + Fill + + + 3, 0 + + + 34, 17 + + + 0 + + + label6 + + + False + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 0 + + + 24, 3 + + + 440, 35 + + + 1 + + + flowLayoutPanel1 + + + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 1 + + + Fill + + + 3, 198 + + + 1 + + + 538, 41 + + + 2 + + + tableLayoutPanel3 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,4.089219,Percent,95.91078" /><Rows Styles="Percent,50" /></TableLayoutSettings> + + + True + + + Fill + + + 3, 0 + + + 538, 17 + + + 6 + + + 输入包含要转换的虚拟机的 VMware 服务器的 IP 地址或全名。 + + + MiddleLeft + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + True + + + Fill + + + 3, 17 + + + 538, 17 + + + 7 + + + 请输入该服务器的凭据。 + + + MiddleLeft + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + Segoe UI, 9pt + + + NoControl + + + 3, 3 + + + 458, 23 + + + 7 + + + progressBar1 + + + System.Windows.Forms.ProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel2 + + + 0 + + + 2 + + + NoControl + + + 3, 3 + + + 16, 16 + + + AutoSize + + + 6 + + + False + + + CheckPicBox + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel4 + + + 0 + + + True + + + Segoe UI, 9pt + + + NoControl + + + 3, 0 + + + 139, 21 + + + 5 + + + 正在尝试连接... + + + waitMessageValueLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel3 + + + 0 + + + Fill + + + Segoe UI, 9pt + + + 26, 3 + + + 429, 42 + + + 9 + + + flowLayoutPanel3 + + + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel4 + + + 1 + + + 480, 32 + + + 1 + + + 458, 48 + + + 8 + + + tableLayoutPanel4 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel2 + + + 1 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="CheckPicBox" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="flowLayoutPanel3" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,5.164319,Percent,94.83568" /><Rows Styles="Percent,50" /></TableLayoutSettings> + + + TopDown + + + Segoe UI, 9pt + + + 3, 248 + + + 464, 92 + + + 9 + + + False + + + flowLayoutPanel2 + + + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 4 + + + Fill + + + 0, 0 + + + 9 + + + 544, 374 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="VMwareGroupBox" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel3" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="flowLayoutPanel2" Row="7" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,Absolute,3,AutoSize,0,Absolute,3,AutoSize,0,Absolute,3,AutoSize,0,Absolute,1" /></TableLayoutSettings> + + + True + + + 6, 13 + + + GrowAndShrink + + + 544, 374 + + + CredentialWizardPage + + + XenAdmin.Controls.XenTabPage, XCM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + diff --git a/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.Designer.cs b/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.Designer.cs new file mode 100644 index 000000000..a0c18b4ba --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.Designer.cs @@ -0,0 +1,170 @@ +namespace XenAdmin.Wizards.ConversionWizard +{ + partial class SrSelectionPage + { + /// + /// 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 Component 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(SrSelectionPage)); + System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); + System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend(); + System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.label1 = new System.Windows.Forms.Label(); + this.SRLabel = new System.Windows.Forms.Label(); + this.comboBoxSr = new XenAdmin.Controls.EnableableComboBox(); + this.buttonRefresh = new System.Windows.Forms.Button(); + this.tableLayoutPanelError = new System.Windows.Forms.TableLayoutPanel(); + this.pictureBoxError = new System.Windows.Forms.PictureBox(); + this.labelError = new System.Windows.Forms.Label(); + this.chart1 = new System.Windows.Forms.DataVisualization.Charting.Chart(); + this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); + this.tableLayoutPanel1.SuspendLayout(); + this.tableLayoutPanelError.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxError)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.chart1)).BeginInit(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.SRLabel, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.comboBoxSr, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.buttonRefresh, 2, 1); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanelError, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.chart1, 0, 3); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.tableLayoutPanel1.SetColumnSpan(this.label1, 3); + this.label1.Name = "label1"; + // + // SRLabel + // + resources.ApplyResources(this.SRLabel, "SRLabel"); + this.SRLabel.Name = "SRLabel"; + // + // comboBoxSr + // + resources.ApplyResources(this.comboBoxSr, "comboBoxSr"); + this.comboBoxSr.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.comboBoxSr.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxSr.FormattingEnabled = true; + this.comboBoxSr.Name = "comboBoxSr"; + this.comboBoxSr.SelectedIndexChanged += new System.EventHandler(this.comboBoxSr_SelectedIndexChanged); + // + // buttonRefresh + // + resources.ApplyResources(this.buttonRefresh, "buttonRefresh"); + this.buttonRefresh.Name = "buttonRefresh"; + this.buttonRefresh.UseVisualStyleBackColor = true; + this.buttonRefresh.Click += new System.EventHandler(this.buttonRefresh_Click); + // + // tableLayoutPanelError + // + resources.ApplyResources(this.tableLayoutPanelError, "tableLayoutPanelError"); + this.tableLayoutPanel1.SetColumnSpan(this.tableLayoutPanelError, 2); + this.tableLayoutPanelError.Controls.Add(this.pictureBoxError, 0, 0); + this.tableLayoutPanelError.Controls.Add(this.labelError, 1, 0); + this.tableLayoutPanelError.Name = "tableLayoutPanelError"; + // + // pictureBoxError + // + this.pictureBoxError.Image = global::XenAdmin.Properties.Resources._000_error_h32bit_16; + resources.ApplyResources(this.pictureBoxError, "pictureBoxError"); + this.pictureBoxError.Name = "pictureBoxError"; + this.pictureBoxError.TabStop = false; + // + // labelError + // + resources.ApplyResources(this.labelError, "labelError"); + this.labelError.Name = "labelError"; + // + // chart1 + // + this.chart1.BackColor = System.Drawing.SystemColors.Control; + this.chart1.BackImageTransparentColor = System.Drawing.SystemColors.Control; + this.chart1.BackSecondaryColor = System.Drawing.SystemColors.Control; + this.chart1.BorderlineColor = System.Drawing.SystemColors.Control; + chartArea1.Area3DStyle.Enable3D = true; + chartArea1.BackColor = System.Drawing.SystemColors.Control; + chartArea1.BackSecondaryColor = System.Drawing.SystemColors.Control; + chartArea1.Name = "ChartArea1"; + this.chart1.ChartAreas.Add(chartArea1); + this.tableLayoutPanel1.SetColumnSpan(this.chart1, 3); + resources.ApplyResources(this.chart1, "chart1"); + legend1.BackColor = System.Drawing.SystemColors.Control; + legend1.Enabled = false; + legend1.Name = "Legend1"; + this.chart1.Legends.Add(legend1); + this.chart1.Name = "chart1"; + series1.ChartArea = "ChartArea1"; + series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Pie; + series1.Color = System.Drawing.SystemColors.Control; + series1.CustomProperties = "PieLabelStyle=Outside, PieStartAngle=90"; + series1.Legend = "Legend1"; + series1.Name = "Series1"; + this.chart1.Series.Add(series1); + // + // backgroundWorker1 + // + this.backgroundWorker1.WorkerSupportsCancellation = true; + this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork); + this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted); + // + // SrSelectionPage + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.Controls.Add(this.tableLayoutPanel1); + this.Name = "SrSelectionPage"; + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + this.tableLayoutPanelError.ResumeLayout(false); + this.tableLayoutPanelError.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxError)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.chart1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Label SRLabel; + private XenAdmin.Controls.EnableableComboBox comboBoxSr; + private System.Windows.Forms.Label labelError; + private System.Windows.Forms.PictureBox pictureBoxError; + private System.Windows.Forms.DataVisualization.Charting.Chart chart1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanelError; + private System.Windows.Forms.Button buttonRefresh; + private System.ComponentModel.BackgroundWorker backgroundWorker1; + } +} diff --git a/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.cs b/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.cs new file mode 100644 index 000000000..251469ec1 --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.cs @@ -0,0 +1,282 @@ +/* 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 XenAdmin.Controls; +using XenAdmin.XCM; +using XenAPI; +using XenCenterLib; + + +namespace XenAdmin.Wizards.ConversionWizard +{ + public partial class SrSelectionPage : XenTabPage + { + private bool _buttonNextEnabled; + private long _requiredDiskSize; + public SrSelectionPage() + { + InitializeComponent(); + } + + #region XenTabPage Implementation + + public override string Text => Messages.CONVERSION_STORAGE_PAGE_TEXT; + + public override string PageTitle => Messages.CONVERSION_STORAGE_PAGE_TITLE; + + public override string HelpID => "SrSelection"; + + public override bool EnableNext() + { + return _buttonNextEnabled; + } + + protected override void PageLoadedCore(PageLoadedDirection direction) + { + if (direction == PageLoadedDirection.Forward) + RebuildSrList(); + } + + public override void PageCancelled(ref bool cancel) + { + backgroundWorker1.CancelAsync(); + } + + #endregion + + #region Properties + + public ConversionClient ConversionClient { private get; set; } + + public VmInstance[] SelectedVms + { + set { _requiredDiskSize = value.Select(vm => vm.CommittedStorage + vm.UncommittedStorage).Sum(); } + } + + public SR SelectedSR { get; private set; } + + #endregion + + private void RebuildSrList() + { + comboBoxSr.Items.Clear(); + buttonRefresh.Enabled = false; + + pictureBoxError.Image = Images.StaticImages.ajax_loader; + labelError.Text = Messages.CONVERSION_STORAGE_PAGE_QUERYING_SRS; + tableLayoutPanelError.Visible = true; + + UpdatePieChart(); + UpdateButtons(); + + backgroundWorker1.RunWorkerAsync(); + } + + private void UpdatePieChart() + { + var wrapper = comboBoxSr.SelectedItem as SrWrapper; + if (wrapper == null) + { + chart1.Visible = false; + return; + } + + SR sr = wrapper.item; + var availableSpace = wrapper.AvailableSpace; + var usedSpace = sr.physical_size - availableSpace; + + //order of colours in palette: blue, yellow, red + + string[] xValues = + { + string.Format(Messages.CONVERSION_STORAGE_PAGE_FREE_SPACE, Util.DiskSizeString(availableSpace)), + string.Format(Messages.CONVERSION_STORAGE_PAGE_REQUIRED_SPACE, Util.DiskSizeString(_requiredDiskSize)), + string.Format(Messages.CONVERSION_STORAGE_PAGE_USED_SPACE, Util.DiskSizeString(usedSpace)) + }; + long[] yValues = + { + availableSpace > _requiredDiskSize? availableSpace - _requiredDiskSize : 0, + availableSpace > _requiredDiskSize ? _requiredDiskSize : availableSpace, + usedSpace + }; + + chart1.Series[0].Points.DataBindXY(xValues, yValues); + chart1.Visible = true; + } + + private void UpdateButtons() + { + _buttonNextEnabled = comboBoxSr.SelectedItem is SrWrapper wrapper && wrapper.CanUse; + OnPageUpdated(); + } + + private void ShowError(string msg) + { + pictureBoxError.Image = Images.StaticImages._000_error_h32bit_16; + labelError.Text = msg; + tableLayoutPanelError.Visible = true; + } + + private void ShowWarning(string msg) + { + pictureBoxError.Image = Images.StaticImages._000_Alert2_h32bit_16; + labelError.Text = msg; + tableLayoutPanelError.Visible = true; + } + + #region Event handler + + private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) + { + var spacePerSr = new Dictionary(); + + foreach (var pbd in Connection.Cache.PBDs) + { + if (pbd.SR == null) + continue; + + var sr = Connection.Resolve(pbd.SR); + if (sr == null || sr.IsDetached() || !sr.Show(XenAdminConfigManager.Provider.ShowHiddenVMs)) + continue; + + if (sr.content_type.ToLower() == "iso" || sr.type.ToLower() == "iso") + continue; + + var hosts = Connection.Cache.Hosts; + if (hosts.Any(h => !sr.CanBeSeenFrom(h))) + continue; + + var reservedSpace = ConversionClient.GetReservedDiskSpace(sr.uuid); + var srFreeSpace = sr.FreeSpace(); + + if (srFreeSpace > reservedSpace) + spacePerSr[sr] = srFreeSpace - reservedSpace; + } + + e.Result = spacePerSr; + } + + private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + Dictionary spacePerSr; + + if (e.Cancelled) + { + tableLayoutPanelError.Visible = false; + } + else if (e.Error != null) + { + ShowError(Messages.CONVERSION_STORAGE_PAGE_QUERYING_SRS_FAILURE); + } + else if ((spacePerSr = e.Result as Dictionary) != null && spacePerSr.Count > 0) + { + tableLayoutPanelError.Visible = false; + + foreach (var kvp in spacePerSr) + { + var sr = kvp.Key; + var wrapper = new SrWrapper(sr, kvp.Value); + comboBoxSr.Items.Add(wrapper); + + if (SelectedSR != null && SelectedSR.uuid == sr.uuid) + comboBoxSr.SelectedItem = wrapper; + else if (SelectedSR == null && SR.IsDefaultSr(sr)) + comboBoxSr.SelectedItem = wrapper; + } + } + else if (spacePerSr != null) + { + ShowError(Messages.CONVERSION_STORAGE_PAGE_QUERYING_SRS_EMPTY); + } + + buttonRefresh.Enabled = true; + } + + private void buttonRefresh_Click(object sender, EventArgs e) + { + RebuildSrList(); + } + + private void comboBoxSr_SelectedIndexChanged(object sender, EventArgs e) + { + if (comboBoxSr.SelectedItem is SrWrapper wrapper) + { + SelectedSR = wrapper.item; + SM sm = SelectedSR.GetSM(); + bool vdiSizeUnlimited = sm != null && Array.IndexOf(sm.capabilities, "LARGE_VDI") != -1; + bool isThinlyProvisioned = sm != null && Array.IndexOf(sm.capabilities, "THIN_PROVISIONING") != -1; + if (_requiredDiskSize > SR.DISK_MAX_SIZE && !vdiSizeUnlimited) + { + ShowError(string.Format(Messages.SR_DISKSIZE_EXCEEDS_DISK_MAX_SIZE, Util.DiskSizeString(SR.DISK_MAX_SIZE, 0))); + wrapper.CanUse = false; + } + else if (_requiredDiskSize > wrapper.AvailableSpace && !isThinlyProvisioned) + { + ShowError(Messages.CONVERSION_STORAGE_PAGE_SR_TOO_SMALL); + wrapper.CanUse = false; + } + else if (_requiredDiskSize > wrapper.AvailableSpace) + { + ShowWarning(Messages.CONVERSION_STORAGE_PAGE_SR_OVERCOMMIT); + wrapper.CanUse = true; + } + else + { + tableLayoutPanelError.Visible = false; + wrapper.CanUse = true; + } + } + UpdatePieChart(); + UpdateButtons(); + } + + #endregion + + #region Nested Items + + private class SrWrapper : ToStringWrapper + { + public readonly long AvailableSpace; + public bool CanUse; + public SrWrapper(SR sr, long availableSpace) + : base(sr, $"{sr.Name()}, {Util.DiskSizeString(availableSpace)} {Messages.AVAILABLE}") + { + AvailableSpace = availableSpace; + } + } + + #endregion + } +} diff --git a/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.ja.resx b/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.ja.resx new file mode 100644 index 000000000..b46e6c953 --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.ja.resx @@ -0,0 +1,372 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 2 + + + True + + + + Fill + + + + 3, 47 + + + 3, 0, 0, 0 + + + 110, 27 + + + 0 + + + ストレージ リポジトリ(&S): + + + MiddleLeft + + + SRLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + 20 + + + 119, 50 + + + 351, 21 + + + 1 + + + SRComboBoxEx + + + ConVPX.Controls.ComboBoxIconEx, XCM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 1 + + + Top, Right + + + 97, 80 + + + 16, 16 + + + AutoSize + + + 3 + + + False + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + True + + + Fill + + + 119, 77 + + + 426, 22 + + + 4 + + + label1 + + + MiddleLeft + + + False + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + 3, 102 + + + 488, 273 + + + 5 + + + chart1 + + + chart1 + + + System.Windows.Forms.DataVisualization.Charting.Chart, System.Windows.Forms.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 + + + tableLayoutPanel1 + + + 4 + + + True + + + 3, 0 + + + 414, 29 + + + 0 + + + 変換された仮想マシンの仮想ディスクを格納するストレージ リポジトリを選択してください。 + + + MiddleLeft + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 0 + + + 3, 3 + + + 470, 38 + + + 6 + + + flowLayoutPanel1 + + + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 5 + + + Fill + + + 0, 0 + + + 7 + + + 548, 388 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="SRLabel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="SRComboBoxEx" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxError" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelError" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="chart1" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="flowLayoutPanel1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,Absolute,3,AutoSize,0,Absolute,3,AutoSize,0,Absolute,279,Absolute,1,Absolute,20" /></TableLayoutSettings> + + + True + + + 6, 13 + + + 548, 388 + + + SRSelectionWizardPage + + + XenAdmin.Controls.XenTabPage, XCM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + diff --git a/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.resx b/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.resx new file mode 100644 index 000000000..cc6e50aba --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.resx @@ -0,0 +1,420 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + 3 + + + True + + + + Fill + + + + 3, 0 + + + 3, 0, 3, 20 + + + 542, 13 + + + 0 + + + Select the storage repository where the virtual disks for the converted virtual machines will be placed. + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + Left + + + True + + + 3, 42 + + + 51, 13 + + + 0 + + + &Location: + + + SRLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + Left, Right + + + 20 + + + 60, 36 + + + 404, 26 + + + 1 + + + comboBoxSr + + + XenAdmin.Controls.EnableableComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 2 + + + Left + + + 470, 37 + + + 75, 23 + + + 2 + + + &Refresh + + + buttonRefresh + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + True + + + GrowAndShrink + + + 2 + + + 3, 3 + + + 16, 16 + + + 3 + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 0 + + + Left, Right + + + True + + + 25, 4 + + + 457, 13 + + + 0 + + + label1 + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 1 + + + Top + + + 60, 68 + + + 1 + + + 485, 22 + + + 3 + + + False + + + tableLayoutPanelError + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 4 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelError" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="Percent,100" /></TableLayoutSettings> + + + Fill + + + 3, 108 + + + 542, 277 + + + 4 + + + chart1 + + + False + + + chart1 + + + System.Windows.Forms.DataVisualization.Charting.Chart, System.Windows.Forms.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 + + + tableLayoutPanel1 + + + 5 + + + Fill + + + 0, 0 + + + 4 + + + 548, 388 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="SRLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="comboBoxSr" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="buttonRefresh" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="tableLayoutPanelError" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="chart1" Row="3" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,Absolute,40,Percent,100" /></TableLayoutSettings> + + + 17, 17 + + + True + + + 96, 96 + + + 548, 388 + + + backgroundWorker1 + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + SrSelectionPage + + + XenAdmin.Controls.XenTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + \ No newline at end of file diff --git a/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.zh-CN.resx b/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.zh-CN.resx new file mode 100644 index 000000000..09451c019 --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/SrSelectionPage.zh-CN.resx @@ -0,0 +1,372 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 2 + + + True + + + + Fill + + + + 3, 47 + + + 3, 0, 0, 0 + + + 110, 27 + + + 0 + + + 存储库(&S): + + + MiddleLeft + + + SRLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + 20 + + + 119, 50 + + + 351, 21 + + + 1 + + + SRComboBoxEx + + + ConVPX.Controls.ComboBoxIconEx, XCM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 1 + + + Top, Right + + + 97, 80 + + + 16, 16 + + + AutoSize + + + 3 + + + False + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + True + + + Fill + + + 119, 77 + + + 426, 22 + + + 4 + + + label1 + + + MiddleLeft + + + False + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + 3, 102 + + + 488, 273 + + + 5 + + + chart1 + + + chart1 + + + System.Windows.Forms.DataVisualization.Charting.Chart, System.Windows.Forms.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 + + + tableLayoutPanel1 + + + 4 + + + True + + + 3, 0 + + + 414, 29 + + + 0 + + + 选择用于存储转换后的虚拟机的虚拟磁盘的存储库。 + + + MiddleLeft + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 0 + + + 3, 3 + + + 470, 38 + + + 6 + + + flowLayoutPanel1 + + + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 5 + + + Fill + + + 0, 0 + + + 7 + + + 548, 388 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="SRLabel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="SRComboBoxEx" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxError" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelError" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="chart1" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="flowLayoutPanel1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,Absolute,3,AutoSize,0,Absolute,3,AutoSize,0,Absolute,279,Absolute,1,Absolute,20" /></TableLayoutSettings> + + + True + + + 6, 13 + + + 548, 388 + + + SRSelectionWizardPage + + + XenAdmin.Controls.XenTabPage, XCM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + diff --git a/XenAdmin/Wizards/ConversionWizard/SummaryPage.Designer.cs b/XenAdmin/Wizards/ConversionWizard/SummaryPage.Designer.cs new file mode 100644 index 000000000..3a6569009 --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/SummaryPage.Designer.cs @@ -0,0 +1,121 @@ +namespace XenAdmin.Wizards.ConversionWizard +{ + partial class SummaryPage + { + /// + /// 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 Component 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(SummaryPage)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.m_dataGridView = new System.Windows.Forms.DataGridView(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.label1 = new System.Windows.Forms.Label(); + this.tableLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.m_dataGridView)).BeginInit(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); + this.tableLayoutPanel1.Controls.Add(this.m_dataGridView, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + // + // m_dataGridView + // + this.m_dataGridView.AllowUserToAddRows = false; + this.m_dataGridView.AllowUserToDeleteRows = false; + this.m_dataGridView.AllowUserToResizeColumns = false; + this.m_dataGridView.AllowUserToResizeRows = false; + this.m_dataGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.m_dataGridView.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells; + this.m_dataGridView.BackgroundColor = System.Drawing.SystemColors.Control; + this.m_dataGridView.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.m_dataGridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; + this.m_dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.m_dataGridView.ColumnHeadersVisible = false; + this.m_dataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Column1, + this.Column2}); + resources.ApplyResources(this.m_dataGridView, "m_dataGridView"); + this.m_dataGridView.MultiSelect = false; + this.m_dataGridView.Name = "m_dataGridView"; + this.m_dataGridView.ReadOnly = true; + this.m_dataGridView.RowHeadersVisible = false; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.TopLeft; + dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle2.Padding = new System.Windows.Forms.Padding(0, 1, 0, 1); + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.WindowText; + this.m_dataGridView.RowsDefaultCellStyle = dataGridViewCellStyle2; + this.m_dataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + // + // Column1 + // + resources.ApplyResources(this.Column1, "Column1"); + this.Column1.Name = "Column1"; + this.Column1.ReadOnly = true; + // + // Column2 + // + this.Column2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.Column2.DefaultCellStyle = dataGridViewCellStyle1; + resources.ApplyResources(this.Column2, "Column2"); + this.Column2.Name = "Column2"; + this.Column2.ReadOnly = true; + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // + // SummaryPage + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.Controls.Add(this.tableLayoutPanel1); + this.Name = "SummaryPage"; + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.m_dataGridView)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.DataGridView m_dataGridView; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column2; + } +} diff --git a/XenAdminTests/UnitTests/UnitTestHelper/VerifyStaticMethodReturn.cs b/XenAdmin/Wizards/ConversionWizard/SummaryPage.cs similarity index 50% rename from XenAdminTests/UnitTests/UnitTestHelper/VerifyStaticMethodReturn.cs rename to XenAdmin/Wizards/ConversionWizard/SummaryPage.cs index bcaf13913..85a888097 100644 --- a/XenAdminTests/UnitTests/UnitTestHelper/VerifyStaticMethodReturn.cs +++ b/XenAdmin/Wizards/ConversionWizard/SummaryPage.cs @@ -1,4 +1,4 @@ -/* Copyright (c) Citrix Systems, Inc. +/* Copyright (c) Citrix Systems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, @@ -30,44 +30,53 @@ */ using System; -using System.Reflection; -using NUnit.Framework; +using System.Collections.Generic; +using System.Windows.Forms; +using XenAdmin.Controls; +using XenAdmin.Core; -namespace XenAdminTests.UnitTests.UnitTestHelper + +namespace XenAdmin.Wizards.ConversionWizard { - public class VerifyStaticMethodReturn : IUnitTestVerifier + public partial class SummaryPage : XenTabPage { - private readonly Type typeTovalidate; - - public VerifyStaticMethodReturn(Type typeTovalidate) + public SummaryPage() { - this.typeTovalidate = typeTovalidate; + InitializeComponent(); } - /// - /// Use this class to go through a class with the constructed type and - /// verify there are methods that return the expected type and the - /// return value is not null - /// - /// Type that the static method will check for as a return type - public void Verify( object returnTypeForMethod ) - { - Type returnType = returnTypeForMethod as Type; - MethodInfo[] methods = typeTovalidate.GetMethods(); - - Assert.AreNotEqual(0, methods.Length, "No methods found returning " + returnType ); + public Func>> SummaryRetreiver { private get; set; } - int staticMethodCount = 0; - foreach (MethodInfo methodInfo in methods) + #region XenTabPage implementation + + public override string Text => Messages.CONVERSION_SUMMARY_PAGE_TEXT; + + public override string PageTitle => Messages.CONVERSION_SUMMARY_PAGE_TITLE; + + public override string HelpID => "ConversionSummary"; + + protected override void PageLoadedCore(PageLoadedDirection direction) + { + if (direction == PageLoadedDirection.Forward) { - if (methodInfo.ReturnType == returnType && methodInfo.IsStatic) - { - Assert.IsNotNull(methodInfo.Invoke(null, null), "Null value returned for " + methodInfo.Name); - staticMethodCount++; - } - } + if (SummaryRetreiver == null) + return; - Assert.AreNotEqual(0, staticMethodCount, "Static method call count should not be zero"); + var entries = SummaryRetreiver.Invoke(); + m_dataGridView.Rows.Clear(); + + foreach (var pair in entries) + { + var row = new DataGridViewRow(); + row.Cells.AddRange(new DataGridViewTextBoxCell { Value = pair.Key }, + new DataGridViewTextBoxCell { Value = pair.Value }); + m_dataGridView.Rows.Add(row); + } + + HelpersGUI.ResizeGridViewColumnToAllCells(Column2);//set properly the width of the last column + } } + + #endregion } } diff --git a/XenAdmin/Wizards/ConversionWizard/SummaryPage.ja.resx b/XenAdmin/Wizards/ConversionWizard/SummaryPage.ja.resx new file mode 100644 index 000000000..32e5bc95c --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/SummaryPage.ja.resx @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + 1 + + + True + + + + Fill + + + + 3, 0 + + + 518, 13 + + + 0 + + + 詳細: + + + MiddleLeft + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + Fill + + + 3, 21 + + + 518, 272 + + + 1 + + + summaryTreeView + + + System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + True + + + Fill + + + 3, 301 + + + 518, 13 + + + 2 + + + オプションを変更するには、[戻る] をクリックします。変換を開始するには、[完了] をクリックします。 + + + MiddleLeft + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + Fill + + + 0, 0 + + + 6 + + + 524, 403 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="summaryTreeView" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Absolute,5,AutoSize,0,Absolute,5,AutoSize,0,Absolute,1" /></TableLayoutSettings> + + + True + + + 6, 13 + + + 524, 403 + + + SummaryWizardPage + + + XenAdmin.Controls.XenTabPage, XCM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + diff --git a/XenAdmin/Wizards/ConversionWizard/SummaryPage.resx b/XenAdmin/Wizards/ConversionWizard/SummaryPage.resx new file mode 100644 index 000000000..a086b9d01 --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/SummaryPage.resx @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + 1 + + + True + + + Column1 + + + 5 + + + True + + + Column2 + + + + Fill + + + + 3, 85 + + + 3, 20, 3, 20 + + + 518, 298 + + + 10 + + + m_dataGridView + + + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + True + + + Fill + + + 3, 0 + + + 518, 65 + + + 0 + + + All the necessary information has been collected and the wizard is ready to start the conversion using the settings shown below. + +Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to start the conversion and close this wizard. The conversion may take several minutes. + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + Fill + + + 0, 0 + + + 2 + + + 524, 403 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_dataGridView" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Percent,100" /></TableLayoutSettings> + + + True + + + 96, 96 + + + 524, 403 + + + Column1 + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Column2 + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + SummaryPage + + + XenAdmin.Controls.XenTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + \ No newline at end of file diff --git a/XenAdmin/Wizards/ConversionWizard/SummaryPage.zh-CN.resx b/XenAdmin/Wizards/ConversionWizard/SummaryPage.zh-CN.resx new file mode 100644 index 000000000..54cea04f1 --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/SummaryPage.zh-CN.resx @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + 1 + + + True + + + + Fill + + + + 3, 0 + + + 518, 13 + + + 0 + + + 详细信息: + + + MiddleLeft + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + Fill + + + 3, 21 + + + 518, 272 + + + 1 + + + summaryTreeView + + + System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + True + + + Fill + + + 3, 301 + + + 518, 13 + + + 2 + + + 要更改某个选项,请单击“上一步”。要开始转换,请单击“完成”。 + + + MiddleLeft + + + label2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + Fill + + + 0, 0 + + + 6 + + + 524, 403 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="summaryTreeView" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Absolute,5,AutoSize,0,Absolute,5,AutoSize,0,Absolute,1" /></TableLayoutSettings> + + + True + + + 6, 13 + + + 524, 403 + + + SummaryWizardPage + + + XenAdmin.Controls.XenTabPage, XCM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + diff --git a/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.Designer.cs b/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.Designer.cs new file mode 100644 index 000000000..db5e1eb7e --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.Designer.cs @@ -0,0 +1,200 @@ +namespace XenAdmin.Wizards.ConversionWizard +{ + partial class VmSelectionPage + { + /// + /// 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 Component 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(VmSelectionPage)); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.label1 = new System.Windows.Forms.Label(); + this.dataGridViewVms = new XenAdmin.Controls.DataGridViewEx.DataGridViewEx(); + this.columnChecked = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.columnVm = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.columnOs = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.columnDiskSize = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + this.buttonSelectAll = new System.Windows.Forms.Button(); + this.buttonClearAll = new System.Windows.Forms.Button(); + this.buttonRefresh = new System.Windows.Forms.Button(); + this.tableLayoutPanelError = new System.Windows.Forms.TableLayoutPanel(); + this.pictureBoxError = new System.Windows.Forms.PictureBox(); + this.labelError = new System.Windows.Forms.Label(); + this._backgroundWorker = new System.ComponentModel.BackgroundWorker(); + this.tableLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewVms)).BeginInit(); + this.tableLayoutPanel3.SuspendLayout(); + this.tableLayoutPanelError.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxError)).BeginInit(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.dataGridViewVms, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel3, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanelError, 0, 3); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // + // dataGridViewVms + // + this.dataGridViewVms.BackgroundColor = System.Drawing.SystemColors.Window; + this.dataGridViewVms.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; + this.dataGridViewVms.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dataGridViewVms.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.columnChecked, + this.columnVm, + this.columnOs, + this.columnDiskSize}); + resources.ApplyResources(this.dataGridViewVms, "dataGridViewVms"); + this.dataGridViewVms.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnKeystroke; + this.dataGridViewVms.MultiSelect = true; + this.dataGridViewVms.Name = "dataGridViewVms"; + this.dataGridViewVms.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewVms_CellValueChanged); + this.dataGridViewVms.CurrentCellDirtyStateChanged += new System.EventHandler(this.dataGridViewVms_CurrentCellDirtyStateChanged); + // + // columnChecked + // + this.columnChecked.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells; + resources.ApplyResources(this.columnChecked, "columnChecked"); + this.columnChecked.Name = "columnChecked"; + // + // columnVm + // + resources.ApplyResources(this.columnVm, "columnVm"); + this.columnVm.Name = "columnVm"; + this.columnVm.ReadOnly = true; + // + // columnOs + // + resources.ApplyResources(this.columnOs, "columnOs"); + this.columnOs.Name = "columnOs"; + this.columnOs.ReadOnly = true; + // + // columnDiskSize + // + this.columnDiskSize.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells; + this.columnDiskSize.FillWeight = 40F; + resources.ApplyResources(this.columnDiskSize, "columnDiskSize"); + this.columnDiskSize.Name = "columnDiskSize"; + this.columnDiskSize.ReadOnly = true; + // + // tableLayoutPanel3 + // + resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3"); + this.tableLayoutPanel3.Controls.Add(this.buttonSelectAll, 0, 0); + this.tableLayoutPanel3.Controls.Add(this.buttonClearAll, 1, 0); + this.tableLayoutPanel3.Controls.Add(this.buttonRefresh, 3, 0); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + // + // buttonSelectAll + // + resources.ApplyResources(this.buttonSelectAll, "buttonSelectAll"); + this.buttonSelectAll.Name = "buttonSelectAll"; + this.buttonSelectAll.UseVisualStyleBackColor = true; + this.buttonSelectAll.Click += new System.EventHandler(this.buttonSelectAll_Click); + // + // buttonClearAll + // + resources.ApplyResources(this.buttonClearAll, "buttonClearAll"); + this.buttonClearAll.Name = "buttonClearAll"; + this.buttonClearAll.UseVisualStyleBackColor = true; + this.buttonClearAll.Click += new System.EventHandler(this.buttonClearAll_Click); + // + // buttonRefresh + // + resources.ApplyResources(this.buttonRefresh, "buttonRefresh"); + this.buttonRefresh.Name = "buttonRefresh"; + this.buttonRefresh.UseVisualStyleBackColor = true; + this.buttonRefresh.Click += new System.EventHandler(this.buttonRefresh_Click); + // + // tableLayoutPanelError + // + resources.ApplyResources(this.tableLayoutPanelError, "tableLayoutPanelError"); + this.tableLayoutPanelError.Controls.Add(this.pictureBoxError, 0, 0); + this.tableLayoutPanelError.Controls.Add(this.labelError, 1, 0); + this.tableLayoutPanelError.Name = "tableLayoutPanelError"; + // + // pictureBoxError + // + resources.ApplyResources(this.pictureBoxError, "pictureBoxError"); + this.pictureBoxError.Image = global::XenAdmin.Properties.Resources._000_error_h32bit_16; + this.pictureBoxError.Name = "pictureBoxError"; + this.pictureBoxError.TabStop = false; + // + // labelError + // + resources.ApplyResources(this.labelError, "labelError"); + this.labelError.Name = "labelError"; + // + // _backgroundWorker + // + this._backgroundWorker.WorkerSupportsCancellation = true; + this._backgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this._backgroundWorker_DoWork); + this._backgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this._backgroundWorker_RunWorkerCompleted); + // + // VmSelectionPage + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.Controls.Add(this.tableLayoutPanel1); + this.Name = "VmSelectionPage"; + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridViewVms)).EndInit(); + this.tableLayoutPanel3.ResumeLayout(false); + this.tableLayoutPanelError.ResumeLayout(false); + this.tableLayoutPanelError.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxError)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanelError; + private System.Windows.Forms.PictureBox pictureBoxError; + private System.Windows.Forms.Label labelError; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; + private System.Windows.Forms.Button buttonSelectAll; + private System.Windows.Forms.Button buttonClearAll; + private System.Windows.Forms.Button buttonRefresh; + private System.Windows.Forms.Label label1; + private Controls.DataGridViewEx.DataGridViewEx dataGridViewVms; + private System.Windows.Forms.DataGridViewCheckBoxColumn columnChecked; + private System.Windows.Forms.DataGridViewTextBoxColumn columnVm; + private System.Windows.Forms.DataGridViewTextBoxColumn columnOs; + private System.Windows.Forms.DataGridViewTextBoxColumn columnDiskSize; + private System.ComponentModel.BackgroundWorker _backgroundWorker; + } +} diff --git a/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.cs b/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.cs new file mode 100644 index 000000000..b3928707d --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.cs @@ -0,0 +1,251 @@ +/* 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.ComponentModel; +using System.Linq; +using System.Windows.Forms; +using XenAdmin.Controls; +using XenAdmin.XCM; + + +namespace XenAdmin.Wizards.ConversionWizard +{ + public partial class VmSelectionPage : XenTabPage + { + private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + + private bool _buttonNextEnabled; + private bool _updating; + + public VmSelectionPage() + { + InitializeComponent(); + tableLayoutPanelError.Visible = false; + } + + #region XenTabPage implementation + + public override string Text => Messages.CONVERSION_VM_PAGE_TEXT; + + public override string PageTitle => Messages.CONVERSION_VM_PAGE_TITLE; + + public override string HelpID => "VmSelection"; + + public override bool EnableNext() + { + return _buttonNextEnabled; + } + + protected override void PageLoadedCore(PageLoadedDirection direction) + { + if (direction == PageLoadedDirection.Forward) + Build(); + } + + public override void PageCancelled(ref bool cancel) + { + _backgroundWorker.CancelAsync(); + } + + #endregion + + public ConversionClient ConversionClient { private get; set; } + public VmInstance[] VMwareVMs { private get; set; } + public ServerInfo VmwareCredInfo { private get; set; } + + public VmInstance[] SelectedVms + { + get + { + return (from SourceVmRow row in dataGridViewVms.Rows + where row.IsChecked + select row.Vm).ToArray(); + } + } + + private bool SelectedVmsExist + { + get + { + foreach (SourceVmRow row in dataGridViewVms.Rows) + { + if (row.IsChecked) + return true; + } + + return false; + } + } + + private void Build() + { + try + { + dataGridViewVms.SuspendLayout(); + dataGridViewVms.Rows.Clear(); + + if (VMwareVMs == null) + return; + + foreach (VmInstance vm in VMwareVMs) + { + if (vm.PowerState == (int)VmPowerState.Off) + dataGridViewVms.Rows.Add(new SourceVmRow(vm)); + } + } + finally + { + dataGridViewVms.ResumeLayout(); + UpdateButtons(); + } + } + + private void UpdateButtons() + { + _buttonNextEnabled = SelectedVmsExist; + OnPageUpdated(); + } + + private void BulkCheck(bool check) + { + try + { + _updating = true; + + foreach (SourceVmRow row in dataGridViewVms.Rows) + row.IsChecked = check; + } + finally + { + _updating = false; + UpdateButtons(); + } + } + + #region Control event handlers + + private void _backgroundWorker_DoWork(object sender, DoWorkEventArgs e) + { + e.Result = ConversionClient.GetSourceVMs(VmwareCredInfo); + } + + private void _backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + if (e.Cancelled) + { + tableLayoutPanelError.Visible = false; + } + if (e.Error != null) + { + log.Error(e.Error); + pictureBoxError.Image = Images.StaticImages._000_error_h32bit_16; + labelError.Text = Messages.CONVERSION_CONNECTING_VMWARE_FAILURE; + } + else + { + VMwareVMs = e.Result as VmInstance[]; + tableLayoutPanelError.Visible = false; + Build(); + } + + UpdateButtons(); + } + + private void buttonRefresh_Click(object sender, EventArgs e) + { + dataGridViewVms.Rows.Clear(); + pictureBoxError.Image = Images.StaticImages.ajax_loader; + labelError.Text = Messages.CONVERSION_CONNECTING_VMWARE; + tableLayoutPanelError.Visible = true; + VMwareVMs = null; + + _backgroundWorker.RunWorkerAsync(); + UpdateButtons(); + } + + private void buttonSelectAll_Click(object sender, EventArgs e) + { + BulkCheck(true); + } + + private void buttonClearAll_Click(object sender, EventArgs e) + { + BulkCheck(false); + } + + private void dataGridViewVms_CurrentCellDirtyStateChanged(object sender, EventArgs e) + { + if (dataGridViewVms.IsCurrentCellDirty) + dataGridViewVms.CommitEdit(DataGridViewDataErrorContexts.Commit); + } + + private void dataGridViewVms_CellValueChanged(object sender, DataGridViewCellEventArgs e) + { + if (_updating) + return; + + if (e.ColumnIndex != 0 || e.RowIndex < 0 || e.RowIndex >= dataGridViewVms.RowCount) + return; + + UpdateButtons(); + } + + #endregion + + private class SourceVmRow : DataGridViewRow + { + private readonly DataGridViewCheckBoxCell cellCheck = new DataGridViewCheckBoxCell(); + private readonly DataGridViewTextBoxCell cellVm = new DataGridViewTextBoxCell(); + private readonly DataGridViewTextBoxCell cellOs = new DataGridViewTextBoxCell(); + private readonly DataGridViewTextBoxCell cellDiskSize = new DataGridViewTextBoxCell(); + + public SourceVmRow(VmInstance vm) + { + Cells.AddRange(cellCheck, cellVm, cellOs, cellDiskSize); + + Vm = vm; + cellCheck.Value = false; + cellVm.Value = vm.Template ? string.Format(Messages.CONVERSION_TEMPLATE, vm.Name) : vm.Name; + cellOs.Value = vm.OSType; + cellDiskSize.Value = Util.DiskSizeString(vm.CommittedStorage + vm.UncommittedStorage); + } + + public bool IsChecked + { + get => (bool)cellCheck.Value; + set => cellCheck.Value = value; + } + + public VmInstance Vm { get; } + } + } +} diff --git a/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.ja.resx b/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.ja.resx new file mode 100644 index 000000000..7d79eaaa8 --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.ja.resx @@ -0,0 +1,432 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + 1 + + + + Fill + + + + 3, 6 + + + 518, 187 + + + 0 + + + vmListView + + + System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + True + + + 3, 0 + + + 45, 17 + + + 3 + + + 更新 + + + MiddleLeft + + + RefreshLinkLabel + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 0 + + + True + + + 54, 0 + + + 54, 17 + + + 4 + + + すべて選択 + + + SelectAllLinkLabel + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 1 + + + True + + + 114, 0 + + + 48, 17 + + + 5 + + + すべてクリア + + + ClearAllLinkLabel + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 2 + + + Fill + + + 3, 202 + + + 518, 24 + + + 2 + + + flowLayoutPanel1 + + + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + Fill + + + 3, 232 + + + 518, 107 + + + 7 + + + chart1 + + + chart1 + + + System.Windows.Forms.DataVisualization.Charting.Chart, System.Windows.Forms.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 + + + tableLayoutPanel1 + + + 2 + + + 2 + + + True + + + Fill + + + 29, 0 + + + 486, 24 + + + 2 + + + label1 + + + MiddleLeft + + + False + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + Top, Right + + + + + + 7, 3 + + + 16, 16 + + + AutoSize + + + 1 + + + False + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 1 + + + Fill + + + 3, 345 + + + 1 + + + 518, 24 + + + 8 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,5.060729,Percent,94.93927" /><Rows Styles="Percent,50" /></TableLayoutSettings> + + + Fill + + + 0, 0 + + + 8 + + + 524, 403 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="vmListView" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="chart1" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel2" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Absolute,3,Absolute,179,Absolute,3,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,21,Absolute,20" /></TableLayoutSettings> + + + True + + + 6, 13 + + + 524, 403 + + + VMSelectionWizardPage + + + XenAdmin.Controls.XenTabPage, XCM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + diff --git a/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.resx b/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.resx new file mode 100644 index 000000000..abb8792a6 --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.resx @@ -0,0 +1,511 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + 1 + + + True + + + + Fill + + + + 3, 0 + + + 3, 0, 3, 15 + + + 518, 26 + + + 0 + + + Select the VM(s) you want to export from the list of available VMs and then click Next. +Note that only VMs that are currently shut down are listed here. + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + True + + + + + + 5 + + + True + + + Virtual machine + + + 50 + + + True + + + Operating System + + + 50 + + + True + + + Total Disk Size + + + 50 + + + 103 + + + Fill + + + 3, 44 + + + 518, 292 + + + 3 + + + dataGridViewVms + + + XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 1 + + + True + + + GrowAndShrink + + + 4 + + + 3, 3 + + + 75, 23 + + + 0 + + + &Select All + + + buttonSelectAll + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 0 + + + 84, 3 + + + 75, 23 + + + 1 + + + &Clear All + + + buttonClearAll + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 1 + + + 446, 3 + + + 75, 23 + + + 2 + + + &Refresh + + + buttonRefresh + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel3 + + + 2 + + + Fill + + + 0, 339 + + + 0, 0, 0, 0 + + + 1 + + + 524, 29 + + + 2 + + + tableLayoutPanel3 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="buttonSelectAll" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="buttonClearAll" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="buttonRefresh" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> + + + True + + + GrowAndShrink + + + 2 + + + Left + + + + + + 3, 3 + + + 16, 16 + + + 1 + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 0 + + + Left, Right + + + True + + + 25, 4 + + + 490, 13 + + + 0 + + + label1 + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 1 + + + Bottom + + + 3, 378 + + + 1 + + + 518, 22 + + + 4 + + + tableLayoutPanelError + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelError" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> + + + Fill + + + 0, 0 + + + 4 + + + 524, 403 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="dataGridViewVms" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel3" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanelError" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Percent,100,AutoSize,0,Absolute,35" /></TableLayoutSettings> + + + 17, 17 + + + True + + + 96, 96 + + + 524, 403 + + + columnChecked + + + System.Windows.Forms.DataGridViewCheckBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + columnVm + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + columnOs + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + columnDiskSize + + + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + _backgroundWorker + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + VmSelectionPage + + + XenAdmin.Controls.XenTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + \ No newline at end of file diff --git a/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.zh-CN.resx b/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.zh-CN.resx new file mode 100644 index 000000000..5674fb11c --- /dev/null +++ b/XenAdmin/Wizards/ConversionWizard/VmSelectionPage.zh-CN.resx @@ -0,0 +1,432 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + 1 + + + + Fill + + + + 3, 6 + + + 518, 187 + + + 0 + + + vmListView + + + System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + True + + + 3, 0 + + + 45, 17 + + + 3 + + + 刷新 + + + MiddleLeft + + + RefreshLinkLabel + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 0 + + + True + + + 54, 0 + + + 54, 17 + + + 4 + + + 全选 + + + SelectAllLinkLabel + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 1 + + + True + + + 114, 0 + + + 48, 17 + + + 5 + + + 全部清除 + + + ClearAllLinkLabel + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + flowLayoutPanel1 + + + 2 + + + Fill + + + 3, 202 + + + 518, 24 + + + 2 + + + flowLayoutPanel1 + + + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 + + + Fill + + + 3, 232 + + + 518, 107 + + + 7 + + + chart1 + + + chart1 + + + System.Windows.Forms.DataVisualization.Charting.Chart, System.Windows.Forms.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 + + + tableLayoutPanel1 + + + 2 + + + 2 + + + True + + + Fill + + + 29, 0 + + + 486, 24 + + + 2 + + + label1 + + + MiddleLeft + + + False + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + Top, Right + + + + + + 7, 3 + + + 16, 16 + + + AutoSize + + + 1 + + + False + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 1 + + + Fill + + + 3, 345 + + + 1 + + + 518, 24 + + + 8 + + + tableLayoutPanel2 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,5.060729,Percent,94.93927" /><Rows Styles="Percent,50" /></TableLayoutSettings> + + + Fill + + + 0, 0 + + + 8 + + + 524, 403 + + + 0 + + + tableLayoutPanel1 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="vmListView" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="chart1" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel2" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Absolute,3,Absolute,179,Absolute,3,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,21,Absolute,20" /></TableLayoutSettings> + + + True + + + 6, 13 + + + 524, 403 + + + VMSelectionWizardPage + + + XenAdmin.Controls.XenTabPage, XCM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + diff --git a/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateNetworkingPage.cs b/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateNetworkingPage.cs index 9a9f6c1a3..d44fc8db9 100644 --- a/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateNetworkingPage.cs +++ b/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateNetworkingPage.cs @@ -29,9 +29,7 @@ * SUCH DAMAGE. */ -using System; using System.Collections.Generic; -using System.Linq; using XenAdmin.Controls; using XenAdmin.Wizards.GenericPages; using XenAPI; @@ -40,52 +38,52 @@ namespace XenAdmin.Wizards.CrossPoolMigrateWizard { class CrossPoolMigrateNetworkingPage : SelectMultipleVMNetworkPage { - private readonly bool templatesOnly = false; + private readonly bool templatesOnly; private readonly WizardMode wizardMode; public CrossPoolMigrateNetworkingPage(bool templatesOnly, WizardMode wizardMode) { this.templatesOnly = templatesOnly; this.wizardMode = wizardMode; - - InitializeText(); } /// /// Gets the page's title (headline) /// - public override string PageTitle { get { return Messages.CPM_WIZARD_SELECT_NETWORK_PAGE_TITLE; } } + public override string PageTitle => Messages.CPM_WIZARD_SELECT_NETWORK_PAGE_TITLE; /// /// Gets the page's label in the (left hand side) wizard progress panel /// - public override string Text { get { return Messages.CPM_WIZARD_SELECT_NETWORK_PAGE_TEXT; } } + public override string Text => Messages.CPM_WIZARD_SELECT_NETWORK_PAGE_TEXT; - public override string IntroductionText + protected override string IntroductionText { get { if (templatesOnly) { - return - VmMappings != null && VmMappings.Count > 1 ? Messages.CPM_WIZARD_NETWORKING_INTRO_TEMPLATE : Messages.CPM_WIZARD_NETWORKING_INTRO_TEMPLATE_SINGLE; + return VmMappings != null && VmMappings.Count > 1 + ? Messages.CPM_WIZARD_NETWORKING_INTRO_TEMPLATE + : Messages.CPM_WIZARD_NETWORKING_INTRO_TEMPLATE_SINGLE; } else { - return - VmMappings != null && VmMappings.Count > 1 ? Messages.CPM_WIZARD_NETWORKING_INTRO : Messages.CPM_WIZARD_NETWORKING_INTRO_SINGLE; + return VmMappings != null && VmMappings.Count > 1 + ? Messages.CPM_WIZARD_NETWORKING_INTRO + : Messages.CPM_WIZARD_NETWORKING_INTRO_SINGLE; } } } - public override string TableIntroductionText { get { return Messages.CPM_WIZARD_VM_SELECTION_INTRODUCTION; } } + protected override string TableIntroductionText => Messages.CPM_WIZARD_VM_SELECTION_INTRODUCTION; /// /// Gets the value by which the help files section for this page is identified /// - public override string HelpID { get { return wizardMode == WizardMode.Copy ? "NetworkingCopyMode" : "Networking"; } } + public override string HelpID => wizardMode == WizardMode.Copy ? "NetworkingCopyMode" : "Networking"; - public override NetworkResourceContainer NetworkData(string sysId) + protected override NetworkResourceContainer NetworkData(string sysId) { VM vm = Connection.Resolve(new XenRef(sysId)); @@ -98,6 +96,9 @@ namespace XenAdmin.Wizards.CrossPoolMigrateWizard protected override bool AllowSriovNetwork(XenAPI.Network network, string sysId) { + if (sysId == null) + return false; + VM vm = Connection.Resolve(new XenRef(sysId)); if (vm == null) return false; @@ -118,12 +119,9 @@ namespace XenAdmin.Wizards.CrossPoolMigrateWizard } } - protected override string NetworkColumnHeaderText - { - get - { - return templatesOnly ? Messages.CPS_WIZARD_NETWORKING_NETWORK_COLUMN_TEMPLATE : Messages.CPS_WIZARD_NETWORKING_NETWORK_COLUMN_VM; - } - } + protected override string NetworkColumnHeaderText => + templatesOnly + ? Messages.CPS_WIZARD_NETWORKING_NETWORK_COLUMN_TEMPLATE + : Messages.CPS_WIZARD_NETWORKING_NETWORK_COLUMN_VM; } } diff --git a/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.Designer.cs b/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.Designer.cs index ce0cf45df..39ba28297 100644 --- a/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.Designer.cs +++ b/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.Designer.cs @@ -30,28 +30,20 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CrossPoolMigrateTransferNetworkPage)); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); this.label1 = new System.Windows.Forms.Label(); this.networkComboBox = new XenAdmin.Controls.NetworkComboBox(); this.blurbText = new System.Windows.Forms.Label(); this.tableLayoutPanel1.SuspendLayout(); - this.tableLayoutPanel2.SuspendLayout(); this.SuspendLayout(); // // tableLayoutPanel1 // resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); - this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 1); this.tableLayoutPanel1.Controls.Add(this.blurbText, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.networkComboBox, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; // - // tableLayoutPanel2 - // - resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2"); - this.tableLayoutPanel2.Controls.Add(this.label1, 0, 0); - this.tableLayoutPanel2.Controls.Add(this.networkComboBox, 1, 0); - this.tableLayoutPanel2.Name = "tableLayoutPanel2"; - // // label1 // resources.ApplyResources(this.label1, "label1"); @@ -59,17 +51,18 @@ // // networkComboBox // + resources.ApplyResources(this.networkComboBox, "networkComboBox"); this.networkComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.networkComboBox.FormattingEnabled = true; this.networkComboBox.IncludeOnlyEnabledNetworksInComboBox = false; this.networkComboBox.IncludeOnlyNetworksWithIPAddresses = false; this.networkComboBox.IncludePoolNameInComboBox = false; - resources.ApplyResources(this.networkComboBox, "networkComboBox"); this.networkComboBox.Name = "networkComboBox"; // // blurbText // resources.ApplyResources(this.blurbText, "blurbText"); + this.tableLayoutPanel1.SetColumnSpan(this.blurbText, 2); this.blurbText.Name = "blurbText"; // // CrossPoolMigrateTransferNetworkPage @@ -80,8 +73,6 @@ this.Name = "CrossPoolMigrateTransferNetworkPage"; this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); - this.tableLayoutPanel2.ResumeLayout(false); - this.tableLayoutPanel2.PerformLayout(); this.ResumeLayout(false); } @@ -91,11 +82,7 @@ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; private XenAdmin.Controls.NetworkComboBox networkComboBox; private System.Windows.Forms.Label label1; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; private System.Windows.Forms.Label blurbText; - - - } } diff --git a/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.ja.resx b/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.ja.resx index 79d417152..c39dba71b 100644 --- a/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.ja.resx +++ b/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.ja.resx @@ -119,30 +119,87 @@ - 1 + 2 - + True - + + + Fill + + + NoControl + + + + 3, 0 + + + 3, 0, 3, 20 + + + 608, 13 + + + 0 + + + label3 + + + blurbText + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + Left, Right + + + False + + + 97, 36 + + + 3, 3, 80, 3 + + + 437, 21 + + 2 + + networkComboBox + + + XenAdmin.Controls.NetworkComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 1 + + + Left + True - - - Fill - NoControl - - 3, 8 - - - 3, 0, 10, 0 + 3, 40 90, 17 @@ -163,101 +220,11 @@ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - tableLayoutPanel2 + tableLayoutPanel1 - 0 - - - False - - - 106, 3 - - - 432, 24 - - - 11 - - - networkComboBox - - - XenAdmin.Controls.NetworkComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tableLayoutPanel2 - - - 1 - - - Top - - - 3, 78 - - - 1 - - - 608, 33 - - 2 - - tableLayoutPanel2 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="networkComboBox" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,100" /></TableLayoutSettings> - - - True - - - Fill - - - NoControl - - - 3, 0 - - - 0, 0, 0, 20 - - - 608, 33 - - - 14 - - - label3 - - - blurbText - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 1 - Fill @@ -265,7 +232,7 @@ 0, 0 - 2 + 3 768, 415 @@ -286,7 +253,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="blurbText" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Percent,100" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="blurbText" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="networkComboBox" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,Absolute,20" /><Rows Styles="AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> True diff --git a/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.resx b/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.resx index 824cbe184..a55848bda 100644 --- a/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.resx +++ b/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.resx @@ -119,129 +119,30 @@ - 1 - - - True - - 2 - - True - - - - Fill - - - NoControl - - - - 0, 0 - - - 0, 0, 10, 0 - - - 88, 27 - - - 0 - - - Storage n&etwork: - - - MiddleLeft - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel2 - - - 0 - - - False - - - 101, 3 - - - 432, 21 - - - 11 - - - networkComboBox - - - XenAdmin.Controls.NetworkComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tableLayoutPanel2 - - - 1 - - - Top - - - 3, 36 - - - 1 - - - 608, 27 - - - 2 - - - tableLayoutPanel2 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="networkComboBox" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,100" /></TableLayoutSettings> - True + Fill NoControl + 3, 0 - - 0, 0, 0, 20 + + 3, 0, 3, 20 - 608, 33 + 608, 13 - 14 + 0 label3 @@ -256,8 +157,74 @@ tableLayoutPanel1 + 0 + + + Left, Right + + + False + + + 97, 36 + + + 3, 3, 80, 3 + + + 437, 21 + + + 2 + + + networkComboBox + + + XenAdmin.Controls.NetworkComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + 1 + + Left + + + True + + + NoControl + + + 3, 40 + + + 88, 13 + + + 1 + + + Storage n&etwork: + + + MiddleLeft + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 + Fill @@ -265,7 +232,7 @@ 0, 0 - 2 + 3 614, 332 @@ -286,7 +253,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="blurbText" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Percent,100" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="blurbText" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="networkComboBox" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,Absolute,20" /><Rows Styles="AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> True diff --git a/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.zh-CN.resx b/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.zh-CN.resx index 8ce4e2bba..f5cbf1fba 100644 --- a/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.zh-CN.resx +++ b/XenAdmin/Wizards/CrossPoolMigrateWizard/CrossPoolMigrateTransferNetworkPage.zh-CN.resx @@ -119,30 +119,87 @@ - 1 + 2 - + True - + + + Fill + + + NoControl + + + + 3, 0 + + + 3, 0, 3, 20 + + + 608, 13 + + + 0 + + + label3 + + + blurbText + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + Left, Right + + + False + + + 97, 36 + + + 3, 3, 80, 3 + + + 437, 21 + + 2 + + networkComboBox + + + XenAdmin.Controls.NetworkComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 1 + + + Left + True - - - Fill - NoControl - - 3, 8 - - - 3, 0, 10, 0 + 3, 40 90, 17 @@ -163,101 +220,11 @@ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - tableLayoutPanel2 + tableLayoutPanel1 - 0 - - - False - - - 106, 3 - - - 432, 21 - - - 11 - - - networkComboBox - - - XenAdmin.Controls.NetworkComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tableLayoutPanel2 - - - 1 - - - Top - - - 3, 78 - - - 1 - - - 608, 33 - - 2 - - tableLayoutPanel2 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="networkComboBox" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,100" /></TableLayoutSettings> - - - True - - - Fill - - - NoControl - - - 3, 0 - - - 0, 0, 0, 20 - - - 608, 33 - - - 14 - - - label3 - - - blurbText - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 1 - Fill @@ -265,7 +232,7 @@ 0, 0 - 2 + 3 768, 415 @@ -286,7 +253,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="blurbText" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Percent,100" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="blurbText" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="networkComboBox" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,Absolute,20" /><Rows Styles="AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> True diff --git a/XenAdmin/Wizards/CrossPoolMigrateWizard/Filters/CrossPoolMigrateCanMigrateFilter.cs b/XenAdmin/Wizards/CrossPoolMigrateWizard/Filters/CrossPoolMigrateCanMigrateFilter.cs index 8ae54ecb3..287565248 100644 --- a/XenAdmin/Wizards/CrossPoolMigrateWizard/Filters/CrossPoolMigrateCanMigrateFilter.cs +++ b/XenAdmin/Wizards/CrossPoolMigrateWizard/Filters/CrossPoolMigrateCanMigrateFilter.cs @@ -134,7 +134,7 @@ namespace XenAdmin.Wizards.CrossPoolMigrateWizard.Filters { lock (cacheLock) { - vmCache.Add(host.opaque_ref, reason); + vmCache[host.opaque_ref] = reason; } // vm is migratable to at least one host in the pool, no need to itearate through all the pool members vmIsMigratable = true; @@ -171,7 +171,7 @@ namespace XenAdmin.Wizards.CrossPoolMigrateWizard.Filters options); lock (cacheLock) { - vmCache.Add(host.opaque_ref, string.Empty); + vmCache[host.opaque_ref] = string.Empty; } // vm is migratable to at least one host in the pool, no need to itearate through all the pool members vmIsMigratable = true; @@ -186,14 +186,20 @@ namespace XenAdmin.Wizards.CrossPoolMigrateWizard.Filters lock (cacheLock) { - vmCache.Add(host.opaque_ref, disableReason.Clone().ToString()); + vmCache[host.opaque_ref] = disableReason.Clone().ToString(); } - log.ErrorFormat("VM: {0}, Host: {1} - Reason: {2};", vm.Name(), host.Name(), failure.Message); + log.InfoFormat("VM {0} cannot be migrated to {1}. Reason: {2};", vm.Name(), host.Name(), failure.Message); vmIsMigratable = false; } + catch (Exception e) + { + log.Error($"There was an error while asserting the VM {vm.Name()} can be migrated to {itemToFilterOn.Name()}:", e); + disableReason = Messages.HOST_MENU_UNKNOWN_ERROR; + vmIsMigratable = false; } + } // if at least one VM is not migratable to the target pool, then there is no point checking the remaining VMs if (!vmIsMigratable) diff --git a/XenAdmin/Wizards/CrossPoolMigrateWizard/IntraPoolCopyPage.Designer.cs b/XenAdmin/Wizards/CrossPoolMigrateWizard/IntraPoolCopyPage.Designer.cs index d47c0183c..186b29fce 100644 --- a/XenAdmin/Wizards/CrossPoolMigrateWizard/IntraPoolCopyPage.Designer.cs +++ b/XenAdmin/Wizards/CrossPoolMigrateWizard/IntraPoolCopyPage.Designer.cs @@ -96,7 +96,7 @@ resources.ApplyResources(this.srPicker1, "srPicker1"); this.srPicker1.Connection = null; this.srPicker1.Name = "srPicker1"; - this.srPicker1.SrSelectionChanged += new System.Action(this.srPicker1_SrSelectionChanged); + this.srPicker1.SelectedIndexChanged += new System.EventHandler(this.srPicker1_SelectedIndexChanged); // // labelSrHint // diff --git a/XenAdmin/Wizards/CrossPoolMigrateWizard/IntraPoolCopyPage.cs b/XenAdmin/Wizards/CrossPoolMigrateWizard/IntraPoolCopyPage.cs index 2e4192a86..bc74c2b42 100644 --- a/XenAdmin/Wizards/CrossPoolMigrateWizard/IntraPoolCopyPage.cs +++ b/XenAdmin/Wizards/CrossPoolMigrateWizard/IntraPoolCopyPage.cs @@ -49,44 +49,31 @@ namespace XenAdmin.Wizards.CrossPoolMigrateWizard } private bool _buttonNextEnabled; - private bool _buttonPreviousEnabled; - public bool CloneVM - { - get { return !tableLayoutPanelSrPicker.Enabled || CloneRadioButton.Checked; } - } + public bool CloneVM => !tableLayoutPanelSrPicker.Enabled || CloneRadioButton.Checked; - public SR SelectedSR - { - get { return srPicker1.SR; } - } + public SR SelectedSR => srPicker1.SR; - public string NewVmName - { - get { return NameTextBox.Text; } - } + public string NewVmName => NameTextBox.Text; - public string NewVMmDescription - { - get { return DescriptionTextBox.Text; } - } + public string NewVMmDescription => DescriptionTextBox.Text; #region Base class (XenTabPage) overrides /// /// Gets the page's title (headline) /// - public override string PageTitle { get { return Messages.CPM_WIZARD_INTRA_POOL_COPY_TITLE; } } + public override string PageTitle => Messages.CPM_WIZARD_INTRA_POOL_COPY_TITLE; /// /// Gets the page's label in the (left hand side) wizard progress panel /// - public override string Text { get { return Messages.CPM_WIZARD_INTRA_POOL_COPY_TAB_TITLE; } } + public override string Text => Messages.CPM_WIZARD_INTRA_POOL_COPY_TAB_TITLE; /// /// Gets the value by which the help files section for this page is identified /// - public override string HelpID { get { return "IntraPoolCopy"; } } + public override string HelpID => "IntraPoolCopy"; protected override bool ImplementsIsDirty() { @@ -95,7 +82,7 @@ namespace XenAdmin.Wizards.CrossPoolMigrateWizard protected override void PageLoadedCore(PageLoadedDirection direction) { - SetButtonsEnabled(true); + UpdateButtons(); } public override void PopulatePage() @@ -154,43 +141,37 @@ namespace XenAdmin.Wizards.CrossPoolMigrateWizard return _buttonNextEnabled; } - public override bool EnablePrevious() - { - return _buttonPreviousEnabled; - } - protected override void PageLeaveCore(PageLoadedDirection direction, ref bool cancel) { - var l = new List(); - l.Add(TheVM); + if (direction != PageLoadedDirection.Forward) + return; + + var l = new List {TheVM}; if (!CrossPoolMigrateWizard.AllVMsAvailable(l)) - { cancel = true; - SetButtonsEnabled(false); - } } #endregion - private void SetButtonsEnabled(bool enabled) + private void UpdateButtons() { - _buttonNextEnabled = enabled; - _buttonPreviousEnabled = enabled; + if (string.IsNullOrEmpty(NameTextBox.Text.Trim())) + _buttonNextEnabled = false; + else if (CopyRadioButton.Checked) + _buttonNextEnabled = srPicker1.SR != null; + else + _buttonNextEnabled = true; + OnPageUpdated(); } - private void srPicker1_SrSelectionChanged(object obj) + private void srPicker1_SelectedIndexChanged(object sender, EventArgs e) { - EnableMoveButton(); + UpdateButtons(); } private void NameTextBox_TextChanged(object sender, EventArgs e) { - EnableMoveButton(); - } - - private void EnableMoveButton() - { - _buttonNextEnabled = NameTextBox.Text.Trim().Length > 0 && srPicker1.SR != null; + UpdateButtons(); } private static string GetDefaultCopyName(VM vmToCopy) @@ -207,6 +188,7 @@ namespace XenAdmin.Wizards.CrossPoolMigrateWizard { // Since the radiobuttons aren't in the same panel, we have to do manual mutual exclusion CopyRadioButton.Checked = !CloneRadioButton.Checked; + UpdateButtons(); } private void CopyRadioButton_CheckedChanged(object sender, EventArgs e) @@ -214,6 +196,7 @@ namespace XenAdmin.Wizards.CrossPoolMigrateWizard tableLayoutPanelSrPicker.Enabled = CopyRadioButton.Checked; // Since the radiobuttons aren't in the same panel, we have to do manual mutual exclusion CloneRadioButton.Checked = !CopyRadioButton.Checked; + UpdateButtons(); } } } diff --git a/XenAdmin/Wizards/DRWizards/DRFailoverWizardPrecheckPage.resx b/XenAdmin/Wizards/DRWizards/DRFailoverWizardPrecheckPage.resx index adffe0b21..72678115a 100644 --- a/XenAdmin/Wizards/DRWizards/DRFailoverWizardPrecheckPage.resx +++ b/XenAdmin/Wizards/DRWizards/DRFailoverWizardPrecheckPage.resx @@ -139,7 +139,7 @@ 13 - &View only precheck failures/issues + &View only pre-check failures/issues checkBoxViewPrecheckFailuresOnly @@ -217,7 +217,7 @@ 14 - Failover prechecks completed: {0} issues found + Failover pre-checks completed: {0} issues found labelPrecheckStatus @@ -391,7 +391,7 @@ 7 - Failover prechecks are performed to ensure that the selected vApps and VMs can be failed over. Please take appropriate action to resolve any issues. + Failover pre-checks are performed to ensure that the selected vApps and VMs can be failed over. Please take appropriate action to resolve any issues. labelPrechecksFirstLine @@ -451,7 +451,7 @@ 0 - You need to resolve the issues found during prechecks before you can continue. + You need to resolve the issues found during pre-checks before you can continue. MiddleLeft diff --git a/XenAdmin/Wizards/ExportWizard/ExportAppliancePage.cs b/XenAdmin/Wizards/ExportWizard/ExportAppliancePage.cs index fe6f60205..7b173041d 100644 --- a/XenAdmin/Wizards/ExportWizard/ExportAppliancePage.cs +++ b/XenAdmin/Wizards/ExportWizard/ExportAppliancePage.cs @@ -109,8 +109,11 @@ namespace XenAdmin.Wizards.ExportWizard protected override void PageLoadedCore(PageLoadedDirection direction) { - if (direction == PageLoadedDirection.Forward) - PerformCheck(CheckPathValid); + if (direction == PageLoadedDirection.Forward) + { + m_textBoxFolderName.Text = Win32.GetKnownFolderPath(Win32.KnownFolders.Downloads); + PerformCheck(CheckPathValid); + } } protected override void PageLeaveCore(PageLoadedDirection direction, ref bool cancel) @@ -211,7 +214,7 @@ namespace XenAdmin.Wizards.ExportWizard if (Directory.Exists(ApplianceDirectory)) return true; - error = Messages.EXPORT_APPLIANCE_PAGE_ERROR_NON_EXIST_DIR; + error = Messages.ERROR_DESTINATION_DIR_NON_EXIST; return false; } @@ -234,7 +237,11 @@ namespace XenAdmin.Wizards.ExportWizard private void m_buttonBrowse_Click(object sender, EventArgs e) { - using (FolderBrowserDialog dlog = new FolderBrowserDialog { Description = Messages.FOLDER_BROWSER_EXPORT_APPLIANCE }) + using (var dlog = new FolderBrowserDialog + { + Description = Messages.FOLDER_BROWSER_EXPORT_APPLIANCE, + SelectedPath = ApplianceDirectory + }) { if (dlog.ShowDialog() == DialogResult.OK) m_textBoxFolderName.Text = dlog.SelectedPath; diff --git a/XenAdmin/Wizards/GenericPages/NewVMGroupVMsPage.cs b/XenAdmin/Wizards/GenericPages/NewVMGroupVMsPage.cs index a2e4bf44b..88bc67fde 100644 --- a/XenAdmin/Wizards/GenericPages/NewVMGroupVMsPage.cs +++ b/XenAdmin/Wizards/GenericPages/NewVMGroupVMsPage.cs @@ -185,7 +185,7 @@ namespace XenAdmin.Wizards.GenericPages Cells.Add(_nameCell); Cells.Add(_descriptionCell); Cells.Add(_currentGroupCell); - if (VMGroup.isQuescingSupported) + if (VMGroup.IsQuiescingSupported(vm.Connection)) { _quiesce_supported = new DataGridViewTextBoxCell(); Cells.Add(_quiesce_supported); @@ -200,7 +200,7 @@ namespace XenAdmin.Wizards.GenericPages _descriptionCell.Value = Vm.Description(); T group = Vm.Connection.Resolve(VMGroup.VmToGroup(Vm)); _currentGroupCell.Value = group == null ? Messages.NONE : group.Name(); - if(VMGroup.isQuescingSupported) + if(VMGroup.IsQuiescingSupported(Vm.Connection)) { if (Vm.allowed_operations.Contains((vm_operations.snapshot_with_quiesce)) && !Helpers.FeatureForbidden(Vm, Host.RestrictVss)) { @@ -222,7 +222,7 @@ namespace XenAdmin.Wizards.GenericPages private T _group = null; private void RefreshTab(T group) { - ColumnQuiesceSupported.Visible = VMGroup.isQuescingSupported; + ColumnQuiesceSupported.Visible = VMGroup.IsQuiescingSupported(Pool?.Connection); _group = group; if (Pool != null) { diff --git a/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.Designer.cs b/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.Designer.cs index 34775f882..dccd52d1a 100644 --- a/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.Designer.cs +++ b/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.Designer.cs @@ -34,7 +34,6 @@ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SelectMultipleVMDestinationPage)); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.m_labelIntro = new XenAdmin.Controls.Common.AutoHeightLabel(); - this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); this.label1 = new System.Windows.Forms.Label(); this.m_comboBoxConnection = new XenAdmin.Controls.EnableableComboBox(); this.label2 = new System.Windows.Forms.Label(); @@ -45,7 +44,6 @@ this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.labelWarning = new System.Windows.Forms.Label(); this.tableLayoutPanel1.SuspendLayout(); - this.tableLayoutPanel2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.m_dataGridView)).BeginInit(); this.tableLayoutPanelWarning.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); @@ -55,7 +53,8 @@ // resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); this.tableLayoutPanel1.Controls.Add(this.m_labelIntro, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.m_comboBoxConnection, 1, 1); this.tableLayoutPanel1.Controls.Add(this.label2, 0, 2); this.tableLayoutPanel1.Controls.Add(this.m_dataGridView, 0, 3); this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanelWarning, 0, 4); @@ -64,15 +63,9 @@ // m_labelIntro // resources.ApplyResources(this.m_labelIntro, "m_labelIntro"); + this.tableLayoutPanel1.SetColumnSpan(this.m_labelIntro, 2); this.m_labelIntro.Name = "m_labelIntro"; // - // tableLayoutPanel2 - // - resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2"); - this.tableLayoutPanel2.Controls.Add(this.label1, 0, 0); - this.tableLayoutPanel2.Controls.Add(this.m_comboBoxConnection, 1, 0); - this.tableLayoutPanel2.Name = "tableLayoutPanel2"; - // // label1 // resources.ApplyResources(this.label1, "label1"); @@ -90,6 +83,7 @@ // label2 // resources.ApplyResources(this.label2, "label2"); + this.tableLayoutPanel1.SetColumnSpan(this.label2, 2); this.label2.Name = "label2"; // // m_dataGridView @@ -104,6 +98,7 @@ this.m_dataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.m_colVmName, this.m_colTarget}); + this.tableLayoutPanel1.SetColumnSpan(this.m_dataGridView, 2); resources.ApplyResources(this.m_dataGridView, "m_dataGridView"); this.m_dataGridView.Name = "m_dataGridView"; this.m_dataGridView.RowHeadersVisible = false; @@ -126,6 +121,7 @@ // tableLayoutPanelWarning // resources.ApplyResources(this.tableLayoutPanelWarning, "tableLayoutPanelWarning"); + this.tableLayoutPanel1.SetColumnSpan(this.tableLayoutPanelWarning, 2); this.tableLayoutPanelWarning.Controls.Add(this.pictureBox1, 0, 0); this.tableLayoutPanelWarning.Controls.Add(this.labelWarning, 1, 0); this.tableLayoutPanelWarning.Name = "tableLayoutPanelWarning"; @@ -150,8 +146,6 @@ this.Name = "SelectMultipleVMDestinationPage"; this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); - this.tableLayoutPanel2.ResumeLayout(false); - this.tableLayoutPanel2.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.m_dataGridView)).EndInit(); this.tableLayoutPanelWarning.ResumeLayout(false); this.tableLayoutPanelWarning.PerformLayout(); @@ -166,7 +160,6 @@ private XenAdmin.Controls.Common.AutoHeightLabel m_labelIntro; private System.Windows.Forms.Label label2; private System.Windows.Forms.DataGridView m_dataGridView; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; private System.Windows.Forms.Label label1; private XenAdmin.Controls.EnableableComboBox m_comboBoxConnection; private System.Windows.Forms.DataGridViewTextBoxColumn m_colVmName; diff --git a/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.cs b/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.cs index 54aa82468..37e76fb35 100755 --- a/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.cs +++ b/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.cs @@ -412,7 +412,8 @@ namespace XenAdmin.Wizards.GenericPages cb.Items.Add(item); item.ParentComboBox = cb; item.PreferAsSelectedItem = m_selectedObject != null && m_selectedObject.opaque_ref == host.opaque_ref || - target.Item.opaque_ref == host.opaque_ref; + target.Item.opaque_ref == host.opaque_ref || + sortedHosts.Count == 1; item.ReasonUpdated += DelayLoadedGridComboBoxItem_ReasonChanged; item.LoadAsync(); } @@ -538,6 +539,9 @@ namespace XenAdmin.Wizards.GenericPages try { var selectedValue = cb.Value; + if (cb.DataGridView == null) + return; + cb.DataGridView.RefreshEdit(); if (item.Enabled && item.PreferAsSelectedItem) cb.Value = item; @@ -564,12 +568,12 @@ namespace XenAdmin.Wizards.GenericPages Program.BeginInvoke(this, PopulateComboBox); } - private void xenConnection_CachePopulated(object sender, EventArgs e) + private void xenConnection_CachePopulated(IXenConnection conn) { Program.Invoke(this, PopulateComboBox); } - private void xenConnection_ConnectionStateChanged(object sender, EventArgs e) + private void xenConnection_ConnectionStateChanged(IXenConnection conn) { Program.Invoke(this, PopulateComboBox); } @@ -641,6 +645,8 @@ namespace XenAdmin.Wizards.GenericPages { m_dataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit); IsDirty = true; + if (!m_buttonNextEnabled) + SetButtonNextEnabled(true); } #endregion diff --git a/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.ja.resx b/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.ja.resx index b994836dc..d8f637a26 100644 --- a/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.ja.resx +++ b/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.ja.resx @@ -119,7 +119,7 @@ - 1 + 2 True @@ -139,7 +139,7 @@ 3, 0, 3, 10 - 612, 1 + 612, 13 0 @@ -159,15 +159,6 @@ 0 - - True - - - GrowAndShrink - - - 2 - Left @@ -190,16 +181,16 @@ label1 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - tableLayoutPanel2 + tableLayoutPanel1 - 0 + 1 - - Fill + + Left, Right 96, 3 @@ -217,40 +208,10 @@ XenAdmin.Controls.EnableableComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - tableLayoutPanel2 - - - 1 - - - Fill - - - 3, 19 - - - 1 - - - 615, 32 - - - 1 - - - tableLayoutPanel2 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tableLayoutPanel1 - - 1 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_comboBoxConnection" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="Percent,100" /></TableLayoutSettings> + + 2 True @@ -277,7 +238,7 @@ label2 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -285,18 +246,18 @@ 2 - + True - + VM 48 - + True - + ホーム サーバー @@ -306,6 +267,9 @@ 3, 78 + + 3, 3, 3, 10 + 612, 245 @@ -316,13 +280,13 @@ m_dataGridView - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 3 + 4 True @@ -349,7 +313,7 @@ pictureBox1 - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanelWarning @@ -376,7 +340,7 @@ labelWarning - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanelWarning @@ -390,9 +354,6 @@ 3, 305 - - 3, 10, 3, 3 - 1 @@ -406,13 +367,13 @@ tableLayoutPanelWarning - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 4 + 5 <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelWarning" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> @@ -436,7 +397,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -445,11 +406,11 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanelWarning" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_comboBoxConnection" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_dataGridView" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanelWarning" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings> - + True - + 96, 96 @@ -460,7 +421,7 @@ m_colVmName - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_colTarget diff --git a/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.resx b/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.resx index ce852f56e..f0037c034 100644 --- a/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.resx +++ b/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.resx @@ -119,7 +119,7 @@ - 1 + 2 True @@ -159,15 +159,6 @@ 0 - - True - - - GrowAndShrink - - - 2 - Left @@ -175,7 +166,7 @@ True - 3, 7 + 3, 30 81, 13 @@ -190,22 +181,22 @@ label1 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - tableLayoutPanel2 + tableLayoutPanel1 - 0 + 1 - - Fill + + Left, Right - 90, 3 + 90, 26 - 519, 21 + 525, 21 1 @@ -217,40 +208,10 @@ XenAdmin.Controls.EnableableComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - tableLayoutPanel2 - - - 1 - - - Fill - - - 3, 26 - - - 1 - - - 612, 27 - - - 1 - - - tableLayoutPanel2 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tableLayoutPanel1 - - 1 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_comboBoxConnection" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="Percent,100" /></TableLayoutSettings> + + 2 True @@ -259,7 +220,7 @@ NoControl - 3, 66 + 3, 60 3, 10, 3, 0 @@ -277,26 +238,26 @@ label2 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 2 + 3 - + True - + VM 48 - + True - + Home Server @@ -304,10 +265,13 @@ Fill - 3, 82 + 3, 76 + + + 3, 3, 3, 10 - 612, 210 + 612, 216 3 @@ -316,13 +280,13 @@ m_dataGridView - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 3 + 4 True @@ -349,7 +313,7 @@ pictureBox1 - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanelWarning @@ -376,7 +340,7 @@ labelWarning - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanelWarning @@ -390,9 +354,6 @@ 3, 305 - - 3, 10, 3, 3 - 1 @@ -406,13 +367,13 @@ tableLayoutPanelWarning - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 4 + 5 <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelWarning" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> @@ -436,7 +397,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -445,11 +406,11 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanelWarning" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_comboBoxConnection" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_dataGridView" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanelWarning" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings> - + True - + 96, 96 @@ -460,7 +421,7 @@ m_colVmName - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_colTarget diff --git a/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.zh-CN.resx b/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.zh-CN.resx index c64ab2abc..74dd3a3c2 100644 --- a/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.zh-CN.resx +++ b/XenAdmin/Wizards/GenericPages/SelectMultipleVMDestinationPage.zh-CN.resx @@ -119,7 +119,7 @@ - 1 + 2 True @@ -159,15 +159,6 @@ 0 - - True - - - GrowAndShrink - - - 2 - Left @@ -190,16 +181,16 @@ label1 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - tableLayoutPanel2 + tableLayoutPanel1 - 0 + 1 - - Fill + + Left, Right 96, 3 @@ -217,40 +208,10 @@ XenAdmin.Controls.EnableableComboBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - tableLayoutPanel2 - - - 1 - - - Fill - - - 3, 19 - - - 1 - - - 615, 32 - - - 1 - - - tableLayoutPanel2 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tableLayoutPanel1 - - 1 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_comboBoxConnection" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="Percent,100" /></TableLayoutSettings> + + 2 True @@ -259,13 +220,13 @@ NoControl - 3, 58 + 3, 60 3, 10, 3, 0 - 216, 17 + 196, 13 2 @@ -277,26 +238,26 @@ label2 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 2 + 3 - + True - + VM 48 - + True - + 主服务器 @@ -306,6 +267,9 @@ 3, 78 + + 3, 3, 3, 10 + 612, 245 @@ -316,13 +280,13 @@ m_dataGridView - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 3 + 4 True @@ -349,7 +313,7 @@ pictureBox1 - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanelWarning @@ -376,7 +340,7 @@ labelWarning - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanelWarning @@ -390,9 +354,6 @@ 3, 305 - - 3, 10, 3, 3 - 1 @@ -406,13 +367,13 @@ tableLayoutPanelWarning - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 - 4 + 5 <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelWarning" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> @@ -436,7 +397,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -445,11 +406,11 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanelWarning" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_comboBoxConnection" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_dataGridView" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanelWarning" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /></TableLayoutSettings> - + True - + 96, 96 @@ -460,7 +421,7 @@ m_colVmName - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_colTarget diff --git a/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.Designer.cs b/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.Designer.cs index 67fd77cc5..5c29a3c77 100644 --- a/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.Designer.cs +++ b/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.Designer.cs @@ -36,21 +36,33 @@ this.m_dataGridView = new System.Windows.Forms.DataGridView(); this.m_colVmNetwork = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.m_colTargetNet = new System.Windows.Forms.DataGridViewComboBoxColumn(); + this.m_buttonRefresh = new System.Windows.Forms.Button(); + this.tableLayoutPanelError = new System.Windows.Forms.TableLayoutPanel(); + this.pictureBoxError = new System.Windows.Forms.PictureBox(); + this.labelError = new System.Windows.Forms.Label(); + this.m_checkBoxMac = new System.Windows.Forms.CheckBox(); + this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); this.tableLayoutPanel1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.m_dataGridView)).BeginInit(); + this.tableLayoutPanelError.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxError)).BeginInit(); this.SuspendLayout(); // // tableLayoutPanel1 // resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); this.tableLayoutPanel1.Controls.Add(this.m_labelIntro, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.label2, 0, 2); - this.tableLayoutPanel1.Controls.Add(this.m_dataGridView, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.label2, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.m_dataGridView, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.m_buttonRefresh, 1, 3); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanelError, 0, 4); + this.tableLayoutPanel1.Controls.Add(this.m_checkBoxMac, 0, 3); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; // // m_labelIntro // resources.ApplyResources(this.m_labelIntro, "m_labelIntro"); + this.tableLayoutPanel1.SetColumnSpan(this.m_labelIntro, 2); this.m_labelIntro.Name = "m_labelIntro"; // // label2 @@ -78,11 +90,12 @@ this.m_dataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.m_colVmNetwork, this.m_colTargetNet}); + this.tableLayoutPanel1.SetColumnSpan(this.m_dataGridView, 2); resources.ApplyResources(this.m_dataGridView, "m_dataGridView"); this.m_dataGridView.Name = "m_dataGridView"; this.m_dataGridView.RowHeadersVisible = false; - this.m_dataGridView.CurrentCellDirtyStateChanged += new System.EventHandler(this.m_dataGridView_CurrentCellDirtyStateChanged); this.m_dataGridView.CellEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.m_dataGridView_CellEnter); + this.m_dataGridView.CurrentCellDirtyStateChanged += new System.EventHandler(this.m_dataGridView_CurrentCellDirtyStateChanged); // // m_colVmNetwork // @@ -97,6 +110,44 @@ resources.ApplyResources(this.m_colTargetNet, "m_colTargetNet"); this.m_colTargetNet.Name = "m_colTargetNet"; // + // m_buttonRefresh + // + resources.ApplyResources(this.m_buttonRefresh, "m_buttonRefresh"); + this.m_buttonRefresh.Name = "m_buttonRefresh"; + this.m_buttonRefresh.UseVisualStyleBackColor = true; + this.m_buttonRefresh.Click += new System.EventHandler(this.buttonRefresh_Click); + // + // tableLayoutPanelError + // + resources.ApplyResources(this.tableLayoutPanelError, "tableLayoutPanelError"); + this.tableLayoutPanel1.SetColumnSpan(this.tableLayoutPanelError, 2); + this.tableLayoutPanelError.Controls.Add(this.pictureBoxError, 0, 0); + this.tableLayoutPanelError.Controls.Add(this.labelError, 1, 0); + this.tableLayoutPanelError.Name = "tableLayoutPanelError"; + // + // pictureBoxError + // + resources.ApplyResources(this.pictureBoxError, "pictureBoxError"); + this.pictureBoxError.Name = "pictureBoxError"; + this.pictureBoxError.TabStop = false; + // + // labelError + // + resources.ApplyResources(this.labelError, "labelError"); + this.labelError.Name = "labelError"; + // + // m_checkBoxMac + // + resources.ApplyResources(this.m_checkBoxMac, "m_checkBoxMac"); + this.m_checkBoxMac.Name = "m_checkBoxMac"; + this.m_checkBoxMac.UseVisualStyleBackColor = true; + // + // backgroundWorker1 + // + this.backgroundWorker1.WorkerSupportsCancellation = true; + this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork); + this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted); + // // SelectMultipleVMNetworkPage // resources.ApplyResources(this, "$this"); @@ -106,17 +157,26 @@ this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.m_dataGridView)).EndInit(); + this.tableLayoutPanelError.ResumeLayout(false); + this.tableLayoutPanelError.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxError)).EndInit(); this.ResumeLayout(false); } #endregion - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private XenAdmin.Controls.Common.AutoHeightLabel m_labelIntro; - private System.Windows.Forms.Label label2; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private XenAdmin.Controls.Common.AutoHeightLabel m_labelIntro; + private System.Windows.Forms.Label label2; private System.Windows.Forms.DataGridView m_dataGridView; private System.Windows.Forms.DataGridViewTextBoxColumn m_colVmNetwork; private System.Windows.Forms.DataGridViewComboBoxColumn m_colTargetNet; + private System.Windows.Forms.CheckBox m_checkBoxMac; + private System.Windows.Forms.Button m_buttonRefresh; + private System.ComponentModel.BackgroundWorker backgroundWorker1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanelError; + private System.Windows.Forms.PictureBox pictureBoxError; + private System.Windows.Forms.Label labelError; } } diff --git a/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.cs b/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.cs index 2c8caba61..ab6f9d21d 100644 --- a/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.cs +++ b/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.cs @@ -30,14 +30,16 @@ */ using System; +using System.Collections; using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; using System.Windows.Forms; using XenAdmin.Controls; using XenAdmin.Core; using XenAdmin.Mappings; using XenAdmin.Network; using XenAPI; -using System.Linq; using XenCenterLib; namespace XenAdmin.Wizards.GenericPages @@ -50,38 +52,47 @@ namespace XenAdmin.Wizards.GenericPages { private bool m_buttonNextEnabled; private bool m_buttonPreviousEnabled; + private Dictionary m_vmMappings; - private class NetworkDetail + private struct NetworkDetail { public string SysId { get; set; } public string NetworkId { get; set; } } - - private Dictionary m_vmMappings; - public SelectMultipleVMNetworkPage() + protected SelectMultipleVMNetworkPage() { InitializeComponent(); - InitializeText(); } - public void InitializeText() + protected override void OnLoad(EventArgs e) { + base.OnLoad(e); + m_labelIntro.Text = IntroductionText; label2.Text = TableIntroductionText; m_colVmNetwork.HeaderText = NetworkColumnHeaderText; + m_checkBoxMac.Visible = ShowReserveMacAddressesCheckBox; + m_buttonRefresh.Visible = ShowRefreshButton; } - protected virtual string NetworkColumnHeaderText + protected virtual string NetworkColumnHeaderText => m_colVmNetwork.HeaderText; + protected virtual bool ShowReserveMacAddressesCheckBox => false; + protected virtual bool ShowRefreshButton => false; + protected virtual bool LoadsRemoteData => false; + + protected abstract string IntroductionText { get; } + protected abstract string TableIntroductionText { get; } + protected abstract NetworkResourceContainer NetworkData(string sysId); + + protected virtual bool AllowSriovNetwork(XenAPI.Network network, string sysId) { - get - { - return m_colVmNetwork.HeaderText; - } + return true; } - public abstract string IntroductionText { get; } - public abstract string TableIntroductionText { get; } + protected virtual void LoadNetworkData() + { + } private IXenConnection targetConnection; /// @@ -99,91 +110,106 @@ namespace XenAdmin.Wizards.GenericPages set { targetConnection = value; } } + public bool PreserveMAC => ShowReserveMacAddressesCheckBox && m_checkBoxMac.Checked; + protected override void PageLeaveCore(PageLoadedDirection direction, ref bool cancel) { targetConnection = null; } protected override void PageLoadedCore(PageLoadedDirection direction) - { + { SetButtonPreviousEnabled(true); SetButtonNextEnabled(true); } - public DataGridView DataTable - { - get { return m_dataGridView; } - } + public override void PageCancelled(ref bool cancel) + { + backgroundWorker1.CancelAsync(); + } public override void PopulatePage() - { - m_dataGridView.Rows.Clear(); - SetButtonNextEnabled(true); - FillTableRows(); - HelpersGUI.ResizeGridViewColumnToAllCells(m_colTargetNet);//set properly the width of the last column - } + { + m_dataGridView.Rows.Clear(); + SetButtonNextEnabled(false); - public abstract NetworkResourceContainer NetworkData(string sysId); + if (LoadsRemoteData) + { + m_buttonRefresh.Enabled = false; + pictureBoxError.Image = Images.StaticImages.ajax_loader; + labelError.Text = Messages.CONVERSION_NETWORK_PAGE_QUERYING_NETWORKS; + tableLayoutPanelError.Visible = true; + backgroundWorker1.RunWorkerAsync(); + } + else + { + FillTableRows(); + HelpersGUI.ResizeGridViewColumnToAllCells(m_colTargetNet);//set properly the width of the last column + } + } - private void FillTableRows() + protected virtual void FillTableRows() { foreach (var kvp in VmMappings) { string sysId = kvp.Key; var vmMapping = kvp.Value; - var cb = FillGridComboBox(vmMapping.XenRef, sysId); - - foreach (INetworkResource networkResource in NetworkData(sysId)) - { - var cellVmNetwork = CreateFormattedNetworkCell(sysId, networkResource.NetworkID, vmMapping.VmNameLabel, - networkResource.NetworkName, networkResource.MACAddress); - - DataGridViewRow row = new DataGridViewRow(); - row.Cells.Add(cellVmNetwork); - - var cbClone = (DataGridViewComboBoxCell)cb.Clone(); - - if (cbClone.Items.Count > 0) - { - cbClone.DisplayMember = ToStringWrapper.DisplayMember; - //this is the ToStringProperty - cbClone.ValueMember = ToStringWrapper.ValueMember; - //this is the ToStringWrapper object itself - cbClone.Value = cb.Items[0]; // Default selection of the combobox cell - - //Select the network if the names of the target and source networks match in the combobox cell - foreach (ToStringWrapper item in cb.Items) - { - if (item.ToStringProperty == networkResource.NetworkName) - cbClone.Value = item; - } - - row.Cells.Add(cbClone); - } - else - { - var cellError = new DataGridViewTextBoxCell { Value = Messages.IMPORT_SELECT_NETWORK_PAGE_NO_AVAIL_NETWORKS }; - row.Cells.Add(cellError); - cellError.ReadOnly = true; //this has to be set after the cell is added to a row - SetButtonNextEnabled(false); - } - - DataTable.Rows.Add(row); - } + FillTableRow(vmMapping.XenRef, sysId, vmMapping.VmNameLabel); } } - protected DataGridViewTextBoxCell CreateFormattedNetworkCell(string sysID, string networkID, string vmName, string netName, string macAddress) + protected void FillTableRow(object targetRef, string sysId, string vmName) { - return new DataGridViewTextBoxCell + var cb = FillGridComboBox(targetRef, sysId); + + foreach (INetworkResource networkResource in NetworkData(sysId)) { - Tag = new NetworkDetail { SysId = sysID, NetworkId = networkID }, - Value = string.Format("{0} - {1} ({2})", vmName, netName, macAddress) - }; + var val = networkResource.NetworkName; + if (!string.IsNullOrEmpty(vmName)) + val = $"{vmName} - {val}"; + if (!string.IsNullOrEmpty(networkResource.MACAddress)) + val = $"{val} ({networkResource.MACAddress})"; + + var cellSourceNetwork = new DataGridViewTextBoxCell + { + Tag = new NetworkDetail {SysId = sysId, NetworkId = networkResource.NetworkID}, + Value = val + }; + + DataGridViewRow row = new DataGridViewRow(); + row.Cells.Add(cellSourceNetwork); + + var cbClone = (DataGridViewComboBoxCell)cb.Clone(); + + if (cbClone.Items.Count > 0) + { + cbClone.DisplayMember = ToStringWrapper.DisplayMember; //ToStringProperty + cbClone.ValueMember = ToStringWrapper.ValueMember; //ToStringWrapper object itself + cbClone.Value = cb.Items[0]; // Default selection of the combobox cell + + //Select the network if the names of the target and source networks match in the combobox cell + foreach (ToStringWrapper item in cb.Items) + { + if (item.ToStringProperty == networkResource.NetworkName) + cbClone.Value = item; + } + + row.Cells.Add(cbClone); + } + else + { + var cellError = new DataGridViewTextBoxCell {Value = Messages.IMPORT_SELECT_NETWORK_PAGE_NO_AVAIL_NETWORKS}; + row.Cells.Add(cellError); + cellError.ReadOnly = true; //this has to be set after the cell is added to a row + SetButtonNextEnabled(false); + } + + m_dataGridView.Rows.Add(row); + } } - public override bool EnableNext() + public override bool EnableNext() { return m_buttonNextEnabled; } @@ -216,10 +242,26 @@ namespace XenAdmin.Wizards.GenericPages set { m_vmMappings = value; - InitializeText(); } } + public Dictionary RawMappings + { + get + { + var mappings = new Dictionary(); + + foreach (DataGridViewRow row in m_dataGridView.Rows) + { + var networkDetail = (NetworkDetail)row.Cells[0].Tag; + var selectedItem = row.Cells[1].Value as ToStringWrapper; + mappings.Add(networkDetail.NetworkId, selectedItem.ToString()); + } + + return mappings; + } + } + protected void SetButtonNextEnabled(bool enabled) { m_buttonNextEnabled = enabled; @@ -232,14 +274,11 @@ namespace XenAdmin.Wizards.GenericPages OnPageUpdated(); } - private DataGridViewComboBoxCell FillGridComboBox(object xenRef, string vsId) + private DataGridViewComboBoxCell FillGridComboBox(object targetRef, string vsId) { var cb = new DataGridViewComboBoxCell {FlatStyle = FlatStyle.Flat, Sorted = true}; - XenRef hostRef = xenRef as XenRef; - Host host = TargetConnection.Resolve(hostRef); - - var availableNetworks = TargetConnection.Cache.Networks.Where(net => ShowNetwork(host, net, vsId)); + var availableNetworks = TargetConnection.Cache.Networks.Where(net => ShowNetwork(targetRef, net, vsId)); foreach (XenAPI.Network netWork in availableNetworks) { @@ -255,7 +294,7 @@ namespace XenAdmin.Wizards.GenericPages return cb; } - private bool ShowNetwork(Host targetHost, XenAPI.Network network, string vsId) + private bool ShowNetwork(object targetRef, XenAPI.Network network, string vsId) { if (network.IsSriov() && !AllowSriovNetwork(network, vsId)) return false; @@ -266,6 +305,9 @@ namespace XenAdmin.Wizards.GenericPages if (network.IsSlave()) return false; + var targetHostRef = targetRef as XenRef; + Host targetHost = targetHostRef == null ? null : TargetConnection.Resolve(targetHostRef); + if (targetHost != null && !targetHost.CanSeeNetwork(network)) return false; @@ -275,12 +317,7 @@ namespace XenAdmin.Wizards.GenericPages return true; } - protected virtual bool AllowSriovNetwork(XenAPI.Network network, string sysId) - { - return true; - } - - private void m_dataGridView_CellEnter(object sender, DataGridViewCellEventArgs e) + private void m_dataGridView_CellEnter(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex != m_colTargetNet.Index || e.RowIndex < 0 || e.RowIndex >= m_dataGridView.RowCount) return; @@ -296,5 +333,37 @@ namespace XenAdmin.Wizards.GenericPages m_dataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit); IsDirty = true; } - } + + private void buttonRefresh_Click(object sender, EventArgs e) + { + PopulatePage(); + } + + private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) + { + LoadNetworkData(); + } + + private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + if (e.Cancelled) + { + tableLayoutPanelError.Visible = false; + return; + } + else if (e.Error != null) + { + pictureBoxError.Image = Images.StaticImages._000_error_h32bit_16; + labelError.Text = Messages.CONVERSION_NETWORK_PAGE_QUERYING_NETWORKS_FAILURE; + } + else + { + tableLayoutPanelError.Visible = false; + FillTableRows(); + HelpersGUI.ResizeGridViewColumnToAllCells(m_colTargetNet);//set properly the width of the last column + } + + m_buttonRefresh.Enabled = true; + } + } } diff --git a/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.ja.resx b/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.ja.resx index 7984e6608..caae17f9b 100644 --- a/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.ja.resx +++ b/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.ja.resx @@ -112,26 +112,29 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + - 1 + 2 True - + Fill - + 3, 3 + + 3, 0, 3, 15 + 557, 1 @@ -172,7 +175,7 @@ label2 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -180,7 +183,7 @@ 1 - + True @@ -189,7 +192,7 @@ 174 - + True @@ -211,7 +214,7 @@ m_dataGridView - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -219,6 +222,159 @@ 2 + + Top, Right + + + 485, 265 + + + 75, 23 + + + 5 + + + 更新(&R) + + + m_buttonRefresh + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + True + + + GrowAndShrink + + + 2 + + + Left + + + 3, 4 + + + 16, 16 + + + 0 + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 0 + + + Left, Right + + + True + + + 25, 5 + + + 529, 13 + + + 1 + + + label1 + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 1 + + + Fill + + + 3, 294 + + + 1 + + + 557, 24 + + + 6 + + + False + + + tableLayoutPanelError + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 4 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelError" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="Percent,100" /></TableLayoutSettings> + + + Left + + + True + + + 3, 268 + + + 176, 17 + + + 4 + + + 仮想 MAC アドレスを保持する(&P) + + + m_checkBoxMac + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 5 + Fill @@ -226,7 +382,7 @@ 0, 0 - 4 + 5 563, 321 @@ -238,7 +394,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -247,9 +403,12 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Absolute,20,AutoSize,0,Percent,100,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_buttonRefresh" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="tableLayoutPanelError" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_checkBoxMac" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,Absolute,30" /></TableLayoutSettings> - + + 17, 17 + + True @@ -262,13 +421,19 @@ m_colVmNetwork - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_colTargetNet - System.Windows.Forms.DataGridViewComboBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewComboBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + backgroundWorker1 + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 SelectMultipleVMNetworkPage diff --git a/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.resx b/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.resx index a9f122d17..bb9ad82bc 100644 --- a/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.resx +++ b/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.resx @@ -112,26 +112,29 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + - 1 + 2 True - + Fill - + 3, 0 + + 3, 0, 3, 15 + 557, 26 @@ -157,7 +160,7 @@ True - 3, 46 + 3, 41 207, 13 @@ -172,7 +175,7 @@ label2 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -180,7 +183,7 @@ 1 - + True @@ -189,7 +192,7 @@ 174 - + True @@ -199,10 +202,10 @@ Fill - 3, 62 + 3, 57 - 557, 256 + 557, 202 3 @@ -211,7 +214,7 @@ m_dataGridView - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -219,6 +222,159 @@ 2 + + Top, Right + + + 485, 265 + + + 75, 23 + + + 5 + + + &Refresh + + + m_buttonRefresh + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + True + + + GrowAndShrink + + + 2 + + + Left + + + 3, 4 + + + 16, 16 + + + 0 + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 0 + + + Left, Right + + + True + + + 25, 5 + + + 529, 13 + + + 1 + + + label1 + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 1 + + + Fill + + + 3, 294 + + + 1 + + + 557, 24 + + + 6 + + + False + + + tableLayoutPanelError + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 4 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelError" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="Percent,100" /></TableLayoutSettings> + + + Left + + + True + + + 3, 268 + + + 176, 17 + + + 4 + + + &Preserve virtual MAC addresses + + + m_checkBoxMac + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 5 + Fill @@ -226,7 +382,7 @@ 0, 0 - 4 + 5 563, 321 @@ -238,7 +394,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -247,9 +403,12 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Absolute,20,AutoSize,0,Percent,100,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_buttonRefresh" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="tableLayoutPanelError" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_checkBoxMac" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,Absolute,30" /></TableLayoutSettings> - + + 17, 17 + + True @@ -262,13 +421,19 @@ m_colVmNetwork - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_colTargetNet - System.Windows.Forms.DataGridViewComboBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewComboBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + backgroundWorker1 + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 SelectMultipleVMNetworkPage diff --git a/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.zh-CN.resx b/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.zh-CN.resx index 6293ec4b5..7c198446c 100644 --- a/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.zh-CN.resx +++ b/XenAdmin/Wizards/GenericPages/SelectMultipleVMNetworkPage.zh-CN.resx @@ -112,26 +112,29 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + - 1 + 2 True - + Fill - + 3, 3 + + 3, 0, 3, 15 + 557, 1 @@ -139,7 +142,7 @@ 0 - 将所导入 VM 中的虚拟网络接口映射到目标池或独立服务器中的网络。 + 将要导入的 VM 中的虚拟网络接口映射到目标池或独立服务器中的网络。 m_labelIntro @@ -166,13 +169,13 @@ 1 - 所导入 &VM 中的虚拟网络接口: + 所导入的 &VM 中的虚拟网络接口: label2 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -180,7 +183,7 @@ 1 - + True @@ -189,7 +192,7 @@ 174 - + True @@ -211,7 +214,7 @@ m_dataGridView - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -219,6 +222,159 @@ 2 + + Top, Right + + + 485, 265 + + + 75, 23 + + + 5 + + + 刷新(&R) + + + m_buttonRefresh + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 3 + + + True + + + GrowAndShrink + + + 2 + + + Left + + + 3, 4 + + + 16, 16 + + + 0 + + + pictureBoxError + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 0 + + + Left, Right + + + True + + + 25, 5 + + + 529, 13 + + + 1 + + + label1 + + + labelError + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelError + + + 1 + + + Fill + + + 3, 294 + + + 1 + + + 557, 24 + + + 6 + + + False + + + tableLayoutPanelError + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 4 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxError" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelError" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="Percent,100" /></TableLayoutSettings> + + + Left + + + True + + + 3, 268 + + + 176, 17 + + + 4 + + + 保留虚拟 MAC 地址(&P) + + + m_checkBoxMac + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 5 + Fill @@ -226,7 +382,7 @@ 0, 0 - 4 + 5 563, 321 @@ -238,7 +394,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -247,9 +403,12 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Absolute,20,AutoSize,0,Percent,100,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_buttonRefresh" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="tableLayoutPanelError" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_checkBoxMac" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,Absolute,30" /></TableLayoutSettings> - + + 17, 17 + + True @@ -262,13 +421,19 @@ m_colVmNetwork - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_colTargetNet - System.Windows.Forms.DataGridViewComboBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewComboBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + backgroundWorker1 + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 SelectMultipleVMNetworkPage diff --git a/XenAdmin/Wizards/GenericPages/SelectVMStorageWithMultipleVirtualDisksPage.zh-CN.resx b/XenAdmin/Wizards/GenericPages/SelectVMStorageWithMultipleVirtualDisksPage.zh-CN.resx index 2fd169e79..a5d987495 100644 --- a/XenAdmin/Wizards/GenericPages/SelectVMStorageWithMultipleVirtualDisksPage.zh-CN.resx +++ b/XenAdmin/Wizards/GenericPages/SelectVMStorageWithMultipleVirtualDisksPage.zh-CN.resx @@ -154,7 +154,7 @@ 0 - 将所导入 VM 中的虚拟磁盘放在目标池或独立服务器中的存储库(SR)上。 + 将要导入的 VM 中的虚拟磁盘放在目标池或独立服务器中的存储库(SR)上。 m_labelIntro diff --git a/XenAdmin/Wizards/HAWizard_Pages/AssignPriorities.cs b/XenAdmin/Wizards/HAWizard_Pages/AssignPriorities.cs index ed09baca0..70d168032 100755 --- a/XenAdmin/Wizards/HAWizard_Pages/AssignPriorities.cs +++ b/XenAdmin/Wizards/HAWizard_Pages/AssignPriorities.cs @@ -194,6 +194,9 @@ namespace XenAdmin.Wizards.HAWizard_Pages private void DeregisterEvents() { + if (connection == null) + return; + // Remove listeners connection.Cache.DeregisterCollectionChanged(VM_CollectionChangedWithInvoke); diff --git a/XenAdmin/Wizards/HAWizard_Pages/AssignPriorities.ja.resx b/XenAdmin/Wizards/HAWizard_Pages/AssignPriorities.ja.resx index 3664c7078..b754efbbb 100644 --- a/XenAdmin/Wizards/HAWizard_Pages/AssignPriorities.ja.resx +++ b/XenAdmin/Wizards/HAWizard_Pages/AssignPriorities.ja.resx @@ -493,7 +493,7 @@ True - + 5 @@ -601,7 +601,7 @@ 1 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxStatus" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelHaStatus" Row="0" RowSpan="1" Column="1" ColumnSpan="5" /><Control Name="labelProtectionLevel" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_dropDownButtonRestartPriority" Row="2" RowSpan="1" Column="2" ColumnSpan="2" /><Control Name="labelStartOrder" Row="3" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="nudOrder" Row="3" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="labelStartDelay" Row="4" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="nudStartDelay" Row="4" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="labelStartDelayUnits" Row="4" RowSpan="1" Column="4" ColumnSpan="1" /><Control Name="linkLabelTellMeMore" Row="5" RowSpan="1" Column="0" ColumnSpan="5" /><Control Name="haNtolIndicator" Row="2" RowSpan="4" Column="5" ColumnSpan="1" /><Control Name="dataGridViewVms" Row="1" RowSpan="1" Column="0" ColumnSpan="6" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxStatus" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelHaStatus" Row="0" RowSpan="1" Column="1" ColumnSpan="5" /><Control Name="labelProtectionLevel" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_dropDownButtonRestartPriority" Row="2" RowSpan="1" Column="2" ColumnSpan="2" /><Control Name="labelStartOrder" Row="3" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="nudOrder" Row="3" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="labelStartDelay" Row="4" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="nudStartDelay" Row="4" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="labelStartDelayUnits" Row="4" RowSpan="1" Column="4" ColumnSpan="1" /><Control Name="linkLabelTellMeMore" Row="5" RowSpan="1" Column="0" ColumnSpan="5" /><Control Name="haNtolIndicator" Row="2" RowSpan="4" Column="5" ColumnSpan="1" /><Control Name="dataGridViewVms" Row="1" RowSpan="1" Column="0" ColumnSpan="6" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> NoControl diff --git a/XenAdmin/Wizards/HAWizard_Pages/AssignPriorities.zh-CN.resx b/XenAdmin/Wizards/HAWizard_Pages/AssignPriorities.zh-CN.resx index cc8f19750..4b77d856c 100644 --- a/XenAdmin/Wizards/HAWizard_Pages/AssignPriorities.zh-CN.resx +++ b/XenAdmin/Wizards/HAWizard_Pages/AssignPriorities.zh-CN.resx @@ -601,7 +601,7 @@ 1 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxStatus" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelHaStatus" Row="0" RowSpan="1" Column="1" ColumnSpan="5" /><Control Name="labelProtectionLevel" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_dropDownButtonRestartPriority" Row="2" RowSpan="1" Column="2" ColumnSpan="2" /><Control Name="labelStartOrder" Row="3" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="nudOrder" Row="3" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="labelStartDelay" Row="4" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="nudStartDelay" Row="4" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="labelStartDelayUnits" Row="4" RowSpan="1" Column="4" ColumnSpan="1" /><Control Name="linkLabelTellMeMore" Row="5" RowSpan="1" Column="0" ColumnSpan="5" /><Control Name="haNtolIndicator" Row="2" RowSpan="4" Column="5" ColumnSpan="1" /><Control Name="dataGridViewVms" Row="1" RowSpan="1" Column="0" ColumnSpan="6" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxStatus" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelHaStatus" Row="0" RowSpan="1" Column="1" ColumnSpan="5" /><Control Name="labelProtectionLevel" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_dropDownButtonRestartPriority" Row="2" RowSpan="1" Column="2" ColumnSpan="2" /><Control Name="labelStartOrder" Row="3" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="nudOrder" Row="3" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="labelStartDelay" Row="4" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="nudStartDelay" Row="4" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="labelStartDelayUnits" Row="4" RowSpan="1" Column="4" ColumnSpan="1" /><Control Name="linkLabelTellMeMore" Row="5" RowSpan="1" Column="0" ColumnSpan="5" /><Control Name="haNtolIndicator" Row="2" RowSpan="4" Column="5" ColumnSpan="1" /><Control Name="dataGridViewVms" Row="1" RowSpan="1" Column="0" ColumnSpan="6" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> NoControl diff --git a/XenAdmin/Wizards/ImportWizard/ImportBootOptionPage.cs b/XenAdmin/Wizards/ImportWizard/ImportBootOptionPage.cs index 3a6d2cfeb..e927eb3f1 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportBootOptionPage.cs +++ b/XenAdmin/Wizards/ImportWizard/ImportBootOptionPage.cs @@ -30,6 +30,7 @@ */ using XenAdmin.Controls; +using XenAdmin.Actions.VMActions; namespace XenAdmin.Wizards.ImportWizard { @@ -77,8 +78,37 @@ namespace XenAdmin.Wizards.ImportWizard #region Accessors - public Actions.VMActions.BootMode SelectedBootMode { get { return bootModesControl1.SelectedOption; } } - + public BootMode SelectedBootMode => bootModesControl1.SelectedOption; + + public string BootParams + { + get + { + switch (SelectedBootMode) + { + case BootMode.UEFI_BOOT: + case BootMode.UEFI_SECURE_BOOT: + return "firmware=uefi;"; + default: + return string.Empty; + } + } + } + + public string PlatformSettings + { + get + { + switch (SelectedBootMode) + { + case BootMode.UEFI_SECURE_BOOT: + return "secureboot=true;"; + default: + return string.Empty; + } + } + } + #endregion } } diff --git a/XenAdmin/Wizards/ImportWizard/ImportFinishPage.Designer.cs b/XenAdmin/Wizards/ImportWizard/ImportFinishPage.Designer.cs index 669fcf4ee..0292d78e0 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportFinishPage.Designer.cs +++ b/XenAdmin/Wizards/ImportWizard/ImportFinishPage.Designer.cs @@ -31,47 +31,23 @@ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ImportFinishPage)); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.m_groupBox = new XenAdmin.Controls.DecentGroupBox(); - this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); - this.m_label = new XenAdmin.Controls.Common.AutoHeightLabel(); this.m_checkBoxStartVms = new System.Windows.Forms.CheckBox(); this.m_labelIntro = new XenAdmin.Controls.Common.AutoHeightLabel(); this.m_dataGridView = new System.Windows.Forms.DataGridView(); this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.tableLayoutPanel1.SuspendLayout(); - this.m_groupBox.SuspendLayout(); - this.tableLayoutPanel2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.m_dataGridView)).BeginInit(); this.SuspendLayout(); // // tableLayoutPanel1 // resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); - this.tableLayoutPanel1.Controls.Add(this.m_groupBox, 0, 4); + this.tableLayoutPanel1.Controls.Add(this.m_checkBoxStartVms, 0, 2); this.tableLayoutPanel1.Controls.Add(this.m_labelIntro, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.m_dataGridView, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.m_dataGridView, 0, 1); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; // - // m_groupBox - // - resources.ApplyResources(this.m_groupBox, "m_groupBox"); - this.m_groupBox.Controls.Add(this.tableLayoutPanel2); - this.m_groupBox.Name = "m_groupBox"; - this.m_groupBox.TabStop = false; - // - // tableLayoutPanel2 - // - resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2"); - this.tableLayoutPanel2.Controls.Add(this.m_label, 1, 0); - this.tableLayoutPanel2.Controls.Add(this.m_checkBoxStartVms, 1, 1); - this.tableLayoutPanel2.Name = "tableLayoutPanel2"; - // - // m_label - // - resources.ApplyResources(this.m_label, "m_label"); - this.m_label.Name = "m_label"; - // // m_checkBoxStartVms // resources.ApplyResources(this.m_checkBoxStartVms, "m_checkBoxStartVms"); @@ -133,10 +109,6 @@ this.Name = "ImportFinishPage"; this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); - this.m_groupBox.ResumeLayout(false); - this.m_groupBox.PerformLayout(); - this.tableLayoutPanel2.ResumeLayout(false); - this.tableLayoutPanel2.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.m_dataGridView)).EndInit(); this.ResumeLayout(false); @@ -145,9 +117,6 @@ #endregion private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private XenAdmin.Controls.DecentGroupBox m_groupBox; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; - private XenAdmin.Controls.Common.AutoHeightLabel m_label; private System.Windows.Forms.CheckBox m_checkBoxStartVms; private XenAdmin.Controls.Common.AutoHeightLabel m_labelIntro; private System.Windows.Forms.DataGridView m_dataGridView; diff --git a/XenAdmin/Wizards/ImportWizard/ImportFinishPage.cs b/XenAdmin/Wizards/ImportWizard/ImportFinishPage.cs index b6aa0a078..d0f05756f 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportFinishPage.cs +++ b/XenAdmin/Wizards/ImportWizard/ImportFinishPage.cs @@ -52,17 +52,14 @@ namespace XenAdmin.Wizards.ImportWizard #region Base class (XenTabPage) overrides /// - /// The pages' label in the (left hand side) wizard progress panel + /// The page's label in the (left hand side) wizard progress panel /// - public override string Text - { - get { return Messages.FINISH_PAGE_TEXT; } - } + public override string Text => Messages.FINISH_PAGE_TEXT; - /// + /// /// Gets the page's title (headline) /// - public override string PageTitle { get { return Messages.FINISH_PAGE_TITLE_IMPORT; } } + public override string PageTitle => Messages.FINISH_PAGE_TITLE_IMPORT; protected override bool ImplementsIsDirty() { @@ -71,10 +68,10 @@ namespace XenAdmin.Wizards.ImportWizard public override void PopulatePage() { - if (SummaryRetreiver == null) + if (SummaryRetriever == null) return; - var entries = SummaryRetreiver.Invoke(); + var entries = SummaryRetriever.Invoke(); m_dataGridView.Rows.Clear(); foreach (var pair in entries) @@ -89,13 +86,16 @@ namespace XenAdmin.Wizards.ImportWizard #endregion - public Func>> SummaryRetreiver { private get; set; } + public Func>> SummaryRetriever { private get; set; } - /// + /// /// Do the action described after the import/export has finished? /// - public bool StartVmsAutomatically { get { return m_groupBox.Visible && m_checkBoxStartVms.Checked; } } + public bool StartVmsAutomatically => m_checkBoxStartVms.Visible && m_checkBoxStartVms.Checked; - public bool ShowStartVmsGroupBox { set { m_groupBox.Visible = value; } } - } + public bool ShowStartVmsGroupBox + { + set => m_checkBoxStartVms.Visible = value; + } + } } diff --git a/XenAdmin/Wizards/ImportWizard/ImportFinishPage.ja.resx b/XenAdmin/Wizards/ImportWizard/ImportFinishPage.ja.resx index 89149f6ab..737377e7d 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportFinishPage.ja.resx +++ b/XenAdmin/Wizards/ImportWizard/ImportFinishPage.ja.resx @@ -112,156 +112,48 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + 1 - - True - - - - GrowAndShrink - - - True - - - GrowAndShrink - - - 3 - - - True - - - Fill - - - - 13, 0 - - - 576, 15 - - - 0 - - - インポート完了後すぐにその VM を起動するには、このチェックボックスをオンにします。 - - - m_label - - - XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tableLayoutPanel2 - - - 0 - True + Segoe UI, 9pt + NoControl - 13, 18 - - - 5, 3, 3, 3 + 3, 310 - 158, 25 + 384, 19 5 - インポート後に VM を起動する(&S) + インポート完了後すぐに新規 VM を自動的に起動する(&S) m_checkBoxStartVms - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - tableLayoutPanel2 - - - 1 - - - Fill - - - 3, 19 - - - 3 - - - 602, 56 - - - 7 - - - tableLayoutPanel2 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - m_groupBox - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_label" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="m_checkBoxStartVms" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,10,Percent,100,Absolute,10" /><Rows Styles="AutoSize,0,AutoSize,0,Absolute,10" /></TableLayoutSettings> - - - Fill - - - Segoe UI, 9pt - - - 3, 231 - - - 608, 78 - - - 7 - - - 新規 VM の自動起動 - - - m_groupBox - - - XenAdmin.Controls.DecentGroupBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - tableLayoutPanel1 - + 0 @@ -282,7 +174,7 @@ 以下の設定内容でインポートするための準備が完了しました。 -設定内容を確認してください。設定を変更する場合は、[前へ] をクリックします。インポートを実行するには、[完了] をクリックします。この処理には時間がかかることがあります。 +設定内容を確認してください。設定を変更する場合は、[前へ] をクリックします。インポートを実行するには、[完了] をクリックします。インポートには時間がかかることがあります。 m_labelIntro @@ -296,7 +188,7 @@ 1 - + True @@ -305,7 +197,7 @@ 5 - + True @@ -317,6 +209,9 @@ 3, 75 + + 3, 20, 3, 20 + 608, 130 @@ -327,7 +222,7 @@ m_dataGridView - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -342,7 +237,7 @@ 0, 0 - 6 + 3 614, 332 @@ -354,7 +249,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -363,9 +258,9 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_groupBox" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100,Absolute,20,Absolute,20" /><Rows Styles="AutoSize,0,Absolute,20,Percent,100,Absolute,20,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_checkBoxStartVms" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Percent,100,AutoSize,0,Absolute,20" /></TableLayoutSettings> - + True @@ -378,18 +273,18 @@ Column1 - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Column2 - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ImportFinishPage - XenAdmin.Wizards.GenericPages.ImExPortPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/ImportWizard/ImportFinishPage.resx b/XenAdmin/Wizards/ImportWizard/ImportFinishPage.resx index a6d9decaf..8072e6c60 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportFinishPage.resx +++ b/XenAdmin/Wizards/ImportWizard/ImportFinishPage.resx @@ -112,156 +112,48 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + 1 - - True - - - - GrowAndShrink - - - True - - - GrowAndShrink - - - 3 - - - True - - - Fill - - - - 13, 0 - - - 576, 15 - - - 0 - - - To have your new VM(s) start up as soon as the import process is complete select this checkbox. - - - m_label - - - XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tableLayoutPanel2 - - - 0 - True + Segoe UI, 9pt + NoControl - 13, 18 - - - 5, 3, 3, 3 + 3, 310 - 158, 25 + 384, 19 5 - &Start VM(s) after import + &Start the new VM(s) automatically as soon as the import is complete m_checkBoxStartVms - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - tableLayoutPanel2 - - - 1 - - - Fill - - - 3, 19 - - - 3 - - - 602, 56 - - - 7 - - - tableLayoutPanel2 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - m_groupBox - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_label" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="m_checkBoxStartVms" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,10,Percent,100,Absolute,10" /><Rows Styles="AutoSize,0,AutoSize,0,Absolute,10" /></TableLayoutSettings> - - - Fill - - - Segoe UI, 9pt - - - 3, 231 - - - 608, 78 - - - 7 - - - Automatically start new VMs - - - m_groupBox - - - XenAdmin.Controls.DecentGroupBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - tableLayoutPanel1 - + 0 @@ -282,7 +174,7 @@ All the necessary information has been collected and the wizard is ready to import using the settings shown below. -Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to import and close this wizard. Import may take several minutes. +Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to import and close this wizard. Import may take several minutes. m_labelIntro @@ -296,7 +188,7 @@ Please review these settings and click Previous if you need to go back and make 1 - + True @@ -305,7 +197,7 @@ Please review these settings and click Previous if you need to go back and make 5 - + True @@ -315,10 +207,13 @@ Please review these settings and click Previous if you need to go back and make Fill - 3, 75 + 3, 72 + + + 3, 20, 3, 20 - 608, 130 + 608, 215 9 @@ -327,7 +222,7 @@ Please review these settings and click Previous if you need to go back and make m_dataGridView - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -342,7 +237,7 @@ Please review these settings and click Previous if you need to go back and make 0, 0 - 6 + 3 614, 332 @@ -354,7 +249,7 @@ Please review these settings and click Previous if you need to go back and make tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -363,9 +258,9 @@ Please review these settings and click Previous if you need to go back and make 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_groupBox" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100,Absolute,20,Absolute,20" /><Rows Styles="AutoSize,0,Absolute,20,Percent,100,Absolute,20,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_checkBoxStartVms" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Percent,100,AutoSize,0,Absolute,20" /></TableLayoutSettings> - + True @@ -378,18 +273,18 @@ Please review these settings and click Previous if you need to go back and make Column1 - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Column2 - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ImportFinishPage - XenAdmin.Wizards.GenericPages.ImExPortPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/ImportWizard/ImportFinishPage.zh-CN.resx b/XenAdmin/Wizards/ImportWizard/ImportFinishPage.zh-CN.resx index 0bee12a2d..152010790 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportFinishPage.zh-CN.resx +++ b/XenAdmin/Wizards/ImportWizard/ImportFinishPage.zh-CN.resx @@ -112,156 +112,48 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + 1 - - True - - - - GrowAndShrink - - - True - - - GrowAndShrink - - - 3 - - - True - - - Fill - - - - 13, 0 - - - 576, 15 - - - 0 - - - 要在导入进程完成后立即启动新 VM,请选中此复选框。 - - - m_label - - - XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tableLayoutPanel2 - - - 0 - True + Segoe UI, 9pt + NoControl - 13, 18 - - - 5, 3, 3, 3 + 3, 310 - 158, 25 + 384, 19 5 - 导入后启动 VM(&S) + 导入完成后立即自动启动新 VM(&S) m_checkBoxStartVms - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - tableLayoutPanel2 - - - 1 - - - Fill - - - 3, 19 - - - 3 - - - 602, 56 - - - 7 - - - tableLayoutPanel2 - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - m_groupBox - - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_label" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="m_checkBoxStartVms" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,10,Percent,100,Absolute,10" /><Rows Styles="AutoSize,0,AutoSize,0,Absolute,10" /></TableLayoutSettings> - - - Fill - - - Segoe UI, 9pt - - - 3, 231 - - - 608, 78 - - - 7 - - - 自动启动新 VM - - - m_groupBox - - - XenAdmin.Controls.DecentGroupBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - tableLayoutPanel1 - + 0 @@ -296,7 +188,7 @@ 1 - + True @@ -305,7 +197,7 @@ 5 - + True @@ -317,6 +209,9 @@ 3, 75 + + 3, 20, 3, 20 + 608, 130 @@ -327,7 +222,7 @@ m_dataGridView - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel1 @@ -342,7 +237,7 @@ 0, 0 - 6 + 3 614, 332 @@ -354,7 +249,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -363,9 +258,9 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_groupBox" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100,Absolute,20,Absolute,20" /><Rows Styles="AutoSize,0,Absolute,20,Percent,100,Absolute,20,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_checkBoxStartVms" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_labelIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_dataGridView" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Percent,100,AutoSize,0,Absolute,20" /></TableLayoutSettings> - + True @@ -378,18 +273,18 @@ Column1 - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Column2 - System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ImportFinishPage - XenAdmin.Wizards.GenericPages.ImExPortPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.Designer.cs b/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.Designer.cs index e1bfa1d2f..bc5aeb476 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.Designer.cs +++ b/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.Designer.cs @@ -110,8 +110,8 @@ // this.tableLayoutPanel2.SetColumnSpan(this.m_comboBoxISOLibraries, 2); this.m_comboBoxISOLibraries.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - resources.ApplyResources(this.m_comboBoxISOLibraries, "m_comboBoxISOLibraries"); this.m_comboBoxISOLibraries.FormattingEnabled = true; + resources.ApplyResources(this.m_comboBoxISOLibraries, "m_comboBoxISOLibraries"); this.m_comboBoxISOLibraries.Name = "m_comboBoxISOLibraries"; this.m_comboBoxISOLibraries.SelectedIndexChanged += new System.EventHandler(this.m_comboBoxISOLibraries_SelectedIndexChanged); // diff --git a/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.cs b/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.cs index 63a64b438..ed810b310 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.cs +++ b/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.cs @@ -31,9 +31,9 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.IO; using System.Linq; -using System.Windows.Forms; using XenAdmin.Controls; using XenAdmin.Controls.Common; using XenCenterLib; @@ -49,16 +49,16 @@ namespace XenAdmin.Wizards.ImportWizard /// internal partial class ImportOptionsPage : XenTabPage { - private SR m_selectedIsoSr; - private string m_isoFilename; private IEnumerable m_hostTargets; private bool m_buttonNextEnabled; - private bool m_fixupISOInLibrary; - private List m_srsWithRegisteredEvents = new List(); + private readonly List m_srsWithRegisteredEvents = new List(); + private readonly CollectionChangeEventHandler PBD_CollectionChangedWithInvoke; public ImportOptionsPage() { InitializeComponent(); + m_radioButtonDontRunOSFixups.Checked = true; + PBD_CollectionChangedWithInvoke = Program.ProgramInvokeHandler(PBD_CollectionChanged); m_ctrlError.HideError(); } @@ -67,44 +67,30 @@ namespace XenAdmin.Wizards.ImportWizard /// /// Gets the page's title (headline) /// - public override string PageTitle - { - get { return Messages.IMPORT_OPTIONS_PAGE_TITLE; } - } + public override string PageTitle => Messages.IMPORT_OPTIONS_PAGE_TITLE; /// /// Gets the page's label in the (left hand side) wizard progress panel /// - public override string Text - { - get { return Messages.IMPORT_OPTIONS_PAGE_TEXT; } - } + public override string Text => Messages.IMPORT_OPTIONS_PAGE_TEXT; - protected override bool ImplementsIsDirty() + protected override void PageLoadedCore(PageLoadedDirection direction) { - return true; - } + PopulateComboBox(); - public override void PopulatePage() - { - var isoName = Path.GetFileName(XenOvf.Properties.Settings.Default.xenLinuxFixUpDisk); - VDI theVdi = Connection.Cache.VDIs.FirstOrDefault(vdi => vdi != null && vdi.name_label == isoName); - - m_fixupISOInLibrary = theVdi != null; - if (m_fixupISOInLibrary) //found existing fixup ISO on an ISO SR + Connection.Cache.RegisterCollectionChanged(PBD_CollectionChangedWithInvoke); + foreach (PBD pbd in Connection.Cache.PBDs) { - PopulateComboBox(Connection.Resolve(theVdi.SR)); + pbd.PropertyChanged -= server_PropertyChanged; + pbd.PropertyChanged += server_PropertyChanged; } - else //iso has not been placed on an ISO SR - { - GetFixupIsoInfo(); - PopulateComboBox(); - } - - ResetSelectedIsoSr(); - m_radioButtonDontRunOSFixups.Checked = true; } + protected override void PageLeaveCore(PageLoadedDirection direction, ref bool cancel) + { + DeregisterEvents(); + } + public override bool EnableNext() { return m_buttonNextEnabled; @@ -114,11 +100,14 @@ namespace XenAdmin.Wizards.ImportWizard #region Accessors - public bool RunFixups { get { return m_radioButtonRunOSFixups.Checked; } } + public bool RunFixups => m_radioButtonRunOSFixups.Checked; - public SR SelectedIsoSR { get { return m_selectedIsoSr; } } + public SR SelectedIsoSR { get; private set; } - public Dictionary VmMappings { set { m_hostTargets = from VmMapping mapping in value.Values select Connection.Resolve(mapping.XenRef as XenRef); } } + public Dictionary VmMappings + { + set { m_hostTargets = from VmMapping mapping in value.Values select Connection.Resolve(mapping.XenRef as XenRef); } + } #endregion @@ -128,10 +117,13 @@ namespace XenAdmin.Wizards.ImportWizard /// Performs certain checks on the pages's input data and shows/hides an error accordingly /// /// The checks to perform - private void PerformCheck(params CheckDelegate[] checks) + private bool PerformCheck(params CheckDelegate[] checks) { - m_buttonNextEnabled = m_ctrlError.PerformCheck(checks); + var success = m_ctrlError.PerformCheck(checks); + m_buttonNextEnabled = success; + m_pictureBoxInfo.Visible = m_labelFixupISOInfo.Visible = success; OnPageUpdated(); + return success; } private bool IsIsoSrSelectable(SR sr) @@ -144,10 +136,16 @@ namespace XenAdmin.Wizards.ImportWizard private void DeregisterEvents() { - foreach (var sr in m_srsWithRegisteredEvents) + if (Connection != null) { - sr.PropertyChanged -= sr_PropertyChanged; + Connection.Cache.DeregisterCollectionChanged(PBD_CollectionChangedWithInvoke); + + foreach (PBD pbd in Connection.Cache.PBDs) + pbd.PropertyChanged -= server_PropertyChanged; } + + foreach (var sr in m_srsWithRegisteredEvents) + sr.PropertyChanged -= server_PropertyChanged; } private string GetSRDropDownItemDisplayString(SR sr) @@ -157,119 +155,176 @@ namespace XenAdmin.Wizards.ImportWizard private void PopulateComboBox() { - PopulateComboBox(null); - } - - private void PopulateComboBox(SR selectedSR) - { - var availableSRs = new List(); - - foreach (var sr in Connection.Cache.SRs) - { - if (IsIsoSrSelectable(sr)) - { - if (!m_srsWithRegisteredEvents.Contains(sr)) - m_srsWithRegisteredEvents.Add(sr); - - sr.PropertyChanged -= sr_PropertyChanged; - sr.PropertyChanged += sr_PropertyChanged; - - availableSRs.Add(sr); - } - } - - try - { + try + { m_comboBoxISOLibraries.SuspendLayout(); + int selectedIndex = m_comboBoxISOLibraries.SelectedIndex; + + foreach (var item in m_comboBoxISOLibraries.Items) + { + if (item is ToStringWrapper wrapper && wrapper.item != null) + wrapper.item.PropertyChanged -= server_PropertyChanged; + } m_comboBoxISOLibraries.Items.Clear(); + m_comboBoxISOLibraries.Items.Add(new ToStringWrapper(null, Messages.IMPORT_OPTIONS_PAGE_CHOOSE_ISO_SR)); - SetSelectedIndexWithoutEvent(0); - - foreach (var sr in availableSRs) - { - int index = m_comboBoxISOLibraries.Items.Add(new ToStringWrapper(sr, GetSRDropDownItemDisplayString)); - if (selectedSR != null && selectedSR.Equals(sr)) - SetSelectedIndexWithoutEvent(index); - } - m_comboBoxISOLibraries.Items.Add(new ToStringWrapper(null, Messages.IMPORT_OPTIONS_PAGE_NEW_ISO_LIBRARY)); - } + + var isoName = OVF.GetISOFixupFileName(); + + var availableSRs = Connection.Cache.SRs; + foreach (var sr in availableSRs) + { + if (!IsIsoSrSelectable(sr)) + continue; + + int index = AddReplaceSrItem(sr); + if (selectedIndex < 0) + { + foreach (var vdiRef in sr.VDIs) + { + var vdi = Connection.Resolve(vdiRef); + if (vdi != null && vdi.name_label == isoName) + { + selectedIndex = index; + break; + } + } + } + } + + if (m_comboBoxISOLibraries.SelectedIndex < 0) + SetSelectedIndexProgrammatically(selectedIndex < 0 ? 0 : selectedIndex); + } finally { m_comboBoxISOLibraries.ResumeLayout(); } } - private void GetFixupIsoInfo() - { - m_isoFilename = OVF.GetISOFixupFileName(); - } - - /// - /// Checks fixup ISO exists in the XenCenter installation directory - /// private bool CheckFixupIsoInXencenterInstallation(out string error) { error = string.Empty; - if (m_radioButtonDontRunOSFixups.Checked || m_fixupISOInLibrary || !string.IsNullOrEmpty(m_isoFilename)) + var theVdi = Connection.Cache.VDIs.FirstOrDefault(vdi => vdi != null && vdi.name_label == OVF.GetISOFixupFileName()); + + if (theVdi != null || File.Exists(OVF.GetISOFixupPath())) return true; error = Messages.IMPORT_OPTIONS_PAGE_ERROR_NO_FIXUP_ISO_INSTALLED; return false; } - private bool CheckSelectedFixupValid(out string error) - { - error = String.Empty; + private bool CheckCanCreateVdiOnIsoSr(out string error) + { + error = string.Empty; - return m_radioButtonDontRunOSFixups.Checked || m_selectedIsoSr != null; - } + SM sm = null; + if (SelectedIsoSR != null) + sm = SM.GetByType(Connection, SelectedIsoSR.type); - private void sr_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) - { - if (e.PropertyName != "name_label" && e.PropertyName != "physical_size" && - e.PropertyName != "physical_utilisation") + if (sm != null && sm.capabilities.Contains("VDI_CREATE")) + return true; + + error = Messages.IMPORT_OPTIONS_PAGE_CANNOT_USE_SELECTED_ISO_LIBRARY; + return false; + } + + private void PBD_CollectionChanged(object sender, CollectionChangeEventArgs e) + { + if (!(e.Element is PBD pbd)) return; - var sr = sender as SR; - if (sr == null) + switch (e.Action) + { + case CollectionChangeAction.Add: + pbd.PropertyChanged -= server_PropertyChanged; + pbd.PropertyChanged += server_PropertyChanged; + break; + case CollectionChangeAction.Remove: + pbd.PropertyChanged -= server_PropertyChanged; + break; + } + } + + private void server_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName != "name_label" && e.PropertyName != "physical_size" && + e.PropertyName != "physical_utilisation" && + e.PropertyName != "currently_attached") + return; + + var sr = sender is PBD pbd ? Connection.Resolve(pbd.SR) : sender as SR; + if (sr == null) return; - bool selectable = IsIsoSrSelectable(sr); - var existingItems = - m_comboBoxISOLibraries.Items.OfType>().Where(wrapper => sr.Equals(wrapper.item)); - if (existingItems.Count() == 1) - { - if (selectable) - Program.Invoke(this, () => - { - var wrapper = existingItems.First(); - m_comboBoxISOLibraries.SuspendLayout(); - try - { - int index = m_comboBoxISOLibraries.Items.IndexOf(wrapper); - int selectedIndex = m_comboBoxISOLibraries.SelectedIndex; - m_comboBoxISOLibraries.Items.RemoveAt(index); - m_comboBoxISOLibraries.Items.Insert(index, new ToStringWrapper(sr, GetSRDropDownItemDisplayString)); - SetSelectedIndexWithoutEvent(selectedIndex); - } - finally - { - m_comboBoxISOLibraries.ResumeLayout(); - } - }); - else - Program.Invoke(this, PopulateComboBox); - } - else if (selectable) - { - Program.Invoke(this, PopulateComboBox); - } - } + if (IsIsoSrSelectable(sr)) + AddReplaceSrItem(sr); + else + RemoveSrItem(sr); + } - private void SetSelectedIndexWithoutEvent(int newIndex) + private int FindSrItem(SR sr) { + var existing = m_comboBoxISOLibraries.Items.OfType>().Where(wrapper => sr.Equals(wrapper.item)).ToList(); + return existing.Count > 0 ? m_comboBoxISOLibraries.Items.IndexOf(existing.First()) : -1; + } + + private int AddReplaceSrItem(SR sr) + { + try + { + m_comboBoxISOLibraries.SuspendLayout(); + + int selectedIndex = m_comboBoxISOLibraries.SelectedIndex; + int index = FindSrItem(sr); + + if (index < 0) + { + if (!m_srsWithRegisteredEvents.Contains(sr)) + m_srsWithRegisteredEvents.Add(sr); + + sr.PropertyChanged -= server_PropertyChanged; + sr.PropertyChanged += server_PropertyChanged; + + index = m_comboBoxISOLibraries.Items.Count - 1; + } + else + { + m_comboBoxISOLibraries.Items.RemoveAt(index); + } + + m_comboBoxISOLibraries.Items.Insert(index, new ToStringWrapper(sr, GetSRDropDownItemDisplayString)); + SetSelectedIndexProgrammatically(selectedIndex); + return index; + } + finally + { + m_comboBoxISOLibraries.ResumeLayout(); + } + } + + private void RemoveSrItem(SR sr) + { + int index = FindSrItem(sr); + if (index < 0) + return; + + sr.PropertyChanged -= server_PropertyChanged; + m_comboBoxISOLibraries.Items.RemoveAt(index); + + if (m_comboBoxISOLibraries.SelectedIndex < 0) + SetSelectedIndexProgrammatically(0); + } + + private void SetSelectedIndexProgrammatically(int newIndex) + { + if (m_radioButtonRunOSFixups.Checked) + { + m_comboBoxISOLibraries.SelectedIndex = newIndex; + return; + } + m_comboBoxISOLibraries.SelectedIndexChanged -= m_comboBoxISOLibraries_SelectedIndexChanged; try { @@ -281,42 +336,53 @@ namespace XenAdmin.Wizards.ImportWizard } } - private bool IsNewISOLibraryItem(ToStringWrapper wrapper) + private bool IsNewISOLibraryItem() { - return (wrapper.Equals(m_comboBoxISOLibraries.Items[m_comboBoxISOLibraries.Items.Count - 1]) && - wrapper.ToStringProperty.Equals(Messages.IMPORT_OPTIONS_PAGE_NEW_ISO_LIBRARY)); + return m_comboBoxISOLibraries.SelectedItem is ToStringWrapper wrapper && + wrapper.Equals(m_comboBoxISOLibraries.Items[m_comboBoxISOLibraries.Items.Count - 1]) && + wrapper.ToStringProperty.Equals(Messages.IMPORT_OPTIONS_PAGE_NEW_ISO_LIBRARY); } - private void OpenNewSRWizard() + private void ValidateSelection() { - SetSelectedIndexWithoutEvent(0); - ResetControlsAfterSelectedIndexChanged(); - - NewSRWizard wizard = new NewSRWizard(Connection); - wizard.CheckNFSISORadioButton(); - - if (wizard.ShowDialog() == DialogResult.OK) - PopulateComboBox(); - } - - private void ResetSelectedIsoSr() - { - ToStringWrapper wrapper = m_comboBoxISOLibraries.SelectedItem as ToStringWrapper; - m_selectedIsoSr = wrapper != null ? wrapper.item : null; - } - - private void ResetControlsAfterSelectedIndexChanged() - { - ResetSelectedIsoSr(); - PerformCheck(CheckFixupIsoInXencenterInstallation, CheckSelectedFixupValid); - - if (!m_ctrlError.Visible) + if (m_radioButtonDontRunOSFixups.Checked) { - m_pictureBoxInfo.Visible = m_selectedIsoSr != null; - m_labelFixupISOInfo.Visible = m_selectedIsoSr != null; - if (m_labelFixupISOInfo.Visible) - m_labelFixupISOInfo.Text = Messages.IMPORT_OPTIONS_PAGE_USE_SELECTED_ISO_LIBRARY; + m_buttonNextEnabled = true; + m_pictureBoxInfo.Visible = m_labelFixupISOInfo.Visible = m_ctrlError.Visible = false; + OnPageUpdated(); + return; } + + SelectedIsoSR = m_radioButtonRunOSFixups.Checked && m_comboBoxISOLibraries.SelectedItem is ToStringWrapper wrapper + ? wrapper.item + : null; + + if (!PerformCheck((out string error) => + { + error = null; + return SelectedIsoSR != null; + })) + return; + + if (!PerformCheck(CheckFixupIsoInXencenterInstallation)) + return; + + var isoName = OVF.GetISOFixupFileName(); + + foreach (var vdiRef in SelectedIsoSR.VDIs) + { + var vdi = Connection.Resolve(vdiRef); + if (vdi != null && vdi.name_label == isoName) + { + m_labelFixupISOInfo.Text = Messages.IMPORT_OPTIONS_PAGE_FOUND_EXISTING_ISO; + return; + } + } + + if (!PerformCheck(CheckCanCreateVdiOnIsoSr)) + return; + + m_labelFixupISOInfo.Text = Messages.IMPORT_OPTIONS_PAGE_USE_SELECTED_ISO_LIBRARY; } #endregion @@ -325,54 +391,29 @@ namespace XenAdmin.Wizards.ImportWizard private void m_comboBoxISOLibraries_SelectedIndexChanged(object sender, EventArgs e) { - ToStringWrapper wrapper = m_comboBoxISOLibraries.SelectedItem as ToStringWrapper; - if (wrapper == null) - return; + if (!m_radioButtonRunOSFixups.Checked) + m_radioButtonRunOSFixups.Checked = true; - if (IsNewISOLibraryItem(wrapper)) + ValidateSelection(); + + if (IsNewISOLibraryItem()) { - OpenNewSRWizard(); - return; + var wizard = new NewSRWizard(Connection); + wizard.CheckNFSISORadioButton(); + wizard.ShowDialog(); } - - ResetControlsAfterSelectedIndexChanged(); } private void m_radioButtonRunOSFixups_CheckedChanged(object sender, EventArgs e) { if (m_radioButtonRunOSFixups.Checked) - { - m_labelLocationFixupISO.Enabled = true; - PerformCheck(CheckFixupIsoInXencenterInstallation, CheckSelectedFixupValid); - - if (!m_ctrlError.Visible) - { - SR sr = m_selectedIsoSr; - m_comboBoxISOLibraries.Enabled = !m_fixupISOInLibrary || sr == null; - if (sr != null) - { - m_pictureBoxInfo.Visible = true; - m_labelFixupISOInfo.Visible = true; - m_labelFixupISOInfo.Text = m_fixupISOInLibrary - ? Messages.IMPORT_OPTIONS_PAGE_FOUND_EXISTING_ISO - : Messages.IMPORT_OPTIONS_PAGE_USE_SELECTED_ISO_LIBRARY; - } - } - IsDirty = true; - } + ValidateSelection(); } private void m_radioButtonDontRunOSFixups_CheckedChanged(object sender, EventArgs e) { if (m_radioButtonDontRunOSFixups.Checked) - { - m_labelLocationFixupISO.Enabled = false; - m_comboBoxISOLibraries.Enabled = false; - m_pictureBoxInfo.Visible = false; - m_labelFixupISOInfo.Visible = false; - - PerformCheck(CheckFixupIsoInXencenterInstallation); - } + ValidateSelection(); } #endregion diff --git a/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.ja.resx b/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.ja.resx index f0bfefbda..34ca40c1e 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.ja.resx +++ b/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.ja.resx @@ -112,16 +112,16 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - + GrowAndShrink @@ -140,7 +140,7 @@ Fill - + 3, 0 @@ -192,7 +192,7 @@ m_radioButtonDontRunOSFixups - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel2 @@ -258,7 +258,7 @@ m_radioButtonRunOSFixups - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel2 @@ -308,21 +308,12 @@ True - - False - NoControl 23, 193 - - 3, 3, 3, 3 - - - 0, 3, 0, 3 - 130, 19 @@ -339,7 +330,7 @@ m_labelLocationFixupISO - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel2 @@ -347,9 +338,6 @@ 5 - - False - 159, 192 @@ -387,7 +375,7 @@ m_pictureBoxInfo - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel2 @@ -395,21 +383,18 @@ 7 + + Left, Right + True - - Fill - NoControl 181, 219 - - 3, 3, 3, 3 - 409, 16 @@ -453,7 +438,7 @@ tableLayoutPanel2 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -497,7 +482,7 @@ 9 - + True diff --git a/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.resx b/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.resx index c0fe31534..f7ec31f8b 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.resx +++ b/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.resx @@ -112,16 +112,16 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - + GrowAndShrink @@ -140,7 +140,7 @@ Fill - + 3, 0 @@ -192,7 +192,7 @@ Operating System Fixup is supplied as a bootable ISO image which is attached to m_radioButtonDontRunOSFixups - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel2 @@ -258,7 +258,7 @@ Operating System Fixup is supplied as a bootable ISO image which is attached to m_radioButtonRunOSFixups - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel2 @@ -308,23 +308,14 @@ Operating System Fixup is supplied as a bootable ISO image which is attached to True - - False - NoControl - 23, 193 - - - 3, 3, 3, 3 - - - 0, 3, 0, 3 + 23, 196 - 130, 19 + 130, 13 6 @@ -339,7 +330,7 @@ Operating System Fixup is supplied as a bootable ISO image which is attached to m_labelLocationFixupISO - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel2 @@ -347,9 +338,6 @@ Operating System Fixup is supplied as a bootable ISO image which is attached to 5 - - False - 159, 192 @@ -387,7 +375,7 @@ Operating System Fixup is supplied as a bootable ISO image which is attached to m_pictureBoxInfo - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel2 @@ -395,23 +383,20 @@ Operating System Fixup is supplied as a bootable ISO image which is attached to 7 + + Left, Right + True - - Fill - NoControl - 181, 219 - - - 3, 3, 3, 3 + 181, 220 - 409, 16 + 409, 13 8 @@ -453,7 +438,7 @@ Operating System Fixup is supplied as a bootable ISO image which is attached to tableLayoutPanel2 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -497,7 +482,7 @@ Operating System Fixup is supplied as a bootable ISO image which is attached to 9 - + True @@ -512,4 +497,4 @@ Operating System Fixup is supplied as a bootable ISO image which is attached to XenAdmin.Controls.XenTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - + \ No newline at end of file diff --git a/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.zh-CN.resx b/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.zh-CN.resx index 0467ac98a..843715545 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.zh-CN.resx +++ b/XenAdmin/Wizards/ImportWizard/ImportOptionsPage.zh-CN.resx @@ -112,16 +112,16 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - + GrowAndShrink @@ -140,7 +140,7 @@ Fill - + 3, 0 @@ -192,7 +192,7 @@ m_radioButtonDontRunOSFixups - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel2 @@ -258,7 +258,7 @@ m_radioButtonRunOSFixups - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel2 @@ -308,21 +308,12 @@ True - - False - NoControl 23, 193 - - 3, 3, 3, 3 - - - 0, 3, 0, 3 - 130, 19 @@ -339,7 +330,7 @@ m_labelLocationFixupISO - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel2 @@ -347,9 +338,6 @@ 5 - - False - 159, 192 @@ -387,7 +375,7 @@ m_pictureBoxInfo - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 tableLayoutPanel2 @@ -395,21 +383,18 @@ 7 + + Left, Right + True - - Fill - NoControl 181, 219 - - 3, 3, 3, 3 - 409, 16 @@ -453,7 +438,7 @@ tableLayoutPanel2 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -497,7 +482,7 @@ 9 - + True diff --git a/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.Designer.cs b/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.Designer.cs index a53bac619..fb51045bb 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.Designer.cs +++ b/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.Designer.cs @@ -34,16 +34,14 @@ this.lblSecurityIntro = new XenAdmin.Controls.Common.AutoHeightLabel(); this.m_linkCertificate = new System.Windows.Forms.LinkLabel(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.m_tlpManifest = new System.Windows.Forms.TableLayoutPanel(); this.m_ctrlError = new XenAdmin.Controls.Common.PasswordFailure(); this.tableLayoutPanel1.SuspendLayout(); - this.m_tlpManifest.SuspendLayout(); this.SuspendLayout(); // // m_labelVerify // resources.ApplyResources(this.m_labelVerify, "m_labelVerify"); - this.m_tlpManifest.SetColumnSpan(this.m_labelVerify, 2); + this.tableLayoutPanel1.SetColumnSpan(this.m_labelVerify, 2); this.m_labelVerify.Name = "m_labelVerify"; // // m_checkBoxVerify @@ -56,6 +54,7 @@ // lblSecurityIntro // resources.ApplyResources(this.lblSecurityIntro, "lblSecurityIntro"); + this.tableLayoutPanel1.SetColumnSpan(this.lblSecurityIntro, 2); this.lblSecurityIntro.Name = "lblSecurityIntro"; // // m_linkCertificate @@ -68,22 +67,17 @@ // tableLayoutPanel1 // resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); - this.tableLayoutPanel1.Controls.Add(this.m_tlpManifest, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.m_linkCertificate, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.m_checkBoxVerify, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.m_labelVerify, 0, 1); this.tableLayoutPanel1.Controls.Add(this.lblSecurityIntro, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.m_ctrlError, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.m_ctrlError, 0, 4); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; // - // m_tlpManifest - // - resources.ApplyResources(this.m_tlpManifest, "m_tlpManifest"); - this.m_tlpManifest.Controls.Add(this.m_linkCertificate, 1, 2); - this.m_tlpManifest.Controls.Add(this.m_labelVerify, 0, 0); - this.m_tlpManifest.Controls.Add(this.m_checkBoxVerify, 0, 2); - this.m_tlpManifest.Name = "m_tlpManifest"; - // // m_ctrlError // resources.ApplyResources(this.m_ctrlError, "m_ctrlError"); + this.tableLayoutPanel1.SetColumnSpan(this.m_ctrlError, 2); this.m_ctrlError.Name = "m_ctrlError"; // // ImportSecurityPage @@ -94,8 +88,6 @@ this.Name = "ImportSecurityPage"; this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); - this.m_tlpManifest.ResumeLayout(false); - this.m_tlpManifest.PerformLayout(); this.ResumeLayout(false); } @@ -107,7 +99,6 @@ private XenAdmin.Controls.Common.AutoHeightLabel lblSecurityIntro; private System.Windows.Forms.LinkLabel m_linkCertificate; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.TableLayoutPanel m_tlpManifest; private XenAdmin.Controls.Common.PasswordFailure m_ctrlError; } } diff --git a/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.cs b/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.cs index ef17a25c1..9d8695ff9 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.cs +++ b/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.cs @@ -61,17 +61,17 @@ namespace XenAdmin.Wizards.ImportWizard /// /// Gets the page's title (headline) /// - public override string PageTitle { get { return Messages.IMPORT_SECURITY_PAGE_TITLE; } } + public override string PageTitle => Messages.IMPORT_SECURITY_PAGE_TITLE; /// /// Gets the page's label in the (left hand side) wizard progress panel /// - public override string Text { get { return Messages.IMPORT_SECURITY_PAGE_TEXT; } } + public override string Text => Messages.IMPORT_SECURITY_PAGE_TEXT; /// /// Gets the value by which the help files section for this page is identified /// - public override string HelpID { get { return "Security"; } } + public override string HelpID => "Security"; protected override bool ImplementsIsDirty() { @@ -102,7 +102,6 @@ namespace XenAdmin.Wizards.ImportWizard if (DisableStep)//defensive check return; - m_tlpManifest.Enabled = m_hasManifest || m_hasSignature; m_linkCertificate.Visible = m_hasSignature; if (m_hasSignature)//check for signature first because m_hasManifest is True if m_hasSignature is True @@ -131,9 +130,9 @@ namespace XenAdmin.Wizards.ImportWizard /// public string Password { get; private set; } - public bool VerifyManifest { get { return m_hasManifest && m_tlpManifest.Enabled && m_checkBoxVerify.Checked; } } + public bool VerifyManifest => m_hasManifest && m_checkBoxVerify.Checked; - public bool VerifySignature { get { return m_hasSignature && m_tlpManifest.Enabled && m_checkBoxVerify.Checked; } } + public bool VerifySignature => m_hasSignature && m_checkBoxVerify.Checked; /// /// Package containing the selected OVF appliance. @@ -163,9 +162,10 @@ namespace XenAdmin.Wizards.ImportWizard m_ctrlError.HideError(); try - { - X509Certificate2UI.DisplayCertificate(SelectedOvfPackage.Certificate); - } + { + using (var certificate = new X509Certificate2(SelectedOvfPackage.RawCertificate)) + X509Certificate2UI.DisplayCertificate(certificate); + } catch (CryptographicException) { m_ctrlError.ShowError(Messages.IMPORT_SECURITY_PAGE_ERROR_MISSING_CERTIFICATE); diff --git a/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.ja.resx b/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.ja.resx index 6cd3a5ed2..da16f7f13 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.ja.resx +++ b/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.ja.resx @@ -112,25 +112,19 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - - True - - - - GrowAndShrink - - + 2 + Left @@ -140,7 +134,7 @@ NoControl - + 113, 19 @@ -163,10 +157,10 @@ m_linkCertificate - System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_tlpManifest + tableLayoutPanel1 0 @@ -183,6 +177,9 @@ 3, 19 + + 6, 0, 0, 0 + 104, 18 @@ -196,72 +193,12 @@ m_checkBoxVerify - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_tlpManifest - - - 2 - - - Fill - - - 3, 29 - - - 3 - - - 509, 40 - - - 0 - - - m_tlpManifest - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tableLayoutPanel1 - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_linkCertificate" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="m_labelVerify" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_checkBoxVerify" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,Absolute,20,Absolute,20" /><Rows Styles="AutoSize,0,Absolute,10,AutoSize,0,Absolute,20,Absolute,20" /></TableLayoutSettings> - - - Fill - - - NoControl - - - 3, 3 - - - 503, 1 - - - 62 - - - labelVerify - - - m_labelVerify - - - XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - m_tlpManifest - - + 1 @@ -273,6 +210,9 @@ 3, 3 + + 3, 0, 3, 20 + 509, 1 @@ -292,10 +232,7 @@ tableLayoutPanel1 - 1 - - - 1 + 3 True @@ -331,7 +268,7 @@ tableLayoutPanel1 - 2 + 4 Fill @@ -340,7 +277,7 @@ 0, 0 - 5 + 6 515, 286 @@ -352,7 +289,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -361,9 +298,42 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_tlpManifest" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="lblSecurityIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_ctrlError" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Absolute,20,AutoSize,0,AutoSize,0,Percent,100,Absolute,20,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_linkCertificate" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="m_checkBoxVerify" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_labelVerify" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="lblSecurityIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_ctrlError" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Absolute,10,AutoSize,0,Percent,100" /></TableLayoutSettings> - + + Fill + + + NoControl + + + 3, 33 + + + 3, 0, 3, 6 + + + 509, 13 + + + 62 + + + labelVerify + + + m_labelVerify + + + XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 2 + + True @@ -376,6 +346,6 @@ ImportSecurityPage - XenAdmin.Wizards.GenericPages.ImExPortPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.resx b/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.resx index 131f73bc7..80357b355 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.resx +++ b/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.resx @@ -112,25 +112,19 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - - True - - - - GrowAndShrink - - + 2 + Left @@ -140,9 +134,9 @@ NoControl - + - 109, 28 + 115, 57 80, 13 @@ -163,10 +157,10 @@ m_linkCertificate - System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_tlpManifest + tableLayoutPanel1 0 @@ -181,10 +175,13 @@ NoControl - 3, 26 + 3, 55 + + + 6, 0, 0, 0 - 100, 17 + 106, 17 60 @@ -196,72 +193,12 @@ m_checkBoxVerify - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_tlpManifest - - - 2 - - - Fill - - - 3, 36 - - - 3 - - - 509, 46 - - - 0 - - - m_tlpManifest - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tableLayoutPanel1 - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_linkCertificate" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="m_labelVerify" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_checkBoxVerify" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,Absolute,20,Absolute,20" /><Rows Styles="AutoSize,0,Absolute,10,AutoSize,0,Absolute,20,Absolute,20" /></TableLayoutSettings> - - - Fill - - - NoControl - - - 3, 0 - - - 503, 13 - - - 62 - - - labelVerify - - - m_labelVerify - - - XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - m_tlpManifest - - + 1 @@ -273,6 +210,9 @@ 3, 0 + + 3, 0, 3, 20 + 509, 13 @@ -280,7 +220,7 @@ 65 - Security settings allow you to validate OVF/OVA package you are importing. + Security settings allow you to validate the OVF/OVA package you are importing. lblSecurityIntro @@ -292,10 +232,7 @@ tableLayoutPanel1 - 1 - - - 1 + 3 True @@ -331,7 +268,7 @@ tableLayoutPanel1 - 2 + 4 Fill @@ -340,7 +277,7 @@ 0, 0 - 5 + 6 515, 286 @@ -352,7 +289,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -361,9 +298,42 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_tlpManifest" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="lblSecurityIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_ctrlError" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Absolute,20,AutoSize,0,AutoSize,0,Percent,100,Absolute,20,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_linkCertificate" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="m_checkBoxVerify" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_labelVerify" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="lblSecurityIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_ctrlError" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Absolute,10,AutoSize,0,Percent,100" /></TableLayoutSettings> - + + Fill + + + NoControl + + + 3, 33 + + + 3, 0, 3, 6 + + + 509, 13 + + + 62 + + + labelVerify + + + m_labelVerify + + + XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 2 + + True @@ -376,6 +346,6 @@ ImportSecurityPage - XenAdmin.Wizards.GenericPages.ImExPortPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.zh-CN.resx b/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.zh-CN.resx index ad364d1ce..bba773cc5 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.zh-CN.resx +++ b/XenAdmin/Wizards/ImportWizard/ImportSecurityPage.zh-CN.resx @@ -112,25 +112,19 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - - True - - - - GrowAndShrink - - + 2 + Left @@ -140,7 +134,7 @@ NoControl - + 109, 28 @@ -163,10 +157,10 @@ m_linkCertificate - System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_tlpManifest + tableLayoutPanel1 0 @@ -183,6 +177,9 @@ 3, 26 + + 6, 0, 0, 0 + 100, 17 @@ -196,72 +193,12 @@ m_checkBoxVerify - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_tlpManifest - - - 2 - - - Fill - - - 3, 36 - - - 3 - - - 509, 46 - - - 0 - - - m_tlpManifest - - - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tableLayoutPanel1 - - 0 - - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_linkCertificate" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="m_labelVerify" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_checkBoxVerify" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,Absolute,20,Absolute,20" /><Rows Styles="AutoSize,0,Absolute,10,AutoSize,0,Absolute,20,Absolute,20" /></TableLayoutSettings> - - - Fill - - - NoControl - - - 3, 0 - - - 503, 13 - - - 62 - - - labelVerify - - - m_labelVerify - - - XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - m_tlpManifest - - + 1 @@ -273,6 +210,9 @@ 3, 0 + + 3, 0, 3, 20 + 509, 13 @@ -280,7 +220,7 @@ 65 - 通过安全设置可以验证所导入的 OVF/OVA 包。 + 通过安全设置可以验证要导入的 OVF/OVA 包。 lblSecurityIntro @@ -292,10 +232,7 @@ tableLayoutPanel1 - 1 - - - 1 + 3 True @@ -331,7 +268,7 @@ tableLayoutPanel1 - 2 + 4 Fill @@ -340,7 +277,7 @@ 0, 0 - 5 + 6 515, 286 @@ -352,7 +289,7 @@ tableLayoutPanel1 - System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this @@ -361,9 +298,42 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_tlpManifest" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="lblSecurityIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_ctrlError" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,Absolute,20,AutoSize,0,AutoSize,0,Percent,100,Absolute,20,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="m_linkCertificate" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="m_checkBoxVerify" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="m_labelVerify" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="lblSecurityIntro" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_ctrlError" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,Absolute,10,AutoSize,0,Percent,100" /></TableLayoutSettings> - + + Fill + + + NoControl + + + 3, 33 + + + 3, 0, 3, 6 + + + 509, 13 + + + 62 + + + labelVerify + + + m_labelVerify + + + XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tableLayoutPanel1 + + + 2 + + True @@ -376,6 +346,6 @@ ImportSecurityPage - XenAdmin.Wizards.GenericPages.ImExPortPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + XenAdmin.Controls.XenTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/XenAdmin/Wizards/ImportWizard/ImportSelectNetworkPage.cs b/XenAdmin/Wizards/ImportWizard/ImportSelectNetworkPage.cs index 43764222e..e0d9a438b 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportSelectNetworkPage.cs +++ b/XenAdmin/Wizards/ImportWizard/ImportSelectNetworkPage.cs @@ -88,11 +88,11 @@ namespace XenAdmin.Wizards.ImportWizard public EnvelopeType SelectedOvfEnvelope { private get; set; } - public override string IntroductionText { get { return Messages.IMPORT_WIZARD_NETWORKING_INTRO; } } + protected override string IntroductionText => Messages.IMPORT_WIZARD_NETWORKING_INTRO; - public override string TableIntroductionText { get { return Messages.IMPORT_WIZARD_VM_SELECTION_INTRODUCTION; } } + protected override string TableIntroductionText => Messages.IMPORT_WIZARD_VM_SELECTION_INTRODUCTION; - public override NetworkResourceContainer NetworkData(string sysId) + protected override NetworkResourceContainer NetworkData(string sysId) { return new OvfNetworkResourceContainer(sysId, SelectedOvfEnvelope); } diff --git a/XenAdmin/Wizards/ImportWizard/ImportSourcePage.cs b/XenAdmin/Wizards/ImportWizard/ImportSourcePage.cs index e18dfb08e..f7bcf997f 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportSourcePage.cs +++ b/XenAdmin/Wizards/ImportWizard/ImportSourcePage.cs @@ -48,7 +48,6 @@ using XenAdmin.Dialogs; using XenAdmin.Controls.Common; using XenCenterLib.Archive; using XenOvf; -using XenOvf.Definitions; using XenOvf.Definitions.VMC; using XenOvf.Utilities; @@ -61,14 +60,12 @@ namespace XenAdmin.Wizards.ImportWizard private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private readonly string[] m_supportedImageTypes = { ".vhd", ".vmdk" };//CA-61385: remove ".vdi", ".wim" support for Boston private readonly string[] m_supportedApplianceTypes = { ".ovf", ".ova", ".ova.gz" }; - private readonly string[] m_supportedXvaTypes = {".xva", "ova.xml"}; + private readonly string[] m_supportedXvaTypes = {".xva", ".xva.gz", "ova.xml"}; /// /// Stores the last valid selected appliance /// private string m_lastValidAppliance; - - private EnvelopeType m_selectedOvfEnvelope; private bool m_buttonNextEnabled; private string _unzipFileIn; @@ -132,13 +129,16 @@ namespace XenAdmin.Wizards.ImportWizard string extension = Path.GetExtension(FilePath).ToLower(); - if (extension == ".gz") + if (extension == ".gz" && (!PerformCheck(CheckSourceIsWritable) || !Uncompress())) { - if (!PerformCheck(CheckSourceIsWritable) || !Uncompress()) - { - cancel = true; - return; - } + cancel = true; + return; + } + + if (extension == ".ova" && !PerformCheck(CheckSourceIsWritable)) + { + cancel = true; + return; } CheckDelegate check = null; @@ -161,7 +161,7 @@ namespace XenAdmin.Wizards.ImportWizard return; } - if (TypeOfImport == ImportWizard.ImportType.Ovf && OVF.HasEncryption(SelectedOvfEnvelope)) + if (TypeOfImport == ImportWizard.ImportType.Ovf && SelectedOvfPackage.HasEncryption()) { cancel = true; m_tlpEncryption.Visible = true; @@ -198,40 +198,9 @@ namespace XenAdmin.Wizards.ImportWizard public ImportWizard.ImportType TypeOfImport { get; private set; } - public string FilePath { get { return m_textBoxFile.Text.Trim(); } } + public string FilePath => m_textBoxFile.Text.Trim(); - /// - /// Maybe null if no valid ovf has been found - /// - public EnvelopeType SelectedOvfEnvelope - { - get { return m_selectedOvfEnvelope; } - private set - { - m_selectedOvfEnvelope = value; - - if (m_selectedOvfEnvelope == null) - _SelectedOvfPackage = null; - else - _SelectedOvfPackage = XenOvf.Package.Create(FilePath); - } - } - - /// - /// XenOvf.Package is the proper abstraction for the wizard to use for most cases instead of just OVF. - /// Maintain it along side SelectedOvf until it can be phased out. - /// - public XenOvf.Package SelectedOvfPackage - { - get - { - if (m_selectedOvfEnvelope == null) - return null; - - return _SelectedOvfPackage; - } - } - XenOvf.Package _SelectedOvfPackage; + public Package SelectedOvfPackage { get; private set; } public ulong ImageLength { get; private set; } @@ -251,7 +220,7 @@ namespace XenAdmin.Wizards.ImportWizard #region Private methods /// - /// Performs certain checks on the pages's input data and shows/hides an error accordingly + /// Performs certain checks on the page's input data and shows/hides an error accordingly /// /// The checks to perform private bool PerformCheck(params CheckDelegate[] checks) @@ -298,18 +267,18 @@ namespace XenAdmin.Wizards.ImportWizard private string GetXmlStringFromTarXVA() { using (Stream stream = new FileStream(FilePath, FileMode.Open, FileAccess.Read)) - { - ArchiveIterator iterator = ArchiveFactory.Reader(ArchiveFactory.Type.Tar, stream); - if( iterator.HasNext() ) - { - Stream ofs = new MemoryStream(); - iterator.ExtractCurrentFile(ofs); - return new StreamReader(ofs).ReadToEnd(); - } + { + using (var iterator = ArchiveFactory.Reader(ArchiveFactory.Type.Tar, stream)) + if (iterator.HasNext()) + { + Stream ofs = new MemoryStream(); + iterator.ExtractCurrentFile(ofs); + return new StreamReader(ofs).ReadToEnd(); + } - return String.Empty; - } - } + return string.Empty; + } + } private ulong GetTotalSizeFromXmlXva(string xmlString) { @@ -345,7 +314,7 @@ namespace XenAdmin.Wizards.ImportWizard { WimFile wimDisk = new WimFile(wimstream); string manifest = wimDisk.Manifest; - Wim_Manifest wimManifest = (Wim_Manifest)Tools.Deserialize(manifest, typeof(Wim_Manifest)); + Wim_Manifest wimManifest = Tools.Deserialize(manifest); DiskCapacity = wimManifest.Image[wimDisk.BootImage].TotalBytes; //image data size return true; } @@ -386,70 +355,26 @@ namespace XenAdmin.Wizards.ImportWizard if (m_lastValidAppliance == FilePath) return true; - SelectedOvfEnvelope = GetOvfEnvelope(out error); - if (SelectedOvfEnvelope != null) - { - m_lastValidAppliance = FilePath; - return true; - } + SelectedOvfPackage = Package.Create(FilePath); - return false; - } + if (!OVF.Validate(SelectedOvfPackage, out List warnings)) + { + error = warnings[warnings.Count - 1]; + return false; + } - private EnvelopeType GetOvfEnvelope(out string error) - { - error = string.Empty; - string path = FilePath; - string extension = Path.GetExtension(path).ToLower(); - - if (extension == ".ovf") - { - EnvelopeType env = null; - - try + if (warnings != null && warnings.Count > 0 && !Properties.Settings.Default.IgnoreOvfValidationWarnings) + { + using (var dlg = new OvfValidationDialog(warnings)) { - env = OVF.Load(path); - } - catch(OutOfMemoryException ex) - { - log.ErrorFormat("Failed to load OVF {0} as we ran out of memory: {1}", path, ex.Message); - env = null; + if (dlg.ShowDialog(this) == DialogResult.Cancel) + return false; } + } - if (env == null) - { - error = Messages.INVALID_OVF; - return null; - } - - return env; - } - - if (extension == ".ova") - { - if (!CheckSourceIsWritable(out error)) - return null; - - try - { - string x = OVF.ExtractOVFXml(path); - var env = Tools.DeserializeOvfXml(x); - if (env == null) - { - error = Messages.IMPORT_SELECT_APPLIANCE_PAGE_ERROR_CORRUPT_OVA; - return null; - } - return env; - } - catch (Exception) - { - error = Messages.IMPORT_SELECT_APPLIANCE_PAGE_ERROR_CORRUPT_OVA; - return null; - } - } - - return null; - } + m_lastValidAppliance = FilePath; + return true; + } private bool IsUri() { @@ -604,7 +529,11 @@ namespace XenAdmin.Wizards.ImportWizard private bool Download() { - using (var dlog = new FolderBrowserDialog { Description = Messages.FOLDER_BROWSER_DOWNLOAD_APPLIANCE }) + using (var dlog = new FolderBrowserDialog + { + Description = Messages.FOLDER_BROWSER_DOWNLOAD_APPLIANCE, + SelectedPath = Win32.GetKnownFolderPath(Win32.KnownFolders.Downloads) + }) { if (dlog.ShowDialog() == DialogResult.OK) { @@ -840,7 +769,7 @@ namespace XenAdmin.Wizards.ImportWizard if (appfile.LocalPath.ToLower().EndsWith(".ovf")) { - var envType = OVF.Load(appfile.LocalPath); + var envType = Tools.DeserializeOvfXml(Tools.LoadFile(appfile.LocalPath)); if (envType != null) { diff --git a/XenAdmin/Wizards/ImportWizard/ImportWizard.cs b/XenAdmin/Wizards/ImportWizard/ImportWizard.cs index eb112f417..d8efcb589 100644 --- a/XenAdmin/Wizards/ImportWizard/ImportWizard.cs +++ b/XenAdmin/Wizards/ImportWizard/ImportWizard.cs @@ -105,7 +105,7 @@ namespace XenAdmin.Wizards.ImportWizard m_selectedObject = xenObject; m_pageTvmIp.IsExportMode = false; - m_pageFinish.SummaryRetreiver = GetSummary; + m_pageFinish.SummaryRetriever = GetSummary; m_pageXvaStorage.ImportVmCompleted += m_pageXvaStorage_ImportVmCompleted; if (!string.IsNullOrEmpty(filename)) @@ -131,7 +131,6 @@ namespace XenAdmin.Wizards.ImportWizard break; case ImportType.Ovf: (new ImportApplianceAction(TargetConnection, - m_pageImportSource.SelectedOvfEnvelope, m_pageImportSource.SelectedOvfPackage, m_vmMappings, m_pageSecurity.VerifyManifest, @@ -205,17 +204,17 @@ namespace XenAdmin.Wizards.ImportWizard AddAfterPage(m_pageImportSource, appliancePages); } - m_pageEula.SelectedOvfEnvelope = m_pageImportSource.SelectedOvfEnvelope; + m_pageEula.SelectedOvfEnvelope = m_pageImportSource.SelectedOvfPackage.OvfEnvelope; m_pageSecurity.SelectedOvfPackage = m_pageImportSource.SelectedOvfPackage; CheckDisabledPages(m_pageEula, m_pageSecurity); //decide whether to disable these progress steps - ResetVmMappings(m_pageImportSource.SelectedOvfEnvelope); - m_pageHost.SelectedOvfEnvelope = m_pageImportSource.SelectedOvfEnvelope; + ResetVmMappings(m_pageImportSource.SelectedOvfPackage.OvfEnvelope); + m_pageHost.SelectedOvfEnvelope = m_pageImportSource.SelectedOvfPackage.OvfEnvelope; m_pageHost.SetDefaultTarget(m_pageHost.ChosenItem ?? m_selectedObject); m_pageHost.VmMappings = m_vmMappings; - m_pageStorage.SelectedOvfEnvelope = m_pageImportSource.SelectedOvfEnvelope; - lunPerVdiMappingPage.SelectedOvfEnvelope = m_pageImportSource.SelectedOvfEnvelope; - m_pageNetwork.SelectedOvfEnvelope = m_pageImportSource.SelectedOvfEnvelope; + m_pageStorage.SelectedOvfEnvelope = m_pageImportSource.SelectedOvfPackage.OvfEnvelope; + lunPerVdiMappingPage.SelectedOvfEnvelope = m_pageImportSource.SelectedOvfPackage.OvfEnvelope; + m_pageNetwork.SelectedOvfEnvelope = m_pageImportSource.SelectedOvfPackage.OvfEnvelope; NotifyNextPagesOfChange(m_pageEula, m_pageHost, m_pageStorage, m_pageNetwork, m_pageSecurity, m_pageOptions); break; @@ -255,8 +254,14 @@ namespace XenAdmin.Wizards.ImportWizard } else if (type == typeof(ImageVMConfigPage)) { - //then use it to create an ovf for the import - m_envelopeFromVhd = InitialiseOvfEnvelope(); + //then use it to create an ovf for the import + + m_envelopeFromVhd = OVF.CreateOvfEnvelope(m_pageVMconfig.VmName, + m_pageVMconfig.CpuCount, m_pageVMconfig.Memory, + m_pageBootOptions.BootParams, m_pageBootOptions.PlatformSettings, + m_pageImportSource.DiskCapacity, m_pageImportSource.IsWIM, m_pageVMconfig.AdditionalSpace, + m_pageImportSource.FilePath, m_pageImportSource.ImageLength); + m_pageStorage.SelectedOvfEnvelope = m_envelopeFromVhd; lunPerVdiMappingPage.SelectedOvfEnvelope = m_envelopeFromVhd; m_pageNetwork.SelectedOvfEnvelope = m_envelopeFromVhd; @@ -514,10 +519,7 @@ namespace XenAdmin.Wizards.ImportWizard { var temp = new List(); - var appName = m_pageImportSource.SelectedOvfEnvelope.Name; - if (string.IsNullOrEmpty(appName)) - appName = Path.GetFileNameWithoutExtension(m_pageImportSource.SelectedOvfPackage.PackageSourceFile); - + var appName = m_pageImportSource.SelectedOvfPackage.Name; temp.Add(new Tuple(Messages.FINISH_PAGE_REVIEW_APPLIANCE, appName)); temp.Add(new Tuple(Messages.FINISH_PAGE_VERIFY_MANIFEST, m_pageSecurity.VerifyManifest.ToYesNoStringI18n())); temp.Add(new Tuple(Messages.FINISH_PAGE_VERIFY_SIGNATURE, m_pageSecurity.VerifySignature.ToYesNoStringI18n())); @@ -694,40 +696,6 @@ namespace XenAdmin.Wizards.ImportWizard return Guid.NewGuid().ToString(); } - private EnvelopeType InitialiseOvfEnvelope() - { - EnvelopeType env = OVF.CreateEnvelope(m_pageVMconfig.VmName); - - string systemID = OVF.AddVirtualSystem(env, m_pageVMconfig.VmName); - string hdwareSectionId = OVF.AddVirtualHardwareSection(env, systemID); - string guid = Guid.NewGuid().ToString(); - OVF.AddVirtualSystemSettingData(env, systemID, hdwareSectionId, env.Name, Messages.VIRTUAL_MACHINE, - Messages.OVF_CREATED, guid, "hvm-3.0-unknown"); - - var bootMode = m_pageBootOptions.SelectedBootMode; - OVF.AddOtherSystemSettingData(env, systemID, "HVM_boot_policy", XenOvf.Properties.Settings.Default.xenBootOptions, OVF.GetContentMessage("OTHER_SYSTEM_SETTING_DESCRIPTION_2")); - var bootParams = XenOvf.Properties.Settings.Default.xenBootParams + (bootMode == BootMode.UEFI_BOOT || bootMode == BootMode.UEFI_SECURE_BOOT ? "firmware=uefi;" : string.Empty); - OVF.AddOtherSystemSettingData(env, systemID, "HVM_boot_params", bootParams, OVF.GetContentMessage("OTHER_SYSTEM_SETTING_DESCRIPTION_6")); - var platformSetting = XenOvf.Properties.Settings.Default.xenPlatformSetting + (bootMode == BootMode.UEFI_SECURE_BOOT ? "secureboot=true;" : string.Empty); - OVF.AddOtherSystemSettingData(env, systemID, "platform", platformSetting, OVF.GetContentMessage("OTHER_SYSTEM_SETTING_DESCRIPTION_3")); - - OVF.SetCPUs(env, systemID, m_pageVMconfig.CpuCount); - OVF.SetMemory(env, systemID, m_pageVMconfig.Memory, "MB"); - - string netId = Guid.NewGuid().ToString(); - OVF.AddNetwork(env, systemID, netId, string.Format(Messages.NETWORK_NAME, 0), Messages.OVF_NET_DESCRIPTION, null); - - string diskId = Guid.NewGuid().ToString(); - ulong capacity = m_pageImportSource.DiskCapacity; - if (m_pageImportSource.IsWIM) - capacity += m_pageVMconfig.AdditionalSpace; - OVF.AddDisk(env, systemID, diskId, m_pageImportSource.FilePath, true, Messages.OVF_DISK_CAPTION, - Messages.OVF_CREATED, m_pageImportSource.ImageLength, capacity); - - OVF.FinalizeEnvelope(env); - return env; - } - #endregion private void m_pageXvaStorage_ImportVmCompleted() @@ -766,7 +734,7 @@ namespace XenAdmin.Wizards.ImportWizard public enum ImportType { /// - /// Exported VM or template; filetype *xva + /// Exported VM or template; filetype *.xva, *.xva.gz /// Xva, /// diff --git a/XenAdmin/Wizards/ImportWizard/NetworkPickerPage.cs b/XenAdmin/Wizards/ImportWizard/NetworkPickerPage.cs index 42eb66f2d..20b8f9c9b 100644 --- a/XenAdmin/Wizards/ImportWizard/NetworkPickerPage.cs +++ b/XenAdmin/Wizards/ImportWizard/NetworkPickerPage.cs @@ -473,8 +473,9 @@ namespace XenAdmin.Wizards.ImportWizard private void m_networkGridView_DataError(object sender, DataGridViewDataErrorEventArgs e) { e.ThrowException = false; - log.Error(String.Format(Messages.NETWORKPICKER_LOG_VIF_ERROR, e.Exception.Message)); - } + log.Error("Error from VIF table:", e.Exception); + + } private void m_networkGridView_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { diff --git a/XenAdmin/Wizards/ImportWizard/StoragePickerPage.Designer.cs b/XenAdmin/Wizards/ImportWizard/StoragePickerPage.Designer.cs index 06ea63078..505006ae8 100644 --- a/XenAdmin/Wizards/ImportWizard/StoragePickerPage.Designer.cs +++ b/XenAdmin/Wizards/ImportWizard/StoragePickerPage.Designer.cs @@ -39,8 +39,15 @@ // this.m_srPicker.Connection = null; resources.ApplyResources(this.m_srPicker, "m_srPicker"); + this.m_srPicker.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; this.m_srPicker.Name = "m_srPicker"; - this.m_srPicker.SrSelectionChanged += new System.Action(this.m_srPicker_SrSelectionChanged); + this.m_srPicker.NodeIndent = 3; + this.m_srPicker.RootAlwaysExpanded = false; + this.m_srPicker.ShowCheckboxes = false; + this.m_srPicker.ShowDescription = true; + this.m_srPicker.ShowImages = true; + this.m_srPicker.ShowRootLines = true; + this.m_srPicker.SelectedIndexChanged += new System.EventHandler(this.srPicker1_SelectedIndexChanged); // // tableLayoutPanel1 // diff --git a/XenAdmin/Wizards/ImportWizard/StoragePickerPage.cs b/XenAdmin/Wizards/ImportWizard/StoragePickerPage.cs index 569b5358d..93058901b 100644 --- a/XenAdmin/Wizards/ImportWizard/StoragePickerPage.cs +++ b/XenAdmin/Wizards/ImportWizard/StoragePickerPage.cs @@ -67,17 +67,17 @@ namespace XenAdmin.Wizards.ImportWizard /// /// Gets the page's title (headline) /// - public override string PageTitle { get { return Messages.IMPORT_SELECT_STORAGE_PAGE_TITLE; } } + public override string PageTitle => Messages.IMPORT_SELECT_STORAGE_PAGE_TITLE; /// /// Gets the page's label in the (left hand side) wizard progress panel /// - public override string Text { get { return Messages.IMPORT_SELECT_STORAGE_PAGE_TEXT; } } + public override string Text => Messages.IMPORT_SELECT_STORAGE_PAGE_TEXT; /// /// Gets the value by which the help files section for this page is identified /// - public override string HelpID { get { return "StoragePicker"; } } + public override string HelpID => "StoragePicker"; protected override bool ImplementsIsDirty() { @@ -119,8 +119,6 @@ namespace XenAdmin.Wizards.ImportWizard public override void PopulatePage() { - labelSrHint.Text = Messages.IMPORT_VM_SELECT_SR; - // Select default SR Pool pool = Helpers.GetPoolOfOne(m_targetConnection); if (pool != null) @@ -148,7 +146,7 @@ namespace XenAdmin.Wizards.ImportWizard public string FilePath { private get; set; } - public SR SR { get { return m_srPicker.SR; } } + public SR SR => m_srPicker.SR; public VM ImportedVm { get; private set; } @@ -298,7 +296,7 @@ namespace XenAdmin.Wizards.ImportWizard }); } - private void m_srPicker_SrSelectionChanged(object obj) + private void srPicker1_SelectedIndexChanged(object sender, EventArgs e) { if (ImportInProgress()) return; diff --git a/XenAdmin/Wizards/ImportWizard/StoragePickerPage.ja.resx b/XenAdmin/Wizards/ImportWizard/StoragePickerPage.ja.resx index 22424c34f..4fcd2099a 100644 --- a/XenAdmin/Wizards/ImportWizard/StoragePickerPage.ja.resx +++ b/XenAdmin/Wizards/ImportWizard/StoragePickerPage.ja.resx @@ -125,13 +125,19 @@ Segoe UI, 9pt + + + False + + + 17 + 0, 0 572, 332 - 0 @@ -169,7 +175,9 @@ 0 - label1 + 新規 VM の仮想ディスクを格納するストレージ リポジトリを選択します。 + +完了したら、[インポート] をクリックして VM のインポートを開始し、ネットワーク オプションの構成に進みます。 labelSrHint diff --git a/XenAdmin/Wizards/ImportWizard/StoragePickerPage.resx b/XenAdmin/Wizards/ImportWizard/StoragePickerPage.resx index 81362b3d6..6b4d580e4 100644 --- a/XenAdmin/Wizards/ImportWizard/StoragePickerPage.resx +++ b/XenAdmin/Wizards/ImportWizard/StoragePickerPage.resx @@ -125,13 +125,19 @@ Segoe UI, 9pt + + + False + + + 17 + - 3, 26 + 3, 52 - 566, 303 + 566, 277 - 0 @@ -163,13 +169,15 @@ 3, 0, 3, 10 - 566, 13 + 566, 39 0 - label1 + Select a storage repository where virtual disks for the new VM will be stored. + +When you have finished, click "Import" to begin importing the VM and proceed to configure networking options. labelSrHint diff --git a/XenAdmin/Wizards/ImportWizard/StoragePickerPage.zh-CN.resx b/XenAdmin/Wizards/ImportWizard/StoragePickerPage.zh-CN.resx index 22424c34f..28b3a8b85 100644 --- a/XenAdmin/Wizards/ImportWizard/StoragePickerPage.zh-CN.resx +++ b/XenAdmin/Wizards/ImportWizard/StoragePickerPage.zh-CN.resx @@ -125,13 +125,19 @@ Segoe UI, 9pt + + + False + + + 17 + - 0, 0 + 3, 52 - 572, 332 + 566, 277 - 0 @@ -163,13 +169,15 @@ 3, 0, 3, 10 - 566, 13 + 566, 39 0 - label1 + 选择将存储新 VM 的虚拟磁盘的存储库。 + +完成后,单击“导入”开始导入 VM 并继续配置网络连接选项。 labelSrHint diff --git a/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.Designer.cs b/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.Designer.cs index a08d00458..ed39250a9 100644 --- a/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.Designer.cs +++ b/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.Designer.cs @@ -42,6 +42,9 @@ namespace XenAdmin.Wizards.NewPolicyWizard this.quiesceCheckBox = new System.Windows.Forms.CheckBox(); this.label2 = new System.Windows.Forms.Label(); this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanelVssRemoved = new System.Windows.Forms.TableLayoutPanel(); + this.label6 = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.tableLayoutPanelVss = new System.Windows.Forms.TableLayoutPanel(); this.label4 = new System.Windows.Forms.Label(); this.tableLayoutPanelCheckpoint = new System.Windows.Forms.TableLayoutPanel(); @@ -51,6 +54,8 @@ namespace XenAdmin.Wizards.NewPolicyWizard ((System.ComponentModel.ISupportInitialize)(this.pictureBoxWarning)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxVSS)).BeginInit(); this.tableLayoutPanel2.SuspendLayout(); + this.tableLayoutPanelVssRemoved.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.tableLayoutPanelVss.SuspendLayout(); this.tableLayoutPanelCheckpoint.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.checkpointInfoPictureBox)).BeginInit(); @@ -78,7 +83,7 @@ namespace XenAdmin.Wizards.NewPolicyWizard // // pictureBoxWarning // - this.pictureBoxWarning.Image = global::XenAdmin.Properties.Resources._000_Alert2_h32bit_16; + this.pictureBoxWarning.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16; resources.ApplyResources(this.pictureBoxWarning, "pictureBoxWarning"); this.pictureBoxWarning.Name = "pictureBoxWarning"; this.pictureBoxWarning.TabStop = false; @@ -126,17 +131,37 @@ namespace XenAdmin.Wizards.NewPolicyWizard // tableLayoutPanel2 // resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2"); - this.tableLayoutPanel2.Controls.Add(this.label3, 1, 6); + this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanelVssRemoved, 1, 5); + this.tableLayoutPanel2.Controls.Add(this.label3, 1, 7); this.tableLayoutPanel2.Controls.Add(this.radioButtonDiskOnly, 0, 1); - this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel1, 1, 8); - this.tableLayoutPanel2.Controls.Add(this.radioButtonDiskAndMemory, 0, 5); + this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel1, 1, 9); + this.tableLayoutPanel2.Controls.Add(this.radioButtonDiskAndMemory, 0, 6); this.tableLayoutPanel2.Controls.Add(this.label2, 1, 2); this.tableLayoutPanel2.Controls.Add(this.quiesceCheckBox, 1, 3); this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanelVss, 1, 4); this.tableLayoutPanel2.Controls.Add(this.label1, 0, 0); - this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanelCheckpoint, 1, 7); + this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanelCheckpoint, 1, 8); this.tableLayoutPanel2.Name = "tableLayoutPanel2"; // + // tableLayoutPanelVssRemoved + // + resources.ApplyResources(this.tableLayoutPanelVssRemoved, "tableLayoutPanelVssRemoved"); + this.tableLayoutPanelVssRemoved.Controls.Add(this.label6, 1, 0); + this.tableLayoutPanelVssRemoved.Controls.Add(this.pictureBox1, 0, 0); + this.tableLayoutPanelVssRemoved.Name = "tableLayoutPanelVssRemoved"; + // + // label6 + // + resources.ApplyResources(this.label6, "label6"); + this.label6.Name = "label6"; + // + // pictureBox1 + // + this.pictureBox1.Image = global::XenAdmin.Properties.Resources._000_Alert2_h32bit_16; + resources.ApplyResources(this.pictureBox1, "pictureBox1"); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.TabStop = false; + // // tableLayoutPanelVss // resources.ApplyResources(this.tableLayoutPanelVss, "tableLayoutPanelVss"); @@ -181,6 +206,9 @@ namespace XenAdmin.Wizards.NewPolicyWizard ((System.ComponentModel.ISupportInitialize)(this.pictureBoxVSS)).EndInit(); this.tableLayoutPanel2.ResumeLayout(false); this.tableLayoutPanel2.PerformLayout(); + this.tableLayoutPanelVssRemoved.ResumeLayout(false); + this.tableLayoutPanelVssRemoved.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.tableLayoutPanelVss.ResumeLayout(false); this.tableLayoutPanelVss.PerformLayout(); this.tableLayoutPanelCheckpoint.ResumeLayout(false); @@ -208,5 +236,8 @@ namespace XenAdmin.Wizards.NewPolicyWizard private System.Windows.Forms.TableLayoutPanel tableLayoutPanelCheckpoint; private System.Windows.Forms.PictureBox checkpointInfoPictureBox; private System.Windows.Forms.Label label5; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanelVssRemoved; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.PictureBox pictureBox1; } } diff --git a/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.cs b/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.cs index 0c380a733..86a89a6c3 100644 --- a/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.cs +++ b/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Drawing; +using System.Linq; using XenAdmin.Actions; using XenAdmin.Controls; using XenAdmin.Core; @@ -58,49 +59,31 @@ namespace XenAdmin.Wizards.NewPolicyWizard { if (BackupType == vmss_type.snapshot) return Messages.DISKS_ONLY; - else if (BackupType == vmss_type.snapshot_with_quiesce) + if (BackupType == vmss_type.snapshot_with_quiesce) return Messages.QUIESCED_SNAPSHOTS; - else - return Messages.DISKS_AND_MEMORY; + return Messages.DISKS_AND_MEMORY; } } - public override string HelpID - { - get { return "Snapshottype"; } - } + public override string HelpID => "Snapshottype"; - public override string PageTitle - { - get { return Messages.SNAPSHOT_TYPE_TITLE; } - } + public override string PageTitle => Messages.SNAPSHOT_TYPE_TITLE; - public override string Text - { - get { return Messages.SNAPSHOT_TYPE; } - } + public override string Text => Messages.SNAPSHOT_TYPE; protected override void PageLoadedCore(PageLoadedDirection direction) { if (direction == PageLoadedDirection.Forward) - EnableShapshotTypes(Connection, false); + EnableShapshotTypes(Connection); } - public Image Image - { - get { return Properties.Resources._000_VMSession_h32bit_16; } - } + public Image Image => Properties.Resources._000_VMSession_h32bit_16; - public bool ValidToSave - { - get { return true; } - } + public bool ValidToSave => true; public void ShowLocalValidationMessages() - { - - } + { } public void Cleanup() { @@ -133,14 +116,13 @@ namespace XenAdmin.Wizards.NewPolicyWizard return Messages.DISKS_AND_MEMORY; case vmss_type.snapshot_with_quiesce: return Messages.QUIESCED_SNAPSHOTS; - case vmss_type.unknown: default: return Messages.UNKNOWN; } } } - public void ToggleQuiesceCheckBox(List SelectedVMs) + public void ToggleQuiesceCheckBox(List selectedVMs) { switch (BackupType) { @@ -160,7 +142,7 @@ namespace XenAdmin.Wizards.NewPolicyWizard break; } - foreach (VM vm in SelectedVMs) + foreach (VM vm in selectedVMs) { if (!vm.allowed_operations.Contains(vm_operations.snapshot_with_quiesce) || Helpers.FeatureForbidden(vm, Host.RestrictVss)) { @@ -172,67 +154,45 @@ namespace XenAdmin.Wizards.NewPolicyWizard } - private void RefreshTab(VMSS policy) - { - /* when a policy does not have any VMs, irrespective of - * the snapshot type, enable Quiesce - */ - - quiesceCheckBox.Enabled = (policy.VMs.Count == 0); - - switch (policy.type) - { - case vmss_type.checkpoint: - radioButtonDiskAndMemory.Checked = true; - quiesceCheckBox.Enabled = false; - break; - case vmss_type.snapshot: - radioButtonDiskOnly.Checked = true; - break; - case vmss_type.snapshot_with_quiesce: - radioButtonDiskOnly.Checked = true; - - /* when the snapshot type itself is quiesce then we need to - * enable it irrespective of the number of VMs ( > 1 condition) - */ - - quiesceCheckBox.Enabled = true; - quiesceCheckBox.Checked = true; - break; - } - EnableShapshotTypes(policy.Connection, quiesceCheckBox.Enabled); - } - - private void EnableShapshotTypes(IXenConnection connection, bool isQuiesceEnabled) + private void EnableShapshotTypes(IXenConnection connection) { radioButtonDiskAndMemory.Enabled = label3.Enabled = !Helpers.FeatureForbidden(connection, Host.RestrictCheckpoint); tableLayoutPanelCheckpoint.Visible = !radioButtonDiskAndMemory.Enabled; pictureBoxWarning.Visible = labelWarning.Visible = radioButtonDiskAndMemory.Enabled; - quiesceCheckBox.Enabled = true; - quiesceCheckBox.Visible = true; - if (SelectedVMs != null) + var vssFeatureExists = !Helpers.QuebecOrGreater(connection); + quiesceCheckBox.Visible = vssFeatureExists; + + if (_policy == null) // new policy { - if (SelectedVMs.Count > 0) + quiesceCheckBox.Enabled = vssFeatureExists && !Helpers.FeatureForbidden(connection, Host.RestrictVss); + if (quiesceCheckBox.Enabled && SelectedVMs != null && SelectedVMs.Any(vm => !vm.allowed_operations.Contains(vm_operations.snapshot_with_quiesce))) + quiesceCheckBox.Enabled = quiesceCheckBox.Checked = false; + } + else // editing existing policy + { + switch (_policy.type) { - foreach (VM vm in SelectedVMs) - { - if (!vm.allowed_operations.Contains(vm_operations.snapshot_with_quiesce) || - Helpers.FeatureForbidden(vm, Host.RestrictVss)) - { - quiesceCheckBox.Enabled = false; - quiesceCheckBox.Checked = false; - break; - } - } + case vmss_type.checkpoint: + radioButtonDiskAndMemory.Checked = true; + quiesceCheckBox.Enabled = false; + break; + case vmss_type.snapshot: + radioButtonDiskOnly.Checked = true; + // when a policy does not have any VMs, irrespective of the snapshot type, enable Quiesce if supported + quiesceCheckBox.Enabled = vssFeatureExists && _policy.VMs.Count == 0; + break; + case vmss_type.snapshot_with_quiesce: + radioButtonDiskOnly.Checked = true; + // when the snapshot type itself is quiesce then we need to enable it irrespective of the number of VMs ( > 1 condition) + quiesceCheckBox.Visible = quiesceCheckBox.Enabled = true; + quiesceCheckBox.Checked = true; + break; } } - else /* we enter this block only when we are editing a policy, in that case the decision has already been taken in RefreshTab function */ - { - quiesceCheckBox.Enabled = isQuiesceEnabled; - } - tableLayoutPanelVss.Visible = !quiesceCheckBox.Enabled; + tableLayoutPanelVss.Visible = vssFeatureExists && !quiesceCheckBox.Enabled; + tableLayoutPanelVssRemoved.Visible = !vssFeatureExists && quiesceCheckBox.Checked; } public AsyncAction SaveSettings() @@ -244,7 +204,7 @@ namespace XenAdmin.Wizards.NewPolicyWizard public void SetXenObjects(IXenObject orig, IXenObject clone) { _policy = (VMSS)clone; - RefreshTab(_policy); + EnableShapshotTypes(_policy.Connection); } public bool HasChanged @@ -262,6 +222,7 @@ namespace XenAdmin.Wizards.NewPolicyWizard { if (quiesceCheckBox.Checked) radioButtonDiskOnly.Checked = true; + tableLayoutPanelVssRemoved.Visible = Helpers.QuebecOrGreater(_policy != null ? _policy.Connection : Connection) && quiesceCheckBox.Checked; } private void radioButtonDiskAndMemory_CheckedChanged(object sender, System.EventArgs e) diff --git a/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.ja.resx b/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.ja.resx index 62331e77e..2b8863afa 100644 --- a/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.ja.resx +++ b/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.ja.resx @@ -124,17 +124,116 @@ 2 - + True + + GrowAndShrink + + + 2 + + + True + + + Fill + + + NoControl + + + + 25, 3 + + + 3, 3, 3, 3 + + + 455, 26 + + + 0 + + + [XenServer] [BRANDING_VERSION_8_1] 以降、休止スナップショットは使用できなくなりました。スケジュールされたスナップショットが正常に作成されるようにするには、このオプションの選択を解除してください。 + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelVssRemoved + + + 0 + + + NoControl + + + 3, 3 + + + 16, 16 + + + 0 + + + pictureBox1 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelVssRemoved + + + 1 + + + Fill + + + 23, 136 + + + 1 + + + 483, 32 + + + 8 + + + tableLayoutPanelVssRemoved + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label6" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,50,Percent,100" /><Rows Styles="Percent,100,Absolute,20" /></TableLayoutSettings> + + + True + Fill NoControl - 23, 163 @@ -160,7 +259,7 @@ tableLayoutPanel2 - 0 + 1 True @@ -193,7 +292,7 @@ tableLayoutPanel2 - 1 + 2 True @@ -287,7 +386,7 @@ tableLayoutPanel2 - 2 + 3 <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelWarning" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxWarning" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,50,Percent,100" /><Rows Styles="Percent,100,Absolute,20" /></TableLayoutSettings> @@ -326,7 +425,7 @@ tableLayoutPanel2 - 4 + 5 True @@ -359,7 +458,7 @@ tableLayoutPanel2 - 5 + 6 True @@ -452,7 +551,7 @@ tableLayoutPanel2 - 6 + 7 <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxVSS" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label4" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> @@ -488,7 +587,7 @@ tableLayoutPanel2 - 7 + 8 True @@ -581,7 +680,7 @@ tableLayoutPanel2 - 8 + 9 <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkpointInfoPictureBox" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label5" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> @@ -593,7 +692,7 @@ 0, 0 - 10 + 11 509, 379 @@ -614,7 +713,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label3" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonDiskOnly" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanel1" Row="8" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonDiskAndMemory" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="quiesceCheckBox" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="tableLayoutPanelVss" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanelCheckpoint" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,20,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanelVssRemoved" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label3" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonDiskOnly" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanel1" Row="9" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonDiskAndMemory" Row="6" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="quiesceCheckBox" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="tableLayoutPanelVss" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanelCheckpoint" Row="8" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,20,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,20,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> Microsoft Sans Serif, 8.25pt, style=Bold @@ -644,7 +743,7 @@ tableLayoutPanel2 - 3 + 4 True diff --git a/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.resx b/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.resx index f13b87b34..70a90c97b 100644 --- a/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.resx +++ b/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.resx @@ -124,19 +124,118 @@ 2 - + True + + GrowAndShrink + + + 2 + + + True + + + Fill + + + NoControl + + + + 25, 3 + + + 3, 3, 3, 3 + + + 455, 26 + + + 0 + + + As of [XenServer] [BRANDING_VERSION_8_1] quiesced snapshots are no longer available. Please deselect this option to ensure your scheduled snapshots are taken successfully. + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelVssRemoved + + + 0 + + + NoControl + + + 3, 3 + + + 16, 16 + + + 0 + + + pictureBox1 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelVssRemoved + + + 1 + + + Fill + + + 23, 136 + + + 1 + + + 483, 32 + + + 8 + + + tableLayoutPanelVssRemoved + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label6" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,50,Percent,100" /><Rows Styles="Percent,100,Absolute,20" /></TableLayoutSettings> + + + True + Fill NoControl - - 23, 163 + 23, 201 3, 0, 3, 10 @@ -160,7 +259,7 @@ tableLayoutPanel2 - 0 + 1 True @@ -193,7 +292,7 @@ tableLayoutPanel2 - 1 + 2 True @@ -217,7 +316,7 @@ 3, 3, 3, 3 - 455, 78 + 455, 91 0 @@ -266,13 +365,13 @@ Fill - 23, 243 + 23, 281 1 - 483, 84 + 483, 97 7 @@ -287,7 +386,7 @@ tableLayoutPanel2 - 2 + 3 <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelWarning" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxWarning" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,50,Percent,100" /><Rows Styles="Percent,100,Absolute,20" /></TableLayoutSettings> @@ -326,7 +425,7 @@ tableLayoutPanel2 - 4 + 5 True @@ -359,7 +458,7 @@ tableLayoutPanel2 - 5 + 6 True @@ -452,7 +551,7 @@ tableLayoutPanel2 - 6 + 7 <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxVSS" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label4" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> @@ -488,7 +587,7 @@ tableLayoutPanel2 - 7 + 8 True @@ -560,7 +659,7 @@ Fill - 23, 215 + 23, 253 1 @@ -581,7 +680,7 @@ tableLayoutPanel2 - 8 + 9 <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkpointInfoPictureBox" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label5" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> @@ -593,7 +692,7 @@ 0, 0 - 10 + 11 509, 379 @@ -614,13 +713,13 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label3" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonDiskOnly" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanel1" Row="8" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonDiskAndMemory" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="quiesceCheckBox" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="tableLayoutPanelVss" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanelCheckpoint" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,20,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanelVssRemoved" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label3" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonDiskOnly" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanel1" Row="9" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonDiskAndMemory" Row="6" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="quiesceCheckBox" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="tableLayoutPanelVss" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanelCheckpoint" Row="8" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,20,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,20,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> Microsoft Sans Serif, 8.25pt, style=Bold - 3, 143 + 3, 181 3, 10, 3, 3 @@ -644,7 +743,7 @@ tableLayoutPanel2 - 3 + 4 True @@ -661,4 +760,4 @@ XenAdmin.Controls.XenTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - + \ No newline at end of file diff --git a/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.zh-CN.resx b/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.zh-CN.resx index 01f85d15b..26bae53f1 100644 --- a/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.zh-CN.resx +++ b/XenAdmin/Wizards/NewPolicyWizard/NewPolicySnapshotTypePage.zh-CN.resx @@ -124,17 +124,116 @@ 2 - + True + + GrowAndShrink + + + 2 + + + True + + + Fill + + + NoControl + + + + 25, 3 + + + 3, 3, 3, 3 + + + 455, 26 + + + 0 + + + 自 [XenServer] [BRANDING_VERSION_8_1] 起,静止快照不再可用。请取消选择此选项以确保成功创建计划快照。 + + + label6 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelVssRemoved + + + 0 + + + NoControl + + + 3, 3 + + + 16, 16 + + + 0 + + + pictureBox1 + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanelVssRemoved + + + 1 + + + Fill + + + 23, 136 + + + 1 + + + 483, 32 + + + 8 + + + tableLayoutPanelVssRemoved + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel2 + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label6" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,50,Percent,100" /><Rows Styles="Percent,100,Absolute,20" /></TableLayoutSettings> + + + True + Fill NoControl - 23, 163 @@ -160,7 +259,7 @@ tableLayoutPanel2 - 0 + 1 True @@ -193,7 +292,7 @@ tableLayoutPanel2 - 1 + 2 True @@ -287,7 +386,7 @@ tableLayoutPanel2 - 2 + 3 <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelWarning" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="pictureBoxWarning" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,50,Percent,100" /><Rows Styles="Percent,100,Absolute,20" /></TableLayoutSettings> @@ -326,7 +425,7 @@ tableLayoutPanel2 - 4 + 5 True @@ -359,7 +458,7 @@ tableLayoutPanel2 - 5 + 6 True @@ -452,7 +551,7 @@ tableLayoutPanel2 - 6 + 7 <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxVSS" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label4" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> @@ -488,7 +587,7 @@ tableLayoutPanel2 - 7 + 8 True @@ -581,7 +680,7 @@ tableLayoutPanel2 - 8 + 9 <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkpointInfoPictureBox" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label5" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> @@ -593,7 +692,7 @@ 0, 0 - 10 + 11 509, 379 @@ -614,7 +713,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label3" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonDiskOnly" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanel1" Row="8" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonDiskAndMemory" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="quiesceCheckBox" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="tableLayoutPanelVss" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanelCheckpoint" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,20,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanelVssRemoved" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label3" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonDiskOnly" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanel1" Row="9" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonDiskAndMemory" Row="6" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="label2" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="quiesceCheckBox" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="tableLayoutPanelVss" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanelCheckpoint" Row="8" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,20,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,20,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> Microsoft Sans Serif, 8.25pt, style=Bold @@ -644,7 +743,7 @@ tableLayoutPanel2 - 3 + 4 True diff --git a/XenAdmin/Wizards/NewSRWizard.cs b/XenAdmin/Wizards/NewSRWizard.cs index f1e2c27ee..a081720cc 100644 --- a/XenAdmin/Wizards/NewSRWizard.cs +++ b/XenAdmin/Wizards/NewSRWizard.cs @@ -49,6 +49,8 @@ namespace XenAdmin.Wizards { public partial class NewSRWizard : XenWizardBase { + private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + #region Wizard pages private readonly NewSrWizardNamePage xenTabPageSrName; private readonly CIFS_ISO xenTabPageCifsIso; diff --git a/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/CSLG.cs b/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/CSLG.cs index 9bdfad877..ec0f2945a 100644 --- a/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/CSLG.cs +++ b/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/CSLG.cs @@ -51,7 +51,6 @@ namespace XenAdmin.Wizards.NewSRWizard_Pages.Frontends public partial class CSLG : XenTabPage { #region Private fields - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private SR _srToReattach; private bool _disasterRecoveryTask; private int _storageSystemComboLastSelectedIndex = -1; diff --git a/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/CslgLocation.cs b/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/CslgLocation.cs index b9984d73d..e42e4e98e 100644 --- a/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/CslgLocation.cs +++ b/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/CslgLocation.cs @@ -46,8 +46,6 @@ namespace XenAdmin.Wizards.NewSRWizard_Pages.Frontends { public partial class CslgLocation : XenTabPage { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private const string TARGET = "target"; private const string USERNAME = "username"; private const string PASSWORD = "password"; diff --git a/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/CslgSettings.cs b/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/CslgSettings.cs index 0d84a9117..937f555fa 100644 --- a/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/CslgSettings.cs +++ b/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/CslgSettings.cs @@ -44,8 +44,6 @@ namespace XenAdmin.Wizards.NewSRWizard_Pages.Frontends { public partial class CslgSettings : XenTabPage { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private const string CHAPUSER = "chapuser"; private const string CHAPPASSWORD = "chappassword"; private const string STORAGE_POOL_ID = "storagePoolId"; diff --git a/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/LVMoHBA.cs b/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/LVMoHBA.cs index b7e2f54a3..5070661ff 100644 --- a/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/LVMoHBA.cs +++ b/XenAdmin/Wizards/NewSRWizard_Pages/Frontends/LVMoHBA.cs @@ -47,8 +47,6 @@ namespace XenAdmin.Wizards.NewSRWizard_Pages.Frontends { public partial class LVMoHBA : XenTabPage { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private List _selectedDevices = new List(); public LVMoHBA() diff --git a/XenAdmin/Wizards/NewVMWizard/NewVMWizard.cs b/XenAdmin/Wizards/NewVMWizard/NewVMWizard.cs index af86e5894..f739a4cb6 100644 --- a/XenAdmin/Wizards/NewVMWizard/NewVMWizard.cs +++ b/XenAdmin/Wizards/NewVMWizard/NewVMWizard.cs @@ -182,8 +182,7 @@ namespace XenAdmin.Wizards.NewVMWizard page_8_Finish.StartImmediately, VMOperationCommand.WarningDialogHAInvalidConfig, VMOperationCommand.StartDiagnosisForm, - gpuCapability ? pageVgpu.GpuGroup : null, - gpuCapability ? pageVgpu.VgpuType : null, + gpuCapability ? pageVgpu.VGpus : null, pageVgpu.HasChanged, page_5_CpuMem.SelectedCoresPerSocket, page_CloudConfigParameters.ConfigDriveTemplateText); @@ -214,7 +213,7 @@ namespace XenAdmin.Wizards.NewVMWizard page_4_HomeServer.SelectedTemplate = selectedTemplate; page_5_CpuMem.SelectedTemplate = selectedTemplate; pageVgpu.vm = selectedTemplate; - page_6_Storage.SelectedTemplate = selectedTemplate; + page_6_Storage.Template = selectedTemplate; page_7_Networking.SelectedTemplate = selectedTemplate; page_CloudConfigParameters.Affinity = m_affinity; page_CloudConfigParameters.SelectedTemplate = selectedTemplate; diff --git a/XenAdmin/Wizards/NewVMWizard/Page_CloudConfigParameters.cs b/XenAdmin/Wizards/NewVMWizard/Page_CloudConfigParameters.cs index 4bb39d463..fe9af5308 100644 --- a/XenAdmin/Wizards/NewVMWizard/Page_CloudConfigParameters.cs +++ b/XenAdmin/Wizards/NewVMWizard/Page_CloudConfigParameters.cs @@ -160,9 +160,9 @@ namespace XenAdmin.Wizards.NewVMWizard existingConfig = result; errorRetrievingConfigParameters = false; } - catch (Exception) + catch (Exception ex) { - log.Warn("Could not get the config drive parameters"); + log.Warn("Could not get the config drive parameters.", ex); errorRetrievingConfigParameters = true; } } diff --git a/XenAdmin/Wizards/NewVMWizard/Page_Storage.Designer.cs b/XenAdmin/Wizards/NewVMWizard/Page_Storage.Designer.cs index 76164d823..9f25b0c81 100644 --- a/XenAdmin/Wizards/NewVMWizard/Page_Storage.Designer.cs +++ b/XenAdmin/Wizards/NewVMWizard/Page_Storage.Designer.cs @@ -38,26 +38,28 @@ namespace XenAdmin.Wizards.NewVMWizard this.SizeColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.SharedColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.DeleteButton = new System.Windows.Forms.Button(); - this.PropertiesButton = new System.Windows.Forms.Button(); + this.EditButton = new System.Windows.Forms.Button(); this.AddButton = new System.Windows.Forms.Button(); this.DisklessVMRadioButton = new System.Windows.Forms.RadioButton(); this.DisksRadioButton = new System.Windows.Forms.RadioButton(); this.label1 = new System.Windows.Forms.Label(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); ((System.ComponentModel.ISupportInitialize)(this.DisksGridView)).BeginInit(); + this.tableLayoutPanel1.SuspendLayout(); this.SuspendLayout(); // // CloneCheckBox // resources.ApplyResources(this.CloneCheckBox, "CloneCheckBox"); + this.tableLayoutPanel1.SetColumnSpan(this.CloneCheckBox, 2); this.CloneCheckBox.Name = "CloneCheckBox"; this.CloneCheckBox.UseVisualStyleBackColor = true; // // DisksGridView // - resources.ApplyResources(this.DisksGridView, "DisksGridView"); this.DisksGridView.BackgroundColor = System.Drawing.SystemColors.Window; this.DisksGridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; - this.DisksGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.DisksGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; this.DisksGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.ImageColumn, this.NameColumn, @@ -72,7 +74,9 @@ namespace XenAdmin.Wizards.NewVMWizard dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.ControlText; dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False; this.DisksGridView.DefaultCellStyle = dataGridViewCellStyle1; + resources.ApplyResources(this.DisksGridView, "DisksGridView"); this.DisksGridView.Name = "DisksGridView"; + this.tableLayoutPanel1.SetRowSpan(this.DisksGridView, 3); this.DisksGridView.SelectionChanged += new System.EventHandler(this.DisksGridView_SelectionChanged); // // ImageColumn @@ -119,12 +123,12 @@ namespace XenAdmin.Wizards.NewVMWizard this.DeleteButton.UseVisualStyleBackColor = true; this.DeleteButton.Click += new System.EventHandler(this.DeleteButton_Click); // - // PropertiesButton + // EditButton // - resources.ApplyResources(this.PropertiesButton, "PropertiesButton"); - this.PropertiesButton.Name = "PropertiesButton"; - this.PropertiesButton.UseVisualStyleBackColor = true; - this.PropertiesButton.Click += new System.EventHandler(this.PropertiesButton_Click); + resources.ApplyResources(this.EditButton, "EditButton"); + this.EditButton.Name = "EditButton"; + this.EditButton.UseVisualStyleBackColor = true; + this.EditButton.Click += new System.EventHandler(this.EditButton_Click); // // AddButton // @@ -136,6 +140,7 @@ namespace XenAdmin.Wizards.NewVMWizard // DisklessVMRadioButton // resources.ApplyResources(this.DisklessVMRadioButton, "DisklessVMRadioButton"); + this.tableLayoutPanel1.SetColumnSpan(this.DisklessVMRadioButton, 3); this.DisklessVMRadioButton.Name = "DisklessVMRadioButton"; this.DisklessVMRadioButton.TabStop = true; this.DisklessVMRadioButton.UseVisualStyleBackColor = true; @@ -144,6 +149,7 @@ namespace XenAdmin.Wizards.NewVMWizard // DisksRadioButton // resources.ApplyResources(this.DisksRadioButton, "DisksRadioButton"); + this.tableLayoutPanel1.SetColumnSpan(this.DisksRadioButton, 3); this.DisksRadioButton.Name = "DisksRadioButton"; this.DisksRadioButton.TabStop = true; this.DisksRadioButton.UseVisualStyleBackColor = true; @@ -152,24 +158,32 @@ namespace XenAdmin.Wizards.NewVMWizard // label1 // resources.ApplyResources(this.label1, "label1"); + this.tableLayoutPanel1.SetColumnSpan(this.label1, 3); this.label1.Name = "label1"; // + // tableLayoutPanel1 + // + resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.CloneCheckBox, 1, 5); + this.tableLayoutPanel1.Controls.Add(this.DeleteButton, 2, 4); + this.tableLayoutPanel1.Controls.Add(this.DisksGridView, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.EditButton, 2, 3); + this.tableLayoutPanel1.Controls.Add(this.DisksRadioButton, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.AddButton, 2, 2); + this.tableLayoutPanel1.Controls.Add(this.DisklessVMRadioButton, 0, 6); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + // // Page_Storage // resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.Controls.Add(this.CloneCheckBox); - this.Controls.Add(this.DisksGridView); - this.Controls.Add(this.DeleteButton); - this.Controls.Add(this.PropertiesButton); - this.Controls.Add(this.AddButton); - this.Controls.Add(this.DisklessVMRadioButton); - this.Controls.Add(this.DisksRadioButton); - this.Controls.Add(this.label1); + this.Controls.Add(this.tableLayoutPanel1); this.Name = "Page_Storage"; ((System.ComponentModel.ISupportInitialize)(this.DisksGridView)).EndInit(); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); this.ResumeLayout(false); - this.PerformLayout(); } @@ -179,7 +193,7 @@ namespace XenAdmin.Wizards.NewVMWizard private System.Windows.Forms.RadioButton DisksRadioButton; private System.Windows.Forms.RadioButton DisklessVMRadioButton; private System.Windows.Forms.Button AddButton; - private System.Windows.Forms.Button PropertiesButton; + private System.Windows.Forms.Button EditButton; private System.Windows.Forms.Button DeleteButton; private XenAdmin.Controls.DataGridViewEx.DataGridViewEx DisksGridView; private System.Windows.Forms.CheckBox CloneCheckBox; @@ -188,5 +202,6 @@ namespace XenAdmin.Wizards.NewVMWizard private System.Windows.Forms.DataGridViewTextBoxColumn SrColumn; private System.Windows.Forms.DataGridViewTextBoxColumn SizeColumn; private System.Windows.Forms.DataGridViewTextBoxColumn SharedColumn; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; } } diff --git a/XenAdmin/Wizards/NewVMWizard/Page_Storage.cs b/XenAdmin/Wizards/NewVMWizard/Page_Storage.cs index 41c82ea5e..53c061c6e 100644 --- a/XenAdmin/Wizards/NewVMWizard/Page_Storage.cs +++ b/XenAdmin/Wizards/NewVMWizard/Page_Storage.cs @@ -33,6 +33,7 @@ using System; using System.Collections.Generic; using System.Drawing; using System.Linq; +using System.Text; using System.Windows.Forms; using XenAdmin.Actions.VMActions; using XenAdmin.Dialogs; @@ -47,9 +48,11 @@ namespace XenAdmin.Wizards.NewVMWizard { public partial class Page_Storage : XenTabPage { - private VM Template; - private bool InstallMethodIsNetwork; - private bool loading = false; + private VM _template; + private InstallMethod _selectedInstallMethod; + private Host _affinity; + private bool _loadRequired = true; + private bool loading; public Page_Storage() { @@ -73,18 +76,14 @@ namespace XenAdmin.Wizards.NewVMWizard protected override void PageLoadedCore(PageLoadedDirection direction) { - VM template = SelectedTemplate; - bool installMethodIsNetwork = SelectedInstallMethod == InstallMethod.Network; - - if (template == Template && InstallMethodIsNetwork == installMethodIsNetwork) + if (!_loadRequired) return; loading = true; - Template = template; - InstallMethodIsNetwork = installMethodIsNetwork; - if ((!Template.DefaultTemplate() && !Template.HasAtLeastOneDisk()) - || (Template.IsHVM() && InstallMethodIsNetwork)) // CA-46213 The default should be "diskless" if the install method is "boot from network" + // CA-46213 The default should be "diskless" if the install method is "boot from network" + if (!Template.DefaultTemplate() && !Template.HasAtLeastOneDisk() + || Template.IsHVM() && SelectedInstallMethod == InstallMethod.Network) { DisklessVMRadioButton.Checked = true; } @@ -93,6 +92,7 @@ namespace XenAdmin.Wizards.NewVMWizard LoadDisks(); loading = false; + _loadRequired = false; UpdateEnablement(true); } @@ -109,8 +109,33 @@ namespace XenAdmin.Wizards.NewVMWizard XmlNode provision = Template.ProvisionXml(); if (provision != null) { - foreach (XmlNode disk in provision.ChildNodes) - rowList.Add(new DiskGridRowItem(Connection, disk, SelectedName, Affinity)); + foreach (XmlNode diskNode in provision.ChildNodes) + { + var device = new VBD + { + userdevice = diskNode.Attributes["device"].Value, + bootable = diskNode.Attributes["bootable"].Value == "true", + mode = vbd_mode.RW + }; + + var diskSize = long.Parse(diskNode.Attributes["size"].Value); + SR srUuid = Connection.Cache.Find_By_Uuid(diskNode.Attributes["sr"].Value); + SR sr = GetBestDiskStorage(Connection, diskSize, Affinity, srUuid, out Image icon, out string tooltip); + + var disk = new VDI + { + name_label = string.Format(Messages.NEWVMWIZARD_STORAGEPAGE_VDINAME, SelectedName, device.userdevice), + name_description = Messages.NEWVMWIZARD_STORAGEPAGE_DISK_DESCRIPTION, + virtual_size = diskSize, + type = (vdi_type)Enum.Parse(typeof(vdi_type), diskNode.Attributes["type"].Value), + read_only = false, + SR = new XenRef(sr != null ? sr.opaque_ref : Helper.NullOpaqueRef) + }; + + var row = new DiskGridRowItem(Connection, disk, device, DiskSource.FromDefaultTemplate); + row.UpdateStatus(icon, tooltip); + rowList.Add(row); + } } else { @@ -121,75 +146,124 @@ namespace XenAdmin.Wizards.NewVMWizard continue; VDI vdi = Connection.Resolve(vbd.VDI); - if (vdi != null) - rowList.Add(new DiskGridRowItem(Connection, vdi, vbd, false, Affinity)); + if (vdi == null) + continue; + + var device = new VBD + { + userdevice = vbd.userdevice, + bootable = vbd.bootable, + mode = vbd.mode + }; + + SR sr = GetBestDiskStorage(Connection, vdi.virtual_size, Affinity, Connection.Resolve(vdi.SR), + out Image icon, out string tooltip); + + var disk = new VDI + { + name_label = vdi.name_label, + name_description = vdi.name_description, + virtual_size = vdi.virtual_size, + type = vdi.type, + read_only = vdi.read_only, + sm_config = vdi.sm_config, + SR = new XenRef(sr != null ? sr.opaque_ref : Helper.NullOpaqueRef) + }; + + var row = new DiskGridRowItem(Connection, disk, device, DiskSource.FromCustomTemplate); + row.UpdateStatus(icon, tooltip); + rowList.Add(row); } } DisksGridView.Rows.AddRange(rowList.ToArray()); + UpdateStatusForEachDisk(true); + } + + /// + /// Tries to find the best SR for the given VDI considering first the + /// suggestedSR then the pool's default SR, then other SRs. + /// + /// The SR if a suitable one is found, otherwise null + private SR GetBestDiskStorage(IXenConnection connection, long diskSize, Host affinity, SR suggestedSr, + out Image icon, out string tooltip) + { + icon = Images.StaticImages._000_VirtualStorage_h32bit_16; + tooltip = null; + var sb = new StringBuilder(); + + var suggestedSrVisible = suggestedSr != null && suggestedSr.CanBeSeenFrom(affinity); + var suggestedSrHasSpace = suggestedSr != null && suggestedSr.VdiCreationCanProceed(diskSize); + + if (suggestedSrVisible && suggestedSrHasSpace) + return suggestedSr; + + if (suggestedSrVisible) + sb.AppendFormat(Messages.NEWVMWIZARD_STORAGEPAGE_SUGGESTED_NOSPACE, suggestedSr.Name().Ellipsise(50)).AppendLine(); + else if (suggestedSrHasSpace) + sb.AppendFormat(Messages.NEWVMWIZARD_STORAGEPAGE_SUGGESTED_LOCAL, suggestedSr.Name().Ellipsise(50)).AppendLine(); + + SR defaultSr = connection.Resolve(Helpers.GetPoolOfOne(connection).default_SR); + var defaultSrVisible = defaultSr != null && defaultSr.CanBeSeenFrom(affinity); + var defaultSrHasSpace = defaultSr != null && defaultSr.VdiCreationCanProceed(diskSize); + + if (defaultSrVisible && defaultSrHasSpace) + { + if (suggestedSr != null) + { + sb.AppendLine(Messages.NEWVMWIZARD_STORAGEPAGE_XC_SELECTION); + tooltip = sb.ToString(); + icon = Images.StaticImages._000_Alert2_h32bit_16; + } + return defaultSr; + } + + if (defaultSrVisible && !defaultSr.Equals(suggestedSr)) + sb.AppendFormat(Messages.NEWVMWIZARD_STORAGEPAGE_DEFAULT_NOSPACE, defaultSr.Name().Ellipsise(50)).AppendLine(); + else if (defaultSrHasSpace && !defaultSr.Equals(suggestedSr)) + sb.AppendFormat(Messages.NEWVMWIZARD_STORAGEPAGE_DEFAULT_LOCAL, defaultSr.Name().Ellipsise(50)).AppendLine(); + + foreach (SR sr in connection.Cache.SRs) + { + if (sr.CanCreateVmOn() && sr.CanBeSeenFrom(affinity) && sr.VdiCreationCanProceed(diskSize)) + { + if (suggestedSr != null || defaultSr != null) + { + sb.AppendLine(Messages.NEWVMWIZARD_STORAGEPAGE_XC_SELECTION); + tooltip = sb.ToString(); + icon = Images.StaticImages._000_Alert2_h32bit_16; + } + return sr; + } + } + + return null; } public override bool EnableNext() { - return (DisklessVMRadioButton.Checked || (DisksGridView.Rows.Count > 0 && AllDisksHaveSRs())) && CheckForOverCommit() != DiskOverCommit.Error; - } + if (DisklessVMRadioButton.Checked) + return true; - private bool AllDisksHaveSRs() - { foreach (DiskGridRowItem item in DisksGridView.Rows) { - if (item.Disk.SR.opaque_ref == Helper.NullOpaqueRef) + if (item.HasError) return false; } return true; } - private IEnumerable AddedVDIs - { - get - { - return from DiskGridRowItem row in DisksGridView.Rows select row.Disk; - } - } - - private void AddButton_Click(object sender, EventArgs e) - { - using (var dialog = new NewDiskDialog(Connection, Template, SrPicker.SRPickerType.LunPerVDI, null, Affinity, - true, 0, AddedVDIs) {DontCreateVDI = true}) - { - if (dialog.ShowDialog() != DialogResult.OK) - return; - - DisksGridView.Rows.Add(new DiskGridRowItem(Connection, dialog.NewDisk(), dialog.NewDevice(), true, Affinity)); - UpdateEnablement(); - } - } - - private void DisksRadioButton_CheckedChanged(object sender, EventArgs e) - { - if (DisksRadioButton.Checked) - UpdateEnablement(); - } - - private void DisklessVMRadioButton_CheckedChanged(object sender, EventArgs e) - { - if (DisklessVMRadioButton.Checked) - UpdateEnablement(); - } - private void UpdateEnablement(bool pageLoad = false) { if (loading) return; AddButton.Enabled = DisksRadioButton.Checked && DisksGridView.Rows.Count < Template.MaxVBDsAllowed() - 1; - PropertiesButton.Enabled = DisksRadioButton.Checked && DisksGridView.SelectedRows.Count > 0; + EditButton.Enabled = DisksRadioButton.Checked && DisksGridView.SelectedRows.Count > 0; DeleteButton.Enabled = DisksRadioButton.Checked && DisksGridView.SelectedRows.Count > 0 && ((DiskGridRowItem)DisksGridView.SelectedRows[0]).CanDelete; DisksGridView.Enabled = DisksRadioButton.Checked; - DisklessVMRadioButton.Enabled = Template.IsHVM() && InstallMethodIsNetwork; - - CheckForOverCommit(); + DisklessVMRadioButton.Enabled = Template.IsHVM() && SelectedInstallMethod == InstallMethod.Network; CloneCheckBox.Enabled = false; @@ -197,12 +271,11 @@ namespace XenAdmin.Wizards.NewVMWizard { foreach (DiskGridRowItem row in DisksGridView.Rows) { - if (!row.CanDelete) + if (!row.CanDelete && row.SourceSR != null && row.Disk != null) { - SR src = row.SourceDisk == null ? null : Connection.Resolve(row.SourceDisk.SR); - SR dest = Connection.Resolve(row.Disk.SR); + SR dest = Connection.Resolve(row.Disk.SR); - if (src != null && src.Equals(dest)) + if (row.SourceSR.Equals(dest)) { CloneCheckBox.Enabled = true; @@ -221,15 +294,16 @@ namespace XenAdmin.Wizards.NewVMWizard OnPageUpdated(); } - private DiskOverCommit CheckForOverCommit() + private void UpdateStatusForEachDisk(bool pageLoad = false) { - Dictionary totalDiskSize = new Dictionary(); // total size of the new disks on each SR (calculated using vdi.virtual_size) - Dictionary totalDiskInitialAllocation = new Dictionary(); // total initial allocation of the new disks on each SR (calculated using vdi.InitialAllocation) + // total size of the new disks on each SR (calculated using vdi.virtual_size) + var totalDiskSize = new Dictionary(); + + // total initial allocation of the new disks on each SR (calculated using vdi.InitialAllocation) + var totalDiskInitialAllocation = new Dictionary(); foreach (DiskGridRowItem item in DisksGridView.Rows) { - item.OverCommit = DiskOverCommit.None; // reset all errors - item.ImageToolTip = ""; SR sr = Connection.Resolve(item.Disk.SR); if (sr == null) // no sr assigned @@ -243,13 +317,12 @@ namespace XenAdmin.Wizards.NewVMWizard else totalDiskSize[sr.opaque_ref] = item.Disk.virtual_size; - var initialSpace = Helpers.GetRequiredSpaceToCreateVdiOnSr(sr, item.Disk); if (totalDiskInitialAllocation.ContainsKey(sr.opaque_ref)) - totalDiskInitialAllocation[sr.opaque_ref] += initialSpace; + totalDiskInitialAllocation[sr.opaque_ref] += item.Disk.virtual_size; else - totalDiskInitialAllocation[sr.opaque_ref] = initialSpace; + totalDiskInitialAllocation[sr.opaque_ref] = item.Disk.virtual_size; } - DiskOverCommit overcommitedDisk = DiskOverCommit.None; + foreach (DiskGridRowItem item in DisksGridView.Rows) { SR sr = Connection.Resolve(item.Disk.SR); @@ -260,25 +333,47 @@ namespace XenAdmin.Wizards.NewVMWizard if (sr.HBALunPerVDI()) //No over commit in this case continue; - if (item.Disk.SR.opaque_ref != sr.opaque_ref) - continue; + var toolTip = string.Format(Messages.NEWVMWIZARD_STORAGEPAGE_SROVERCOMMIT, + Helpers.GetName(sr), + Util.DiskSizeString(sr.FreeSpace()), + Util.DiskSizeString(totalDiskSize[sr.opaque_ref])); if (!sr.VdiCreationCanProceed(totalDiskInitialAllocation[sr.opaque_ref])) - overcommitedDisk = item.OverCommit = DiskOverCommit.Error; + item.UpdateStatus(Images.StaticImages._000_error_h32bit_16, toolTip); else if (sr.FreeSpace() < totalDiskInitialAllocation[sr.opaque_ref]) - overcommitedDisk = item.OverCommit = DiskOverCommit.Warning; - - if (item.OverCommit != DiskOverCommit.None) - { - item.ImageToolTip = - string.Format(Messages.NEWVMWIZARD_STORAGEPAGE_SROVERCOMMIT, - Helpers.GetName(sr), - Util.DiskSizeString(sr.FreeSpace()), - Util.DiskSizeString(totalDiskSize[sr.opaque_ref])); - } - item.UpdateDetails(); + item.UpdateStatus(Images.StaticImages._000_Alert2_h32bit_16, toolTip); + else if (!pageLoad) + item.UpdateStatus(Images.StaticImages._000_VirtualStorage_h32bit_16, ""); + } + } + + #region Control event handlers + + private void DisksRadioButton_CheckedChanged(object sender, EventArgs e) + { + if (DisksRadioButton.Checked) + UpdateEnablement(); + } + + private void DisklessVMRadioButton_CheckedChanged(object sender, EventArgs e) + { + if (DisklessVMRadioButton.Checked) + UpdateEnablement(); + } + + + private void AddButton_Click(object sender, EventArgs e) + { + using (var dialog = new NewDiskDialog(Connection, Template, Affinity, SrPicker.SRPickerType.LunPerVDI, null, + true, 0, AddedVDIs) { DontCreateVDI = true }) + { + if (dialog.ShowDialog() != DialogResult.OK) + return; + + DisksGridView.Rows.Add(new DiskGridRowItem(Connection, dialog.NewDisk(), dialog.NewDevice(), DiskSource.New)); + UpdateStatusForEachDisk(); + UpdateEnablement(); } - return overcommitedDisk; } private void DeleteButton_Click(object sender, EventArgs e) @@ -287,18 +382,19 @@ namespace XenAdmin.Wizards.NewVMWizard return; DisksGridView.Rows.Remove(DisksGridView.SelectedRows[0]); + UpdateStatusForEachDisk(); UpdateEnablement(); } - private void PropertiesButton_Click(object sender, EventArgs e) + private void EditButton_Click(object sender, EventArgs e) { if (DisksGridView.SelectedRows.Count <= 0) return; DiskGridRowItem selectedItem = (DiskGridRowItem) DisksGridView.SelectedRows[0]; - using (var dialog = new NewDiskDialog(Connection, Template, SrPicker.SRPickerType.LunPerVDI, - selectedItem.Disk, Affinity, selectedItem.CanResize, selectedItem.MinSize, AddedVDIs) + using (var dialog = new NewDiskDialog(Connection, Template, Affinity, SrPicker.SRPickerType.LunPerVDI, + selectedItem.Disk, selectedItem.CanResize, selectedItem.MinSize, AddedVDIs) {DontCreateVDI = true}) { if (dialog.ShowDialog(ParentForm) != DialogResult.OK) @@ -306,15 +402,30 @@ namespace XenAdmin.Wizards.NewVMWizard selectedItem.Disk = dialog.NewDisk(); selectedItem.UpdateDetails(); + UpdateStatusForEachDisk(); UpdateEnablement(); } } + + private void DisksGridView_SelectionChanged(object sender, EventArgs e) + { + UpdateEnablement(); + } + + #endregion + #region Accessors + private IEnumerable AddedVDIs => + from DiskGridRowItem row in DisksGridView.Rows select row.Disk; + /// - /// Gets the SR that should be used as the parameter for VM.copy when the VM is created by the New VM Wizard. If null - /// is returned then VM.clone should be used. + /// When the VM is created by the New VM Wizard, VM.copy or VM.clone is + /// used depending on what SRs the disks are on: + /// - If the disks are all on the same SR, this SR is returned and VM.copy is used. + /// - If at least one disk is on same SR as the source disk, this SR is returned and VM.copy is used. + /// - Otherwise, this property returns null and VM.clone is used. /// public SR FullCopySR { @@ -322,35 +433,23 @@ namespace XenAdmin.Wizards.NewVMWizard { if (!Template.DefaultTemplate() && !Template.is_a_snapshot && !CloneCheckBox.Checked) { - // if target disks are all on the same SR then use that SR - // otherwise iterate through disks and find first target disks that is on same SR as source disk - SR sr = null; List targetSRs = new List(); foreach (DiskGridRowItem row in DisksGridView.Rows) { - if (!row.CanDelete && row.SourceDisk != null && row.Disk != null) + if (!row.CanDelete && row.SourceSR != null && row.Disk != null) { - SR src = Connection.Resolve(row.SourceDisk.SR); - SR target = Connection.Resolve(row.Disk.SR); + SR target = Connection.Resolve(row.Disk.SR); - if (sr == null && src != null && src.Equals(target)) - { - sr = src; - } + if (sr == null && row.SourceSR.Equals(target)) + sr = row.SourceSR; if (!targetSRs.Contains(target)) - { targetSRs.Add(target); - } } } - if (targetSRs.Count == 1) - { - return targetSRs[0]; - } - return sr; + return targetSRs.Count == 1 ? targetSRs[0] : sr; } return null; } @@ -389,97 +488,84 @@ namespace XenAdmin.Wizards.NewVMWizard } } - public VM SelectedTemplate { private get; set; } + public VM Template + { + private get { return _template; } + set + { + if (_template != value) + _loadRequired = true; + + _template = value; + } + } + public string SelectedName { private get; set; } - public InstallMethod SelectedInstallMethod { private get; set; } - public Host Affinity { private get; set; } + + public InstallMethod SelectedInstallMethod + { + private get { return _selectedInstallMethod; } + set + { + if (_selectedInstallMethod != value) + _loadRequired = true; + + _selectedInstallMethod = value; + } + } + + public Host Affinity + { + private get { return _affinity; } + set + { + if (_affinity != value) + _loadRequired = true; + + _affinity = value; + } + } #endregion - - private void DisksGridView_SelectionChanged(object sender, EventArgs e) - { - UpdateEnablement(); - } } public class DiskGridRowItem : DataGridViewRow { - public readonly VDI SourceDisk; + public readonly SR SourceSR; public VDI Disk; public readonly VBD Device; - public readonly IXenConnection Connection; + private readonly IXenConnection _connection; public readonly bool CanDelete; public readonly bool CanResize; public readonly long MinSize; - public DiskOverCommit OverCommit = DiskOverCommit.None; - public string ImageToolTip; + + private readonly DataGridViewImageCell ImageCell = new DataGridViewImageCell(false) {ValueType = typeof(Image)}; + private readonly DataGridViewTextBoxCell SizeCell = new DataGridViewTextBoxCell(); + private readonly DataGridViewTextBoxCell NameCell = new DataGridViewTextBoxCell(); + private readonly DataGridViewTextBoxCell SrCell = new DataGridViewTextBoxCell(); + private readonly DataGridViewTextBoxCell SharedCell = new DataGridViewTextBoxCell(); - private DataGridViewImageCell ImageCell; - private DataGridViewTextBoxCell SizeCell; - private DataGridViewTextBoxCell NameCell; - private DataGridViewTextBoxCell SrCell; - private DataGridViewTextBoxCell SharedCell; + public bool HasError => Disk.SR.opaque_ref == Helper.NullOpaqueRef || + Cells.Count > 0 && Cells[0].Value == Images.StaticImages._000_error_h32bit_16; - public DiskGridRowItem(IXenConnection connection, XmlNode diskNode, string vmName, Host affinity) + public DiskGridRowItem(IXenConnection connection, VDI vdi, VBD vbd, DiskSource src) { - Disk = new VDI(); - Device = new VBD(); - Connection = connection; + Disk = vdi; + Device = vbd; + _connection = connection; - Disk.virtual_size = long.Parse(diskNode.Attributes["size"].Value); - SR sruuid = connection.Cache.Find_By_Uuid(diskNode.Attributes["sr"].Value); - SR sr = GetBeskDiskStorage(Connection, Disk, affinity, sruuid == null ? null : sruuid); - Disk.SR = new XenRef(sr != null ? sr.opaque_ref : Helper.NullOpaqueRef); - Disk.type = (vdi_type)Enum.Parse(typeof(vdi_type), diskNode.Attributes["type"].Value); - Device.userdevice = diskNode.Attributes["device"].Value; - Device.bootable = diskNode.Attributes["bootable"].Value == "true"; + if (src == DiskSource.FromCustomTemplate) + { + SourceSR = _connection.Resolve(vdi.SR); + } + else + { + CanDelete = Disk.type == vdi_type.user; + CanResize = true; + } - Disk.name_label = string.Format(Messages.NEWVMWIZARD_STORAGEPAGE_VDINAME, vmName, Device.userdevice); //Device.userdevice; - Disk.read_only = false; - Disk.name_description = Messages.NEWVMWIZARD_STORAGEPAGE_DISK_DESCRIPTION; - Device.mode = vbd_mode.RW; - - CanDelete = Disk.type == vdi_type.user; - CanResize = true; - MinSize = Disk.virtual_size; - - AddCells(); - } - - public DiskGridRowItem(IXenConnection connection, VDI vdi, VBD vbd, bool isNew, Host affinity) - { - SourceDisk = vdi; - Disk = new VDI(); - Device = new VBD(); - Connection = connection; - - Disk.virtual_size = vdi.virtual_size; - SR sr = GetBeskDiskStorage(Connection, vdi, affinity, Connection.Resolve(vdi.SR)); - Disk.SR = new XenRef(sr != null ? sr.opaque_ref : Helper.NullOpaqueRef); - Disk.type = vdi.type; - Device.userdevice = vbd.userdevice; - Device.bootable = vbd.bootable; - - Disk.name_label = vdi.name_label; - Disk.read_only = vdi.read_only; - Disk.name_description = vdi.name_description; - Disk.sm_config = vdi.sm_config; - Device.mode = vbd.mode; - - CanDelete = Disk.type == vdi_type.user && isNew; - CanResize = isNew; - MinSize = 0; - - AddCells(); - } - - private void AddCells() - { - ImageCell = new DataGridViewImageCell(false) {ValueType = typeof(Image)}; - NameCell = new DataGridViewTextBoxCell(); - SizeCell = new DataGridViewTextBoxCell(); - SrCell = new DataGridViewTextBoxCell(); - SharedCell = new DataGridViewTextBoxCell(); + if (src == DiskSource.FromDefaultTemplate) + MinSize = Disk.virtual_size; Cells.AddRange(ImageCell, NameCell, SrCell, SizeCell, SharedCell); @@ -488,88 +574,36 @@ namespace XenAdmin.Wizards.NewVMWizard public void UpdateDetails() { - switch (OverCommit) + SR sr = _connection.Resolve(Disk.SR); + if (sr == null) { - case DiskOverCommit.None: - ImageCell.Value = Properties.Resources._000_VirtualStorage_h32bit_16; - break; - case DiskOverCommit.Warning: - ImageCell.Value = Properties.Resources._000_Alert2_h32bit_16; - break; - case DiskOverCommit.Error: - ImageCell.Value = Properties.Resources._000_error_h32bit_16; - break; - } - ImageCell.ToolTipText = ImageToolTip; - SizeCell.ToolTipText = ImageToolTip; - NameCell.ToolTipText = ImageToolTip; - SrCell.ToolTipText = ImageToolTip; - SharedCell.ToolTipText = ImageToolTip; - - SR sr = Connection.Resolve(Disk.SR); - if(sr == null) SizeCell.Value = Util.DiskSizeString(Disk.virtual_size); - else - SizeCell.Value = sr.HBALunPerVDI() ? String.Empty : Util.DiskSizeString(Disk.virtual_size); - - NameCell.Value = Helpers.GetName(Disk); - - if (Disk.SR.opaque_ref != Helper.NullOpaqueRef) - { - SrCell.Value = Helpers.GetName(sr); - SharedCell.Value = sr.shared ? Messages.TRUE : Messages.FALSE; - } - else - { SrCell.Value = Messages.NEWVMWIZARD_STORAGEPAGE_NOSTORAGE; SharedCell.Value = ""; } - } - - /// - /// Tries to find the best SR for the given VDI considering the suggestedSR which has priority over other SRs in this check. - /// SuggestedSR, default SR, other SRs are checked. - /// Returns first suitable SR or NULL. - /// - private static SR GetBeskDiskStorage(IXenConnection connection, VDI disk, Host affinity, SR suggestedSR) - { - // try suggestion - if (suggestedSR != null && suggestedSR.CanBeSeenFrom(affinity) && IsSufficientFreeSpaceAvailableOnSrForVdi(suggestedSR, disk)) - return suggestedSR; - - // try default sr - SR defaultSR = connection.Resolve(Helpers.GetPoolOfOne(connection).default_SR); - if (defaultSR != null && defaultSR.CanBeSeenFrom(affinity) && IsSufficientFreeSpaceAvailableOnSrForVdi(defaultSR, disk)) - return defaultSR; - - // pick an sr - foreach (SR sr in connection.Cache.SRs) + else { - if (!sr.CanCreateVmOn()) - continue; - - if (sr.CanBeSeenFrom(affinity) && IsSufficientFreeSpaceAvailableOnSrForVdi(sr, disk)) - return sr; + SizeCell.Value = sr.HBALunPerVDI() ? string.Empty : Util.DiskSizeString(Disk.virtual_size); + SrCell.Value = Helpers.GetName(sr); + SharedCell.Value = sr.shared ? Messages.TRUE : Messages.FALSE; } - // there has been no suitable SR found - return null; + NameCell.Value = Helpers.GetName(Disk); } - - /// - /// Checks whether there is enough space available on the SR to accommodate a VDI. - /// - private static bool IsSufficientFreeSpaceAvailableOnSrForVdi(SR sr, VDI disk) + public void UpdateStatus(Image icon, string toolTipTExt) { - return sr != null && sr.VdiCreationCanProceed(Helpers.GetRequiredSpaceToCreateVdiOnSr(sr, disk)); + ImageCell.Value = icon; + + foreach (DataGridViewCell cell in Cells) + cell.ToolTipText = toolTipTExt; } } - public enum DiskOverCommit : int + public enum DiskSource { - None = 0, - Warning = 1, - Error = 2 + New, + FromDefaultTemplate, + FromCustomTemplate } } diff --git a/XenAdmin/Wizards/NewVMWizard/Page_Storage.ja.resx b/XenAdmin/Wizards/NewVMWizard/Page_Storage.ja.resx index 38474afb9..fc4055a7f 100644 --- a/XenAdmin/Wizards/NewVMWizard/Page_Storage.ja.resx +++ b/XenAdmin/Wizards/NewVMWizard/Page_Storage.ja.resx @@ -121,37 +121,77 @@ True + + 3 + + + True + - + + Fill + + NoControl - - 25, 275 + + 3, 0 - - 179, 17 + + 3, 0, 3, 10 - - 6 + + 504, 104 - - ストレージ レベルの高速ディスク クローンを使用する(&F) - - - CloneCheckBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - + 0 - - Top, Left, Right + + 選択した仮想マシン テンプレートで提供される仮想ディスクは以下のとおりです。ここでは、これらのディスクのプロパティを変更したり、必要に応じて追加したりできます。 + +また、ネットワークから起動する、仮想ディスクを持たない仮想マシン (ディスクレス VM) を作成することもできます。 + +新規仮想マシンのディスクを構成したら、[次へ] をクリックして次のページに進みます。 + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + NoControl + + + 432, 198 + + + 75, 23 + + + 5 + + + 削除(&D) + + + DeleteButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 True @@ -198,6 +238,9 @@ 66 + + Fill + 24, 154 @@ -214,73 +257,67 @@ XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - $this + tableLayoutPanel1 - 1 - - - Top, Right - - - NoControl - - - 428, 212 - - - 75, 23 - - - 5 - - - 削除(&D) - - - DeleteButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - Top, Right - - - NoControl - - - 428, 183 - - - 75, 23 - - - 4 - - - 編集(&E)... - - - PropertiesButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - 3 - - Top, Right + + NoControl + + + 432, 169 + + + 75, 23 + + + 4 + + + 編集(&E)... + + + EditButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 4 + + + True + + + NoControl + + + 3, 117 + + + 134, 17 + + + 1 + + + 以下の仮想ディスクを使用する(&V): + + + DisksRadioButton + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 5 NoControl @@ -304,10 +341,10 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 - 4 + 6 True @@ -334,74 +371,70 @@ System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 - 5 + 7 - - True + + Fill - - NoControl + + 0, 0 - - 6, 131 + + 7 - - 134, 17 + + 510, 340 - - 1 - - - 以下の仮想ディスクを使用する(&V): - - - DisksRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 6 - - - Top, Left, Right - - - NoControl - - - 3, 0 - - - 500, 128 - - + 0 - - 選択した仮想マシン テンプレートで提供される仮想ディスクは以下のとおりです。ここでは、これらのディスクのプロパティを変更したり、必要に応じて追加したりできます。 - -また、ネットワークから起動する、仮想ディスクを持たない仮想マシン (ディスクレス VM) を作成することもできます。 - -新規仮想マシンのディスクを構成したら、[次へ] をクリックして次のページに進みます。 + + tableLayoutPanel1 - - label1 + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + $this - - 7 + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="CloneCheckBox" Row="5" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="DeleteButton" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="DisksGridView" Row="2" RowSpan="3" Column="1" ColumnSpan="1" /><Control Name="EditButton" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="DisksRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="AddButton" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="DisklessVMRadioButton" Row="6" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Absolute,15,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + + + NoControl + + + 18, 290 + + + 3, 3, 3, 10 + + + 179, 17 + + + 6 + + + ストレージ レベルの高速ディスク クローンを使用する(&F) + + + CloneCheckBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 True diff --git a/XenAdmin/Wizards/NewVMWizard/Page_Storage.resx b/XenAdmin/Wizards/NewVMWizard/Page_Storage.resx index 5923fd7cc..ad193bf60 100644 --- a/XenAdmin/Wizards/NewVMWizard/Page_Storage.resx +++ b/XenAdmin/Wizards/NewVMWizard/Page_Storage.resx @@ -121,37 +121,77 @@ True + + 3 + + + True + - + + Fill + + NoControl - - 25, 275 + + 3, 0 - - 179, 17 + + 3, 0, 3, 10 - - 6 + + 504, 104 - - Use storage-level &fast disk clone - - - CloneCheckBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - + 0 - - Top, Left, Right + + The virtual machine template you selected earlier provides the virtual disks listed below. You can change the properties of these virtual disks, and add more disks if required. + +Alternatively, you can select the second option below to create a diskless VM that can be booted from the network and does not use any virtual disks. + +When you have finished configuring disks for the new virtual machine, click Next to continue to the next step. + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + NoControl + + + 432, 198 + + + 75, 23 + + + 5 + + + &Delete + + + DeleteButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 True @@ -198,11 +238,14 @@ 66 + + Fill + - 24, 154 + 18, 140 - 398, 117 + 408, 144 2 @@ -214,131 +257,38 @@ XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - $this + tableLayoutPanel1 - 1 + 3 - - Top, Right - - + NoControl - - 428, 212 + + 432, 169 - + 75, 23 - - 5 - - - &Delete - - - DeleteButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - Top, Right - - - NoControl - - - 428, 183 - - - 75, 23 - - + 4 - + &Edit... - - PropertiesButton + + EditButton - + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this + + tableLayoutPanel1 - - 3 - - - Top, Right - - - NoControl - - - 428, 154 - - - 75, 23 - - - 3 - - - &Add... - - - AddButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - + 4 - - True - - - NoControl - - - 6, 317 - - - 256, 17 - - - 7 - - - Create a diskles&s VM that boots from the network - - - DisklessVMRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 5 - True @@ -346,7 +296,7 @@ NoControl - 6, 131 + 3, 117 134, 17 @@ -364,44 +314,127 @@ System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 - 6 + 5 - - Top, Left, Right - - + NoControl - - 3, 0 + + 432, 140 - - 500, 128 + + 75, 23 - + + 3 + + + &Add... + + + AddButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 6 + + + True + + + NoControl + + + 3, 320 + + + 256, 17 + + + 7 + + + Create a diskles&s VM that boots from the network + + + DisklessVMRadioButton + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 7 + + + Fill + + + 0, 0 + + + 7 + + + 510, 340 + + 0 - - The virtual machine template you selected earlier provides the virtual disks listed below. You can change the properties of these virtual disks, and add more disks if required. - -Alternatively, you can select the second option below to create a diskless VM that can be booted from the network and does not use any virtual disks. - -When you have finished configuring disks for the new virtual machine, click Next to continue to the next step. + + tableLayoutPanel1 - - label1 + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + $this - - 7 + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="CloneCheckBox" Row="5" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="DeleteButton" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="DisksGridView" Row="2" RowSpan="3" Column="1" ColumnSpan="1" /><Control Name="EditButton" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="DisksRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="AddButton" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="DisklessVMRadioButton" Row="6" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Absolute,15,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + + + NoControl + + + 18, 290 + + + 3, 3, 3, 10 + + + 179, 17 + + + 6 + + + Use storage-level &fast disk clone + + + CloneCheckBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 True @@ -410,7 +443,7 @@ When you have finished configuring disks for the new virtual machine, click Next 96, 96 - 506, 336 + 510, 340 ImageColumn diff --git a/XenAdmin/Wizards/NewVMWizard/Page_Storage.zh-CN.resx b/XenAdmin/Wizards/NewVMWizard/Page_Storage.zh-CN.resx index 7c0a542d9..e070e8128 100644 --- a/XenAdmin/Wizards/NewVMWizard/Page_Storage.zh-CN.resx +++ b/XenAdmin/Wizards/NewVMWizard/Page_Storage.zh-CN.resx @@ -121,37 +121,77 @@ True + + 3 + + + True + - + + Fill + + NoControl - - 25, 275 + + 3, 0 - - 179, 17 + + 3, 0, 3, 10 - - 6 + + 504, 104 - - 使用存储级快速磁盘克隆(&F) - - - CloneCheckBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - + 0 - - Top, Left, Right + + 之前选定的虚拟机模板提供了下列虚拟磁盘。可以更改这些虚拟磁盘的属性,以及根据需要添加更多磁盘。 + +此外,还可以选择下面第二个选项,以创建可从网络启动且不使用任何虚拟磁盘的无磁盘 VM。 + +完成新虚拟机的磁盘配置后,请单击“下一步”继续执行下一步操作。 + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 0 + + + NoControl + + + 432, 198 + + + 75, 23 + + + 5 + + + 删除(&D) + + + DeleteButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 2 True @@ -198,6 +238,9 @@ 66 + + Fill + 24, 154 @@ -214,73 +257,67 @@ XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - $this + tableLayoutPanel1 - 1 - - - Top, Right - - - NoControl - - - 428, 212 - - - 75, 23 - - - 5 - - - 删除(&D) - - - DeleteButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - Top, Right - - - NoControl - - - 428, 183 - - - 75, 23 - - - 4 - - - 编辑(&E)... - - - PropertiesButton - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - 3 - - Top, Right + + NoControl + + + 432, 169 + + + 75, 23 + + + 4 + + + 编辑(&E)... + + + EditButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 4 + + + True + + + NoControl + + + 3, 117 + + + 134, 17 + + + 1 + + + 使用以下虚拟磁盘(&V): + + + DisksRadioButton + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 5 NoControl @@ -304,10 +341,10 @@ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 - 4 + 6 True @@ -334,74 +371,70 @@ System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - $this + tableLayoutPanel1 - 5 + 7 - - True + + Fill - - NoControl + + 0, 0 - - 6, 131 + + 7 - - 134, 17 + + 510, 340 - - 1 - - - 使用以下虚拟磁盘(&V): - - - DisksRadioButton - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 6 - - - Top, Left, Right - - - NoControl - - - 3, 0 - - - 500, 128 - - + 0 - - 之前选定的虚拟机模板提供了下列虚拟磁盘。可以更改这些虚拟磁盘的属性,以及根据需要添加更多磁盘。 - -此外,还可以选择下面第二个选项,以创建可从网络启动且不使用任何虚拟磁盘的无磁盘 VM。 - -完成新虚拟机的磁盘配置后,请单击“下一步”继续执行下一步操作。 + + tableLayoutPanel1 - - label1 + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + $this - - 7 + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="CloneCheckBox" Row="5" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="DeleteButton" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="DisksGridView" Row="2" RowSpan="3" Column="1" ColumnSpan="1" /><Control Name="EditButton" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="DisksRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="AddButton" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="DisklessVMRadioButton" Row="6" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Absolute,15,Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + + + NoControl + + + 18, 290 + + + 3, 3, 3, 10 + + + 179, 17 + + + 6 + + + 使用存储级快速磁盘克隆(&F) + + + CloneCheckBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 1 True diff --git a/XenAdmin/Wizards/PatchingWizard/AutomatedUpdatesBasePage.cs b/XenAdmin/Wizards/PatchingWizard/AutomatedUpdatesBasePage.cs index 12f7eba83..c4fd5f808 100644 --- a/XenAdmin/Wizards/PatchingWizard/AutomatedUpdatesBasePage.cs +++ b/XenAdmin/Wizards/PatchingWizard/AutomatedUpdatesBasePage.cs @@ -34,8 +34,6 @@ using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Drawing; -using System.Reflection; -using log4net; using XenAdmin.Controls; using XenAdmin.Wizards.PatchingWizard.PlanActions; using XenAPI; @@ -53,7 +51,7 @@ namespace XenAdmin.Wizards.PatchingWizard public enum Status { NotStarted, Started, Cancelled, Completed } public abstract partial class AutomatedUpdatesBasePage : XenTabPage { - protected static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + protected static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); protected bool _thisPageIsCompleted; @@ -427,7 +425,7 @@ namespace XenAdmin.Wizards.PatchingWizard if (action.Error == null) action.Error = new Exception(Messages.ERROR_UNKNOWN); - log.ErrorFormat("Failed to carry out plan. {0} {1}", action.CurrentProgressStep, e); + log.Error($"Failed to carry out plan {action.CurrentProgressStep}.", e); doWorkEventArgs.Result = new Exception(action.CurrentProgressStep, e); } } diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard.cs b/XenAdmin/Wizards/PatchingWizard/PatchingWizard.cs index 3d99adb56..22e6e3f4d 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard.cs +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard.cs @@ -53,6 +53,8 @@ namespace XenAdmin.Wizards.PatchingWizard /// public partial class PatchingWizard : UpdateUpgradeWizard { + private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + private readonly PatchingWizard_PatchingPage PatchingWizard_PatchingPage; private readonly PatchingWizard_SelectPatchPage PatchingWizard_SelectPatchPage; private readonly PatchingWizard_ModePage PatchingWizard_ModePage; @@ -261,21 +263,30 @@ namespace XenAdmin.Wizards.PatchingWizard if (PatchingWizard_UploadPage.Patch == null || !string.Equals(patch.uuid, PatchingWizard_UploadPage.Patch.uuid, StringComparison.OrdinalIgnoreCase) || forceCleanSelectedPatch) - list.Add(GetCleanActionForPoolPatch(patch)); - + { + var action = GetCleanActionForPoolPatch(patch); + if (action != null) + list.Add(action); + } continue; } if (mapping is PoolUpdateMapping updateMapping) { - list.Add(GetCleanActionForPoolUpdate(updateMapping.Pool_update)); + var action = GetCleanActionForPoolUpdate(updateMapping.Pool_update); + if (action != null) + list.Add(action); continue; } if (mapping is SuppPackMapping suppPackMapping) { if (suppPackMapping.Pool_update!= null) - list.Add(GetCleanActionForPoolUpdate(suppPackMapping.Pool_update)); + { + var action = GetCleanActionForPoolUpdate(suppPackMapping.Pool_update); + if (action != null) + list.Add(action); + } else list.AddRange(GetRemoveVdiActions(suppPackMapping.SuppPackVdis.Values.ToList())); } diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_ModePage.ja.resx b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_ModePage.ja.resx index b5e6e9667..cd1e3c59b 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_ModePage.ja.resx +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_ModePage.ja.resx @@ -142,7 +142,7 @@ 2 - アップデート後のタスクを自分で行う(&M)。このアップデートの後にほかのアップデートを続けて適用する場合は、このオプションを選択します。これにより、すべてのアップデートを適用した後にタスクを実行できます。 + アップデート後タスクを手動で実行する(&M) TopLeft @@ -379,7 +379,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="AutomaticRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="autoHeightLabel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="ManualRadioButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="removeUpdateFileCheckBox" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxLog" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,Absolute,47,AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="AutomaticRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="autoHeightLabel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="ManualRadioButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="removeUpdateFileCheckBox" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxLog" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,47,AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> 17, 17 diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_ModePage.resx b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_ModePage.resx index d9a2173f3..ead93b985 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_ModePage.resx +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_ModePage.resx @@ -136,13 +136,13 @@ 15, 3, 3, 3 - 547, 41 + 547, 17 2 - I will carry out the post-update tasks &myself. If you are intending to apply further updates immediately after this one, choose this option and carry out the post-update tasks once at the end. + I will carry out the post-update tasks &myself. TopLeft @@ -163,7 +163,7 @@ True - 3, 137 + 3, 113 3, 10, 3, 0 @@ -193,7 +193,7 @@ Top, Bottom, Left, Right - 3, 153 + 3, 129 True @@ -202,7 +202,7 @@ Vertical - 559, 248 + 559, 272 3 @@ -379,7 +379,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="AutomaticRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="autoHeightLabel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="ManualRadioButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="removeUpdateFileCheckBox" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxLog" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,Absolute,47,AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="AutomaticRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="autoHeightLabel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="ManualRadioButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="removeUpdateFileCheckBox" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxLog" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,47,AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> 17, 17 diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_ModePage.zh-CN.resx b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_ModePage.zh-CN.resx index 2f5878c0e..084e37556 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_ModePage.zh-CN.resx +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_ModePage.zh-CN.resx @@ -142,7 +142,7 @@ 2 - 我将亲自执行更新后任务(&M)。如果您计划在完成此操作后立即应用更深层次的更新,请选择此选项并在结束时执行更新后任务。 + 我将自己执行更新后任务(&M)。 TopLeft @@ -379,7 +379,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="AutomaticRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="autoHeightLabel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="ManualRadioButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="removeUpdateFileCheckBox" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxLog" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,Absolute,47,AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="AutomaticRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="autoHeightLabel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="ManualRadioButton" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button1" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="removeUpdateFileCheckBox" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxLog" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,47,AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> 17, 17 diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PatchingPage.cs b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PatchingPage.cs index 61bfa77cc..8f70608ef 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PatchingPage.cs +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PatchingPage.cs @@ -126,8 +126,11 @@ namespace XenAdmin.Wizards.PatchingWizard sb.AppendLine(string.Format(Messages.PATCHINGWIZARD_SINGLEUPDATE_SUCCESS_ONE, GetUpdateName())).AppendLine(); - if (!IsAutomaticMode && ManualTextInstructions.ContainsKey(pool)) + if (!IsAutomaticMode && ManualTextInstructions != null && ManualTextInstructions.ContainsKey(pool)) + { + sb.AppendLine(Messages.PATCHINGWIZARD_SINGLEUPDATE_MANUAL_POST_UPDATE); sb.Append(ManualTextInstructions[pool]).AppendLine(); + } return sb.ToString(); } diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PrecheckPage.cs b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PrecheckPage.cs index 4b2f7be62..155a4e1df 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PrecheckPage.cs +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PrecheckPage.cs @@ -43,6 +43,7 @@ using XenAdmin.Diagnostics.Checks; using XenAdmin.Diagnostics.Problems; using XenAdmin.Diagnostics.Problems.HostProblem; using XenAdmin.Dialogs; +using XenAdmin.Network; using XenAPI; using CheckGroup = System.Collections.Generic.KeyValuePair>; @@ -101,7 +102,7 @@ namespace XenAdmin.Wizards.PatchingWizard get { return "UpdatePrechecks"; } } - void Connection_ConnectionStateChanged(object sender, EventArgs e) + void Connection_ConnectionStateChanged(IXenConnection conn) { Program.Invoke(this, RefreshRechecks); } @@ -348,12 +349,6 @@ namespace XenAdmin.Wizards.PatchingWizard { var groups = new List(); - //XenCenter version check - if (UpdateAlert != null && UpdateAlert.NewServerVersion != null) - { - groups.Add(new CheckGroup(Messages.CHECKING_XENCENTER_VERSION, new List {new XenCenterVersionCheck(UpdateAlert.NewServerVersion)})); - } - //HostLivenessCheck checks var livenessChecks = new List(); foreach (Host host in applicableServers) @@ -392,6 +387,8 @@ namespace XenAdmin.Wizards.PatchingWizard groups.Add(new CheckGroup(Messages.CHECKING_STORAGE_CONNECTIONS_STATUS, pbdChecks)); + XenServerVersion highestNewVersion = null; + //Disk space, reboot required and can evacuate host checks for automated and version updates if (WizardMode != WizardMode.SingleUpdate) { @@ -442,11 +439,23 @@ namespace XenAdmin.Wizards.PatchingWizard : new List(); rebootChecks.Add(new HostNeedsRebootCheck(host, restartHostPatches)); - if (restartHostPatches.Any(p => !p.ContainsLivepatch)) + + if (restartHostPatches.Count > 0 && (restartHostPatches.Any(p => !p.ContainsLivepatch) || + Helpers.FeatureForbidden(host.Connection, Host.RestrictLivePatching) || + Helpers.GetPoolOfOne(host.Connection)?.live_patching_disabled == true)) evacuateChecks.Add(new AssertCanEvacuateCheck(host)); + + foreach (var p in us[host]) + { + var newVersion = Updates.XenServerVersions.FirstOrDefault(v => v.PatchUuid != null && v.PatchUuid.Equals(p.Uuid, StringComparison.OrdinalIgnoreCase)); + if (newVersion != null && (highestNewVersion == null || newVersion.Version > highestNewVersion.Version)) + highestNewVersion = newVersion; + } + } } } + groups.Add(new CheckGroup(Messages.PATCHINGWIZARD_PRECHECKPAGE_CHECKING_DISK_SPACE, diskChecks)); if (rebootChecks.Count > 0) groups.Add(new CheckGroup(Messages.CHECKING_SERVER_NEEDS_REBOOT, rebootChecks)); @@ -454,6 +463,14 @@ namespace XenAdmin.Wizards.PatchingWizard groups.Add(new CheckGroup(Messages.CHECKING_CANEVACUATE_STATUS, evacuateChecks)); } + //XenCenter version check + if (highestNewVersion != null || UpdateAlert?.NewServerVersion != null) + { + // add XenCenter version check as the first group + groups.Insert(0, new CheckGroup(Messages.CHECKING_XENCENTER_VERSION, + new List { new XenCenterVersionCheck(highestNewVersion ?? UpdateAlert.NewServerVersion) })); + } + //GFS2 check for version updates if (WizardMode == WizardMode.NewVersion) { @@ -473,6 +490,19 @@ namespace XenAdmin.Wizards.PatchingWizard } + //PVGuestsCheck checks + if (highestNewVersion != null || UpdateAlert?.NewServerVersion != null) + { + var pvChecks = new List(); + foreach (var pool in SelectedPools.Where(p => Helpers.NaplesOrGreater(p.Connection))) + { + if (pool.Connection.Resolve(pool.master) != null) + pvChecks.Add(new PVGuestsCheck(pool, false)); + } + if (pvChecks.Count > 0) + groups.Add(new CheckGroup(Messages.CHECKING_PV_GUESTS, pvChecks)); + } + return groups; } diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PrecheckPage.resx b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PrecheckPage.resx index 8e4ec9378..6a7dce5e1 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PrecheckPage.resx +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_PrecheckPage.resx @@ -250,7 +250,7 @@ 6 - &Hide successful prechecks + &Hide successful pre-checks checkBoxViewPrecheckFailuresOnly diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.cs b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.cs index 397b8ee4f..2ad5cc3c6 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.cs +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectPatchPage.cs @@ -317,7 +317,7 @@ namespace XenAdmin.Wizards.PatchingWizard } catch (Exception exception) { - log.ErrorFormat("Exception while reading the update data from the iso file: {0}", exception.Message); + log.Error("Exception while reading the update data from the iso file:", exception); } var elements = xmlDoc.GetElementsByTagName("update"); diff --git a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.cs b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.cs index 8ac4cf834..24ab231ee 100644 --- a/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.cs +++ b/XenAdmin/Wizards/PatchingWizard/PatchingWizard_SelectServers.cs @@ -48,8 +48,6 @@ namespace XenAdmin.Wizards.PatchingWizard { public partial class PatchingWizard_SelectServers : XenTabPage { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private const int PLUS_MINUS_COL = 0; private const int POOL_CHECKBOX_COL = 1; private const int POOL_ICON_HOST_CHECKBOX_COL = 2; @@ -535,6 +533,7 @@ namespace XenAdmin.Wizards.PatchingWizard if (WizardMode != WizardMode.SingleUpdate) //prechecks will fail in automated updates mode if one of the hosts is unreachable return SelectedPools.SelectMany(p => p.Connection.Cache.Hosts.Where(host => enabledHosts.Contains(host)).OrderBy(host => host)).ToList(); + //prechecks will issue warning but allow updates to be installed on the reachable hosts only return SelectedPools.SelectMany(p => p.Connection.Cache.Hosts.Where(host => host.IsLive() && enabledHosts.Contains(host)).OrderBy(host => host)).ToList(); } @@ -560,20 +559,19 @@ namespace XenAdmin.Wizards.PatchingWizard List pools = new List(); foreach (PatchingHostsDataGridViewRow row in dataGridViewHosts.Rows) { - if (row.Tag is Pool) + if (!row.Enabled || row.Cells.Count < 2 || (int)row.Cells[POOL_CHECKBOX_COL].Value == UNCHECKED) + continue; + + if (row.Tag is Pool p) { - if (((int)row.Cells[POOL_CHECKBOX_COL].Value) != UNCHECKED && !pools.Contains((Pool)row.Tag)) - pools.Add((Pool)row.Tag); + if (!pools.Contains(p)) + pools.Add(p); } - else if (row.Tag is Host) + else if (row.Tag is Host h) { - if (((int)row.Cells[POOL_CHECKBOX_COL].Value) != UNCHECKED) - { - Host host = (Host)row.Tag; - Pool pool = Helpers.GetPoolOfOne(host.Connection); - if (pool != null && !pools.Contains(pool)) - pools.Add(pool); - } + Pool pool = Helpers.GetPoolOfOne(h.Connection); + if (pool != null && !pools.Contains(pool)) + pools.Add(pool); } } return pools; diff --git a/XenAdmin/Wizards/PatchingWizard/PlanActions/ApplyXenServerPatchPlanAction.cs b/XenAdmin/Wizards/PatchingWizard/PlanActions/ApplyXenServerPatchPlanAction.cs index 2608a0875..06b067105 100644 --- a/XenAdmin/Wizards/PatchingWizard/PlanActions/ApplyXenServerPatchPlanAction.cs +++ b/XenAdmin/Wizards/PatchingWizard/PlanActions/ApplyXenServerPatchPlanAction.cs @@ -76,12 +76,20 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions AddProgressStep(string.Format(Messages.UPDATES_WIZARD_APPLYING_UPDATE, xenServerPatch.Name, host.Name())); + PatchPrecheckOnHostPlanAction.RefreshUpdate(host, mapping, session); + XenRef task = null; if (mapping is PoolPatchMapping patchMapping) + { + log.InfoFormat("Applying patch on '{0}'. Patch{1}' (uuid = '{2}'; opaque_ref = '{3}')", host.Name(), patchMapping.Pool_patch.Name(), patchMapping.Pool_patch.uuid, patchMapping.Pool_patch.opaque_ref); task = Pool_patch.async_apply(session, patchMapping.Pool_patch.opaque_ref, host.opaque_ref); + } else if (mapping is PoolUpdateMapping updateMapping) + { + log.InfoFormat("Applying update on '{0}'. Update = '{1}' (uuid = '{2}'; opaque_ref = '{3}')", host.Name(), updateMapping.Pool_update.Name(), updateMapping.Pool_update.uuid, updateMapping.Pool_update.opaque_ref); task = Pool_update.async_apply(session, updateMapping.Pool_update.opaque_ref, host.opaque_ref); + } PollTaskForResultAndDestroy(Connection, ref session, task); } diff --git a/XenAdmin/Wizards/PatchingWizard/PlanActions/HostPlanAction.cs b/XenAdmin/Wizards/PatchingWizard/PlanActions/HostPlanAction.cs index f7edd4504..0cf14e5c3 100644 --- a/XenAdmin/Wizards/PatchingWizard/PlanActions/HostPlanAction.cs +++ b/XenAdmin/Wizards/PatchingWizard/PlanActions/HostPlanAction.cs @@ -31,6 +31,7 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading; using XenAPI; @@ -87,9 +88,16 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions { if (f.ErrorDescription.Count > 0 && f.ErrorDescription[0] == Failure.HOST_NOT_ENOUGH_FREE_MEMORY) { - log.WarnFormat("Host {0} cannot be avacuated: {1}", hostObj.Name(), f.Message); + log.WarnFormat("Host {0} cannot be evacuated: {1}", hostObj.Name(), f.Message); throw new Exception(string.Format(Messages.PLAN_ACTION_FAILURE_NOT_ENOUGH_MEMORY, hostObj.Name()), f); } + + if (f.ErrorDescription.Count > 0 && f.ErrorDescription[0] == Failure.NO_HOSTS_AVAILABLE) + { + log.WarnFormat("Host {0} cannot be evacuated: {1}", hostObj.Name(), f.Message); + if (hostObj.Connection.Cache.Hosts.Any(h=>h.updates_requiring_reboot.Count > 0 && !h.enabled)) + throw new Exception(string.Format(Messages.PLAN_ACTION_FAILURE_NO_HOSTS_AVAILABLE, hostObj.Name())); + } throw; } } diff --git a/XenAdmin/Wizards/PatchingWizard/PlanActions/PatchPrecheckOnHostPlanAction.cs b/XenAdmin/Wizards/PatchingWizard/PlanActions/PatchPrecheckOnHostPlanAction.cs index 791246e3a..ed7477b3d 100644 --- a/XenAdmin/Wizards/PatchingWizard/PlanActions/PatchPrecheckOnHostPlanAction.cs +++ b/XenAdmin/Wizards/PatchingWizard/PlanActions/PatchPrecheckOnHostPlanAction.cs @@ -82,15 +82,19 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions { AddProgressStep(string.Format(Messages.UPDATES_WIZARD_RUNNING_PRECHECK, xenServerPatch.Name, host.Name())); + RefreshUpdate(host, mapping, session); + List problems = null; if (mapping is PoolPatchMapping patchMapping) { + log.InfoFormat("Running patch precheck on '{0}'. Patch = '{1}' (uuid = '{2}'; opaque_ref = '{3}')", host.Name(), patchMapping.Pool_patch.Name(), patchMapping.Pool_patch.uuid, patchMapping.Pool_patch.opaque_ref); problems = new PatchPrecheckCheck(host, patchMapping.Pool_patch, livePatchStatus).RunAllChecks(); updateRequiresHostReboot = WizardHelpers.IsHostRebootRequiredForUpdate(host, patchMapping.Pool_patch, livePatchStatus); } else if (mapping is PoolUpdateMapping updateMapping) { + log.InfoFormat("Running update precheck on '{0}'. Update = '{1}' (uuid = '{2}'; opaque_ref = '{3}'", host.Name(), updateMapping.Pool_update.Name(), updateMapping.Pool_update.uuid, updateMapping.Pool_update.opaque_ref); problems = new PatchPrecheckCheck(host, updateMapping.Pool_update, livePatchStatus).RunAllChecks(); updateRequiresHostReboot = WizardHelpers.IsHostRebootRequiredForUpdate(host, updateMapping.Pool_update, livePatchStatus); } @@ -120,5 +124,37 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions livePatchAttempts[host.uuid].Add(xenServerPatch.Uuid); } } + + public static void RefreshUpdate(Host host, HostUpdateMapping mapping, Session session) + { + // re-introduce pool_update if needed + if (mapping is PoolUpdateMapping poolUpdateMapping + && session.Connection.Cache.Pool_updates.FirstOrDefault(u => string.Equals(u.uuid, poolUpdateMapping.Pool_update.uuid, StringComparison.OrdinalIgnoreCase)) == null) + { + log.InfoFormat("Re-introduce update on '{0}'. Update = '{1}' (uuid = '{2}'; old opaque_ref = '{3}')", + host.Name(), poolUpdateMapping.Pool_update.Name(), poolUpdateMapping.Pool_update.uuid, + poolUpdateMapping.Pool_update.opaque_ref); + try + { + var newUpdateRef = Pool_update.introduce(session, poolUpdateMapping.Pool_update.vdi.opaque_ref); + session.Connection.WaitForCache(newUpdateRef); + } + catch (Exception e) + { + if (e is Failure failure && failure.ErrorDescription != null && failure.ErrorDescription.Count > 1 && failure.ErrorDescription[0] == Failure.UPDATE_ALREADY_EXISTS) + { + log.InfoFormat("Update '{0}' already exists", poolUpdateMapping.Pool_update.Name()); + } + else + { + log.Error("Failed to re-introduce the update", e); + throw; + } + } + } + + // refresh the update/patch record based on uuid + mapping.RefreshUpdate(); + } } } diff --git a/XenAdmin/Wizards/PatchingWizard/PlanActions/PlanAction.cs b/XenAdmin/Wizards/PatchingWizard/PlanActions/PlanAction.cs index 51dd4ac3d..7e97fd5b9 100644 --- a/XenAdmin/Wizards/PatchingWizard/PlanActions/PlanAction.cs +++ b/XenAdmin/Wizards/PatchingWizard/PlanActions/PlanAction.cs @@ -32,9 +32,7 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Reflection; using System.Threading; -using log4net; using XenAdmin.Network; using XenAPI; @@ -43,7 +41,7 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions { public abstract class PlanAction : IEquatable { - protected static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + protected static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private int _percentComplete; public event Action OnProgressChange; @@ -127,12 +125,11 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions } catch (Exception e) { - Failure f = e as Failure; - if (f != null && f.ErrorDescription != null && f.ErrorDescription.Count > 1 && f.ErrorDescription[1].Contains(FriendlyErrorNames.SR_BACKEND_FAILURE_432)) + if (e is Failure f && f.ErrorDescription != null && f.ErrorDescription.Count > 1 && f.ErrorDescription[1].Contains(FriendlyErrorNames.SR_BACKEND_FAILURE_432)) { // ignore this exception (CA-62989) in order to allow the Upgrade wizard to continue // upgrading all the hosts in a pool. The detached SRs will be reported on Finish - log.Warn(Messages.STORAGELINK_SR_NEEDS_REATTACH, f); + log.Warn("There is a StorageLink Gateway SR that needs to be reattached.", f); } else { diff --git a/XenAdmin/Wizards/PatchingWizard/PlanActions/RebootPlanAction.cs b/XenAdmin/Wizards/PatchingWizard/PlanActions/RebootPlanAction.cs index 039a29f61..c2564545d 100644 --- a/XenAdmin/Wizards/PatchingWizard/PlanActions/RebootPlanAction.cs +++ b/XenAdmin/Wizards/PatchingWizard/PlanActions/RebootPlanAction.cs @@ -39,7 +39,8 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions { public abstract class RebootPlanAction : HostPlanAction { - private bool _cancelled = false; + private bool _cancelled; + private bool lostConnection; protected RebootPlanAction(Host host) : base(host) @@ -130,7 +131,7 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions { if (master) { - Connection.SupressErrors = true; + Connection.SuppressErrors = true; // // Wait for a dissconnection @@ -155,7 +156,7 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions } finally { - Connection.SupressErrors = false; + Connection.SuppressErrors = false; } return session; } @@ -271,9 +272,7 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions return session; } - private bool lostConnection = false; - - private void connection_ConnectionLost(object sender, EventArgs e) + private void connection_ConnectionLost(IXenConnection conn) { lock (this) { diff --git a/XenAdmin/Wizards/PatchingWizard/PlanActions/XenServerPatchMapping.cs b/XenAdmin/Wizards/PatchingWizard/PlanActions/XenServerPatchMapping.cs index 7d20fd62d..acfff1ec4 100644 --- a/XenAdmin/Wizards/PatchingWizard/PlanActions/XenServerPatchMapping.cs +++ b/XenAdmin/Wizards/PatchingWizard/PlanActions/XenServerPatchMapping.cs @@ -31,6 +31,7 @@ using System; using System.Collections.Generic; +using System.Linq; using XenAdmin.Core; using XenAPI; @@ -62,6 +63,8 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions } public abstract bool IsValid { get; } + + public abstract void RefreshUpdate(); } @@ -94,7 +97,7 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions public class PoolPatchMapping : XenServerPatchMapping { - public readonly Pool_patch Pool_patch; + public Pool_patch Pool_patch; public PoolPatchMapping(XenServerPatch xenServerPatch, Pool_patch pool_patch, Host masterHost) : base(xenServerPatch, masterHost) @@ -122,12 +125,22 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions { get { return Pool_patch != null && Pool_patch.opaque_ref != null; } } + + public override void RefreshUpdate() + { + if (Pool_patch != null) + { + var patch = MasterHost.Connection?.Cache.Pool_patches.FirstOrDefault(u => string.Equals(u.uuid, Pool_patch.uuid, StringComparison.OrdinalIgnoreCase)); + if (patch != null && patch.opaque_ref != Pool_patch.opaque_ref) + Pool_patch = patch; + } + } } public class PoolUpdateMapping : XenServerPatchMapping { - public readonly Pool_update Pool_update; + public Pool_update Pool_update; public Dictionary SrsWithUploadedUpdatesPerHost = new Dictionary(); public PoolUpdateMapping(XenServerPatch xenServerPatch, Pool_update pool_update, Host masterHost) @@ -156,13 +169,26 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions { get { return Pool_update != null && Pool_update.opaque_ref != null; } } + + public override void RefreshUpdate() + { + if (Pool_update != null) + { + var update = Pool_update.Connection?.Cache.Pool_updates.FirstOrDefault(u => string.Equals(u.uuid, Pool_update.uuid, StringComparison.OrdinalIgnoreCase)); + if (update != null && update.opaque_ref != Pool_update.opaque_ref) + { + Pool_update = update; + } + } + + } } public class OtherLegacyMapping : HostUpdateMapping { public readonly string Path; - public readonly Pool_patch Pool_patch; + public Pool_patch Pool_patch; public OtherLegacyMapping(string path, Pool_patch pool_patch, Host masterHost) : base(masterHost) @@ -203,13 +229,23 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions return Pool_patch.opaque_ref != null; } } + + public override void RefreshUpdate() + { + if (Pool_patch != null) + { + var patch = MasterHost.Connection?.Cache.Pool_patches.FirstOrDefault(u => string.Equals(u.uuid, Pool_patch.uuid, StringComparison.OrdinalIgnoreCase)); + if (patch != null && patch.opaque_ref != Pool_patch.opaque_ref) + Pool_patch = patch; + } + } } public class SuppPackMapping : HostUpdateMapping { public readonly string Path; - public readonly Pool_update Pool_update; + public Pool_update Pool_update; public Dictionary SrsWithUploadedUpdatesPerHost = new Dictionary(); public Dictionary SuppPackVdis = new Dictionary(); @@ -252,5 +288,15 @@ namespace XenAdmin.Wizards.PatchingWizard.PlanActions return Pool_update.opaque_ref != null; } } + + public override void RefreshUpdate() + { + if (Pool_update != null) + { + var update = MasterHost.Connection?.Cache.Pool_updates.FirstOrDefault(u => string.Equals(u.uuid, Pool_update.uuid, StringComparison.OrdinalIgnoreCase)); + if (update != null && update.opaque_ref != Pool_update.opaque_ref) + Pool_update = update; + } + } } } diff --git a/XenAdmin/Wizards/RollingUpgradeWizard/PlanActions/UpgradeHostPlanAction.cs b/XenAdmin/Wizards/RollingUpgradeWizard/PlanActions/UpgradeHostPlanAction.cs index 2230edcd4..d9372bedf 100644 --- a/XenAdmin/Wizards/RollingUpgradeWizard/PlanActions/UpgradeHostPlanAction.cs +++ b/XenAdmin/Wizards/RollingUpgradeWizard/PlanActions/UpgradeHostPlanAction.cs @@ -51,11 +51,25 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard.PlanActions protected override void RunWithSession(ref Session session) { string hostVersionBefore = CurrentHost.LongProductVersion(); - log.InfoFormat("Host '{0}' upgrading from version '{1}'", CurrentHost.Name(), hostVersionBefore); + + string productVersion = null; + try + { + var result = Host.call_plugin(session, HostXenRef.opaque_ref, "prepare_host_upgrade.py", "getVersion", _arguments); + var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); + var version = (Dictionary)serializer.DeserializeObject(result); + productVersion = version.ContainsKey("product-version") ? (string)version["product-version"] : null; + } + catch (Exception exception) + { + log.WarnFormat("Exception while trying to get the upgrade version: {0}", exception.Message); + } + + log.InfoFormat("Host '{0}' upgrading from version '{1}' to version '{2}'", CurrentHost.Name(), hostVersionBefore, productVersion ?? "unknown"); string value = Host.call_plugin(session, HostXenRef.opaque_ref, "prepare_host_upgrade.py", "main", _arguments); if (value.ToLower() == "true") - Upgrade(ref session); + Upgrade(ref session, productVersion); else throw new Exception(value); diff --git a/XenAdmin/Wizards/RollingUpgradeWizard/PlanActions/UpgradeManualHostPlanAction.cs b/XenAdmin/Wizards/RollingUpgradeWizard/PlanActions/UpgradeManualHostPlanAction.cs index 0407e2796..cc0fea748 100644 --- a/XenAdmin/Wizards/RollingUpgradeWizard/PlanActions/UpgradeManualHostPlanAction.cs +++ b/XenAdmin/Wizards/RollingUpgradeWizard/PlanActions/UpgradeManualHostPlanAction.cs @@ -48,6 +48,7 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard.PlanActions protected bool rebooting; private readonly Timer timer; protected readonly Control invokingControl; + private Version _upgradeVersion; protected UpgradeHostPlanAction(Host host, Control invokingControl) : base(host) @@ -62,19 +63,12 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard.PlanActions if (!rebooting) return; - Program.Invoke(invokingControl, () => - { - using (var dialog = new NonModalThreeButtonDialog(SystemIcons.Exclamation, - Messages.ROLLING_UPGRADE_TIMEOUT, Messages.ROLLING_POOL_UPGRADE, - Messages.KEEP_WAITING_BUTTON_LABEL, Messages.CANCEL)) - { - if (dialog.ShowDialog(invokingControl) != DialogResult.OK) - Cancel(); - } - }); + ReplaceProgressStep(_upgradeVersion == null + ? string.Format(Messages.ROLLING_UPGRADE_TIMEOUT, CurrentHost.Name()) + : string.Format(Messages.ROLLING_UPGRADE_TIMEOUT_VERSION, _upgradeVersion, CurrentHost.Name())); } - protected void Upgrade(ref Session session) + protected void Upgrade(ref Session session, string upgradeVersion = null) { try { @@ -87,11 +81,15 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard.PlanActions Host.disable(session, HostXenRef.opaque_ref); } + Version.TryParse(upgradeVersion, out _upgradeVersion); + timer.Start(); rebooting = true; log.DebugFormat("Upgrading host {0}", hostObj.Name()); - AddProgressStep(string.Format(Messages.PLAN_ACTION_STATUS_INSTALLING_XENSERVER, hostObj.Name())); + AddProgressStep(_upgradeVersion == null + ? string.Format(Messages.PLAN_ACTION_STATUS_INSTALLING_XENSERVER, hostObj.Name()) + : string.Format(Messages.PLAN_ACTION_STATUS_INSTALLING_XENSERVER_VERSION, _upgradeVersion, hostObj.Name())); log.DebugFormat("Waiting for host {0} to reboot", hostObj.Name()); WaitForReboot(ref session, Host.BootTime, s => Host.async_reboot(s, HostXenRef.opaque_ref)); diff --git a/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeExtrasPage.resx b/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeExtrasPage.resx index efaae093e..345e6488f 100644 --- a/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeExtrasPage.resx +++ b/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeExtrasPage.resx @@ -325,7 +325,7 @@ 8 - Click Run Prechecks to begin running the upgrade prechecks. + Click Run Pre-checks to begin running the upgrade pre-checks. label6 diff --git a/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeWizardPrecheckPage.cs b/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeWizardPrecheckPage.cs index 7b50b92e1..b4d3bdf3c 100644 --- a/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeWizardPrecheckPage.cs +++ b/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeWizardPrecheckPage.cs @@ -38,6 +38,7 @@ using XenAdmin.Diagnostics.Hotfixing; using XenAdmin.Wizards.PatchingWizard; using XenAPI; using System.Linq; +using XenAdmin.Network; using CheckGroup = System.Collections.Generic.KeyValuePair>; @@ -45,8 +46,6 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard { public partial class RollingUpgradeWizardPrecheckPage : PatchingWizard_PrecheckPage { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public RollingUpgradeWizardPrecheckPage() { InitializeComponent(); @@ -58,7 +57,7 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard foreach (Host master in SelectedMasters) { master.Connection.ConnectionStateChanged += connection_ConnectionChanged; - master.Connection.CachePopulated += connection_ConnectionChanged; + master.Connection.CachePopulated += connection_CachePopulated; } } @@ -67,11 +66,16 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard foreach (Host master in SelectedMasters) { master.Connection.ConnectionStateChanged -= connection_ConnectionChanged; - master.Connection.CachePopulated -= connection_ConnectionChanged; + master.Connection.CachePopulated -= connection_CachePopulated; } } - private void connection_ConnectionChanged(object sender, EventArgs eventArgs) + private void connection_ConnectionChanged(IXenConnection conn) + { + Program.Invoke(this, RefreshRechecks); + } + + private void connection_CachePopulated(IXenConnection conn) { Program.Invoke(this, RefreshRechecks); } @@ -234,6 +238,16 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard groups.Add(new CheckGroup(Messages.CHECKING_CLUSTERING_STATUS, gfs2Checks)); } + //Checking PV guests - for hosts that have any PV guests and warn the user before the upgrade. + var pvChecks = new List(); + foreach (Pool pool in SelectedPools.Where(p => !Helpers.QuebecOrGreater(p.Connection))) + { + if (pool.Connection.Resolve(pool.master) != null) + pvChecks.Add(new PVGuestsCheck(pool, true, InstallMethodConfig, ManualUpgrade)); + } + if (pvChecks.Count > 0) + groups.Add(new CheckGroup(Messages.CHECKING_PV_GUESTS, pvChecks)); + //Checking automated updates are possible if apply updates checkbox is ticked if (ApplyUpdatesToNewVersion) { diff --git a/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeWizardSelectPool.cs b/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeWizardSelectPool.cs index fa62bbe2f..b838b69c6 100644 --- a/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeWizardSelectPool.cs +++ b/XenAdmin/Wizards/RollingUpgradeWizard/RollingUpgradeWizardSelectPool.cs @@ -49,8 +49,6 @@ namespace XenAdmin.Wizards.RollingUpgradeWizard { public partial class RollingUpgradeWizardSelectPool : XenTabPage { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public RollingUpgradeWizardSelectPool() { InitializeComponent(); diff --git a/XenAdmin/Wizards/XenWizardBase.cs b/XenAdmin/Wizards/XenWizardBase.cs index b0c2de5bf..2a6c44aa8 100644 --- a/XenAdmin/Wizards/XenWizardBase.cs +++ b/XenAdmin/Wizards/XenWizardBase.cs @@ -36,14 +36,13 @@ using System.Windows.Forms; using XenAdmin.Controls; using XenAdmin.Core; +using XenAdmin.Help; using XenAdmin.Network; namespace XenAdmin.Wizards { - public partial class XenWizardBase : Form + public partial class XenWizardBase : Form, IFormWithHelp { - protected static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private IXenConnection connection; // connection to use protected IXenConnection xenConnection @@ -195,7 +194,6 @@ namespace XenAdmin.Wizards return; wizardFinished = true; - WizardProgress_EnteringStep(null, new WizardProgressEventArgs(true)); FinishWizard(); } else @@ -298,7 +296,7 @@ namespace XenAdmin.Wizards public bool HasHelp() { - return Help.HelpManager.HasHelpFor(WizardPaneHelpID()); + return HelpManager.TryGetTopicId(WizardPaneHelpID(), out _); } private void HelpButton_Click(object sender, EventArgs e) diff --git a/XenAdmin/XenAdmin.csproj b/XenAdmin/XenAdmin.csproj index bc41989a8..0f1e2350d 100755 --- a/XenAdmin/XenAdmin.csproj +++ b/XenAdmin/XenAdmin.csproj @@ -88,6 +88,7 @@ + @@ -100,6 +101,7 @@ + @@ -109,7 +111,11 @@ + + Component + + @@ -173,6 +179,12 @@ Component + + UserControl + + + DiskSpinner.cs + Component @@ -224,6 +236,7 @@ + @@ -231,6 +244,7 @@ + @@ -249,6 +263,12 @@ + + Form + + + AddVGPUDialog.cs + Form @@ -256,6 +276,18 @@ AttachUsbDialog.cs + + Form + + + ConversionDialog.cs + + + Form + + + ConversionVmSelectionDialog.cs + Form @@ -268,6 +300,12 @@ ConfirmationOptionsPage.cs + + Form + + + OvfValidationDialog.cs + Form @@ -621,12 +659,6 @@ ConnectingToServerDialog.cs - - Form - - - MessageBoxTest.cs - Form @@ -741,6 +773,36 @@ MemorySettings.cs + + Form + + + UserControl + + + CredentialsPage.cs + + + UserControl + + + UserControl + + + SrSelectionPage.cs + + + UserControl + + + SummaryPage.cs + + + UserControl + + + VmSelectionPage.cs + UserControl @@ -1448,10 +1510,10 @@ UserControl - + Form - + LoadSessionDialog.cs @@ -1577,6 +1639,15 @@ + + DiskSpinner.cs + + + DiskSpinner.cs + + + DiskSpinner.cs + PvsCacheStorageRow.cs @@ -1596,6 +1667,15 @@ QueryPanel.cs + + AddVGPUDialog.cs + + + AddVGPUDialog.cs + + + AddVGPUDialog.cs + AttachUsbDialog.cs @@ -1605,6 +1685,25 @@ AttachUsbDialog.cs + + ConversionDialog.cs + + + ConversionDialog.cs + Designer + + + ConversionDialog.cs + + + ConversionVmSelectionDialog.cs + + + ConversionVmSelectionDialog.cs + + + ConversionVmSelectionDialog.cs + EnablePvsReadCachingDialog.cs @@ -1746,6 +1845,15 @@ ConfirmationOptionsPage.cs + + OvfValidationDialog.cs + + + OvfValidationDialog.cs + + + OvfValidationDialog.cs + PvsCacheConfigurationDialog.cs @@ -1954,10 +2062,6 @@ ConnectingToServerDialog.cs Designer - - Designer - MessageBoxTest.cs - Designer EditVmHaPrioritiesDialog.cs @@ -2168,6 +2272,42 @@ Designer MemorySettings.cs + + CredentialsPage.cs + + + CredentialsPage.cs + + + CredentialsPage.cs + + + SrSelectionPage.cs + + + SrSelectionPage.cs + + + SrSelectionPage.cs + + + SummaryPage.cs + + + SummaryPage.cs + + + SummaryPage.cs + + + VmSelectionPage.cs + + + VmSelectionPage.cs + + + VmSelectionPage.cs + CrossPoolMigrateCopyModePage.cs @@ -2642,7 +2782,7 @@ HelpManager.cs Designer - + Designer LoadSessionDialog.cs @@ -2732,21 +2872,24 @@ XenWizardBase.cs Designer + + HomePage.ja.mht + Always + + + HomePage.mht + Always + + + HomePage.zh-CN.mht + Always + Designer Designer - - Always - - - Always - - - Always - SettingsSingleFileGenerator Settings.Designer.cs @@ -4285,21 +4428,6 @@ - - - - - - - - - - - - - - - @@ -4403,6 +4531,8 @@ + + @@ -4457,6 +4587,7 @@ + @@ -5273,10 +5404,10 @@ LicenseManager.cs - + LoadSessionDialog.cs - + LoadSessionDialog.cs @@ -5288,12 +5419,6 @@ ManageUpdatesPage.cs - - MessageBoxTest.cs - - - MessageBoxTest.cs - MoveVirtualDiskDialog.cs @@ -5438,6 +5563,7 @@ ChangeMasterPasswordDialog.cs + Designer ChangeMasterPasswordDialog.cs @@ -6791,6 +6917,8 @@ WorkloadReports.cs + + PreserveNewest diff --git a/XenAdmin/app.config b/XenAdmin/app.config index 095eb8d87..7d799e194 100644 --- a/XenAdmin/app.config +++ b/XenAdmin/app.config @@ -30,9 +30,6 @@ True - - False - False @@ -147,9 +144,6 @@ True - - False - True @@ -186,6 +180,15 @@ False + + True + + + True + + + False + @@ -280,4 +283,5 @@ - + + diff --git a/XenAdminTests/ClassVerifiers.cs b/XenAdminTests/ClassVerifiers.cs new file mode 100644 index 000000000..e96edbfd6 --- /dev/null +++ b/XenAdminTests/ClassVerifiers.cs @@ -0,0 +1,133 @@ +/* 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.Linq; +using System.Reflection; +using NUnit.Framework; + +namespace XenAdminTests +{ + internal static class ClassVerifiers + { + /// + /// Use this when you want to test that some expected data has already been set in a class + /// + /// A class with getters and setters to verify + /// A struct of expected data content with members having the same name and return type as the getters and setters of the class + public static void VerifyGetters(object classToVerify, object expected) + { + FieldInfo[] fields = expected.GetType().GetFields(); + + foreach (FieldInfo fieldInfo in fields) + { + string fieldName = fieldInfo.Name; + object expectedValue = fieldInfo.GetValue(expected); + var getter = classToVerify.GetType().GetProperty(fieldName); + + Assert.NotNull(getter, $"Could not find getter {fieldName}"); + + object actualValue = getter.GetValue(classToVerify); + if (expectedValue is string) + actualValue = actualValue.ToString(); + + Assert.AreEqual(expectedValue, actualValue, $"Mismatched Property {fieldName}"); + } + } + + /// + /// Use this when you want to test that some data is set and a set of different data is retrieved afterwards. + /// This is useful when your class manipulates the underlying data before returning/storing it + /// + /// A class with getters and setters to verify + /// A struct of expected data content with members having the same name + /// and return type as the getters and setters of the class + /// A struct of data to set with members having the same name and return + /// type as the getters and setters of the class + public static void VerifySettersAndGetters(object classToVerify, object expected, object toSet = null) + { + if (toSet == null) + toSet = expected; + + FieldInfo[] fields = expected.GetType().GetFields(); + foreach (FieldInfo fieldInfo in fields) + { + object valueToSet = fieldInfo.GetValue(toSet); + string fieldName = fieldInfo.Name; + + PropertyInfo setter = classToVerify.GetType().GetProperty(fieldName); + setter.SetValue(classToVerify, valueToSet, null); + + object expectedValue = fieldInfo.GetValue(expected); + PropertyInfo getter = classToVerify.GetType().GetProperty(fieldName); + Assert.AreEqual(expectedValue, getter.GetValue(classToVerify, null), "Property mismatched: " + fieldName); + } + } + + /// + /// Use this class to go through a class with the constructed type and + /// verify there are methods that return the expected type and the + /// return value is not null + /// + /// + /// Type that the static method will check for as a return type + public static void VerifyStaticMethodReturn(Type typeToValidate, object returnTypeForMethod) + { + Type returnType = returnTypeForMethod as Type; + MethodInfo[] methods = typeToValidate.GetMethods(); + + Assert.AreNotEqual(0, methods.Length, "No methods found returning " + returnType); + + int staticMethodCount = 0; + foreach (MethodInfo methodInfo in methods) + { + if (methodInfo.ReturnType == returnType && methodInfo.IsStatic) + { + Assert.IsNotNull(methodInfo.Invoke(null, null), "Null value returned for " + methodInfo.Name); + staticMethodCount++; + } + } + + Assert.AreNotEqual(0, staticMethodCount, "Static method call count should not be zero"); + } + + /// + /// Verify the number of properties on the provided class are as expected + /// + /// A class with getters and setters to verify + /// expected number of properties + public static void VerifyPropertyCounter(object classToVerify, object expectedNumberOfProperties) + { + int propertyCount = classToVerify.GetType().GetProperties().Count(); + Assert.AreEqual((int)expectedNumberOfProperties, propertyCount, "Number of properties on the class tested"); + } + } +} diff --git a/XenAdminTests/CodeTests/AssemblyTests.cs b/XenAdminTests/CodeTests/AssemblyTests.cs new file mode 100644 index 000000000..7ee9a4b2d --- /dev/null +++ b/XenAdminTests/CodeTests/AssemblyTests.cs @@ -0,0 +1,152 @@ +/* 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.Globalization; +using System.Linq; +using System.Collections.Generic; +using System.Configuration; +using System.Reflection; +using NUnit.Framework; + + +namespace XenAdminTests.CodeTests +{ + [TestFixture, Category(TestCategories.Unit)] + public class AssemblyTests + { + [Test, Combinatorial] + [Description("Checks all resx files in the project have their i18n counterparts in place")] + public void TestEnsureI18NFilesInPlace( + [Values("ja", "zh-CN")] string locale, + [Values("XenCenterMain", "XenModel", "XenOvf", "XenOvfTransport")] string assemblyName) + { + var assembly = FindAssemblyByNameRecursively(assemblyName); + Assert.NotNull($"Assembly {assemblyName} was not found."); + + var excludeFromCheck = new[] {"XenAdmin.Help.HelpManager"}; + var missing = new List(); + var extra = new List(); + + List defaultResx = new List(assembly.GetManifestResourceNames().Where(resource => resource.EndsWith("resources"))); + + CultureInfo cultureInfo = new CultureInfo(locale); + Assembly localeDll = assembly.GetSatelliteAssembly(cultureInfo); + List localeResx = new List(localeDll.GetManifestResourceNames()); + + foreach (string def in defaultResx) + { + var name = def.Substring(0, def.Length - ".resources".Length); + var exclude = excludeFromCheck.Contains(name); + + string localName = $"{name}.{locale}.resources"; + var localized = localeResx.Contains(localName); + + if (localized && exclude) + extra.Add(localName); + else if (!localized && !exclude) + missing.Add(localName); + } + + Assert.IsEmpty(missing, "Missing resources detected."); + Assert.IsEmpty(extra, "Unnecessary resources detected."); + } + + [Test] + [Description("Checks that if there are user-scoped settings in an assembly, these have roaming=true")] + public void TestUserSettingsAreRoaming( + [Values("XenCenterMain", "XenOvf", "XenOvfTransport", "XenServerHealthCheck")] string assemblyName) + { + var assembly = FindAssemblyByNameRecursively(assemblyName); + Assert.NotNull($"Assembly {assemblyName} was not found."); + + var nonRoaming = new List(); + + foreach (var type in assembly.GetTypes()) + { + if (type.Name == "Settings" && typeof(SettingsBase).IsAssignableFrom(type)) + { + var properties = ((SettingsBase)type.GetProperty("Default").GetValue(null, null)).Properties; + + foreach (SettingsProperty prop in properties) + { + bool userScope = false; + bool roaming = false; + + foreach (var val in prop.Attributes.Values) + { + if (val is SettingsManageabilityAttribute sma && sma.Manageability == SettingsManageability.Roaming) + roaming = true; + else if (val is UserScopedSettingAttribute) + userScope = true; + } + + if (userScope && !roaming) + nonRoaming.Add(prop.Name); + } + } + } + + Assert.IsEmpty(nonRoaming, "Detected user-scoped settings that are not roaming."); + } + + #region Auxiliary private methods + + /// + /// Some of the assemblies we need to check may not be in the manifest of the assembly we're + /// looking at, but are referenced by assemblies in the manifest. This method retrieves them. + /// + private Assembly FindAssemblyByNameRecursively(string name, Assembly startAssembly = null) + { + if (startAssembly == null) + startAssembly = Assembly.GetExecutingAssembly(); + + var assemblyNames = startAssembly.GetReferencedAssemblies(); + var assemblyName = assemblyNames.FirstOrDefault(an => an.Name == name); + + if (assemblyName == null) + { + foreach (var temp in assemblyNames) + { + var found = FindAssemblyByNameRecursively(name, Assembly.Load(temp)); + if (found != null) + return found; + } + } + else + return Assembly.Load(assemblyName); + + return null; + } + + #endregion + } +} + diff --git a/XenAdminTests/XenModelTests/XenModelReferencesTest.cs b/XenAdminTests/CodeTests/XenModelReferencesTest.cs similarity index 83% rename from XenAdminTests/XenModelTests/XenModelReferencesTest.cs rename to XenAdminTests/CodeTests/XenModelReferencesTest.cs index ea94c0368..4af750521 100644 --- a/XenAdminTests/XenModelTests/XenModelReferencesTest.cs +++ b/XenAdminTests/CodeTests/XenModelReferencesTest.cs @@ -29,27 +29,22 @@ * SUCH DAMAGE. */ -using System; -using System.Collections.Generic; -using System.Linq; using System.Reflection; -using System.Text; using NUnit.Framework; -namespace XenAdminTests.XenModelTests +namespace XenAdminTests.CodeTests { - [TestFixture, Category(TestCategories.UICategoryB)] + [TestFixture, Category(TestCategories.Unit)] public class XenModelReferencesTest { [Test] public void TestReferences() { Assembly a = Assembly.Load(new AssemblyName("XenModel")); - AssemblyName[] an = - a.GetReferencedAssemblies(); + AssemblyName[] an = a.GetReferencedAssemblies(); + foreach (AssemblyName name in an) { - //Console.WriteLine(name.ToString()); Assert.False(name.ToString().StartsWith("System.Windows"), "Assembly referenced: " + name); } } diff --git a/XenAdminTests/CompressionTests/CompressionStreamTests.cs b/XenAdminTests/CompressionTests/CompressionStreamTests.cs index 52a759836..32931158d 100644 --- a/XenAdminTests/CompressionTests/CompressionStreamTests.cs +++ b/XenAdminTests/CompressionTests/CompressionStreamTests.cs @@ -37,8 +37,8 @@ using XenCenterLib.Compression; namespace XenAdminTests.CompressionTests { - [TestFixture, Category(TestCategories.UICategoryA)] - class CompressionStreamTest + [TestFixture, Category(TestCategories.Unit)] + public class CompressionStreamTest { private class CompressionStreamFake : CompressionStream { diff --git a/XenAdminTests/Controls/Folders/FolderListItemTests.cs b/XenAdminTests/Controls/Folders/FolderListItemTests.cs index 87c8d01af..cadf00c34 100644 --- a/XenAdminTests/Controls/Folders/FolderListItemTests.cs +++ b/XenAdminTests/Controls/Folders/FolderListItemTests.cs @@ -29,7 +29,7 @@ * SUCH DAMAGE. */ -using System.Collections.Generic; + using System.Drawing; using System.Windows.Forms; using NUnit.Framework; @@ -37,39 +37,37 @@ using XenAdmin.Controls; namespace XenAdminTests.Controls.Folders { - public class FolderListItemTests : UnitTester_TestFixture + [TestFixture, Category(TestCategories.Unit)] + public class FolderListItemTests { + private Control parent; - //TODO: Seems to fail on the build machine - commented out temporarily - //[Test, TestCaseSource("PathNameTestData")] - public void CalculatePreferedSizes(TestData tc) + [SetUp] + public void TestSetup() + { + parent = new Control { Font = new Font(FontFamily.GenericMonospace, 10) }; + } + + [TearDown] + public void TestTearDown() { - FolderListItem item = new FolderListItem(tc.Path, FolderListItem.AllowSearch.None, false){MaxWidth = 50}; - Control parent = new Control {Font = new Font(FontFamily.GenericMonospace, 10)}; - item.Parent = parent; - Assert.That(item.PreferredSize.Width, Is.EqualTo(tc.ExpectedWidth), "Width"); - Assert.That(item.Path, Is.EqualTo(tc.Path), "Path"); parent.Dispose(); } - public class TestData + [Test] + [TestCase("", ExpectedResult = 43)] + [TestCase("mypath", ExpectedResult = 44)] + [TestCase("mypathmypathmypathmypathmypathmypathmypathmypathmypathmypathmypath", ExpectedResult = 454)] + public int CalculatePreferedSizes(string path) { - public string Path { get; set; } - public int ExpectedWidth { get; set; } - } - - private IEnumerable PathNameTestData - { - get + var item = new FolderListItem(path, FolderListItem.AllowSearch.None, false) { - yield return new TestData { Path = "", ExpectedWidth = 43}; - yield return new TestData { Path = "mypath", ExpectedWidth = 44 }; - yield return new TestData - { - Path = "mypathmypathmypathmypathmypathmypathmypathmypathmypathmypathmypath", - ExpectedWidth = 454 - }; - } + MaxWidth = 50, + Parent = parent + }; + + Assert.AreEqual(path, item.Path); + return item.PreferredSize.Width; } } } diff --git a/XenAdminTests/UnitTests/Controls/LongStringComboBoxTest.cs b/XenAdminTests/Controls/LongStringComboBoxTest.cs similarity index 96% rename from XenAdminTests/UnitTests/Controls/LongStringComboBoxTest.cs rename to XenAdminTests/Controls/LongStringComboBoxTest.cs index 218f4ba16..f1dae1596 100644 --- a/XenAdminTests/UnitTests/Controls/LongStringComboBoxTest.cs +++ b/XenAdminTests/Controls/LongStringComboBoxTest.cs @@ -34,7 +34,7 @@ using System.Text; using NUnit.Framework; using XenAdmin.Controls; -namespace XenAdminTests.UnitTests.Controls +namespace XenAdminTests.Controls { [TestFixture, Category(TestCategories.Unit)] public class LongStringComboBoxTest diff --git a/XenAdminTests/Controls/SrPickerItemTests.cs b/XenAdminTests/Controls/SrPickerItemTests.cs index 2e35851f9..c12255df0 100644 --- a/XenAdminTests/Controls/SrPickerItemTests.cs +++ b/XenAdminTests/Controls/SrPickerItemTests.cs @@ -92,7 +92,7 @@ namespace XenAdminTests.Controls Sr = GetLocalSr(slaveHost), VdisToMove = GetVDIsFromLocal(masterHost), DiskSize = 1024 * 1024, - ExpectedFailureDescription = Messages.LOCAL_TO_LOCAL_MOVE + ExpectedFailureDescription = string.Format(Messages.SR_CANNOT_BE_SEEN, masterHost) }; yield return new TestData //Master and slave VDIs selected together from a iSCSI -> master local SR { @@ -100,7 +100,7 @@ namespace XenAdminTests.Controls VdisToMove = GetVDIsOn(largeISCSI), Sr = GetLocalSr(masterHost), DiskSize = 1024 * 1024, - ExpectedFailureDescription = Messages.SRPICKER_ERROR_LOCAL_SR_MUST_BE_RESIDENT_HOSTS + ExpectedFailureDescription = string.Format(Messages.SR_CANNOT_BE_SEEN, slaveHost) }; yield return new TestData //Master VDI to a slave move { @@ -108,7 +108,7 @@ namespace XenAdminTests.Controls Sr = GetLocalSr(slaveHost), VdisToMove = GetVDIsOn(largeISCSI).Where(v => v.name_label.Contains("OnMaster")).ToArray(), DiskSize = 1024 * 1024, - ExpectedFailureDescription = Messages.SRPICKER_ERROR_LOCAL_SR_MUST_BE_RESIDENT_HOSTS + ExpectedFailureDescription = string.Format(Messages.SR_CANNOT_BE_SEEN, masterHost) }; yield return new TestData //Slave VDI to a master move { @@ -116,7 +116,7 @@ namespace XenAdminTests.Controls Sr = GetLocalSr(masterHost), VdisToMove = GetVDIsOn(largeISCSI).Where(v => !v.name_label.Contains("OnMaster")).ToArray(), DiskSize = 1024 * 1024, - ExpectedFailureDescription = Messages.SRPICKER_ERROR_LOCAL_SR_MUST_BE_RESIDENT_HOSTS + ExpectedFailureDescription = string.Format(Messages.SR_CANNOT_BE_SEEN, slaveHost) }; yield return new TestData //Local master to shared restricted free space { @@ -360,14 +360,13 @@ namespace XenAdminTests.Controls } #region Helper methods for XenObjects - private readonly SrPickerItemFactory factory = new SrPickerItemFactory(); + private void CannotDoScenario(SrPicker.SRPickerType type, IEnumerable testData) { int count = 0; foreach (TestData data in testData) { - SrPickerItem item = factory.PickerItem(data.Sr, type, data.Affinity, - data.DiskSize, data.VdisToMove); + var item = SrPickerItem.Create(data.Sr, type, data.Affinity, data.DiskSize, data.VdisToMove); Assert.That(item.Show, Is.True, "Item Shown: Item " + count); Assert.That(item.Enabled, Is.False, "Item Enabled: Item " + count); Assert.That(item.Description, Is.EqualTo(data.ExpectedFailureDescription), "Item Reason: Item " + count); @@ -381,8 +380,7 @@ namespace XenAdminTests.Controls int count = 0; foreach (TestData data in testData) { - SrPickerItem item = factory.PickerItem(data.Sr, type, data.Affinity, - data.DiskSize, data.VdisToMove); + var item = SrPickerItem.Create(data.Sr, type, data.Affinity, data.DiskSize, data.VdisToMove); Assert.That(item.Show, Is.True, "Item Shown: Item " + count); Assert.That(item.Enabled, Is.True, "Item Enabled: Item " + count); count++; diff --git a/XenAdminTests/HealthCheckTests/CredentialTests.cs b/XenAdminTests/HealthCheckTests/CredentialTests.cs index b31c30268..2413b0a2f 100755 --- a/XenAdminTests/HealthCheckTests/CredentialTests.cs +++ b/XenAdminTests/HealthCheckTests/CredentialTests.cs @@ -40,7 +40,8 @@ using NUnit.Framework; namespace XenAdminTests.HealthCheckTests { - public class CredentialTests : UnitTester_TestFixture + [TestFixture, Category(TestCategories.Unit)] + public class CredentialTests { [OneTimeSetUp] public void FixtureSetup() diff --git a/XenAdminTests/LicensingTests/LicenceTimerTests.cs b/XenAdminTests/LicensingTests/LicenceTimerTests.cs index 7bb142a6e..50eb6c0e1 100644 --- a/XenAdminTests/LicensingTests/LicenceTimerTests.cs +++ b/XenAdminTests/LicensingTests/LicenceTimerTests.cs @@ -32,63 +32,57 @@ using System; using System.Collections.Generic; using NUnit.Framework; -using XenAdmin; using XenAdmin.Alerts; namespace XenAdminTests.LicensingTests { - [TestFixture, Category(TestCategories.UICategoryB)] + [TestFixture, Category(TestCategories.Unit)] public class LicenceTimerTests { - private Dictionary sharedResults = new Dictionary() - { - {new TimeSpan(3650, 0, 0, 0), "121 months"}, - {new TimeSpan(365, 0, 0, 0), "12 months"}, - {new TimeSpan(90, 0, 0, 0), "3 months"}, - {new TimeSpan(34, 0, 0, 0), "34 days"}, - {new TimeSpan(14, 0, 0, 0), "14 days"}, - {new TimeSpan(7, 0, 0, 0), "7 days"}, - {new TimeSpan(3, 0, 0, 0), "3 days"}, - {new TimeSpan(2, 5, 0, 0), "2 days"}, - {new TimeSpan(2, 0, 0, 0), "48 hours"}, - {new TimeSpan(1, 0, 0, 0), "24 hours"}, - {new TimeSpan(0, 1, 33, 0), "93 minutes"}, - {new TimeSpan(0, 1, 0, 0), "60 minutes"}, - {new TimeSpan(0, 0, 2, 0), "2 minutes"}, - {new TimeSpan(0, 0, 1, 0), "1 minutes"}, - {new TimeSpan(0, 0, 0, 25), "1 minutes"}, - {new TimeSpan(0, 0, 0, 0), "0 minutes"}, - {new TimeSpan(0, 0, 0, -1), String.Empty} - }; - [Test] - public void UncappedTimeToStringConversion() + private static Dictionary sharedResults = new Dictionary() { - Dictionary uncappedResults = new Dictionary(sharedResults) - { - {new TimeSpan(7300, 0, 0, 0), "243 months"} - }; - CheckTimeSpanToTextConversions(18, uncappedResults, false); + {new TimeSpan(3650, 0, 0, 0), "121 months"}, + {new TimeSpan(365, 0, 0, 0), "12 months"}, + {new TimeSpan(90, 0, 0, 0), "3 months"}, + {new TimeSpan(34, 0, 0, 0), "34 days"}, + {new TimeSpan(14, 0, 0, 0), "14 days"}, + {new TimeSpan(7, 0, 0, 0), "7 days"}, + {new TimeSpan(3, 0, 0, 0), "3 days"}, + {new TimeSpan(2, 5, 0, 0), "2 days"}, + {new TimeSpan(2, 0, 0, 0), "48 hours"}, + {new TimeSpan(1, 0, 0, 0), "24 hours"}, + {new TimeSpan(0, 1, 33, 0), "93 minutes"}, + {new TimeSpan(0, 1, 0, 0), "60 minutes"}, + {new TimeSpan(0, 0, 2, 0), "2 minutes"}, + {new TimeSpan(0, 0, 1, 0), "1 minutes"}, + {new TimeSpan(0, 0, 0, 25), "1 minutes"}, + {new TimeSpan(0, 0, 0, 0), "0 minutes"}, + {new TimeSpan(0, 0, 0, -1), ""} + }; + + private static Dictionary uncappedResults = new Dictionary(sharedResults) + { + {new TimeSpan(7300, 0, 0, 0), "243 months"} + }; + + private static Dictionary cappedResults = new Dictionary(sharedResults) + { + {new TimeSpan(7300, 0, 0, 0), "Unlimited"} + }; + + + [Test] + [TestCaseSource(typeof(LicenceTimerTests), nameof(uncappedResults))] + public void UncappedTimeToStringConversion(KeyValuePair kvp) + { + Assert.AreEqual(kvp.Value, LicenseAlert.GetLicenseTimeLeftString(kvp.Key, false)); } [Test] - public void CappedTimeToStringConversion() + [TestCaseSource(typeof(LicenceTimerTests), nameof(cappedResults))] + public void CappedTimeToStringConversion(KeyValuePair kvp) { - Dictionary cappedResults = new Dictionary(sharedResults) - { - {new TimeSpan(7300, 0, 0, 0), "Unlimited"} - }; - CheckTimeSpanToTextConversions(18, cappedResults, true); + Assert.AreEqual(kvp.Value, LicenseAlert.GetLicenseTimeLeftString(kvp.Key, true)); } - - private void CheckTimeSpanToTextConversions(int expectedNumberOfValuesToCheck, Dictionary valuesToCheck, bool capped) - { - Assert.AreEqual(expectedNumberOfValuesToCheck, valuesToCheck.Count); - - foreach (KeyValuePair value in valuesToCheck) - { - Assert.AreEqual(value.Value, LicenseAlert.GetLicenseTimeLeftString(value.Key, capped)); - } - } - } } diff --git a/XenAdminTests/DialogTests/LicenseManager/Comparers/ProductColumnComparerTests.cs b/XenAdminTests/LicensingTests/ProductColumnComparerTests.cs similarity index 88% rename from XenAdminTests/DialogTests/LicenseManager/Comparers/ProductColumnComparerTests.cs rename to XenAdminTests/LicensingTests/ProductColumnComparerTests.cs index b54ba7058..53e5375e4 100644 --- a/XenAdminTests/DialogTests/LicenseManager/Comparers/ProductColumnComparerTests.cs +++ b/XenAdminTests/LicensingTests/ProductColumnComparerTests.cs @@ -35,9 +35,10 @@ using NUnit.Framework; using XenAdmin.Dialogs; using XenAdmin.Dialogs.LicenseManagerLicenseRowComparers; -namespace XenAdminTests.DialogTests.LicenseManager.Comparers +namespace XenAdminTests.UnitTests.LicenseManager { - public class ProductColumnComparerTests : UnitTester_SingleConnectionTestFixture + [TestFixture, Category(TestCategories.Unit)] + public class ProductColumnComparerTests { public class TestCase { @@ -64,7 +65,6 @@ namespace XenAdminTests.DialogTests.LicenseManager.Comparers NameChecked = true, VersionChecked = true }; - yield return new TestCase { LicenseNameA = "A", @@ -73,7 +73,6 @@ namespace XenAdminTests.DialogTests.LicenseManager.Comparers NameChecked = true, VersionChecked = false }; - yield return new TestCase { LicenseNameA = "A", @@ -87,12 +86,12 @@ namespace XenAdminTests.DialogTests.LicenseManager.Comparers } } - [Test, TestCaseSource("TestCases")] + [Test, TestCaseSource(typeof(ProductColumnComparerTests), nameof(TestCases))] public void ComparisonTests(TestCase tc) { - ProductColumnComparer comparer = new ProductColumnComparer(); - Mock x = new Mock(); - Mock y = new Mock(); + var comparer = new ProductColumnComparer(); + var x = new Mock(null); + var y = new Mock(null); x.Setup(l => l.LicenseProductVersion).Returns(tc.ProductVersionA); x.Setup(l => l.LicenseName).Returns(tc.LicenseNameA); y.Setup(l => l.LicenseProductVersion).Returns(tc.ProductVersionB); @@ -121,8 +120,6 @@ namespace XenAdminTests.DialogTests.LicenseManager.Comparers x.Verify(s => s.LicenseProductVersion, Times.Never()); y.Verify(s => s.LicenseProductVersion, Times.Never()); } - } - } } diff --git a/XenAdminTests/MainWindowWrapper/MockMainWindow.cs b/XenAdminTests/MainWindowWrapper/MockMainWindow.cs index d846a24c0..1def79c9c 100644 --- a/XenAdminTests/MainWindowWrapper/MockMainWindow.cs +++ b/XenAdminTests/MainWindowWrapper/MockMainWindow.cs @@ -43,14 +43,8 @@ namespace XenAdminTests { #region IMainWindow Members - public Form Form - { - get - { - return null; - } - } - + public Form Form => null; + public void Invoke(MethodInvoker method) { @@ -70,7 +64,7 @@ namespace XenAdminTests } - public void ShowPerConnectionWizard(IXenConnection connection, Form wizard) + public void ShowPerConnectionWizard(IXenConnection connection, Form wizard, Form parentForm = null) { } @@ -87,52 +81,49 @@ namespace XenAdminTests public void CloseActiveWizards(IXenConnection connection) { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } public void CloseActiveWizards(IXenObject xenObject) { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } public System.Collections.ObjectModel.Collection GetXenConnectionsCopy() { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } public void SaveServerList() { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } public bool DoSearch(string filename) { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } - public bool RunInAutomatedTestMode - { - get { throw new Exception("The method or operation is not implemented."); } - } + public bool RunInAutomatedTestMode => throw new NotImplementedException(); public void RemoveConnection(IXenConnection connection) { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } public void PutSelectedNodeIntoEditMode() { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } public void SwitchToTab(MainWindow.Tab tab) { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } public void TrySelectNewObjectInTree(Predicate tagMatch, bool selectNode, bool expandNode, bool ensureNodeVisible) { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } public bool MenuShortcutsEnabled diff --git a/XenAdminTests/PluginTests/MenuItemFeatureTests.cs b/XenAdminTests/PluginTests/MenuItemFeatureTests.cs index 7e1da7c95..f29058365 100644 --- a/XenAdminTests/PluginTests/MenuItemFeatureTests.cs +++ b/XenAdminTests/PluginTests/MenuItemFeatureTests.cs @@ -29,57 +29,30 @@ * SUCH DAMAGE. */ -using System; -using System.Collections.Generic; -using System.Text; +using System.Threading; using NUnit.Framework; using XenAdmin.Plugins; -using XenAdmin; -using System.IO; -using XenAdmin.Properties; -using System.Reflection; -using System.Diagnostics; -using XenAPI; namespace XenAdminTests.PluginTests { - [TestFixture, Category(TestCategories.UICategoryB)] - public class MenuItemFeatureTests + [TestFixture, Category(TestCategories.Unit)] + public class MenuItemFeatureTests : TestPluginLoader { - private PluginManager _pluginManager; - private TestPluginLoader _pluginLoader; + protected override string pluginName => "MenuItemFeatureTestPlugin"; - [TearDown] - public void TearDown() - { - _pluginLoader.Dispose(); - _pluginManager.Dispose(); - } - - [SetUp] - public void Setup() - { - _pluginManager = new PluginManager(); - } - - [Test] + [Test, Apartment(ApartmentState.STA)] public void TestLoadPlugin() { - _pluginLoader = new TestPluginLoader("MenuItemFeatureTestPlugin", _pluginManager); - _pluginLoader.Load(); - Assert.AreEqual(1, _pluginManager.Plugins.Count, "No plugins loaded."); - Assert.AreEqual("MenuItemFeatureTestPlugin", _pluginManager.Plugins[0].Name, "Plugin Name incorrect"); + Assert.AreEqual(pluginName, _pluginManager.Plugins[0].Name, "Plugin Name incorrect"); Assert.AreEqual("plugin-vendor", _pluginManager.Plugins[0].Organization, "Plugin Vendor incorrect"); Assert.IsTrue(_pluginManager.Enabled, "Plugin manager isn't enabled"); Assert.IsNull(_pluginManager.Plugins[0].Error, "Error loading plugin manager"); } - [Test] + [Test, Apartment(ApartmentState.STA)] public void TestFirstFeatureDetails() { - _pluginLoader = new TestPluginLoader("MenuItemFeatureTestPlugin", _pluginManager); - _pluginLoader.Load(); _pluginManager.Plugins[0].Enabled = true; Assert.AreEqual(1, _pluginManager.Plugins.Count, "plugin wasn't loaded"); @@ -94,16 +67,14 @@ namespace XenAdminTests.PluginTests Assert.AreEqual("the label", menuItemFeature.Label, "file_ShellTest1 plugin label incorrect."); Assert.AreEqual("the description", menuItemFeature.Description, "file_ShellTest1 plugin description incorrect."); Assert.AreEqual("the tooltip", menuItemFeature.Tooltip, "file_ShellTest1 plugin tooltip incorrect."); - Assert.AreEqual("MenuItemFeatureTestPlugin", menuItemFeature.PluginName, "file_ShellTest1 plugin name was incorrect."); + Assert.AreEqual(pluginName, menuItemFeature.PluginName, "file_ShellTest1 plugin name was incorrect."); Assert.IsNull(menuItemFeature.ParentFeature, "file_ShellTest1 shouldn't have parent feature"); Assert.IsInstanceOf(menuItemFeature.ShellCmd, "file_ShellTest1 should have shell cmd."); } - [Test] + [Test, Apartment(ApartmentState.STA)] public void TestHeadings() { - _pluginLoader = new TestPluginLoader("MenuItemFeatureTestPlugin", _pluginManager); - _pluginLoader.Load(); _pluginManager.Plugins[0].Enabled = true; Assert.AreEqual(PluginMenu.file, ((MenuItemFeature)_pluginManager.Plugins[0].Features[0]).Menu, "file_ShellTest1 plugin heading incorrect."); diff --git a/XenAdminTests/PluginTests/ParentMenuItemFeatureTests.cs b/XenAdminTests/PluginTests/ParentMenuItemFeatureTests.cs index 65133a220..7e2326e35 100644 --- a/XenAdminTests/PluginTests/ParentMenuItemFeatureTests.cs +++ b/XenAdminTests/PluginTests/ParentMenuItemFeatureTests.cs @@ -29,39 +29,20 @@ * SUCH DAMAGE. */ -using System; -using System.Collections.Generic; -using System.Text; +using System.Threading; using NUnit.Framework; using XenAdmin.Plugins; namespace XenAdminTests.PluginTests { - [TestFixture, Category(TestCategories.UICategoryB)] - public class ParentMenuItemFeatureTests + [TestFixture, Category(TestCategories.Unit)] + public class ParentMenuItemFeatureTests : TestPluginLoader { - private PluginManager _pluginManager; - private TestPluginLoader _pluginLoader; + protected override string pluginName => "ParentMenuItemFeatureTestPlugin"; - [TearDown] - public void TearDown() - { - _pluginLoader.Dispose(); - _pluginManager.Dispose(); - } - - [SetUp] - public void Setup() - { - _pluginManager = new PluginManager(); - } - - [Test] + [Test, Apartment(ApartmentState.STA)] public void TestLoadPlugin() { - _pluginLoader = new TestPluginLoader("ParentMenuItemFeatureTestPlugin", _pluginManager); - _pluginLoader.Load(); - Assert.AreEqual(1, _pluginManager.Plugins.Count, "No plugins loaded."); Assert.AreEqual(1, _pluginManager.Plugins[0].Features.Count, "No features only"); Assert.IsInstanceOf(_pluginManager.Plugins[0].Features[0], "ParentMenuItemFeature wasn't loaded"); diff --git a/XenAdminTests/PluginTests/ShellCmdTestBatchFile.cs b/XenAdminTests/PluginTests/ShellCmdTestBatchFile.cs deleted file mode 100644 index a9749cb22..000000000 --- a/XenAdminTests/PluginTests/ShellCmdTestBatchFile.cs +++ /dev/null @@ -1,83 +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.Text; -using System.IO; -using System.Threading; - -namespace XenAdminTests.PluginTests -{ - internal class ShellCmdTestBatchFile : IDisposable - { - public readonly string BatchFile; - public readonly string FileThatBatchFileWillWrite; - public readonly string Xml; - - public ShellCmdTestBatchFile() - { - string tempPath = Path.GetTempPath(); - FileThatBatchFileWillWrite = tempPath + "\\" + Guid.NewGuid(); - BatchFile = tempPath + "\\" + Guid.NewGuid() + ".bat"; - string batchFileContents = "echo %1 > \"" + FileThatBatchFileWillWrite + "\""; - - File.WriteAllText(BatchFile, batchFileContents); - - StringBuilder xml = new StringBuilder(""); - xml.AppendLine(""); - xml.AppendLine(""); - xml.AppendLine(""); - - Xml = xml.ToString(); - } - - #region IDisposable Members - - public void Dispose() - { - // small sleep here so file is definitely free to be deleted - Thread.Sleep(1000); - - if (File.Exists(BatchFile)) - { - File.Delete(BatchFile); - } - - if (File.Exists(FileThatBatchFileWillWrite)) - { - File.Delete(FileThatBatchFileWillWrite); - } - } - - #endregion - } -} diff --git a/XenAdminTests/PluginTests/ShellCmdTests.cs b/XenAdminTests/PluginTests/ShellCmdTests.cs index 677a4706e..366f2429d 100644 --- a/XenAdminTests/PluginTests/ShellCmdTests.cs +++ b/XenAdminTests/PluginTests/ShellCmdTests.cs @@ -30,51 +30,76 @@ */ using System; -using System.Collections.Generic; -using System.Text; using NUnit.Framework; using XenAdmin.Plugins; using System.IO; -using System.Diagnostics; -using XenAdmin; +using System.Text; using System.Threading; -using XenAPI; using XenAdmin.Commands; -using XenAdminTests.UnitTests; namespace XenAdminTests.PluginTests { - [TestFixture, Category(TestCategories.UICategoryB)] - public class ShellCmdTests + [TestFixture, Category(TestCategories.Unit)] + public class ShellCmdTests : TestPluginLoader { - private PluginManager _pluginManager; - private TestPluginLoader _pluginLoader; - private ShellCmdTestBatchFile _batchFile; + private string _batchFile; + private string _fileThatBatchFileWillWrite; - [TearDown] - public void TearDown() + protected override string pluginName => "ShellCmdTestPlugin"; + + [OneTimeSetUp] + public void TestFixtureSetup() { - _pluginLoader.Dispose(); - _pluginManager.Dispose(); - _batchFile.Dispose(); + string tempPath = Path.GetTempPath(); + _batchFile = Path.Combine(tempPath, $"{Guid.NewGuid().ToString()}.bat"); + _fileThatBatchFileWillWrite = Path.Combine(tempPath, Guid.NewGuid().ToString()); + + string batchFileContents = $"echo %1 > \"{_fileThatBatchFileWillWrite}\""; + File.WriteAllText(_batchFile, batchFileContents); + } + + [OneTimeTearDown] + public void TestFixtureTearDown() + { + try + { + File.Delete(_batchFile); + File.Delete(_fileThatBatchFileWillWrite); + } + catch + { + //ignore + } } [SetUp] - public void Setup() + public override void Setup() { _pluginManager = new PluginManager(); + + _allPluginsFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); + var pluginFolder = Path.Combine(_allPluginsFolder, "plugin-vendor", pluginName); + var pluginFile = Path.Combine(pluginFolder, $"{pluginName}.xcplugin.xml"); + + Directory.CreateDirectory(pluginFolder); + + var sb = new StringBuilder(""); + sb.AppendLine(""); + sb.AppendLine(""); + sb.AppendLine($""); + + File.WriteAllText(pluginFile, sb.ToString()); + + _pluginManager.LoadPlugins(_allPluginsFolder); } - [Test] + + + [Test, Apartment(ApartmentState.STA)] public void TestLoadPlugin() { - _batchFile = new ShellCmdTestBatchFile(); - - _pluginLoader = new TestPluginLoader("ShellCmdTestPlugin", _pluginManager, _batchFile.Xml); - _pluginLoader.Load(); - - Assert.IsTrue(File.Exists(_batchFile.BatchFile), "test batch file wasn't written"); - Assert.IsFalse(File.Exists(_batchFile.FileThatBatchFileWillWrite), "test file shouldn't exist"); + Assert.IsTrue(File.Exists(_batchFile), "test batch file wasn't written"); + Assert.IsFalse(File.Exists(_fileThatBatchFileWillWrite), "test file shouldn't exist"); Assert.AreEqual(1, _pluginManager.Plugins.Count, "No plugins loaded."); Assert.AreEqual("ShellCmdTestPlugin", _pluginManager.Plugins[0].Name, "Plugin Name incorrect"); @@ -86,16 +111,16 @@ namespace XenAdminTests.PluginTests MenuItemFeature menuItemFeature = (MenuItemFeature)_pluginManager.Plugins[0].Features[0]; Assert.IsNotNull(menuItemFeature.ShellCmd, "ShellCmd wasn't loaded"); - Assert.AreEqual(menuItemFeature.ShellCmd.Filename, _batchFile.BatchFile, "Batch file name wasn't read from plugin XML"); + Assert.AreEqual(menuItemFeature.ShellCmd.Filename, _batchFile, "Batch file name wasn't read from plugin XML"); // now execute the command and see if the test file is written by the batch file. - menuItemFeature.GetCommand(new MockMainWindow(), new SelectedItem[] { new SelectedItem((IXenObject)null) }).Execute(); + menuItemFeature.GetCommand(new MockMainWindow(), new[] {new SelectedItem(null)}).Execute(); int i = 0; bool completed = false; while (i < 300) { - if (File.Exists(_batchFile.FileThatBatchFileWillWrite)) + if (File.Exists(_fileThatBatchFileWillWrite)) { completed = true; break; diff --git a/XenAdminTests/PluginTests/TestPluginLoader.cs b/XenAdminTests/PluginTests/TestPluginLoader.cs index 33d622c2b..5482af5c1 100644 --- a/XenAdminTests/PluginTests/TestPluginLoader.cs +++ b/XenAdminTests/PluginTests/TestPluginLoader.cs @@ -30,73 +30,58 @@ */ using System; -using System.Collections.Generic; -using System.Text; using System.IO; -using System.Reflection; +using NUnit.Framework; using XenAdmin.Plugins; -using XenAdmin; + namespace XenAdminTests.PluginTests { - internal class TestPluginLoader : IDisposable + public abstract class TestPluginLoader { - private readonly string _name; - private readonly string _xml; - private readonly PluginManager _pluginManager; - private string _fullFolder; + protected string _allPluginsFolder; + protected PluginManager _pluginManager; - public TestPluginLoader(string name, PluginManager pluginManager) + protected abstract string pluginName { get; } + + [TearDown] + public void TearDown() { - _name = name; - _pluginManager = pluginManager; - } + _pluginManager.Dispose(); - public TestPluginLoader(string name, PluginManager pluginManager, string xml) - : this(name, pluginManager) - { - _xml = xml; - } - - public void Load() - { - string tempPath = Path.GetTempPath(); - string pluginsFolder = Guid.NewGuid().ToString(); - string vendorDir = "plugin-vendor"; - - _fullFolder = tempPath + "\\" + pluginsFolder + "\\" + vendorDir + "\\" + _name; - string fullFile = _fullFolder + "\\" + _name + ".xcplugin.xml"; - - Directory.CreateDirectory(_fullFolder); - - if (_xml == null) + try { - Assembly assembly = Assembly.GetExecutingAssembly(); - Stream s = assembly.GetManifestResourceStream("XenAdminTests.TestResources.PluginResources." + _name + ".xcplugin.xml"); - - byte[] bytes = new byte[s.Length]; - s.Read(bytes, 0, bytes.Length); - - File.WriteAllBytes(fullFile, bytes); + Directory.Delete(_allPluginsFolder, true); } - else + catch { - File.WriteAllText(fullFile, _xml); - } - - _pluginManager.LoadPlugins(tempPath + "\\" + pluginsFolder); - } - - #region IDisposable Members - - public void Dispose() - { - if (Directory.Exists(_fullFolder)) - { - Directory.Delete(_fullFolder, true); + //ignore } } - #endregion + [SetUp] + public virtual void Setup() + { + Assert.That(pluginName, Is.Not.Null.And.Not.Empty, "Either set pluginName or override this Setup"); + + _pluginManager = new PluginManager(); + + _allPluginsFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); + var pluginFolder = Path.Combine(_allPluginsFolder, "plugin-vendor", pluginName); + var pluginFile = Path.Combine(pluginFolder, $"{pluginName}.xcplugin.xml"); + + Directory.CreateDirectory(pluginFolder); + + var pluginSource = TestUtils.GetTestResource($"PluginResources\\{pluginName}.xcplugin.xml"); + + using (var fs = new FileStream(pluginSource, FileMode.Open)) + using (var sr = new StreamReader(fs)) + { + var content = sr.ReadToEnd(); + File.WriteAllText(pluginFile, content); + } + + _pluginManager.LoadPlugins(_allPluginsFolder); + } } } diff --git a/XenAdminTests/SearchTests/MatchTests.cs b/XenAdminTests/SearchTests/DatePropertyQueryTests.cs similarity index 97% rename from XenAdminTests/SearchTests/MatchTests.cs rename to XenAdminTests/SearchTests/DatePropertyQueryTests.cs index 5ff7abb3e..349c4d49e 100644 --- a/XenAdminTests/SearchTests/MatchTests.cs +++ b/XenAdminTests/SearchTests/DatePropertyQueryTests.cs @@ -30,15 +30,13 @@ */ using System; -using System.Collections.Generic; -using System.Text; using NUnit.Framework; using XenAdmin.XenSearch; -namespace XenAdminTests.SearchUnitTests +namespace XenAdminTests.UnitTests { - [TestFixture, Category(TestCategories.UICategoryB), Category(TestCategories.SmokeTest)] - class MatchTests_Date + [TestFixture, Category(TestCategories.Unit)] + public class DatePropertyQueryTests { [Test, Sequential] public void Today( diff --git a/XenAdminTests/StringExtensionsTests/EllipsiseStringTests.cs b/XenAdminTests/StringExtensionsTests/EllipsiseStringTests.cs index e002573e6..a5d896dae 100644 --- a/XenAdminTests/StringExtensionsTests/EllipsiseStringTests.cs +++ b/XenAdminTests/StringExtensionsTests/EllipsiseStringTests.cs @@ -29,61 +29,60 @@ * SUCH DAMAGE. */ -using System; using XenAdmin; using NUnit.Framework; namespace XenAdminTests.StringExtensionsTests { - public class EllipsiseStringTests : UnitTester_TestFixture + [TestFixture, Category(TestCategories.Unit)] + public class EllipsiseStringTests { [Test] - public void TestEllipsisingToShortenAString() + [TestCase(5, ExpectedResult = "th...")] + [TestCase(18, ExpectedResult = "this is a very ...")] + [TestCase(3, ExpectedResult = "...")] + public string TestEllipsisingToShortenAString(int size) { const string testString = "this is a very long string, well long-ish, actually it's of moderate length really"; - Assert.That(testString.Ellipsise(5), Is.EqualTo("th...")); - Assert.That(testString.Ellipsise(18), Is.EqualTo("this is a very ...")); - Assert.That(testString.Ellipsise(3), Is.EqualTo("...")); - + return testString.Ellipsise(size); } [Test] public void TestEllipsisingAShortEnoughString([Values(8, 9, 28, 10000)] int size) { const string testString = "short"; - Assert.That(testString.Ellipsise(size), Is.EqualTo(testString)); + Assert.AreEqual(testString.Ellipsise(size), testString); } [Test] public void TestEllipsisingANullString() { const string testString = null; - Assert.That(testString.Ellipsise(10), Is.EqualTo("")); + Assert.AreEqual(testString.Ellipsise(10), ""); } [Test] public void TestEllipsisingAnEmptyString() { - Assert.That("".Ellipsise(10), Is.EqualTo("")); + Assert.AreEqual("".Ellipsise(10), ""); } [Test] public void TestAppendingEllipsisingWithMaxLengthLessThanEllipse([Values(1,2)] int size) { - Assert.That("short".Ellipsise(size), Is.EqualTo(".")); + Assert.AreEqual("short".Ellipsise(size), "."); } [Test] - [TestCase("junk", "junk...")] - [TestCase("", "...")] - [TestCase(null, "...")] - [TestCase("junk...", "junk......")] - [TestCase("junk.", "junk....")] - public void AdditionOfEllipsis(string testString, string expectedResult) + [TestCase("junk", ExpectedResult = "junk...")] + [TestCase("", ExpectedResult = "...")] + [TestCase(null, ExpectedResult = "...")] + [TestCase("junk...", ExpectedResult = "junk......")] + [TestCase("junk.", ExpectedResult = "junk....")] + public string AdditionOfEllipsis(string testString) { - Assert.That(testString.AddEllipsis(), Is.EqualTo(expectedResult)); + return testString.AddEllipsis(); } - } } diff --git a/XenAdminTests/StringExtensionsTests/EscapeAmpersandsTests.cs b/XenAdminTests/StringExtensionsTests/EscapeAmpersandsTests.cs index 64c8850cf..45d240c46 100644 --- a/XenAdminTests/StringExtensionsTests/EscapeAmpersandsTests.cs +++ b/XenAdminTests/StringExtensionsTests/EscapeAmpersandsTests.cs @@ -34,37 +34,33 @@ using XenAdmin; namespace XenAdminTests.StringExtensionsTests { - public class EscapeAmpersandsTests : UnitTester_SingleConnectionTestFixture + [TestFixture, Category(TestCategories.Unit)] + public class EscapeAmpersandsTests { [Test] - [TestCase("&", "&&")] - [TestCase("bob", "bob")] - [TestCase("bob&", "bob&&")] - [TestCase("bob&&", "bob&&&&")] - [TestCase("bob&&&", "bob&&&&&&")] - [TestCase("bob&jones", "bob&&jones")] - [TestCase("bob&&jones", "bob&&&&jones")] - [TestCase("bob&&&jones", "bob&&&&&&jones")] - [TestCase("bob&jones&&", "bob&&jones&&&&")] - [TestCase("bob&&jones&", "bob&&&&jones&&")] - [TestCase("bob&&&jones&&&", "bob&&&&&&jones&&&&&&")] - [TestCase("&&bob&&jones&&", "&&&&bob&&&&jones&&&&")] - public void VerifyEscapingAmpersandsOnValidStrings(string toEscape, string expected) + [TestCase("", ExpectedResult = "")] + [TestCase("&", ExpectedResult = "&&")] + [TestCase("bob", ExpectedResult = "bob")] + [TestCase("bob&", ExpectedResult = "bob&&")] + [TestCase("bob&&", ExpectedResult = "bob&&&&")] + [TestCase("bob&&&", ExpectedResult = "bob&&&&&&")] + [TestCase("bob&jones", ExpectedResult = "bob&&jones")] + [TestCase("bob&&jones", ExpectedResult = "bob&&&&jones")] + [TestCase("bob&&&jones", ExpectedResult = "bob&&&&&&jones")] + [TestCase("bob&jones&&", ExpectedResult = "bob&&jones&&&&")] + [TestCase("bob&&jones&", ExpectedResult = "bob&&&&jones&&")] + [TestCase("bob&&&jones&&&", ExpectedResult = "bob&&&&&&jones&&&&&&")] + [TestCase("&&bob&&jones&&", ExpectedResult = "&&&&bob&&&&jones&&&&")] + public string EscapeAmpersandsTest(string toEscape) { - Assert.That(toEscape.EscapeAmpersands(), Is.EqualTo(expected)); + return toEscape.EscapeAmpersands(); } [Test] - public void VerifyEscapingAmpersandsOnNull() + public void EscapeAmpersandsOnNullTest() { - string testString = null; - Assert.That(testString.EscapeAmpersands(), Is.Null); - } - - [Test] - public void VerifyEscapingAmpersandsOnEmptyStrings() - { - Assert.That("".EscapeAmpersands(), Is.Empty); + string toEscape = null; + Assert.Null(toEscape.EscapeAmpersands()); } } } diff --git a/XenAdminTests/StringExtensionsTests/TruncateStringTest.cs b/XenAdminTests/StringExtensionsTests/TruncateStringTest.cs index 253e5c33f..6578b4ded 100644 --- a/XenAdminTests/StringExtensionsTests/TruncateStringTest.cs +++ b/XenAdminTests/StringExtensionsTests/TruncateStringTest.cs @@ -34,27 +34,31 @@ using XenAdmin; namespace XenAdminTests.StringExtensionsTests { - class TruncateStringTest : UnitTester_TestFixture + [Category(TestCategories.Unit)] + class TruncateStringTest { + [TestCase(0, ExpectedResult = "")] + [TestCase(1, ExpectedResult = "a")] + [TestCase(2, ExpectedResult = "ab")] + [TestCase(3, ExpectedResult = "abc")] + [TestCase(4, ExpectedResult = "abcd")] + [TestCase(5, ExpectedResult = "abcde")] [Test] - public void RunTest() + public string LatinCharactersTest(int size) { - string s1 = "abcde"; - string s2 = "短𠀁𪛕"; // The first character is 2 bytes, but the other two are 4-byte characters (UTF-16 surrogate pairs). + return "abcde".Truncate(size); + } - Assert.AreEqual("", s1.Truncate(0)); - Assert.AreEqual("a", s1.Truncate(1)); - Assert.AreEqual("ab", s1.Truncate(2)); - Assert.AreEqual("abc", s1.Truncate(3)); - Assert.AreEqual("abcd", s1.Truncate(4)); - Assert.AreEqual("abcde", s1.Truncate(5)); - - Assert.AreEqual("", s2.Truncate(0)); - Assert.AreEqual("短", s2.Truncate(1)); - Assert.AreEqual("短", s2.Truncate(2)); - Assert.AreEqual("短𠀁", s2.Truncate(3)); - Assert.AreEqual("短𠀁", s2.Truncate(4)); - Assert.AreEqual("短𠀁𪛕", s2.Truncate(5)); + [TestCase(0, ExpectedResult = "")] + [TestCase(1, ExpectedResult = "短")] + [TestCase(2, ExpectedResult = "短")] + [TestCase(3, ExpectedResult = "短𠀁")] + [TestCase(4, ExpectedResult = "短𠀁")] + [TestCase(5, ExpectedResult = "短𠀁𪛕")] + [Test] + public string Utf16SurrogatePairsTest(int size) + { + return "短𠀁𪛕".Truncate(size); // The first character is 2 bytes, but the other two are 4-byte characters (UTF-16 surrogate pairs). } } } diff --git a/XenAdminTests/TestCategories.cs b/XenAdminTests/TestCategories.cs index 6d2d19633..1ea4e305b 100644 --- a/XenAdminTests/TestCategories.cs +++ b/XenAdminTests/TestCategories.cs @@ -31,35 +31,26 @@ namespace XenAdminTests { - /// - /// These are the caegory names used for grouping sets of unit tests together - /// - /// XenRT has a knowledge of these categories - /// - /// NOTE: If you add a category you need to add it to the python code in XenRT - /// - public class TestCategories + public static class TestCategories { /// - /// First set of UI tests - /// - public const string UICategoryA = "UICategoryA"; - - /// - /// Second set of UI tests - /// - public const string UICategoryB = "UICategoryB"; - - /// - /// Unit tests + /// Unit tests that don't need any database (real or mocked) /// public const string Unit = "Unit"; /// - /// Smoke tests + /// Unit tests that need mocked databases /// - public const string SmokeTest = "SmokeTest"; + public const string MockedDbs = "MockedDbs"; + /// + /// Unit tests that need real databases + /// + public const string RealDbs = "RealDbs"; + + /// + /// Unit tests that require launching of MainWindow and real databases + /// + public const string MainWindow = "MainWindow"; } - } diff --git a/XenAdminTests/TestResources/searchresults.xml b/XenAdminTests/TestResources/searchresults.xml deleted file mode 100644 index 9e4afea68..000000000 --- a/XenAdminTests/TestResources/searchresults.xml +++ /dev/null @@ -1,2271 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/XenAdminTests/TestResources/small_vms.xml b/XenAdminTests/TestResources/small_vms.xml deleted file mode 100644 index b9102f5bc..000000000 --- a/XenAdminTests/TestResources/small_vms.xml +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - -
-
- -
- - - - - -
- - -
- - -
- - - -
- - - -
- - - - - - - - - - - - - - - -
- - - - - -
- - - - -
- -
- - - - - - -
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
-
- - -
- -
-
-
- -
- - - - - - - - - -
- -
- -
- - -
- -
- - - -
- - -
- - -
- -
-
-
-
-
-
- -
-
\ No newline at end of file diff --git a/XenAdminTests/TestResources/state.db b/XenAdminTests/TestResources/state.db deleted file mode 100644 index c7f86bcbf..000000000 --- a/XenAdminTests/TestResources/state.db +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - - - - -
- - - - - - - - - - -
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - -
- - -
- -
-
- - - -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- - - - -
- - - -
- -
- - - - - - - - - - - - - -
- -
-
- -
- -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - -
-
diff --git a/XenAdminTests/TestResources/state1.treeview.orgview.xml b/XenAdminTests/TestResources/state1.treeview.orgview.xml deleted file mode 100644 index b78db773e..000000000 --- a/XenAdminTests/TestResources/state1.treeview.orgview.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/XenAdminTests/TestResources/state1.treeview.serverview.xml b/XenAdminTests/TestResources/state1.treeview.serverview.xml deleted file mode 100644 index 8823c9dfb..000000000 --- a/XenAdminTests/TestResources/state1.treeview.serverview.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/XenAdminTests/TestResources/state1.xml b/XenAdminTests/TestResources/state1.xml deleted file mode 100644 index df3f8b579..000000000 --- a/XenAdminTests/TestResources/state1.xml +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- - - - - - - -
- - - -
- -
- -
- - - - - - - - - - - - - - - - - -
- -
-
-
-
-
-
-
- - - - - - - - - - - - -
- -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- -
-
- - - - -
- -
- - - - - - - - - - - -
- - - - - -
- - - - - - - - - - - - - - - -
- -
- diff --git a/XenAdminTests/TestResources/state2.xml b/XenAdminTests/TestResources/state2.xml deleted file mode 100644 index 60862327d..000000000 --- a/XenAdminTests/TestResources/state2.xml +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - - - - - - - - - - -
- - - - - - - - -
- -
- -
- - - - - - - -
- - - -
- -
- -
- - - - - - - - - - - -
- -
-
-
-
-
-
-
- - - - - - - - - - - - - - -
- -
-
- - - - -
- - - - - - - - - - - - - - - -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - -
- - -
- -
- - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- - - - - - - - - - - - - - - -
- -
- diff --git a/XenAdminTests/TestResources/state3.xml b/XenAdminTests/TestResources/state3.xml deleted file mode 100644 index cb195b9c1..000000000 --- a/XenAdminTests/TestResources/state3.xml +++ /dev/null @@ -1,338 +0,0 @@ - - - - - - - - - - - - - - - -
-
- - - - -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
-
-
-
- -
- -
- - - - - - - - - - - - - - - - -
- -
- - -
- -
-
- - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- - - - - - -
- - - - - -
- -
- - - - - - - - - - - - - - -
- -
-
- -
- -
- - - - - - - - - - -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - -
-
- - diff --git a/XenAdminTests/TestResources/state4.xml b/XenAdminTests/TestResources/state4.xml deleted file mode 100644 index a6b4a2578..000000000 --- a/XenAdminTests/TestResources/state4.xml +++ /dev/null @@ -1,321 +0,0 @@ - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -
- -
- -
- - - - - - - -
- - - -
- -
- -
- - - - - - - - - - - - - - - - - -
- -
-
-
-
-
-
-
- - - - - - - - - - - - - - -
- -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- -
-
- - - - -
- -
- - - - - - - - - - - - -
- - - - - -
- - - - - - - - - - - - - - - -
- -
- - - diff --git a/XenAdminTests/TestResources/tampa_poolofone_40.xml b/XenAdminTests/TestResources/tampa_poolofone_40.xml deleted file mode 100644 index 1626c0276..000000000 --- a/XenAdminTests/TestResources/tampa_poolofone_40.xml +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/XenAdminTests/TestResources/xapidb_app.xml b/XenAdminTests/TestResources/xapidb_app.xml deleted file mode 100644 index c6bbd8272..000000000 --- a/XenAdminTests/TestResources/xapidb_app.xml +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/XenAdminTests/MainWindowWrapper/TestUtils.cs b/XenAdminTests/TestUtils.cs similarity index 94% rename from XenAdminTests/MainWindowWrapper/TestUtils.cs rename to XenAdminTests/TestUtils.cs index 524a29064..71038fcef 100644 --- a/XenAdminTests/MainWindowWrapper/TestUtils.cs +++ b/XenAdminTests/TestUtils.cs @@ -30,6 +30,7 @@ */ using System; +using System.IO; using System.Reflection; using System.Windows.Forms; using NUnit.Framework; @@ -213,5 +214,12 @@ namespace XenAdminTests { return item.GetType().GetMethod(name, BindingFlags.Instance | BindingFlags.NonPublic, null, types, null).Invoke(item, parameters); } + + + public static string GetTestResource(string name) + { + var assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + return Path.Combine(assemblyFolder, "TestResources", name); + } } } diff --git a/XenAdminTests/TreeTests/FlickerFreeTreeViewTests.cs b/XenAdminTests/TreeTests/FlickerFreeTreeViewTests.cs index e574be7bd..b0a8f1512 100644 --- a/XenAdminTests/TreeTests/FlickerFreeTreeViewTests.cs +++ b/XenAdminTests/TreeTests/FlickerFreeTreeViewTests.cs @@ -30,19 +30,15 @@ */ using System; -using System.Collections.Generic; -using System.Text; using NUnit.Framework; using XenAdmin.Controls; using XenAdmin.Model; -using XenAPI; using XenAdmin; -using XenAdmin.XenSearch; using XenAdmin.Network; namespace XenAdminTests.TreeTests { - [TestFixture, Category(TestCategories.UICategoryB)] + [TestFixture, Category(TestCategories.Unit)] public class FlickerFreeTreeViewTests { private FlickerFreeTreeView _tv; @@ -53,13 +49,18 @@ namespace XenAdminTests.TreeTests _tv = new FlickerFreeTreeView(); // ensure handle is created. Some tests fail if you don't do this. - IntPtr h = _tv.Handle; + Assert.NotNull(_tv.Handle); + } + + [TearDown] + public void TearDown() + { + if (_tv != null) + _tv.Dispose(); } - /// - /// Tests that the parent node of the selected nodes get selected when the selected nodes' tags disappear. - /// [Test] + [Description("Tests that the parent node of the selected nodes get selected when the selected nodes' tags disappear.")] public void TestParentNodeSelectedWhenSelectedNodeTagsChange() { // populate the tree-view with some folders @@ -76,7 +77,7 @@ namespace XenAdminTests.TreeTests folders.Nodes.Add(new VirtualTreeNode("folder2") { Tag = new Folder(null, "folder2") }); // set the 2 folders to be the selected nodes. - _tv.SelectedNodes.SetContents(new VirtualTreeNode[] { folders.Nodes[0], folders.Nodes[1] }); + _tv.SelectedNodes.SetContents(new [] { folders.Nodes[0], folders.Nodes[1] }); // now build up a new nodes tree VirtualTreeNode newRootNode = new VirtualTreeNode(Branding.BRAND_CONSOLE); @@ -102,7 +103,7 @@ namespace XenAdminTests.TreeTests { // merge the new node tree in. _tv.BeginUpdate(); - _tv.UpdateRootNodes(new VirtualTreeNode[] { newRootNode }); + _tv.UpdateRootNodes(new [] { newRootNode }); _tv.EndUpdate(); Assert.GreaterOrEqual(count, 1, "SelectionsChanged should fire."); } @@ -120,7 +121,7 @@ namespace XenAdminTests.TreeTests root.Nodes.Add(new VirtualTreeNode("2") { Tag = new Folder(null, "2") }); _tv.BeginUpdate(); - _tv.UpdateRootNodes(new VirtualTreeNode[] { root }); + _tv.UpdateRootNodes(new [] { root }); _tv.EndUpdate(); _tv.SelectedNode = _tv.Nodes[0].Nodes[0]; @@ -129,7 +130,7 @@ namespace XenAdminTests.TreeTests root.Nodes.Add(new VirtualTreeNode("2") { Tag = new Folder(null, "2") }); _tv.BeginUpdate(); - _tv.UpdateRootNodes(new VirtualTreeNode[] { root }); + _tv.UpdateRootNodes(new [] { root }); _tv.EndUpdate(); Assert.AreEqual("1", _tv.SelectedNode.Text); @@ -143,7 +144,7 @@ namespace XenAdminTests.TreeTests root.Nodes.Add(new VirtualTreeNode("2") { Tag = new Folder(null, "2") }); _tv.BeginUpdate(); - _tv.UpdateRootNodes(new VirtualTreeNode[] { root }); + _tv.UpdateRootNodes(new [] { root }); _tv.EndUpdate(); _tv.SelectedNode = _tv.Nodes[0].Nodes[0]; @@ -152,7 +153,7 @@ namespace XenAdminTests.TreeTests root.Nodes.Add(new VirtualTreeNode("1") { Tag = new Folder(null, "1") }); _tv.BeginUpdate(); - _tv.UpdateRootNodes(new VirtualTreeNode[] { root }); + _tv.UpdateRootNodes(new [] { root }); _tv.EndUpdate(); Assert.AreEqual(1, _tv.SelectedNodes.Count, "Node didn't stay selected"); @@ -170,9 +171,9 @@ namespace XenAdminTests.TreeTests root.Nodes.Add(new VirtualTreeNode("4") { Tag = new Folder(null, "4") }); _tv.BeginUpdate(); - _tv.UpdateRootNodes(new VirtualTreeNode[] { root }); + _tv.UpdateRootNodes(new [] { root }); _tv.EndUpdate(); - _tv.SelectedNodes.SetContents(new VirtualTreeNode[] { root.Nodes[0], root.Nodes[1] }); + _tv.SelectedNodes.SetContents(new [] { root.Nodes[0], root.Nodes[1] }); root = new VirtualTreeNode("root"); root.Nodes.Add(new VirtualTreeNode("4") { Tag = new Folder(null, "4") }); @@ -181,7 +182,7 @@ namespace XenAdminTests.TreeTests root.Nodes.Add(new VirtualTreeNode("1") { Tag = new Folder(null, "1") }); _tv.BeginUpdate(); - _tv.UpdateRootNodes(new VirtualTreeNode[] { root }); + _tv.UpdateRootNodes(new [] { root }); _tv.EndUpdate(); Assert.AreEqual(2, _tv.SelectedNodes.Count, "Nodes didn't stay selected"); @@ -204,15 +205,15 @@ namespace XenAdminTests.TreeTests root.Nodes.Add(new VirtualTreeNode("3") { Tag = new Folder(null, "3") { Connection = con3 } }); _tv.BeginUpdate(); - _tv.UpdateRootNodes(new VirtualTreeNode[] { root }); + _tv.UpdateRootNodes(new [] { root }); _tv.EndUpdate(); - _tv.SelectedNodes.SetContents(new VirtualTreeNode[] { root.Nodes[0], root.Nodes[1] }); + _tv.SelectedNodes.SetContents(new [] { root.Nodes[0], root.Nodes[1] }); root = new VirtualTreeNode("root"); root.Nodes.Add(new VirtualTreeNode("3") { Tag = new Folder(null, "3") { Connection = con3 } }); _tv.BeginUpdate(); - _tv.UpdateRootNodes(new VirtualTreeNode[] { root }); + _tv.UpdateRootNodes(new [] { root }); _tv.EndUpdate(); Assert.AreEqual(1, _tv.SelectedNodes.Count, "Nodes didn't stay selected"); diff --git a/XenAdminTests/TreeTests/MultiSelectTreeViewTests.cs b/XenAdminTests/TreeTests/MultiSelectTreeViewTests.cs index 5aeec78d1..2a12f097d 100644 --- a/XenAdminTests/TreeTests/MultiSelectTreeViewTests.cs +++ b/XenAdminTests/TreeTests/MultiSelectTreeViewTests.cs @@ -30,15 +30,13 @@ */ using System; -using System.Collections.Generic; -using System.Text; using NUnit.Framework; using XenAdmin.Controls; -using System.Windows.Forms; + namespace XenAdminTests.TreeTests { - [TestFixture, Category(TestCategories.UICategoryB)] + [TestFixture, Category(TestCategories.Unit)] public class MultiSelectTreeViewTests { private MultiSelectTreeView _tv; @@ -49,7 +47,14 @@ namespace XenAdminTests.TreeTests _tv = new MultiSelectTreeView(); // ensure handle is created. Some tests fail if you don't do this. - IntPtr h = _tv.Handle; + Assert.NotNull(_tv.Handle); + } + + [TearDown] + public void TearDown() + { + if (_tv != null) + _tv.Dispose(); } /// @@ -72,14 +77,14 @@ namespace XenAdminTests.TreeTests { _tv.Nodes.Add(new MultiSelectTreeNode("0")); _tv.Nodes.Add(new MultiSelectTreeNode("1")); - _tv.SelectedNodes.SetContents(new MultiSelectTreeNode[] { _tv.Nodes[0], _tv.Nodes[1] }); + _tv.SelectedNodes.SetContents(new [] { _tv.Nodes[0], _tv.Nodes[1] }); Assert.AreEqual(1, count, "SelectionsChanged should only have fired once"); _tv.Nodes.Add(new MultiSelectTreeNode("2")); _tv.Nodes.Add(new MultiSelectTreeNode("3")); - _tv.SelectedNodes.SetContents(new MultiSelectTreeNode[] { _tv.Nodes[2], _tv.Nodes[3] }); + _tv.SelectedNodes.SetContents(new [] { _tv.Nodes[2], _tv.Nodes[3] }); Assert.AreEqual(2, count, "SelectionsChanged should only have fired twice"); } finally diff --git a/XenAdminTests/TreeTests/VirtualTreeViewTests.cs b/XenAdminTests/TreeTests/VirtualTreeViewTests.cs index a3d121bc5..37a3b9e1c 100644 --- a/XenAdminTests/TreeTests/VirtualTreeViewTests.cs +++ b/XenAdminTests/TreeTests/VirtualTreeViewTests.cs @@ -32,12 +32,11 @@ using System.Windows.Forms; using NUnit.Framework; using XenAdmin.Controls; -using System; using System.Drawing; namespace XenAdminTests.TreeTests { - [TestFixture, Category(TestCategories.UICategoryB)] + [TestFixture, Category(TestCategories.Unit)] public class VirtualTreeViewTests { private VirtualTreeView _vtv; @@ -56,7 +55,14 @@ namespace XenAdminTests.TreeTests _tv = _vtv; // ensure handle is created. Some tests fail if you don't do this. - IntPtr h = _vtv.Handle; + Assert.NotNull(_vtv.Handle); + } + + [TearDown] + public void TearDown() + { + if (_vtv != null) + _vtv.Dispose(); } [Test] @@ -248,7 +254,7 @@ namespace XenAdminTests.TreeTests VirtualTreeNode newRoot = new VirtualTreeNode("newRoot"); newRoot.Nodes.Add(new VirtualTreeNode("newChild")); - _vtv.UpdateRootNodes(new VirtualTreeNode[] { newRoot }); + _vtv.UpdateRootNodes(new [] { newRoot }); Assert.AreEqual(1, _vtv.Nodes.Count, "Virtual nodes weren't correctly updated."); Assert.AreEqual(1, _vtv.Nodes[0].Nodes.Count, "Virtual nodes weren't correctly updated."); @@ -277,7 +283,7 @@ namespace XenAdminTests.TreeTests newRoot.BackColor = Color.Beige; newRoot.ForeColor = Color.Bisque; - _vtv.UpdateRootNodes(new VirtualTreeNode[] { newRoot }); + _vtv.UpdateRootNodes(new [] { newRoot }); //Assert.IsNotNull(_vtv.Nodes[0].ImageIndexFetcher, "ImageIndexFetcher"); Assert.AreEqual(3, _vtv.Nodes[0].ImageIndex); @@ -318,7 +324,7 @@ namespace XenAdminTests.TreeTests newRoot.Nodes.Add(new VirtualTreeNode("newChild")); newRoot.Nodes[0].Nodes.Add(new VirtualTreeNode("newGrandChild")); - _vtv.UpdateRootNodes(new VirtualTreeNode[] { newRoot }); + _vtv.UpdateRootNodes(new [] { newRoot }); Assert.AreEqual(1, _vtv.Nodes.Count); Assert.AreEqual(1, _vtv.Nodes[0].Nodes.Count); @@ -340,7 +346,7 @@ namespace XenAdminTests.TreeTests _vtv.Nodes[0].Nodes.Add(new VirtualTreeNode("child2")); _vtv.Nodes[0].Nodes.Add(new VirtualTreeNode("child3")); - _vtv.UpdateRootNodes(new VirtualTreeNode[] { new VirtualTreeNode("newRoot") }); + _vtv.UpdateRootNodes(new [] { new VirtualTreeNode("newRoot") }); Assert.AreEqual(0, _vtv.Nodes[0].Nodes.Count, "The last virtual child node wasn't removed"); Assert.AreEqual(0, _tv.Nodes[0].Nodes.Count, "The last real child node wasn't removed"); @@ -365,7 +371,7 @@ namespace XenAdminTests.TreeTests rootNode.Nodes[0].Nodes.Add(new VirtualTreeNode("grandchild")); rootNode.Nodes[0].Nodes[0].Nodes.Add(new VirtualTreeNode("grandgrandchild")); - _vtv.UpdateRootNodes(new VirtualTreeNode[] { rootNode }); + _vtv.UpdateRootNodes(new [] { rootNode }); _vtv.EndUpdate(); // expand all nodes so that all DummyNodes are replaced. @@ -375,7 +381,7 @@ namespace XenAdminTests.TreeTests VirtualTreeNode rootNode2 = new VirtualTreeNode("root2"); rootNode2.Nodes.Add(new VirtualTreeNode("child2")); rootNode2.Nodes[0].Nodes.Add(new VirtualTreeNode("grandchild2")); - _vtv.UpdateRootNodes(new VirtualTreeNode[] { rootNode2 }); + _vtv.UpdateRootNodes(new [] { rootNode2 }); _vtv.EndUpdate(); // collapse all so the next merge doesn't replace DummyNodes. @@ -387,7 +393,7 @@ namespace XenAdminTests.TreeTests rootNode3.Nodes[0].Nodes.Add(new VirtualTreeNode("grandchild3")); rootNode3.Nodes[0].Nodes[0].Nodes.Add(new VirtualTreeNode("grandgrandchild3")); - _vtv.UpdateRootNodes(new VirtualTreeNode[] { rootNode3 }); + _vtv.UpdateRootNodes(new [] { rootNode3 }); _vtv.EndUpdate(); _vtv.Nodes[0].Expand(); _vtv.Nodes[0].Nodes[0].Expand(); diff --git a/XenAdminTests/UnitTests/AlertTests/DuplicateIqnAlertTests.cs b/XenAdminTests/UnitTests/AlertTests/DuplicateIqnAlertTests.cs index 578a5df48..1990b4d3e 100644 --- a/XenAdminTests/UnitTests/AlertTests/DuplicateIqnAlertTests.cs +++ b/XenAdminTests/UnitTests/AlertTests/DuplicateIqnAlertTests.cs @@ -32,7 +32,6 @@ using System.Collections.Generic; using NUnit.Framework; using XenAdmin.Alerts; -using XenAdminTests.UnitTests.UnitTestHelper; using XenAPI; namespace XenAdminTests.UnitTests.AlertTests @@ -52,16 +51,15 @@ namespace XenAdminTests.UnitTests.AlertTests [Test] public void VerifyStoredDataWithDefaultConstructor() { - IUnitTestVerifier validator = new VerifyGetters(new DuplicateIqnAlert(new Host(), new Dictionary())); - - validator.Verify(new ClassData - { - FixLinkText = "Edit IQN", - HelpID = "DuplicateIqnAlert", - HelpLinkText = "Help", - Title = "iSCSI-IQN Exists", - Priority = "Priority3" - }); + ClassVerifiers.VerifyGetters(new DuplicateIqnAlert(new Host(), new Dictionary()), + new ClassData + { + FixLinkText = "Edit IQN", + HelpID = "DuplicateIqnAlert", + HelpLinkText = "Help", + Title = "iSCSI-IQN Exists", + Priority = "Priority3" + }); } } } \ No newline at end of file diff --git a/XenAdminTests/UnitTests/AlertTests/GuiOldAlertTest.cs b/XenAdminTests/UnitTests/AlertTests/GuiOldAlertTest.cs index bb74023d3..f2b390df8 100644 --- a/XenAdminTests/UnitTests/AlertTests/GuiOldAlertTest.cs +++ b/XenAdminTests/UnitTests/AlertTests/GuiOldAlertTest.cs @@ -31,7 +31,7 @@ using NUnit.Framework; using XenAdmin.Alerts; -using XenAdminTests.UnitTests.UnitTestHelper; + namespace XenAdminTests.UnitTests.AlertTests { @@ -41,18 +41,17 @@ namespace XenAdminTests.UnitTests.AlertTests [Test] public void VerifyStoredDataWithDefaultConstructor() { - IUnitTestVerifier validator = new VerifyGetters(new GuiOldAlert()); - - validator.Verify(new AlertClassUnitTestData - { - AppliesTo = XenAdmin.Branding.BRAND_CONSOLE, - Description = "There is a newer version of " + XenAdmin.Branding.BRAND_CONSOLE + " available. Please contact your support representative.", - FixLinkText = "Go to Web Page", - HelpID = "GuiOldAlert", - HelpLinkText = "Help", - Title = "Newer " + XenAdmin.Branding.BRAND_CONSOLE + " Available", - Priority = "Priority5" - }); + ClassVerifiers.VerifyGetters(new GuiOldAlert(), + new AlertClassUnitTestData + { + AppliesTo = XenAdmin.Branding.BRAND_CONSOLE, + Description = "There is a newer version of " + XenAdmin.Branding.BRAND_CONSOLE + " available. Please contact your support representative.", + FixLinkText = "Go to Web Page", + HelpID = "GuiOldAlert", + HelpLinkText = "Help", + Title = "Newer " + XenAdmin.Branding.BRAND_CONSOLE + " Available", + Priority = "Priority5" + }); } } } \ No newline at end of file diff --git a/XenAdminTests/UnitTests/AlertTests/MissingIqnAlertTests.cs b/XenAdminTests/UnitTests/AlertTests/MissingIqnAlertTests.cs index 8fef4c1a1..c9ab30657 100644 --- a/XenAdminTests/UnitTests/AlertTests/MissingIqnAlertTests.cs +++ b/XenAdminTests/UnitTests/AlertTests/MissingIqnAlertTests.cs @@ -31,7 +31,6 @@ using NUnit.Framework; using XenAdmin.Alerts; -using XenAdminTests.UnitTests.UnitTestHelper; using XenAPI; namespace XenAdminTests.UnitTests.AlertTests @@ -42,18 +41,17 @@ namespace XenAdminTests.UnitTests.AlertTests [Test] public void VerifyStoredDataWithDefaultConstructor() { - IUnitTestVerifier validator = new VerifyGetters(new MissingIqnAlert(new Host())); - - validator.Verify(new AlertClassUnitTestData - { - AppliesTo = "", - FixLinkText = "Edit IQN", - HelpID = "MissingIqnAlert", - Description = " has no iSCSI-IQN. This could cause problems with iSCSI storage on this network.", - HelpLinkText = "Help", - Title = "iSCSI-IQN Missing", - Priority = "Priority3" - }); + ClassVerifiers.VerifyGetters(new MissingIqnAlert(new Host()), + new AlertClassUnitTestData + { + AppliesTo = "", + FixLinkText = "Edit IQN", + HelpID = "MissingIqnAlert", + Description = " has no iSCSI-IQN. This could cause problems with iSCSI storage on this network.", + HelpLinkText = "Help", + Title = "iSCSI-IQN Missing", + Priority = "Priority3" + }); } } } \ No newline at end of file diff --git a/XenAdminTests/UnitTests/AlertTests/XenCenterUpdateAlertTests.cs b/XenAdminTests/UnitTests/AlertTests/XenCenterUpdateAlertTests.cs index f37cba6f7..f8dbddd32 100644 --- a/XenAdminTests/UnitTests/AlertTests/XenCenterUpdateAlertTests.cs +++ b/XenAdminTests/UnitTests/AlertTests/XenCenterUpdateAlertTests.cs @@ -33,7 +33,7 @@ using System; using NUnit.Framework; using XenAdmin.Alerts; using XenAdmin.Core; -using XenAdminTests.UnitTests.UnitTestHelper; + namespace XenAdminTests.UnitTests.AlertTests { @@ -43,18 +43,21 @@ namespace XenAdminTests.UnitTests.AlertTests [Test] public void VerifyStoredDataWithDefaultConstructor() { - IUnitTestVerifier validator = new VerifyGetters(new XenCenterUpdateAlert(new XenCenterVersion("6.0.2", "xc", true, false, "http://url", new DateTime(2011, 12, 09).ToString()))); + var version = new XenCenterVersion("6.0.2", "xc", true, false, "http://url", + new DateTime(2011, 12, 09).ToString()); - validator.Verify(new AlertClassUnitTestData - { - AppliesTo = XenAdmin.Branding.BRAND_CONSOLE, - FixLinkText = "Go to Web Page", - HelpID = "XenCenterUpdateAlert", - Description = "xc is now available. Download the new version from the " + XenAdmin.Branding.COMPANY_NAME_SHORT + " website.", - HelpLinkText = "Help", - Title = "xc is now available", - Priority = "Priority5" - }); + ClassVerifiers.VerifyGetters(new XenCenterUpdateAlert(version), + new AlertClassUnitTestData + { + AppliesTo = XenAdmin.Branding.BRAND_CONSOLE, + FixLinkText = "Go to Web Page", + HelpID = "XenCenterUpdateAlert", + Description = "xc is now available. Download the new version from the " + + XenAdmin.Branding.COMPANY_NAME_SHORT + " website.", + HelpLinkText = "Help", + Title = "xc is now available", + Priority = "Priority5" + }); } } } \ No newline at end of file diff --git a/XenAdminTests/WizardTests/ExportWizard/ApplianceExistsCheckTests.cs b/XenAdminTests/UnitTests/ApplianceExistsCheckTests.cs similarity index 100% rename from XenAdminTests/WizardTests/ExportWizard/ApplianceExistsCheckTests.cs rename to XenAdminTests/UnitTests/ApplianceExistsCheckTests.cs diff --git a/XenAdminTests/MiscTests/BasicXMLResolverTests.cs b/XenAdminTests/UnitTests/BasicXMLResolverTests.cs similarity index 72% rename from XenAdminTests/MiscTests/BasicXMLResolverTests.cs rename to XenAdminTests/UnitTests/BasicXMLResolverTests.cs index f39984c76..e256ea082 100644 --- a/XenAdminTests/MiscTests/BasicXMLResolverTests.cs +++ b/XenAdminTests/UnitTests/BasicXMLResolverTests.cs @@ -35,20 +35,27 @@ using System.Xml; using XenCenterLib; using NUnit.Framework; -namespace XenAdminTests.MiscTests +namespace XenAdminTests.UnitTests { - [TestFixture, Category(TestCategories.UICategoryB)] - class BasicXMLResolverTests + [TestFixture, Category(TestCategories.Unit)] + public class BasicXMLResolverTests { [Test] public void TestEntityGetReturnsEmptyMemoryStream() { - XmlResolver basic = new BasicXMLResolver(); - object returnedObject = basic.GetEntity(new Uri("http://www.nonesense.com"), "role", typeof(BasicXMLResolver)); - Assert.AreEqual(typeof(MemoryStream), returnedObject.GetType()); - MemoryStream rms = returnedObject as MemoryStream; - Assert.AreEqual(0,rms.Length); - rms.Close(); + MemoryStream rms = null; + + try + { + XmlResolver basic = new BasicXMLResolver(); + rms = basic.GetEntity(new Uri("http://www.nonsense.com"), "role", typeof(BasicXMLResolver)) as MemoryStream; + Assert.IsNotNull(rms); + Assert.AreEqual(0, rms.Length); + } + finally + { + rms?.Close(); + } } } } diff --git a/XenAdminTests/UnitTests/Diagnostics/HotFixFactoryTests.cs b/XenAdminTests/UnitTests/Diagnostics/HotFixFactoryTests.cs index 621a756f6..850fc0d57 100644 --- a/XenAdminTests/UnitTests/Diagnostics/HotFixFactoryTests.cs +++ b/XenAdminTests/UnitTests/Diagnostics/HotFixFactoryTests.cs @@ -68,7 +68,7 @@ namespace XenAdminTests.UnitTests.Diagnostics [Test] public void UUIDLookedUpFromEnum() { - Assert.AreEqual("149be566-421d-4661-bfca-e70970f86a36", + Assert.AreEqual("5b345963-ddcf-4c27-997f-3b46a79bcb07", factory.Hotfix(HotfixFactory.HotfixableServerVersion.Dundee).UUID, "Dundee UUID lookup from enum"); diff --git a/XenAdminTests/UnitTests/EmailAddressValidatorTests.cs b/XenAdminTests/UnitTests/EmailAddressValidatorTests.cs new file mode 100644 index 000000000..d3028d9b6 --- /dev/null +++ b/XenAdminTests/UnitTests/EmailAddressValidatorTests.cs @@ -0,0 +1,61 @@ +/* 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 NUnit.Framework; +using XenCenterLib; + +namespace XenAdminTests.UnitTests +{ + [TestFixture, Category(TestCategories.Unit)] + public class EmailAddressValidatorTests + { + private readonly EmailAddressValidator validator = new EmailAddressValidator(); + + [Test] + [TestCase("bob@bob", ExpectedResult = true)] + [TestCase("me@you.com", ExpectedResult = true)] + [TestCase("them@127.0.0.1", ExpectedResult = true)] + [TestCase("bob@", ExpectedResult = false)] + [TestCase("me@ you.com", ExpectedResult = false)] + [TestCase("them@127.0.0.1()", ExpectedResult = false)] + [TestCase(" hi@there.com", ExpectedResult = false)] + [TestCase("hi@there.com ", ExpectedResult = false)] + [TestCase("bread", ExpectedResult = false)] + [TestCase("dan(ny@what.com", ExpectedResult = false)] + [TestCase("", ExpectedResult = false)] + [TestCase(null, ExpectedResult = false)] + [TestCase(" ", ExpectedResult = false)] + public bool TestAcceptableEmailAddresses(string address) + { + return validator.IsValid(address); + } + } +} diff --git a/XenAdminTests/UnitTests/ExceptionSerializationTest.cs b/XenAdminTests/UnitTests/ExceptionSerializationTest.cs index a12c934b1..4d7fe5560 100644 --- a/XenAdminTests/UnitTests/ExceptionSerializationTest.cs +++ b/XenAdminTests/UnitTests/ExceptionSerializationTest.cs @@ -1,9 +1,7 @@ using System; using System.Collections.Generic; using System.IO; -using System.Linq; using System.Runtime.Serialization.Formatters.Binary; -using System.Text; using NUnit.Framework; using XenAdmin.Core; using XenAPI; diff --git a/XenAdminTests/UnitTests/HealthCheckAnalysisProgressTest.cs b/XenAdminTests/UnitTests/HealthCheckAnalysisProgressTest.cs index 543b26ca0..e0fbdc6cb 100644 --- a/XenAdminTests/UnitTests/HealthCheckAnalysisProgressTest.cs +++ b/XenAdminTests/UnitTests/HealthCheckAnalysisProgressTest.cs @@ -29,8 +29,6 @@ * SUCH DAMAGE. */ -using System; -using System.Collections.Generic; using NUnit.Framework; using XenAdmin.Actions; @@ -39,40 +37,33 @@ namespace XenAdminTests.UnitTests [TestFixture, Category(TestCategories.Unit)] public class HealthCheckAnalysisProgressTest { - private Dictionary expectedResults = new Dictionary() - { - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 0 }", 0 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 10 }", 10 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 100 }", 100 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 100.0 }", 100 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 0.01 }", 0.01 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 99.99 }", 99.99 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 10, \"131-435\" : 12 }", 10 }, - { "{ \"30253b07-138a-1b17-80a1\" : 12, \"30253b07-138a-1b17-80a1-117317ded3ca\" : 10 }", 10 }, - { "{ 30253b07-138a-1b17-80a1-117317ded3ca : 10 }", 10 }, - { "{ 30253b07-138a-1b17-80a1-117317ded3ca : 10, 2345: 25 }", 10 }, - { "{ 2345: 25, 30253b07-138a-1b17-80a1-117317ded3ca : 10 }", 10 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : not a number }", -1 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : \"not a number\" }", -1 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : \"10\" }", 10 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : \"-10\" }", -1}, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : -0.56 }", -1 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : -10 }", -1 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : -100 }", -1 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 123 }", -1 }, - { "{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 123.89 }", -1 }, - { string.Empty, -1 }, - { " ", -1 }, - { "{ }", -1 } - }; - [Test] - public void Run() + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 0 }", ExpectedResult = 0)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 10 }", ExpectedResult = 10)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 100 }", ExpectedResult = 100)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 100.0 }", ExpectedResult = 100)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 0.01 }", ExpectedResult = 0.01)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 99.99 }", ExpectedResult = 99.99)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 10, \"131-435\" : 12 }", ExpectedResult = 10)] + [TestCase("{ \"30253b07-138a-1b17-80a1\" : 12, \"30253b07-138a-1b17-80a1-117317ded3ca\" : 10 }", ExpectedResult = 10)] + [TestCase("{ 30253b07-138a-1b17-80a1-117317ded3ca : 10 }", ExpectedResult = 10)] + [TestCase("{ 30253b07-138a-1b17-80a1-117317ded3ca : 10, 2345: 25 }", ExpectedResult = 10)] + [TestCase("{ 2345: 25, 30253b07-138a-1b17-80a1-117317ded3ca : 10 }", ExpectedResult = 10)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : not a number }", ExpectedResult = -1)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : \"not a number\" }", ExpectedResult = -1)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : \"10\" }", ExpectedResult = 10)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : \"-10\" }", ExpectedResult = -1)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : -0.56 }", ExpectedResult = -1)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : -10 }", ExpectedResult = -1)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : -100 }", ExpectedResult = -1)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 123 }", ExpectedResult = -1)] + [TestCase("{ \"30253b07-138a-1b17-80a1-117317ded3ca\" : 123.89 }", ExpectedResult = -1)] + [TestCase("", ExpectedResult = -1)] + [TestCase(" ", ExpectedResult = -1)] + [TestCase("{ }", ExpectedResult = -1)] + public double Run(string input) { - foreach (var expectedResult in expectedResults) - { - Assert.AreEqual(expectedResult.Value, GetHealthCheckAnalysisResultAction.ParseAnalysisProgress(expectedResult.Key, "30253b07-138a-1b17-80a1-117317ded3ca")); - } + return GetHealthCheckAnalysisResultAction.ParseAnalysisProgress(input, "30253b07-138a-1b17-80a1-117317ded3ca"); } } } diff --git a/XenAdminTests/UnitTests/MiscTests/EmailAddressValidatorTests.cs b/XenAdminTests/UnitTests/MiscTests/EmailAddressValidatorTests.cs deleted file mode 100644 index 974173d21..000000000 --- a/XenAdminTests/UnitTests/MiscTests/EmailAddressValidatorTests.cs +++ /dev/null @@ -1,78 +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.Collections.Generic; -using NUnit.Framework; -using XenCenterLib; - -namespace XenAdminTests.UnitTests.MiscTests -{ - [TestFixture, Category(TestCategories.Unit)] - public class EmailAddressValidatorTests - { - private readonly EmailAddressValidator validator = new EmailAddressValidator(); - - [Test] - public void TestAcceptableEmailAddresses() - { - List addresses = new List() - { - "bob@bob", - "me@you.com", - "them@127.0.0.1" - }; - - addresses.ForEach(address => Assert.IsTrue(validator.IsValid(address), "Email address is valid: " + address)); - } - - [Test] - public void TestBadEmailAddresses() - { - List addresses = new List() - { - "bob@", - "me@ you.com", - "them@127.0.0.1()", - " hi@there.com", - "hi@there.com ", - "bread", - "dan(ny@what.com", - string.Empty, - null, - " " - }; - - addresses.ForEach( address => Assert.IsFalse(validator.IsValid(address), "Email address is valid: " + address)); - - } - - } -} diff --git a/XenAdminTests/UnitTests/MiscTests/NamesAndMessagesTests.cs b/XenAdminTests/UnitTests/NamesAndMessagesTests.cs similarity index 73% rename from XenAdminTests/UnitTests/MiscTests/NamesAndMessagesTests.cs rename to XenAdminTests/UnitTests/NamesAndMessagesTests.cs index a7388f7b2..3fcf1c4bf 100644 --- a/XenAdminTests/UnitTests/MiscTests/NamesAndMessagesTests.cs +++ b/XenAdminTests/UnitTests/NamesAndMessagesTests.cs @@ -31,10 +31,9 @@ using NUnit.Framework; using XenAdmin; -using XenAdminTests.UnitTests.UnitTestHelper; using XenAPI; -namespace XenAdminTests.UnitTests.MiscTests +namespace XenAdminTests.UnitTests { [TestFixture, Category(TestCategories.Unit)] internal class NamesAndMessagesTests @@ -42,29 +41,25 @@ namespace XenAdminTests.UnitTests.MiscTests [Test] public void FriendlyNamesStaticMethodsReturnStrings() { - IUnitTestVerifier validator = new VerifyStaticMethodReturn(typeof(FriendlyNames)); - validator.Verify(typeof(string)); + ClassVerifiers.VerifyStaticMethodReturn(typeof(FriendlyNames), typeof(string)); } [Test] public void MessagesStaticMethodsReturnStrings() { - IUnitTestVerifier validator = new VerifyStaticMethodReturn(typeof(Messages)); - validator.Verify(typeof(string)); + ClassVerifiers.VerifyStaticMethodReturn(typeof(Messages), typeof(string)); } [Test] public void InvisibleMessagesStaticMethodsReturnStrings() { - IUnitTestVerifier validator = new VerifyStaticMethodReturn(typeof(InvisibleMessages)); - validator.Verify(typeof(string)); + ClassVerifiers.VerifyStaticMethodReturn(typeof(InvisibleMessages), typeof(string)); } [Test] public void XapiFriendlyNameStaticMethodsReturnStrings() { - IUnitTestVerifier validator = new VerifyStaticMethodReturn(typeof(FriendlyErrorNames)); - validator.Verify(typeof(string)); + ClassVerifiers.VerifyStaticMethodReturn(typeof(FriendlyErrorNames), typeof(string)); } } } \ No newline at end of file diff --git a/XenAdminTests/UnitTests/NaturalCompareTest.cs b/XenAdminTests/UnitTests/NaturalCompareTest.cs index e70d12c91..cc3239a19 100644 --- a/XenAdminTests/UnitTests/NaturalCompareTest.cs +++ b/XenAdminTests/UnitTests/NaturalCompareTest.cs @@ -29,9 +29,6 @@ * SUCH DAMAGE. */ -using System; -using System.Collections.Generic; -using System.Text; using NUnit.Framework; using XenCenterLib; diff --git a/XenAdminTests/MiscTests/StreamUtilitiesTests.cs b/XenAdminTests/UnitTests/StreamUtilitiesTests.cs similarity index 100% rename from XenAdminTests/MiscTests/StreamUtilitiesTests.cs rename to XenAdminTests/UnitTests/StreamUtilitiesTests.cs diff --git a/XenAdminTests/UnitTests/SubnetworkMaskValidatorTest.cs b/XenAdminTests/UnitTests/SubnetworkMaskValidatorTest.cs index 70d534b43..6c3883c91 100644 --- a/XenAdminTests/UnitTests/SubnetworkMaskValidatorTest.cs +++ b/XenAdminTests/UnitTests/SubnetworkMaskValidatorTest.cs @@ -29,9 +29,6 @@ * SUCH DAMAGE. */ -using System; -using System.Collections.Generic; -using System.Text; using NUnit.Framework; using XenCenterLib; @@ -55,7 +52,7 @@ namespace XenAdminTests.UnitTests )] string validValues) { - Assert.AreEqual(true, StringUtility.IsValidNetmask(validValues)); + Assert.IsTrue(StringUtility.IsValidNetmask(validValues)); } [Test, Sequential] @@ -85,7 +82,7 @@ namespace XenAdminTests.UnitTests " 255.255.128.0" )] string invalidValues) { - Assert.AreEqual(false, StringUtility.IsValidNetmask(invalidValues)); + Assert.IsFalse(StringUtility.IsValidNetmask(invalidValues)); } } } diff --git a/XenAdminTests/MiscTests/TimeUtilTests.cs b/XenAdminTests/UnitTests/TimeUtilTests.cs similarity index 100% rename from XenAdminTests/MiscTests/TimeUtilTests.cs rename to XenAdminTests/UnitTests/TimeUtilTests.cs diff --git a/XenAdminTests/UnitTests/TokenizerTest.cs b/XenAdminTests/UnitTests/TokenizerTest.cs index dec600d22..aa419adc4 100644 --- a/XenAdminTests/UnitTests/TokenizerTest.cs +++ b/XenAdminTests/UnitTests/TokenizerTest.cs @@ -29,9 +29,6 @@ * SUCH DAMAGE. */ -using System; -using System.Collections.Generic; -using System.Text; using NUnit.Framework; using XenAdmin.ServerDBs; @@ -40,16 +37,14 @@ namespace XenAdminTests.UnitTests [TestFixture, Category(TestCategories.Unit)] class TokenizerTest { - private const string sxp = "((\"string ( \\\" foo\")\" foo foo (( )) \\\"\")"; - private static string[] tokens = new string[] { - "(", "(", "string ( \" foo", ")", " foo foo (( )) \"", ")" - }; + private const string SXP = "((\"string ( \\\" foo\")\" foo foo (( )) \\\"\")"; + private static string[] tokens = {"(", "(", "string ( \" foo", ")", " foo foo (( )) \"", ")"}; [Test] public void Run() { int j = 0; - foreach (string token in Parser.Tokenize(sxp)) + foreach (string token in Parser.Tokenize(SXP)) { Assert.Less(j, tokens.Length, "Too many tokens found"); Assert.AreEqual(token, tokens[j++], "Wrong token found"); diff --git a/XenAdminTests/UnitTests/UnitTestHelper/IUnitTestVerifier.cs b/XenAdminTests/UnitTests/UnitTestHelper/IUnitTestVerifier.cs deleted file mode 100644 index 10da1837a..000000000 --- a/XenAdminTests/UnitTests/UnitTestHelper/IUnitTestVerifier.cs +++ /dev/null @@ -1,38 +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. - */ - -namespace XenAdminTests.UnitTests.UnitTestHelper -{ - public interface IUnitTestVerifier - { - void Verify(object expected); - } -} diff --git a/XenAdminTests/UnitTests/UnitTestHelper/MockObjectBuilders/MockActionFactory.cs b/XenAdminTests/UnitTests/UnitTestHelper/MockObjectBuilders/MockActionFactory.cs index 6bff2bae3..eca2af9be 100644 --- a/XenAdminTests/UnitTests/UnitTestHelper/MockObjectBuilders/MockActionFactory.cs +++ b/XenAdminTests/UnitTests/UnitTestHelper/MockObjectBuilders/MockActionFactory.cs @@ -77,15 +77,15 @@ namespace XenAdminTests.UnitTests.UnitTestHelper.MockObjectBuilders private AsyncAction gpuAssignAction(string id) { - Mock group = ObjectManager.NewXenObject(id); - Mock vgpuType = ObjectManager.NewXenObject(id); + Mock vgpu = ObjectManager.NewXenObject(id); + List vgpus = new List() { vgpu.Object }; Mock vm = ObjectManager.NewXenObject(id); ObjectManager.MockConnectionFor(id).Setup(c => c.ResolveAll(It.IsAny>>())).Returns(new List()); ObjectManager.MockProxyFor(id).Setup( p => p.async_vgpu_create(It.IsAny(), It.IsAny(), It.IsAny(), "0", It.IsAny(), It.IsAny())).Returns(new Response("ok")); - return new GpuAssignAction(vm.Object, group.Object, vgpuType.Object); + return new GpuAssignAction(vm.Object, vgpus); } } } diff --git a/XenAdminTests/UnitTests/UnitTestHelper/VerifyGetters.cs b/XenAdminTests/UnitTests/UnitTestHelper/VerifyGetters.cs deleted file mode 100644 index 7475c4926..000000000 --- a/XenAdminTests/UnitTests/UnitTestHelper/VerifyGetters.cs +++ /dev/null @@ -1,70 +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.Reflection; -using NUnit.Framework; - -namespace XenAdminTests.UnitTests.UnitTestHelper -{ - class VerifyGetters : IUnitTestVerifier - { - private readonly object classToVerify = null; - - /// A class with getters and setters to verify - public VerifyGetters(object classToVerify) - { - this.classToVerify = classToVerify; - } - - /// - /// Use this when you want to test that some expected data has already been set in a class - /// - /// - /// - /// A struct of expected data content with members having the same name and return type as the getters and setters of the class - public void Verify(object expected) - { - FieldInfo[] fields = expected.GetType().GetFields(); - foreach (FieldInfo fieldInfo in fields) - { - string fieldName = fieldInfo.Name; - object expectedValue = fieldInfo.GetValue(expected); - PropertyInfo getter = classToVerify.GetType().GetProperty(fieldName); - - object actualValue = getter.GetValue(classToVerify, null); - if (expectedValue is string) - actualValue = actualValue.ToString(); - - Assert.AreEqual(expectedValue, actualValue, "Property mismatched: " + fieldName); - } - } - } -} diff --git a/XenAdminTests/UnitTests/UnitTestHelper/VerifyGettersAndSetters.cs b/XenAdminTests/UnitTests/UnitTestHelper/VerifyGettersAndSetters.cs deleted file mode 100644 index 6819b1437..000000000 --- a/XenAdminTests/UnitTests/UnitTestHelper/VerifyGettersAndSetters.cs +++ /dev/null @@ -1,79 +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.Reflection; -using NUnit.Framework; - -namespace XenAdminTests.UnitTests.UnitTestHelper -{ - public class VerifyGettersAndSetters : IUnitTestVerifier - { - private readonly object classToVerify = null; - - /// A class with getters and setters to verify - public VerifyGettersAndSetters(object classToVerify) - { - this.classToVerify = classToVerify; - } - - /// - /// Use this when you want to test that some data is set and the same data is retrieved afterwards - /// - /// A struct of expected data content with members having the same name and return type as the getters and setters of the class - public void Verify(object expected) - { - VerifySettersAndGetters(expected, expected); - } - - /// - /// Use this when you want to test that some data is set and a set of different data is retrieved afterwards. - /// This is useful when your class manipulates the underlying data before returning/storing it - /// - /// A struct of expected data content with members having the same name and return type as the getters and setters of the class - /// A struct of data to set with members having the same name and return type as the getters and setters of the class - public void VerifySettersAndGetters(object expected, object toSet) - { - FieldInfo[] fields = expected.GetType().GetFields(); - foreach (FieldInfo fieldInfo in fields) - { - object valueToSet = fieldInfo.GetValue(toSet); - string fieldName = fieldInfo.Name; - - PropertyInfo setter = classToVerify.GetType().GetProperty(fieldName); - setter.SetValue(classToVerify, valueToSet, null); - - object expectedValue = fieldInfo.GetValue(expected); - PropertyInfo getter = classToVerify.GetType().GetProperty(fieldName); - Assert.AreEqual(expectedValue, getter.GetValue(classToVerify, null), "Property mismatched: " + fieldName); - } - } - } -} diff --git a/XenAdminTests/MiscTests/UpdateManagerTests.cs b/XenAdminTests/UnitTests/UpdateManagerTests.cs similarity index 92% rename from XenAdminTests/MiscTests/UpdateManagerTests.cs rename to XenAdminTests/UnitTests/UpdateManagerTests.cs index 418d7d990..544fa97d8 100644 --- a/XenAdminTests/MiscTests/UpdateManagerTests.cs +++ b/XenAdminTests/UnitTests/UpdateManagerTests.cs @@ -29,18 +29,15 @@ * SUCH DAMAGE. */ -using System; using NUnit.Framework; using XenAdmin; using System.Diagnostics; using System.Threading; -using XenAdmin.Core; -using System.Reflection; -using System.Collections.Generic; -namespace XenAdminTests.MiscTests + +namespace XenAdminTests.UnitTests { - [TestFixture, Category(TestCategories.UICategoryB)] + [TestFixture, Category(TestCategories.Unit)] public class UpdateManagerTests { private const int Delay = 1000; diff --git a/XenAdminTests/UnitTests/MiscTests/UtilTests.cs b/XenAdminTests/UnitTests/UtilTests.cs similarity index 95% rename from XenAdminTests/UnitTests/MiscTests/UtilTests.cs rename to XenAdminTests/UnitTests/UtilTests.cs index 6ff84d1b7..d25486098 100644 --- a/XenAdminTests/UnitTests/MiscTests/UtilTests.cs +++ b/XenAdminTests/UnitTests/UtilTests.cs @@ -31,11 +31,10 @@ using NUnit.Framework; using XenAdmin; -using System.Linq; using System.Collections.Generic; using System; -namespace XenAdminTests.UnitTests.MiscTests +namespace XenAdminTests.UnitTests { [TestFixture, Category(TestCategories.Unit), SetCulture("en-EN")] internal class UtilTests @@ -52,7 +51,7 @@ namespace XenAdminTests.UnitTests.MiscTests { 2100000, new[] { "2", "MB" } }, { 2900000, new[] { "3", "MB" } }, { 1073741824, new[] { "1024", "MB" } }, //1024*1024*1024 - { 2100000000, new[] { "2003", "MB" } }, + { 2100000000, new[] { "2003", "MB" } } }; private Dictionary memoryVariousPairs = new Dictionary @@ -187,7 +186,7 @@ namespace XenAdminTests.UnitTests.MiscTests [Test] public void TestDiskSizeStringUlong() { - Assert.AreEqual("16777216 TiB", Util.DiskSizeString(ulong.MaxValue)); + Assert.AreEqual("16777216 TB", Util.DiskSizeString(ulong.MaxValue)); } [Test] diff --git a/XenAdminTests/UnitTests/WlbTests/WlbReportSubscriptionTests.cs b/XenAdminTests/UnitTests/WlbTests/WlbReportSubscriptionTests.cs index da92accf5..e0804ed6d 100644 --- a/XenAdminTests/UnitTests/WlbTests/WlbReportSubscriptionTests.cs +++ b/XenAdminTests/UnitTests/WlbTests/WlbReportSubscriptionTests.cs @@ -33,7 +33,7 @@ using System; using System.Collections.Generic; using NUnit.Framework; using XenAdmin.Wlb; -using XenAdminTests.UnitTests.UnitTestHelper; + namespace XenAdminTests.UnitTests.WlbTests { @@ -41,26 +41,16 @@ namespace XenAdminTests.UnitTests.WlbTests [TestFixture, Category(TestCategories.Unit)] public class WlbReportSubscriptionTests { - private WlbReportSubscription subscription; - private IUnitTestVerifier validator; - - [SetUp] - public void Setup() - { - subscription = new WlbReportSubscription("some id"); - validator = new VerifyGettersAndSetters(subscription); - } - [Test] public void TestNullConstructionDoesNotThrow() { - subscription = new WlbReportSubscription(null); + Assert.DoesNotThrow(() => new WlbReportSubscription(null)); } [Test] public void GettersAndSetters() { - SubscriptionData expected = new SubscriptionData() + var expected = new SubscriptionData { Id = "subs Id", Created = new DateTime( 2011, 12, 25), @@ -91,11 +81,11 @@ namespace XenAdminTests.UnitTests.WlbTests ReportDisplayName = "Display name" }; - validator.Verify(expected); + ClassVerifiers.VerifySettersAndGetters(new WlbReportSubscription("some id"), expected); } - #region Helper functions + #region Helper structs private struct SubscriptionData { diff --git a/XenAdminTests/XenModelTests/AddressTests.cs b/XenAdminTests/XenModelTests/AddressTests.cs index 6f3a6f1b8..c48b72ecd 100644 --- a/XenAdminTests/XenModelTests/AddressTests.cs +++ b/XenAdminTests/XenModelTests/AddressTests.cs @@ -5,7 +5,6 @@ using XenAdmin.Core; namespace XenAdminTests.XenModelTests { [TestFixture, Category(TestCategories.Unit)] - public class AddressTests { private readonly Dictionary _simpleNetworks = new Dictionary diff --git a/XenAdminTests/XenModelTests/CacheTests.cs b/XenAdminTests/XenModelTests/CacheTests.cs index 01adf71a5..355663f2f 100644 --- a/XenAdminTests/XenModelTests/CacheTests.cs +++ b/XenAdminTests/XenModelTests/CacheTests.cs @@ -33,54 +33,53 @@ using System; using System.Collections.Generic; using NUnit.Framework; using XenAdmin.Core; +using XenAdmin.Model; using XenAdmin.Network; using XenAPI; -using XenAdmin.Model; +using CacheEntry = System.Collections.Generic.KeyValuePair>; + namespace XenAdminTests.XenModelTests { - [TestFixture] + [TestFixture, Category(TestCategories.Unit)] public class CacheTests { - - public IEnumerable>> ObjectChanges + private static IEnumerable ObjectChanges { get { - //Each yield return is a test case - yield return new KeyValuePair>(new ObjectChange(typeof(VM), "1", new VM()), (cache) => cache.VMs.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(Folder), "1", new Folder(null, "folder")), (cache) => cache.Folders.Length == 0); - yield return new KeyValuePair>(new ObjectChange(typeof(Host), "1", new Host()), (cache) => cache.Hosts.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(Pool), "1", new Pool()), (cache) => cache.Pools.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(VMPP), "1", new VMPP()), (cache) => cache.VMPPs.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(Network), "1", new Network()), (cache) => cache.Networks.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(VBD), "1", new VBD()), (cache) => cache.VBDs.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(Bond), "1", new Bond()), (cache) => cache.Bonds.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(VDI), "1", new VDI()), (cache) => cache.VDIs.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(PBD), "1", new PBD()), (cache) => cache.PBDs.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(Tunnel), "1", new Tunnel()), (cache) => cache.Tunnels.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(VIF), "1", new VIF()), (cache) => cache.VIFs.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(SM), "1", new SM()), (cache) => cache.SMs.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(Pool_patch), "1", new Pool_patch()), (cache) => cache.Pool_patches.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(SR), "1", new SR()), (cache) => cache.SRs.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(Message), "1", new Message()), (cache) => cache.Messages.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(Host_cpu), "1", new Host_cpu()), (cache) => cache.Host_cpus.Length == 1); - yield return new KeyValuePair>(new ObjectChange(typeof(Role), "1", new Role()), (cache) => cache.Roles.Length == 1); - + yield return new CacheEntry(new ObjectChange(typeof(VM), "1", new VM()), cache => cache.VMs.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(Folder), "1", new Folder(null, "folder")), cache => cache.Folders.Length == 0); + yield return new CacheEntry(new ObjectChange(typeof(Host), "1", new Host()), cache => cache.Hosts.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(Pool), "1", new Pool()), cache => cache.Pools.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(VMSS), "1", new VMSS()), cache => cache.VMSSs.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(Network), "1", new Network()), cache => cache.Networks.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(VBD), "1", new VBD()), cache => cache.VBDs.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(Bond), "1", new Bond()), cache => cache.Bonds.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(VDI), "1", new VDI()), cache => cache.VDIs.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(PBD), "1", new PBD()), cache => cache.PBDs.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(Tunnel), "1", new Tunnel()), cache => cache.Tunnels.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(VIF), "1", new VIF()), cache => cache.VIFs.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(SM), "1", new SM()), cache => cache.SMs.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(Pool_patch), "1", new Pool_patch()), cache => cache.Pool_patches.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(SR), "1", new SR()), cache => cache.SRs.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(Message), "1", new Message()), cache => cache.Messages.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(Host_cpu), "1", new Host_cpu()), cache => cache.Host_cpus.Length == 1); + yield return new CacheEntry(new ObjectChange(typeof(Role), "1", new Role()), cache => cache.Roles.Length == 1); } } + [Test] - public void TestsCacheCollectionsAfterUpdateFrom( - [ValueSourceAttribute("ObjectChanges")] KeyValuePair> test) + public void TestsCacheCollectionsAfterUpdateFrom([ValueSource(nameof(ObjectChanges))] CacheEntry test) { var changes = test.Key; Cache cache = new Cache(); if (changes.type == typeof(Folder)) - Assert.Throws(() => cache.UpdateFrom(new XenConnection(), new List() { changes })); + Assert.Throws(() => cache.UpdateFrom(new XenConnection(), new List { changes })); else - cache.UpdateFrom(new XenConnection(), new List() { changes }); - Assert.IsTrue(test.Value(cache)); + cache.UpdateFrom(new XenConnection(), new List { changes }); + Assert.IsTrue(test.Value(cache)); } [Test] @@ -88,19 +87,17 @@ namespace XenAdminTests.XenModelTests { Cache cache = new Cache(); Folder folder = new Folder(null, "folder") {opaque_ref = "1"}; - cache.AddFolder(new XenRef(folder.opaque_ref),folder); - Assert.IsTrue(cache.Folders.Length==1); - Assert.AreEqual(folder,cache.Resolve(new XenRef(folder.opaque_ref))); - Assert.AreEqual(folder,cache.Folders[0]); + cache.AddFolder(new XenRef(folder.opaque_ref), folder); + Assert.IsTrue(cache.Folders.Length == 1); + Assert.AreEqual(folder, cache.Resolve(new XenRef(folder.opaque_ref))); + Assert.AreEqual(folder, cache.Folders[0]); //Check tryresolve - Folder result; - cache.TryResolve(new XenRef(folder.opaque_ref), out result); - Assert.AreEqual(folder,result ); + cache.TryResolve(new XenRef(folder.opaque_ref), out var result); + Assert.AreEqual(folder, result); //Check Clear cache.Clear(); - Assert.IsTrue(cache.Folders.Length==0); + Assert.IsTrue(cache.Folders.Length == 0); } - } } diff --git a/XenAdminTests/XenModelTests/HostExtensionTests.cs b/XenAdminTests/XenModelTests/HostExtensionTests.cs index fb8da3130..870540b13 100644 --- a/XenAdminTests/XenModelTests/HostExtensionTests.cs +++ b/XenAdminTests/XenModelTests/HostExtensionTests.cs @@ -35,7 +35,8 @@ using XenAPI; namespace XenAdminTests.XenModelTests { - public class HostExtensionTests : UnitTester_TestFixture + [TestFixture, Category(TestCategories.Unit)] + public class HostExtensionTests { [Test] [TestCase("0", 0)] diff --git a/XenAdminTests/XenModelTests/JsonConverterTests.cs b/XenAdminTests/XenModelTests/JsonConverterTests.cs index f6a078548..e00101271 100644 --- a/XenAdminTests/XenModelTests/JsonConverterTests.cs +++ b/XenAdminTests/XenModelTests/JsonConverterTests.cs @@ -40,7 +40,7 @@ using Newtonsoft.Json; namespace XenAdminTests.XenModelTests { - [TestFixture, Category(TestCategories.UICategoryB)] + [TestFixture, Category(TestCategories.Unit)] public class ConverterTests { #region Private methods diff --git a/XenAdminTests/UnitTests/XenObjectEqualsTests.cs b/XenAdminTests/XenModelTests/XenObjectEqualsTests.cs similarity index 100% rename from XenAdminTests/UnitTests/XenObjectEqualsTests.cs rename to XenAdminTests/XenModelTests/XenObjectEqualsTests.cs diff --git a/XenCenterLib/Archive/ArchiveFactory.cs b/XenCenterLib/Archive/ArchiveFactory.cs index c5260162f..38590b691 100644 --- a/XenCenterLib/Archive/ArchiveFactory.cs +++ b/XenCenterLib/Archive/ArchiveFactory.cs @@ -64,13 +64,13 @@ namespace XenCenterLib.Archive if (archiveType == Type.Tar) return new SharpZipTarArchiveIterator(packagedData); if (archiveType == Type.TarGz) - return new SharpZipTarArchiveIterator(CompressionFactory.Reader(CompressionFactory.Type.Gz, packagedData)); + return new SharpZipTarArchiveIterator(packagedData, CompressionFactory.Type.Gz); if (archiveType == Type.TarBz2) - return new SharpZipTarArchiveIterator(CompressionFactory.Reader(CompressionFactory.Type.Bz2, packagedData)); + return new SharpZipTarArchiveIterator(packagedData, CompressionFactory.Type.Bz2); if (archiveType == Type.Zip) return new DotNetZipZipIterator(packagedData); - throw new NotSupportedException(String.Format("Type: {0} is not supported by ArchiveIterator", archiveType)); + throw new NotSupportedException($"Type {archiveType} is not supported by ArchiveIterator"); } /// @@ -87,7 +87,7 @@ namespace XenCenterLib.Archive if (archiveType == Type.Zip) return new DotNetZipZipWriter(targetPackage); - throw new NotSupportedException( String.Format( "Type: {0} is not supported by ArchiveWriter", archiveType ) ); + throw new NotSupportedException($"Type {archiveType} is not supported by ArchiveWriter"); } } } diff --git a/XenCenterLib/Archive/ArchiveIterator.cs b/XenCenterLib/Archive/ArchiveIterator.cs index 9aee92b20..595eb5db0 100644 --- a/XenCenterLib/Archive/ArchiveIterator.cs +++ b/XenCenterLib/Archive/ArchiveIterator.cs @@ -70,7 +70,7 @@ namespace XenCenterLib.Archive } /// - /// Hook to allow the base stream to be wrapped by this classes archive mechanism + /// Hook to allow the base stream to be wrapped by this class's archive mechanism /// /// base stream public virtual void SetBaseStream(Stream stream) @@ -78,6 +78,11 @@ namespace XenCenterLib.Archive throw new NotImplementedException(); } + public virtual bool VerifyCurrentFileAgainstDigest(string algorithmName, byte[] digest) + { + throw new NotImplementedException(); + } + public abstract bool HasNext(); public abstract void ExtractCurrentFile(Stream extractedFileContents); public abstract string CurrentFileName(); diff --git a/XenCenterLib/Archive/ArchiveWriter.cs b/XenCenterLib/Archive/ArchiveWriter.cs index 6d177c46d..779d03c54 100644 --- a/XenCenterLib/Archive/ArchiveWriter.cs +++ b/XenCenterLib/Archive/ArchiveWriter.cs @@ -51,22 +51,31 @@ namespace XenCenterLib.Archive /// protected virtual void Dispose(bool disposing){ } - public void CreateArchive( string pathToArchive ) + public void CreateArchive(string pathToArchive, Action cancellingDelegate = null, Action progressDelegate = null) { - if( !Directory.Exists(pathToArchive) ) - throw new FileNotFoundException( "The path " + pathToArchive + " does not exist" ); + if (!Directory.Exists(pathToArchive)) + throw new FileNotFoundException("The path " + pathToArchive + " does not exist"); - foreach (string filePath in Directory.GetFiles(pathToArchive, "*.*", SearchOption.AllDirectories)) + var files = Directory.GetFiles(pathToArchive, "*.*", SearchOption.AllDirectories); + for (var i = 0; i < files.Length; i++) { + string filePath = files[i]; + cancellingDelegate?.Invoke(); + using (FileStream fs = File.OpenRead(filePath)) { - Add(fs, CleanRelativePathName(pathToArchive, filePath), File.GetCreationTime(filePath)); + Add(fs, CleanRelativePathName(pathToArchive, filePath), File.GetCreationTime(filePath)); + progressDelegate?.Invoke((int)50.0 * i / files.Length); } } - foreach (string dirPath in Directory.GetDirectories(pathToArchive, "*.*", SearchOption.AllDirectories)) + var directories = Directory.GetDirectories(pathToArchive, "*.*", SearchOption.AllDirectories); + for (var j = 0; j < directories.Length; j++) { + string dirPath = directories[j]; + cancellingDelegate?.Invoke(); AddDirectory(CleanRelativePathName(pathToArchive, dirPath), Directory.GetCreationTime(dirPath)); + progressDelegate?.Invoke(50 + (int)50.0 * j / directories.Length); } } diff --git a/XenCenterLib/Archive/TarArchiveIterator.cs b/XenCenterLib/Archive/TarArchiveIterator.cs index d84b7530f..03ec8fb96 100644 --- a/XenCenterLib/Archive/TarArchiveIterator.cs +++ b/XenCenterLib/Archive/TarArchiveIterator.cs @@ -32,6 +32,7 @@ using System; using System.IO; using ICSharpCode.SharpZipLib.Tar; +using XenCenterLib.Compression; namespace XenCenterLib.Archive { @@ -39,13 +40,21 @@ namespace XenCenterLib.Archive public class SharpZipTarArchiveIterator : ArchiveIterator { private TarInputStream tarStream; + private CompressionStream compressionStream; private TarEntry tarEntry; private bool disposed; - public SharpZipTarArchiveIterator() + public SharpZipTarArchiveIterator(Stream compressedTarFile, CompressionFactory.Type compressionType) { - tarStream = null; - disposed = true; + if (compressionType == CompressionFactory.Type.Gz) + compressionStream = CompressionFactory.Reader(CompressionFactory.Type.Gz, compressedTarFile); + else if (compressionType == CompressionFactory.Type.Bz2) + compressionStream = CompressionFactory.Reader(CompressionFactory.Type.Bz2, compressedTarFile); + else + throw new NotSupportedException($"Type {compressionType} is not supported by ArchiveIterator"); + + tarStream = new TarInputStream(compressionStream); + disposed = false; } public SharpZipTarArchiveIterator(Stream tarFile) @@ -122,12 +131,16 @@ namespace XenCenterLib.Archive { if(!disposed) { - if (tarStream != null) - tarStream.Dispose(); + tarStream?.Dispose(); + compressionStream?.Dispose(); disposed = true; } - } } + + public override bool VerifyCurrentFileAgainstDigest(string algorithmName, byte[] digest) + { + return StreamUtilities.VerifyAgainstDigest(tarStream, CurrentFileSize(), algorithmName, digest); + } } } diff --git a/XenCenterLib/Archive/TarArchiveWriter.cs b/XenCenterLib/Archive/TarArchiveWriter.cs index c648633c5..a3c585ad3 100644 --- a/XenCenterLib/Archive/TarArchiveWriter.cs +++ b/XenCenterLib/Archive/TarArchiveWriter.cs @@ -43,14 +43,10 @@ namespace XenCenterLib.Archive private const long bufferSize = 32*1024; protected bool disposed; - public SharpZipTarArchiveWriter() - { - disposed = false; - } - - public SharpZipTarArchiveWriter(Stream outputStream) : this() + public SharpZipTarArchiveWriter(Stream outputStream) { tar = new TarOutputStream(outputStream); + disposed = false; } public override void SetBaseStream(Stream outputStream) diff --git a/XenCenterLib/Archive/TarSanitization.cs b/XenCenterLib/Archive/TarSanitization.cs new file mode 100644 index 000000000..43a6e7b61 --- /dev/null +++ b/XenCenterLib/Archive/TarSanitization.cs @@ -0,0 +1,196 @@ +/* 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.IO; +using System.Linq; +using System.Text; +using ICSharpCode.SharpZipLib.Tar; + +namespace XenCenterLib.Archive +{ + public static class TarSanitization + { + /// + /// See https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file + /// + private static readonly string[] ReservedNames = { "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9" }; + + private static readonly char[] ForbiddenChars = { '<', '>', ':', '"', '/', '\\', '|', '?', '*' }; + + /// + /// SharpZipLib doesn't account for illegal file names or characters in + /// file names (e.g. ':' in Windows), so first we stream the tar to a + /// new tar, sanitizing any of the contained bad file names as we go. + /// We also need to record the modification times of all the files, so + /// that we can restore them into the final zip. + /// + public static void SanitizeTarForWindows(string inputTar, string outputTar, Action cancellingDelegate) + { + using (var fsIn = File.OpenRead(inputTar)) + using (var inputStream = new TarInputStream(fsIn)) + using (var fsOut = File.OpenWrite(outputTar)) + using (var outputStream = new TarOutputStream(fsOut)) + { + TarEntry entry; + byte[] buf = new byte[8 * 1024]; + var usedNames = new Dictionary(); + + while ((entry = inputStream.GetNextEntry()) != null) + { + cancellingDelegate?.Invoke(); + + entry.Name = SanitizeTarName(entry.Name, usedNames); + outputStream.PutNextEntry(entry); + + long bytesToCopy = entry.Size; + while (bytesToCopy > 0) + { + int bytesRead = inputStream.Read(buf, 0, Math.Min(bytesToCopy > int.MaxValue ? int.MaxValue : (int)bytesToCopy, buf.Length)); + outputStream.Write(buf, 0, bytesRead); + bytesToCopy -= bytesRead; + } + + outputStream.CloseEntry(); + } + } + } + + public static string SanitizeTarPathMember(string member) + { + // Strip any leading/trailing whitespace, or Windows will do it for us, and we might generate non-unique names + member = member.Trim(); + + // Don't allow empty filename + if (member.Length == 0) + return "_"; + + foreach (string reserved in ReservedNames) + { + if (member.ToUpperInvariant() == reserved.ToUpperInvariant() + || member.ToUpperInvariant().StartsWith(reserved.ToUpperInvariant() + ".")) + { + member = "_" + member; + } + } + + // Allow only 31 < c < 127, excluding any of the forbidden characters + var sb = new StringBuilder(member.Length); + foreach (char c in member) + { + if (c <= 31 || c >= 127 || ForbiddenChars.Contains(c)) + sb.Append("_"); + else + sb.Append(c); + } + member = sb.ToString(); + + // Windows also strips trailing '.' potentially generating non-unique names + if (member.EndsWith(".")) + member = member.Substring(0, member.Length - 1) + "_"; + + return member; + } + + /// + /// Maps file/directory names that are illegal under Windows to 'sanitized' versions. The usedNames + /// parameter ensures this is done consistently within a directory tree. + /// + /// The dictionary is used by SanitizeTarName() to ensure names are consistently sanitized. e.g.: + /// dir1: -> dir1_ + /// dir1? -> dir1_ (1) + /// dir1_ -> dir1_ (2) + /// dir1:/file -> dir1_/file + /// dir1?/file -> dir1_ (1)/file + /// + /// Pass the same dictionary to each invocation to get unique outputs within the same tree. + /// + private static string SanitizeTarName(string path, Dictionary usedNames) + { + string sanitizedPath = ""; + Stack bitsToEscape = new Stack(); + // Trim any trailing slashes (usually indicates path is a directory) + path = path.TrimEnd('/'); + // Take members off the end of the path until we have a name that already is + // a key in our dictionary, or until we have the empty string. + while (!usedNames.ContainsKey(path) && path.Length > 0) + { + string[] bits = path.Split('/'); + string lastBit = bits[bits.Length - 1]; + int lengthOfLastBit = lastBit.Length; + bitsToEscape.Push(lastBit); + path = path.Substring(0, path.Length - lengthOfLastBit); + path = path.TrimEnd('/'); + } + + if (usedNames.ContainsKey(path)) + { + sanitizedPath = usedNames[path]; + } + + // Now for each member in the path, look up the escaping of that member if it exists; otherwise + // generate a new, unique escaping. Then append the escaped member to the end of the sanitized + // path and continue. + foreach (string member in bitsToEscape) + { + System.Diagnostics.Trace.Assert(member.Length > 0); + string sanitizedMember = SanitizeTarPathMember(member); + sanitizedPath = Path.Combine(sanitizedPath, sanitizedMember); + path = path + Path.DirectorySeparatorChar + member; + + // Note: even if sanitizedMember == member, we must add it to the dictionary, since + // tar permits names that differ only in case, while Windows does not. We must e.g.: + // abc -> abc + // aBC -> aBC (1) + + if (usedNames.ContainsKey(path)) + { + // We have already generated an escaping for this path prefix: use it + sanitizedPath = usedNames[path]; + continue; + } + + // Generate the unique mapping + string pre = sanitizedPath; + int i = 1; + while (usedNames.Values.Any(v => v.ToUpperInvariant() == sanitizedPath.ToUpperInvariant())) + { + sanitizedPath = $"{pre} ({i})"; + i++; + } + + usedNames.Add(path, sanitizedPath); + } + return sanitizedPath; + } + } +} diff --git a/XenCenterLib/Archive/ZipArchiveIterator.cs b/XenCenterLib/Archive/ZipArchiveIterator.cs index d3456ece9..56dd97444 100644 --- a/XenCenterLib/Archive/ZipArchiveIterator.cs +++ b/XenCenterLib/Archive/ZipArchiveIterator.cs @@ -36,40 +36,22 @@ using Ionic.Zip; namespace XenCenterLib.Archive { - public class ExtractProgressChangedEventArgs : EventArgs - { - private readonly long bytesIn; - private readonly long totalBytes; - - public ExtractProgressChangedEventArgs(long bytesTransferred, long totalBytesToTransfer) - { - bytesIn = bytesTransferred; - totalBytes = totalBytesToTransfer; - } - - public long BytesTransferred - { - get { return bytesIn; } - } - - public long TotalBytesToTransfer - { - get { return totalBytes; } - } - } - public class DotNetZipZipIterator : ArchiveIterator { - private ZipFile zipFile = null; - private IEnumerator enumerator = null; + private ZipFile zipFile; + private IEnumerator enumerator; private ZipEntry zipEntry; private bool disposed; - public event EventHandler CurrentFileExtractProgressChanged; - public event EventHandler CurrentFileExtractCompleted; + /// + /// delegate params: long bytesTransferred, long totalBytesToTransfer + /// + public event Action CurrentFileExtractProgressChanged; + public event Action CurrentFileExtractCompleted; - public DotNetZipZipIterator() + public DotNetZipZipIterator(Stream inputStream) { + Initialise(inputStream); disposed = false; } @@ -79,26 +61,19 @@ namespace XenCenterLib.Archive { case ZipProgressEventType.Extracting_EntryBytesWritten: { - EventHandler handler = CurrentFileExtractProgressChanged; - if (handler != null) - handler(this, new ExtractProgressChangedEventArgs(e.BytesTransferred, e.TotalBytesToTransfer)); + var handler = CurrentFileExtractProgressChanged; + handler?.Invoke(e.BytesTransferred, e.TotalBytesToTransfer); } break; case ZipProgressEventType.Extracting_AfterExtractEntry: { - EventHandler handler = CurrentFileExtractCompleted; - if (handler != null) - handler(this, e); + var handler = CurrentFileExtractCompleted; + handler?.Invoke(); } break; } } - public DotNetZipZipIterator(Stream inputStream) : this() - { - Initialise(inputStream); - } - private void Initialise(Stream zipStream) { try diff --git a/XenCenterLib/ChangeableDictionary.cs b/XenCenterLib/ChangeableDictionary.cs index 74c4f33cf..d77347a5f 100644 --- a/XenCenterLib/ChangeableDictionary.cs +++ b/XenCenterLib/ChangeableDictionary.cs @@ -105,7 +105,6 @@ namespace XenCenterLib catch (Exception e) { log.Debug("Exception firing batchCollectionChanged cache.", e); - log.Debug(e, e); #if DEBUG if (System.Diagnostics.Debugger.IsAttached) throw; @@ -129,23 +128,14 @@ namespace XenCenterLib return dictionary.ContainsKey(key); } - public ICollection Keys - { - get { return dictionary.Keys; } - } + public ICollection Keys => dictionary.Keys; public bool TryGetValue(TKey key, out TValue value) { return dictionary.TryGetValue(key, out value); } - public ICollection Values - { - get - { - return dictionary.Values; - } - } + public ICollection Values => dictionary.Values; #endregion @@ -153,7 +143,7 @@ namespace XenCenterLib public void Add(KeyValuePair item) { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } /// @@ -166,23 +156,17 @@ namespace XenCenterLib public bool Contains(KeyValuePair item) { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } public void CopyTo(KeyValuePair[] array, int arrayIndex) { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } - public int Count - { - get { return dictionary.Count; } - } + public int Count => dictionary.Count; - public bool IsReadOnly - { - get { return false; } - } + public bool IsReadOnly => false; public bool Remove(KeyValuePair item) { @@ -226,28 +210,16 @@ namespace XenCenterLib return (IDictionaryEnumerator)GetEnumerator(); } - bool IDictionary.IsFixedSize - { - get { throw new Exception("The method or operation is not implemented."); } - } + bool IDictionary.IsFixedSize => throw new NotImplementedException(); - ICollection IDictionary.Keys - { - get { return dictionary.Keys; } - } + ICollection IDictionary.Keys => dictionary.Keys; void IDictionary.Remove(object key) { Remove((TKey)key); } - ICollection IDictionary.Values - { - get - { - return dictionary.Values; - } - } + ICollection IDictionary.Values => dictionary.Values; object IDictionary.this[object key] { @@ -267,23 +239,14 @@ namespace XenCenterLib void ICollection.CopyTo(Array array, int index) { - throw new Exception("The method or operation is not implemented."); + throw new NotImplementedException(); } - int ICollection.Count - { - get { return dictionary.Count; } - } + int ICollection.Count => dictionary.Count; - bool ICollection.IsSynchronized - { - get { throw new Exception("The method or operation is not implemented."); } - } + bool ICollection.IsSynchronized => throw new NotImplementedException(); - object ICollection.SyncRoot - { - get { throw new Exception("The method or operation is not implemented."); } - } + object ICollection.SyncRoot => throw new NotImplementedException(); #endregion } diff --git a/XenCenterLib/HelpString.cs b/XenCenterLib/HelpString.cs deleted file mode 100644 index 6c28b9039..000000000 --- a/XenCenterLib/HelpString.cs +++ /dev/null @@ -1,50 +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; - -namespace XenCenterLib -{ - - public class HelpString : System.Attribute - { - private string value; - public HelpString(string s) - { - value = s; - } - - public string Value - { - get { return value; } - } - } -} \ No newline at end of file diff --git a/XenCenterLib/NamedPipes.cs b/XenCenterLib/NamedPipes.cs index 9100c1883..f0daefd43 100644 --- a/XenCenterLib/NamedPipes.cs +++ b/XenCenterLib/NamedPipes.cs @@ -335,13 +335,10 @@ namespace XenCenterLib // Close pipe handle to destroy it if (CloseHandle(Handle)) - { log.Debug("Closed NamedPipe handle"); - } else - { - log.Warn(new Win32Exception("CloseHandle() in NamedPipes failed", new Win32Exception())); - } + log.Warn("CloseHandle() in NamedPipes failed", new Win32Exception()); + log.Debug("NamedPipe thread exited"); } diff --git a/XenCenterLib/StreamUtilities.cs b/XenCenterLib/StreamUtilities.cs index 14eba1b2b..71268585c 100644 --- a/XenCenterLib/StreamUtilities.cs +++ b/XenCenterLib/StreamUtilities.cs @@ -31,10 +31,12 @@ using System; using System.IO; +using System.Linq; +using System.Security.Cryptography; namespace XenCenterLib { - public class StreamUtilities + public static class StreamUtilities { /// /// Perform a copy of the contents of one stream class to another in a buffered fashion @@ -62,5 +64,51 @@ namespace XenCenterLib outputData.Flush(); } + + public static bool VerifyAgainstDigest(Stream stream, long limit, string algorithmName, byte[] digest, RSACryptoServiceProvider cryptoServiceProvider = null) + { + int bytesRead = 0; + long offset = 0; + byte[] buffer = new byte[2 * 1024 * 1024]; + + using (var hashAlgorithm = HashAlgorithm.Create(algorithmName)) + { + // Validate the algorithm. + if (hashAlgorithm == null) + throw new NotSupportedException($"{algorithmName} is not a valid hash algorithm"); + + while (offset < limit) + { + bytesRead = stream.Read(buffer, 0, buffer.Length); + + if (bytesRead <= 0) + break; + + if (buffer.Any(b => b != 0x0)) + { + if (offset + bytesRead < limit) + { + // This is not the last block. Compute the partial hash. + hashAlgorithm.TransformBlock(buffer, 0, bytesRead, buffer, 0); + } + } + + offset += bytesRead; + } + + // It is necessary to call TransformBlock at least once and TransformFinalBlock only once before getting the hash. + // If only the last buffer had content, then TransformBlock would not have been called at least once. + // So, split the last buffer and hash it even if it is empty. + // Note: TransformBlock will accept an "inputCount" that is zero. + hashAlgorithm.TransformBlock(buffer, 0, bytesRead / 2, buffer, 0); + + // Compute the final hash. + hashAlgorithm.TransformFinalBlock(buffer, bytesRead / 2, bytesRead / 2 + bytesRead % 2); + + return cryptoServiceProvider == null + ? digest.SequenceEqual(hashAlgorithm.Hash) + : cryptoServiceProvider.VerifyHash(hashAlgorithm.Hash, CryptoConfig.MapNameToOID(algorithmName), digest); + } + } } } diff --git a/XenCenterLib/Win32.cs b/XenCenterLib/Win32.cs index 1f0693b03..4f7407b7b 100644 --- a/XenCenterLib/Win32.cs +++ b/XenCenterLib/Win32.cs @@ -39,10 +39,8 @@ using Microsoft.Win32.SafeHandles; namespace XenCenterLib { - public class Win32 + public static class Win32 { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - [DllImport("kernel32.dll")] public static extern void SetLastError(uint dwErrCode); @@ -491,25 +489,16 @@ namespace XenCenterLib /// Will return null if the disk parameters could not be determined. /// /// An absolute path - /// + /// May be thrown> public static DiskSpaceInfo GetDiskSpaceInfo(string path) { - try - { - string DriveLetter = Path.GetPathRoot(path).TrimEnd(new char[] { '\\' }); - System.Management.ManagementObject o = new System.Management.ManagementObject( - string.Format("Win32_LogicalDisk.DeviceID=\"{0}\"", DriveLetter)); - string fsType = o.Properties["FileSystem"].Value.ToString(); - bool isFAT = (fsType == "FAT" || fsType == "FAT32"); - UInt64 freeBytes = UInt64.Parse(o.Properties["FreeSpace"].Value.ToString()); - UInt64 totalBytes = UInt64.Parse(o.Properties["Size"].Value.ToString()); - return new DiskSpaceInfo(freeBytes, totalBytes, isFAT); - } - catch (Exception exn) - { - log.Warn(exn, exn); - return null; - } + string DriveLetter = Path.GetPathRoot(path).TrimEnd('\\'); + var o = new System.Management.ManagementObject($"Win32_LogicalDisk.DeviceID=\"{DriveLetter}\""); + string fsType = o.Properties["FileSystem"].Value.ToString(); + bool isFAT = (fsType == "FAT" || fsType == "FAT32"); + UInt64 freeBytes = UInt64.Parse(o.Properties["FreeSpace"].Value.ToString()); + UInt64 totalBytes = UInt64.Parse(o.Properties["Size"].Value.ToString()); + return new DiskSpaceInfo(freeBytes, totalBytes, isFAT); } public class DiskSpaceInfo @@ -724,6 +713,7 @@ namespace XenCenterLib private const string _IID_IAuthenticate = "79eac9d0-baf9-11ce-8c82-00aa004ba90b"; public static readonly Guid IID_IAuthenticate = new Guid(_IID_IAuthenticate); + [ComImport, Guid(_IID_IAuthenticate), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), ComVisible(false)] @@ -733,5 +723,46 @@ namespace XenCenterLib [PreserveSig] int Authenticate(ref IntPtr phwnd, ref IntPtr pszUsername, ref IntPtr pszPassword); } + + + #region Shell32.dll + + /// Note the API uses CoTaskMemAlloc + [DllImport("shell32.dll")] + private static extern int SHGetKnownFolderPath([MarshalAs(UnmanagedType.LPStruct)] Guid rfid, uint dwFlags, IntPtr hToken, out IntPtr pszPath); + + /// + /// Gets the full path for special folders that are not covered by the Environment.SpecialFolder enum + /// + /// The Guid of the folder in question (look it up in the properties of class KnownFolders) + /// The full path to the special folder path or string.Empty if we cannot retrieve it + public static string GetKnownFolderPath(Guid folder) + { + IntPtr pPath = IntPtr.Zero; + try + { + if (SHGetKnownFolderPath(folder, 0, IntPtr.Zero, out pPath) == 0) + return Marshal.PtrToStringUni(pPath); + } + finally + { + if (pPath != IntPtr.Zero) + Marshal.FreeCoTaskMem(pPath); + } + + return string.Empty; + } + + /// + /// There are many known folders, add those needed as necessary. + /// Uuids listed at http://www.pinvoke.net/default.aspx/shell32.SHGetKnownFolderPath + /// + public static class KnownFolders + { + public static readonly Guid Downloads = Guid.Parse("374DE290-123F-4565-9164-39C4925E467B"); + } + + + #endregion } } diff --git a/XenCenterLib/XenCenterLib.csproj b/XenCenterLib/XenCenterLib.csproj index 41958a714..c4caa1c04 100644 --- a/XenCenterLib/XenCenterLib.csproj +++ b/XenCenterLib/XenCenterLib.csproj @@ -23,6 +23,7 @@ prompt 4 false + true pdbonly @@ -61,6 +62,7 @@ + @@ -74,7 +76,6 @@ - diff --git a/XenCenterVNC/MyStream.cs b/XenCenterVNC/MyStream.cs index b12f7b5d0..624e83d43 100644 --- a/XenCenterVNC/MyStream.cs +++ b/XenCenterVNC/MyStream.cs @@ -38,6 +38,7 @@ namespace DotNetVnc public class MyStream { private const int MAX_STRING_LENGTH = 1 << 16; + private const int MAX_CLIPBOARD_SIZE = 1024 * 1024; private readonly Stream inStream; private readonly Stream outStream; @@ -85,8 +86,9 @@ namespace DotNetVnc public void writeString(String s) { byte[] bytes = Encoding.ASCII.GetBytes(s); - writeInt32(bytes.Length); - outStream.Write(bytes, 0, bytes.Length); + var size = Math.Min(bytes.Length, MAX_CLIPBOARD_SIZE); + writeInt32(size); + outStream.Write(bytes, 0, size); } public void readPadding(int n) diff --git a/XenCenterVNC/XenCenterVNC.csproj b/XenCenterVNC/XenCenterVNC.csproj index 509596ed3..c0596dde0 100644 --- a/XenCenterVNC/XenCenterVNC.csproj +++ b/XenCenterVNC/XenCenterVNC.csproj @@ -24,6 +24,7 @@ 4 true false + true pdbonly diff --git a/XenModel/Actions/AD/AddRemoveRolesAction.cs b/XenModel/Actions/AD/AddRemoveRolesAction.cs index 66da44ac2..d0fff9792 100644 --- a/XenModel/Actions/AD/AddRemoveRolesAction.cs +++ b/XenModel/Actions/AD/AddRemoveRolesAction.cs @@ -65,7 +65,9 @@ namespace XenAdmin.Actions { int count = toAdd.Count + toRemove.Count; int done = 0; - log.DebugFormat("Adding {0} roles on subject '{1}'", toAdd.Count, (subject.DisplayName ?? subject.SubjectName ?? subject.subject_identifier).Ellipsise(50)); + var subj = subject.DisplayName ?? subject.SubjectName ?? subject.subject_identifier; + + log.DebugFormat("Adding {0} roles on subject '{1}'.", toAdd.Count, subj); foreach (Role r in toAdd) { Subject.add_to_roles(Session, subject.opaque_ref, r.opaque_ref); @@ -73,7 +75,7 @@ namespace XenAdmin.Actions PercentComplete = (100 * done) / count; } - log.DebugFormat("Removing {0} roles on subject '{1}'", toRemove.Count, (subject.DisplayName ?? subject.SubjectName ?? subject.subject_identifier).Ellipsise(50)); + log.DebugFormat("Removing {0} roles on subject '{1}'.", toRemove.Count, subj); foreach (Role r in toRemove) { Subject.remove_from_roles(Session, subject.opaque_ref, r.opaque_ref); diff --git a/XenModel/Actions/AD/AddRemoveSubjectsAction.cs b/XenModel/Actions/AD/AddRemoveSubjectsAction.cs index 9328b7baf..3123aafbf 100644 --- a/XenModel/Actions/AD/AddRemoveSubjectsAction.cs +++ b/XenModel/Actions/AD/AddRemoveSubjectsAction.cs @@ -150,7 +150,7 @@ namespace XenAdmin.Actions Exception e = null; string resolvedName = ""; string sid = ""; - log.DebugFormat("Resolving AD entries on pool '{0}'", Helpers.GetName(Connection).Ellipsise(50)); + log.DebugFormat("Resolving AD entries on pool '{0}'.", Helpers.GetName(Connection)); foreach (string name in subjectNamesToAdd) { try @@ -192,7 +192,7 @@ namespace XenAdmin.Actions { Exception e = null; Subject subject = null; - log.DebugFormat("Adding {0} new subjects on pool '{1}'", sidsToAdd.Count, Helpers.GetName(Connection).Ellipsise(50)); + log.DebugFormat("Adding {0} new subjects on pool '{1}'", sidsToAdd.Count, Helpers.GetName(Connection)); foreach (string sid in sidsToAdd) { try @@ -242,7 +242,7 @@ namespace XenAdmin.Actions private void removeSubjects() { Exception e = null; - log.DebugFormat("Removing {0} existing subjects on pool '{1}'", subjectsToRemove.Count, Helpers.GetName(Connection).Ellipsise(50)); + log.DebugFormat("Removing {0} existing subjects on pool '{1}'.", subjectsToRemove.Count, Helpers.GetName(Connection)); string selfSid = Connection.Session.IsLocalSuperuser || Connection.Session.Subject == null ? "" : Connection.Resolve(Connection.Session.Subject).subject_identifier; diff --git a/XenModel/Actions/AD/EnableAdAction.cs b/XenModel/Actions/AD/EnableAdAction.cs index d03e6109b..9b6543e03 100644 --- a/XenModel/Actions/AD/EnableAdAction.cs +++ b/XenModel/Actions/AD/EnableAdAction.cs @@ -74,7 +74,7 @@ namespace XenAdmin.Actions protected override void Run() { - log.DebugFormat("Enabling AD on pool '{0}'", Helpers.GetName(Connection).Ellipsise(50)); + log.DebugFormat("Enabling AD on pool '{0}'", Helpers.GetName(Connection)); Dictionary config = new Dictionary(); config["domain"] = domain; // NB this line is now redundant, it is here to support the old now-superseded way of passing in the domain @@ -111,9 +111,7 @@ namespace XenAdmin.Actions if (!int.TryParse(m.Groups[1].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out errorId)) throw f; - Win32Exception winErr = new Win32Exception(errorId); - - log.ErrorFormat("Received error from likewise when attempting to join domain: {0}", winErr); + log.Error($"Received errorId {errorId} from likewise when attempting to join domain.", f); } XenRef hostref = new XenRef(f.ErrorDescription[1]); Host host = Connection.Resolve(hostref); diff --git a/XenModel/Actions/Action.cs b/XenModel/Actions/Action.cs index 326dcaec1..50b64a917 100644 --- a/XenModel/Actions/Action.cs +++ b/XenModel/Actions/Action.cs @@ -38,9 +38,21 @@ using XenAdmin.Core; namespace XenAdmin.Actions { - public class ActionBase + public interface IStatus + { + bool InProgress { get; } + bool IsCompleted { get; } + bool Succeeded { get; } + bool IsCancelled { get; } + bool IsError { get; } + bool IsIncomplete { get; } + bool IsQueued { get; } + } + + public class ActionBase : IStatus { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + protected static readonly log4net.ILog AuditLog = log4net.LogManager.GetLogger("Audit"); public string Title; @@ -315,10 +327,12 @@ namespace XenAdmin.Actions } } - public bool Succeeded - { - get { return this.IsCompleted && this.Exception == null; } - } + public bool Succeeded => IsCompleted && Exception == null; + public bool IsCancelled => IsCompleted && !Succeeded && Exception is CancelledException; + public bool IsError => IsCompleted && !Succeeded && !(Exception is CancelledException); + public bool IsIncomplete => false; + public bool IsQueued => false; + public bool InProgress => !IsCompleted; public Exception Exception { @@ -374,8 +388,7 @@ namespace XenAdmin.Actions } catch (Exception e) { - log.Debug(String.Format("Exception firing OnChanged for Action {0}", Title), e); - log.Debug(e, e); + log.Debug($"Exception firing OnChanged for Action {Title}.", e); } } @@ -389,26 +402,19 @@ namespace XenAdmin.Actions } catch (Exception ex) { - log.Debug(String.Format("Exception firing OnCompleted for Action {0}", Title), ex); - log.Debug(ex, ex); + log.Debug($"Exception firing OnCompleted for Action {Title}.", ex); } } } - protected void MarkCompleted() + protected void MarkCompleted(Exception e = null) { - MarkCompletedCore(); - } + if (e != null) + { + log.Debug(e, e); + Exception = e; + } - protected void MarkCompleted(Exception e) - { - log.Debug(e, e); - Exception = e; - MarkCompletedCore(); - } - - private void MarkCompletedCore() - { Finished = DateTime.Now; PercentComplete = 100; IsCompleted = true; @@ -416,8 +422,6 @@ namespace XenAdmin.Actions #region Audit logging - protected static readonly log4net.ILog AuditLog = log4net.LogManager.GetLogger("Audit"); - protected virtual void AuditLogStarted() { AuditLog.InfoFormat("Operation started: {0}", AuditDescription()); diff --git a/XenModel/Actions/AsyncAction.cs b/XenModel/Actions/AsyncAction.cs index a20707c5c..b08b85713 100644 --- a/XenModel/Actions/AsyncAction.cs +++ b/XenModel/Actions/AsyncAction.cs @@ -32,10 +32,6 @@ using System; using System.Collections.Generic; using System.Net; -using System.Reflection; -using System.Text; -using System.Threading; -using CookComputing.XmlRpc; using XenAdmin.Core; using XenAdmin.Network; using XenAPI; @@ -45,7 +41,6 @@ namespace XenAdmin.Actions { public abstract class AsyncAction : CancellingAction { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private readonly Func, IXenConnection, string, SudoElevationResult> sudoDialog = XenAdminConfigManager.Provider.SudoDialogDelegate; @@ -229,7 +224,6 @@ namespace XenAdmin.Actions Failure.ParseRBACFailure(f, Connection, Session ?? Connection.Session); } log.Error(e); - log.Error(e.StackTrace); AuditLogFailure(); MarkCompleted(e); } @@ -247,9 +241,9 @@ namespace XenAdmin.Actions { Session.logout(); } - catch(Failure ex) + catch (Failure f) { - log.Debug("Session.logout() failed for Session uuid " + Session.opaque_ref, ex); + log.Debug("Session.logout() failed. ", f); } } diff --git a/XenModel/Actions/CancellingAction.cs b/XenModel/Actions/CancellingAction.cs index 890f5d900..da0475a91 100644 --- a/XenModel/Actions/CancellingAction.cs +++ b/XenModel/Actions/CancellingAction.cs @@ -157,8 +157,6 @@ namespace XenAdmin.Actions /// public virtual void RecomputeCanCancel() { - //Program.AssertOffEventThread(); - try { XenRef task = _relatedTask; @@ -178,7 +176,7 @@ namespace XenAdmin.Actions } catch (Exception exn) { - log.Error(exn, exn); + log.Error("Error recomputing whether the task can be cancelled.", exn); LogoutCancelSession(); can_cancel = false; } @@ -232,7 +230,6 @@ namespace XenAdmin.Actions /// public override sealed void Cancel() { - //Program.AssertOnEventThread(); log.Debug("Cancel() was called. Attempting to cancel action"); // We can always cancel before the action starts running @@ -278,8 +275,7 @@ namespace XenAdmin.Actions } catch (Exception e) { - log.DebugFormat("Exception when cancelling action {0}", this.Description); - log.Debug(e, e); + log.Debug($"Exception when cancelling action {Description}.", e); LogoutCancelSession(); Cancelling = false; } @@ -324,19 +320,19 @@ namespace XenAdmin.Actions exn.ErrorDescription[0] == XenAPI.Failure.HANDLE_INVALID && exn.ErrorDescription[1] == "task") { - log.Debug(exn, exn); + log.Debug("Task related failure (invalid handle)", exn); // The task has disappeared. _relatedTask = null; } else { - log.Error(exn, exn); + log.Error("Task related failure.", exn); // Ignore, and hope that this isn't a problem. } } catch (Exception exn) { - log.Error(exn, exn); + log.Error("Task related exception.", exn); // Ignore, and hope that this isn't a problem. } } @@ -416,30 +412,26 @@ namespace XenAdmin.Actions } catch (XmlRpcNullParameterException xmlExcept) { - log.ErrorFormat("XmlRpcNullParameterException in DoWithSessionRetry, retry {0}", retries); - log.Error(xmlExcept, xmlExcept); + log.Error($"XmlRpcNullParameterException in DoWithSessionRetry, retry {retries}.", xmlExcept); throw new Exception(Messages.INVALID_SESSION); } catch (XmlRpcIllFormedXmlException xmlRpcIllFormedXmlException) { - log.ErrorFormat("XmlRpcIllFormedXmlException in DoWithSessionRetry, retry {0}", retries); - log.Error(xmlRpcIllFormedXmlException, xmlRpcIllFormedXmlException); + log.Error($"XmlRpcIllFormedXmlException in DoWithSessionRetry, retry {retries}.", xmlRpcIllFormedXmlException); if (!Connection.ExpectDisruption || retries <= 0) throw; } catch (WebException we) { - log.ErrorFormat("WebException in DoWithSessionRetry, retry {0}", retries); - log.Error(we, we); + log.Error($"WebException in DoWithSessionRetry, retry {retries}.", we); if (retries <= 0) throw; } catch (Failure failure) { - log.ErrorFormat("Failure in DoWithSessionRetry, retry {0}", retries); - log.Error(failure, failure); + log.Error($"Failure in DoWithSessionRetry, retry {retries}.", failure); if (retries <= 0) throw; diff --git a/XenModel/Actions/DR/DrRecoverAction.cs b/XenModel/Actions/DR/DrRecoverAction.cs index 34120fc25..0cc56c0e7 100644 --- a/XenModel/Actions/DR/DrRecoverAction.cs +++ b/XenModel/Actions/DR/DrRecoverAction.cs @@ -83,8 +83,7 @@ namespace XenAdmin.Actions.DR else { log.DebugFormat("Metadata session is NULL. Cannot recover {0} to Pool {1}", - Helpers.GetName(xenObject).Ellipsise(50), - Helpers.GetName(Pool).Ellipsise(50)); + Helpers.GetName(xenObject), Helpers.GetName(Pool)); } Description = String.Format(Messages.ACTION_DR_RECOVER_DONE, xenObject.Name()); } diff --git a/XenModel/Actions/DR/DrTaskCreateAction.cs b/XenModel/Actions/DR/DrTaskCreateAction.cs index 258df113d..5a31ddf96 100644 --- a/XenModel/Actions/DR/DrTaskCreateAction.cs +++ b/XenModel/Actions/DR/DrTaskCreateAction.cs @@ -39,8 +39,6 @@ namespace XenAdmin.Actions.DR { public class DrTaskCreateAction : AsyncAction { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private readonly ScannedDeviceInfo _deviceInfo; /// diff --git a/XenModel/Actions/DelegatedAsyncAction.cs b/XenModel/Actions/DelegatedAsyncAction.cs index ceabd0cfc..858bccbc8 100644 --- a/XenModel/Actions/DelegatedAsyncAction.cs +++ b/XenModel/Actions/DelegatedAsyncAction.cs @@ -39,31 +39,16 @@ using XenAPI; namespace XenAdmin.Actions { - // An action which just runs a delegate. - // It is bad style to use this for more than the very simplest delegate: preferably just a single API call. - // Anything more complicated should be turned into a proper action of its own. - + /// + /// An action which just runs a delegate. + /// It is bad style to use this for more than the very simplest delegate: preferably just a single API call. + /// Anything more complicated should be turned into a proper action of its own. + /// public class DelegatedAsyncAction : AsyncAction { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private readonly Action invoker; private readonly string endDescription; - public DelegatedAsyncAction(IXenConnection connection, string title, string startDescription, string endDescription, - Action invoker) - : this(connection, title, startDescription, endDescription, invoker, false) - { - } - - public DelegatedAsyncAction(IXenConnection connection, string title, string startDescription, string endDescription, - Action invoker, bool suppressHistory) - : base(connection, title, startDescription, suppressHistory) - { - this.endDescription = endDescription; - this.invoker = invoker; - } - public DelegatedAsyncAction(IXenConnection connection, string title, string startDescription, string endDescription, Action invoker, params string[] rbacMethods) : this(connection, title, startDescription, endDescription, invoker, false, rbacMethods) @@ -72,8 +57,10 @@ namespace XenAdmin.Actions public DelegatedAsyncAction(IXenConnection connection, string title, string startDescription, string endDescription, Action invoker, bool suppressHistory, params string[] rbacMethods) - : this(connection, title, startDescription, endDescription, invoker, suppressHistory) + : base(connection, title, startDescription, suppressHistory) { + this.endDescription = endDescription; + this.invoker = invoker; ApiMethodsToRoleCheck = new RbacMethodList(rbacMethods); } diff --git a/XenModel/Actions/Folders/FolderAction.cs b/XenModel/Actions/Folders/FolderAction.cs index ab0e951c9..4f53d37e7 100644 --- a/XenModel/Actions/Folders/FolderAction.cs +++ b/XenModel/Actions/Folders/FolderAction.cs @@ -126,12 +126,11 @@ namespace XenAdmin.Actions protected void DeleteOrMove(List objects, Folder folder, Func cancelling) { - IXenConnection connection = null; + XenConnection connection = null; if (objects.Count > 0) - connection = objects[0].Connection; + connection = objects[0].Connection as XenConnection; - if (connection != null) - ((XenConnection)connection).OnBeforeMajorChange(true); + connection?.OnBeforeMajorChange(true); try { foreach(var obj in objects) @@ -144,8 +143,7 @@ namespace XenAdmin.Actions } finally { - if (connection != null) - ((XenConnection)connection).OnAfterMajorChange(true); + connection?.OnAfterMajorChange(true); } } diff --git a/XenModel/Actions/HealthCheck/GetHealthCheckAnalysisResultAction.cs b/XenModel/Actions/HealthCheck/GetHealthCheckAnalysisResultAction.cs index 3bc419a35..e982f4928 100644 --- a/XenModel/Actions/HealthCheck/GetHealthCheckAnalysisResultAction.cs +++ b/XenModel/Actions/HealthCheck/GetHealthCheckAnalysisResultAction.cs @@ -114,7 +114,7 @@ namespace XenAdmin.Actions } catch (Exception e) { - log.ErrorFormat("Exception while getting diagnostic result from {0}. Exception Message: {1} ", diagnosticDomainName, e.Message); + log.Error($"Exception while getting diagnostic result from {diagnosticDomainName}.", e); Description = Messages.ACTION_GET_HEALTH_CHECK_RESULT_FAILED; throw; } @@ -168,7 +168,7 @@ namespace XenAdmin.Actions } catch (Exception e) { - log.DebugFormat("Exception while getting analysis progress result from {0}. Exception Message: {1} ", diagnosticDomainName, e.Message); + log.Debug($"Exception while getting analysis progress result from {diagnosticDomainName}.", e); return -1; } } @@ -178,7 +178,7 @@ namespace XenAdmin.Actions /// /// /// - /// the analysis progress as pecentage, or -1 if the JSON object is invalid + /// the analysis progress as percentage, or -1 if the JSON object is invalid public static double ParseAnalysisProgress(string jsonString, string uploadUuid) { if (string.IsNullOrEmpty(jsonString)) @@ -192,7 +192,7 @@ namespace XenAdmin.Actions } catch (Exception e) { - log.DebugFormat("Exception while deserializing json: {0}. Exception Message: {1} ", jsonString, e.Message); + log.Debug($"Exception while deserializing json: {jsonString}.", e); return -1; } } diff --git a/XenModel/Actions/HealthCheck/HealthCheckAuthenticationAction.cs b/XenModel/Actions/HealthCheck/HealthCheckAuthenticationAction.cs index 88435105f..da333e1e1 100644 --- a/XenModel/Actions/HealthCheck/HealthCheckAuthenticationAction.cs +++ b/XenModel/Actions/HealthCheck/HealthCheckAuthenticationAction.cs @@ -33,7 +33,6 @@ using System; using System.IO; using System.Net; using System.Runtime.Serialization; -using XenAPI; using System.Web.Script.Serialization; namespace XenAdmin.Actions @@ -131,14 +130,14 @@ namespace XenAdmin.Actions } catch (WebException e) { - log.InfoFormat("WebException while getting identity token from {0}. Exception Message: {1} ", identityTokenDomainName, e.Message); + log.Info($"WebException while getting identity token from {identityTokenDomainName}.", e); if (e.Status == WebExceptionStatus.ProtocolError && ((HttpWebResponse) e.Response).StatusCode == HttpStatusCode.Forbidden) throw new HealthCheckAuthenticationException(Messages.HEALTH_CHECK_AUTHENTICATION_INVALID_CREDENTIALS, e); throw; } catch (Exception e) { - log.InfoFormat("Exception while getting identity token from {0}. Exception Message: {1} ", identityTokenDomainName, e.Message); + log.Info($"Exception while getting identity token from {identityTokenDomainName}.", e); throw; } } @@ -165,7 +164,7 @@ namespace XenAdmin.Actions } catch (Exception e) { - log.InfoFormat("Exception while getting upload grant token from {0}. Exception Message: {1} ", uploadGrantTokenDomainName, e.Message); + log.Info($"Exception while getting upload grant token from {uploadGrantTokenDomainName}.", e); throw; } } @@ -185,7 +184,7 @@ namespace XenAdmin.Actions } catch (Exception e) { - log.InfoFormat("Exception while getting upload token from {0}. Exception Message: {1} ", uploadTokenDomainName, e.Message); + log.Info($"Exception while getting upload token from {uploadTokenDomainName}.", e); throw; } } @@ -205,7 +204,7 @@ namespace XenAdmin.Actions } catch (Exception e) { - log.InfoFormat("Exception while getting diagnostic token from {0}. Exception Message: {1} ", diagnosticTokenDomainName, e.Message); + log.Info($"Exception while getting diagnostic token from {diagnosticTokenDomainName}.", e); throw; } } diff --git a/XenModel/Actions/HealthCheck/XenServerHealthCheckUpload.cs b/XenModel/Actions/HealthCheck/XenServerHealthCheckUpload.cs index a72b71a49..cea838ed7 100644 --- a/XenModel/Actions/HealthCheck/XenServerHealthCheckUpload.cs +++ b/XenModel/Actions/HealthCheck/XenServerHealthCheckUpload.cs @@ -119,7 +119,7 @@ namespace XenServerHealthCheck } catch (Exception e) { - log.ErrorFormat("Exception while initiating a new CIS upload: {0}", e); + log.Error("Exception while initiating a new CIS upload: ", e); } // Fail to initialize the upload request @@ -165,7 +165,7 @@ namespace XenServerHealthCheck } catch (Exception e) { - log.ErrorFormat("Failed to upload the chunk. The exception was: {0}", e); + log.Error("Failed to upload the chunk. The exception was: ", e); } return false; diff --git a/XenModel/Actions/Host/ActivationRequestAction.cs b/XenModel/Actions/Host/ActivationRequestAction.cs deleted file mode 100644 index 5270580a9..000000000 --- a/XenModel/Actions/Host/ActivationRequestAction.cs +++ /dev/null @@ -1,111 +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.IO; -using CookComputing.XmlRpc; -using log4net.Core; -using XenAPI; - - -namespace XenAdmin.Actions -{ - public class ActivationRequestAction : AsyncAction - { - private const int ACTIVATION_REQUEST_TIMEOUT = 30 * 1000; - - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private string _requestString; - - public ActivationRequestAction(string requestString) - : base(null, Messages.ACTIVATION_REQUEST_TITLE) - { - _requestString = requestString; - } - - protected override void Run() - { - Description = Messages.ACTIVATION_REQUEST_TITLE; - - ActivationProxy proxy = XmlRpcProxyGen.Create(); - proxy.Url = string.Format(InvisibleMessages.ACTIVATION_URL, InvisibleMessages.ACTIVATION_SERVER); - proxy.Timeout = ACTIVATION_REQUEST_TIMEOUT; - proxy.UseIndentation = false; - proxy.UserAgent = Session.UserAgent; - proxy.KeepAlive = true; - proxy.RequestEvent += LogRequest; - proxy.ResponseEvent += LogResponse; - proxy.Proxy = Session.Proxy; - - // response is the transaction id of this call to the activation service - - Result = proxy.process_reactivation_request(_requestString); - Description = Messages.COMPLETED; - } - - - private void LogRequest(object o, XmlRpcRequestEventArgs args) - { - LogSomething("Invoking XML-RPC method:", args.RequestStream); - } - - private void LogResponse(object o, XmlRpcResponseEventArgs args) - { - LogSomething("XML-RPC response:", args.ResponseStream); - } - - private void LogSomething(string msg, Stream s) - { - if (log.Logger.IsEnabledFor(Level.Debug)) - { - LogMsg(msg); - DumpStream(s); - } - } - - private void DumpStream(Stream s) - { - TextReader r = new StreamReader(s); - String l; - while ((l = r.ReadLine()) != null) - { - LogMsg(l); - } - } - - private void LogMsg(String msg) - { - log.Debug(msg); - - } - } -} - diff --git a/XenModel/Actions/Host/ApplyLicenseAction.cs b/XenModel/Actions/Host/ApplyLicenseAction.cs index 6803c0bfc..11c8ef4e0 100644 --- a/XenModel/Actions/Host/ApplyLicenseAction.cs +++ b/XenModel/Actions/Host/ApplyLicenseAction.cs @@ -45,16 +45,8 @@ namespace XenAdmin.Actions private readonly bool ActivateFreeLicense; - public ApplyLicenseAction(Network.IXenConnection connection, Host host, string filepath) - : base(connection, string.Format(Messages.APPLYLICENSE_TITLE, host.Name()), Messages.APPLYLICENSE_PREP) - { - this.Host = host; - this.Filepath = filepath; - this.ActivateFreeLicense = false; - } - - public ApplyLicenseAction(Network.IXenConnection connection, Host host, string filepath, bool activateFreeLicense) - : base(connection, string.Format(Messages.APPLYLICENSE_TITLE, host.Name()), Messages.APPLYLICENSE_PREP) + public ApplyLicenseAction(Host host, string filepath, bool activateFreeLicense = false) + : base(host.Connection, string.Format(Messages.APPLYLICENSE_TITLE, host.Name()), Messages.APPLYLICENSE_PREP) { this.Host = host; this.Filepath = filepath; diff --git a/XenModel/Actions/Host/EditMultipathAction.cs b/XenModel/Actions/Host/EditMultipathAction.cs index 89b5ed006..4c9dce5c2 100644 --- a/XenModel/Actions/Host/EditMultipathAction.cs +++ b/XenModel/Actions/Host/EditMultipathAction.cs @@ -96,7 +96,6 @@ namespace XenAdmin.Actions unplugException = e; log.Debug("Error occurred unplugging pbds", e); - log.Debug(e, e); throw; } @@ -116,7 +115,6 @@ namespace XenAdmin.Actions plugException = e; log.Debug("Error occurred replugging pbds", e); - log.Debug(e, e); } } diff --git a/XenModel/Actions/Host/EvacuateHostAction.cs b/XenModel/Actions/Host/EvacuateHostAction.cs index 2789170d9..be860bbb8 100644 --- a/XenModel/Actions/Host/EvacuateHostAction.cs +++ b/XenModel/Actions/Host/EvacuateHostAction.cs @@ -201,8 +201,7 @@ namespace XenAdmin.Actions } catch (Exception e) { - log.ErrorFormat("There was an exception putting the host {0} into maintenance mode. Removing other_config key.", Host.opaque_ref); - log.Error(e, e); + log.Error($"There was an exception putting the host {Host.opaque_ref} into maintenance mode. Removing other_config key.", e); Enable(isMaster ? 80 : 90, 100, false); throw; } diff --git a/XenModel/Actions/Host/RestartToolstackAction.cs b/XenModel/Actions/Host/RestartToolstackAction.cs index 90d6e70ff..a1edf0aaa 100644 --- a/XenModel/Actions/Host/RestartToolstackAction.cs +++ b/XenModel/Actions/Host/RestartToolstackAction.cs @@ -29,18 +29,7 @@ * SUCH DAMAGE. */ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading; - -using log4net; - using XenAdmin.Core; - using XenAPI; namespace XenAdmin.Actions diff --git a/XenModel/Actions/Host/SingleHostStatusAction.cs b/XenModel/Actions/Host/SingleHostStatusAction.cs index 53b9fe662..7dae05e8d 100644 --- a/XenModel/Actions/Host/SingleHostStatusAction.cs +++ b/XenModel/Actions/Host/SingleHostStatusAction.cs @@ -35,6 +35,7 @@ using System.Linq; using XenAdmin.Core; using XenAPI; using XenCenterLib; +using XenCenterLib.Archive; namespace XenAdmin.Actions { @@ -62,7 +63,7 @@ namespace XenAdmin.Actions Status = ReportStatus.compiling; string hostname = Helpers.GetName(host); - hostname = ZipStatusReportAction.SanitizeTarPathMember(hostname); + hostname = TarSanitization.SanitizeTarPathMember(hostname); if (hostname.Length > 20) hostname = hostname.Truncate(20); diff --git a/XenModel/Actions/Message/DestroyMessageAction.cs b/XenModel/Actions/Message/DestroyMessageAction.cs index 801150a5c..a24973c25 100644 --- a/XenModel/Actions/Message/DestroyMessageAction.cs +++ b/XenModel/Actions/Message/DestroyMessageAction.cs @@ -29,9 +29,6 @@ * SUCH DAMAGE. */ -using System; -using System.Collections.Generic; -using System.Text; using XenAdmin.Network; using XenAPI; @@ -39,8 +36,6 @@ namespace XenAdmin.Actions { public class DestroyMessageAction : PureAsyncAction { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private readonly string OpaqueRef; public DestroyMessageAction(IXenConnection connection, string messageopaqueref) diff --git a/XenModel/Actions/Network/NetworkAction.cs b/XenModel/Actions/Network/NetworkAction.cs index 6ff0f973e..a6b728f6d 100644 --- a/XenModel/Actions/Network/NetworkAction.cs +++ b/XenModel/Actions/Network/NetworkAction.cs @@ -41,8 +41,6 @@ namespace XenAdmin.Actions { public class NetworkAction : AsyncAction { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private enum network_actions { create, destroy, update }; private XenAPI.Network networkClone; diff --git a/XenModel/Actions/Perfmon/PerfmonDefinitionAction.cs b/XenModel/Actions/Perfmon/PerfmonDefinitionAction.cs index db85f8e69..01c3cc241 100644 --- a/XenModel/Actions/Perfmon/PerfmonDefinitionAction.cs +++ b/XenModel/Actions/Perfmon/PerfmonDefinitionAction.cs @@ -193,12 +193,12 @@ namespace XenAdmin.Actions } catch (Exception ex) { - log.DebugFormat("Perfmon refresh failed ({0}). Alerts will start being produced within half an hour.", ex.Message); + log.Debug("Perfmon refresh failed. Alerts will start being produced within half an hour.", ex); } } else { - log.DebugFormat("Perfmon refresh failed ({0}). Alerts will start being produced within half an hour.", e.Message); + log.Debug("Perfmon refresh failed. Alerts will start being produced within half an hour.", e); } } } diff --git a/XenModel/Actions/Pool/EnableHAAction.cs b/XenModel/Actions/Pool/EnableHAAction.cs index 867e69da0..9f3fc28c0 100644 --- a/XenModel/Actions/Pool/EnableHAAction.cs +++ b/XenModel/Actions/Pool/EnableHAAction.cs @@ -31,6 +31,7 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Text; using XenAdmin.Core; @@ -95,16 +96,27 @@ namespace XenAdmin.Actions log.DebugFormat("Setting ha_host_failures_to_tolerate to {0}", failuresToTolerate); XenAPI.Pool.set_ha_host_failures_to_tolerate(this.Session, Pool.opaque_ref, failuresToTolerate); - List> refs = new List>(); - foreach (SR sr in heartbeatSRs) + var refs = heartbeatSRs.Select(sr => new XenRef(sr.opaque_ref)).ToList(); + + try { - refs.Add(new XenRef(sr.opaque_ref)); + log.Debug("Enabling HA for pool " + Pool.Name()); + // NB the line below also performs a pool db sync + RelatedTask = XenAPI.Pool.async_enable_ha(this.Session, refs, new Dictionary()); + PollToCompletion(15, 100); + log.Debug("Success enabling HA on pool " + Pool.Name()); + } + catch (Failure f) + { + if (f.ErrorDescription.Count > 1 && f.ErrorDescription[0] == "VDI_NOT_AVAILABLE") + { + var vdi = Connection.Resolve(new XenRef(f.ErrorDescription[1])); + if (vdi != null) + throw new Failure(string.Format(FriendlyErrorNames.VDI_NOT_AVAILABLE, vdi.uuid)); + } + + throw; } - log.Debug("Enabling HA for pool " + Pool.Name()); - // NB the line below also performs a pool db sync - RelatedTask = XenAPI.Pool.async_enable_ha(this.Session, refs, new Dictionary()); - PollToCompletion(15, 100); - log.Debug("Success enabling HA on pool " + Pool.Name()); this.Description = Messages.COMPLETED; } diff --git a/XenModel/Actions/Pool/GetHeartbeatSRsAction.cs b/XenModel/Actions/Pool/GetHeartbeatSRsAction.cs index 682dd47f6..c3dbcdce6 100644 --- a/XenModel/Actions/Pool/GetHeartbeatSRsAction.cs +++ b/XenModel/Actions/Pool/GetHeartbeatSRsAction.cs @@ -38,8 +38,6 @@ namespace XenAdmin.Actions { public class GetHeartbeatSRsAction : AsyncAction { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private readonly List _srs = new List(); public GetHeartbeatSRsAction(Pool pool) diff --git a/XenModel/Actions/Pool_Patch/ApplyPatchAction.cs b/XenModel/Actions/Pool_Patch/ApplyPatchAction.cs index 542833189..03a4897a2 100644 --- a/XenModel/Actions/Pool_Patch/ApplyPatchAction.cs +++ b/XenModel/Actions/Pool_Patch/ApplyPatchAction.cs @@ -131,12 +131,12 @@ namespace XenAdmin.Actions XenRef patchRef = BringPatchToPoolForHost(host, patch); Description = string.Format(Messages.APPLYING_PATCH, patch.Name(), host.Name()); - log.Debug(Description); + log.DebugFormat("Applying update '{0}' to server '{1}'", patch.Name(), host.Name()); RelatedTask = Pool_patch.async_apply(Session, patchRef, host.opaque_ref); PollToCompletion(); - log.DebugFormat(Messages.APPLY_PATCH_LOG_MESSAGE, patch.Name(), host.Name(), Result); + log.DebugFormat("Applied update '{0}' to server '{1}'. Result: {2}.", patch.Name(), host.Name(), Result); Description = string.Format(Messages.PATCH_APPLIED, patch.Name(), host.Name()); } } diff --git a/XenModel/Actions/Pool_Patch/CheckDiskSpaceForPatchUploadAction.cs b/XenModel/Actions/Pool_Patch/CheckDiskSpaceForPatchUploadAction.cs index d784d9f17..40c6c885f 100644 --- a/XenModel/Actions/Pool_Patch/CheckDiskSpaceForPatchUploadAction.cs +++ b/XenModel/Actions/Pool_Patch/CheckDiskSpaceForPatchUploadAction.cs @@ -91,7 +91,7 @@ namespace XenAdmin.Actions } catch (Failure failure) { - log.WarnFormat("Getting disk space requirements on {0} failed with: {1}", Host.Name(), failure.Message); + log.Warn($"Getting disk space requirements on {Host.Name()} failed.", failure); } throw new NotEnoughSpaceException(Host.Name(), fileName, diskSpaceRequirements); } diff --git a/XenModel/Actions/Pool_Patch/GetDiskSpaceRequirementsAction.cs b/XenModel/Actions/Pool_Patch/GetDiskSpaceRequirementsAction.cs index 52c840dae..3f78d5550 100644 --- a/XenModel/Actions/Pool_Patch/GetDiskSpaceRequirementsAction.cs +++ b/XenModel/Actions/Pool_Patch/GetDiskSpaceRequirementsAction.cs @@ -233,7 +233,7 @@ namespace XenAdmin.Actions public string GetMessageForActionLink() { - return CanCleanup ? Messages.PATCHINGWIZARD_CLEANUP : Messages.PATCHINGWIZARD_MORE_INFO; + return CanCleanup ? Messages.PATCHINGWIZARD_CLEANUP : Messages.MORE_INFO; } } } \ No newline at end of file diff --git a/XenModel/Actions/Pool_Patch/PoolPatchCleanAction.cs b/XenModel/Actions/Pool_Patch/PoolPatchCleanAction.cs index 34691abed..698458436 100644 --- a/XenModel/Actions/Pool_Patch/PoolPatchCleanAction.cs +++ b/XenModel/Actions/Pool_Patch/PoolPatchCleanAction.cs @@ -37,8 +37,6 @@ namespace XenAdmin.Actions { public class PoolPatchCleanAction : AsyncAction { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private readonly Pool_patch patch; public PoolPatchCleanAction(Pool pool, Pool_patch patch, bool suppressHistory) diff --git a/XenModel/Actions/Pool_update/ApplyUpdateAction.cs b/XenModel/Actions/Pool_update/ApplyUpdateAction.cs index 877171227..0c35f64ce 100644 --- a/XenModel/Actions/Pool_update/ApplyUpdateAction.cs +++ b/XenModel/Actions/Pool_update/ApplyUpdateAction.cs @@ -59,7 +59,7 @@ namespace XenAdmin.Actions return; Description = string.Format(Messages.APPLYING_PATCH, update.Name(), host.Name()); - log.Debug(Description); + log.DebugFormat("Applying update '{0}' to server '{1}'...", update.Name(), host.Name()); var poolUpdates = new List(Connection.Cache.Pool_updates); var poolUpdate = poolUpdates.FirstOrDefault(u => u != null && string.Equals(u.uuid, update.uuid, StringComparison.OrdinalIgnoreCase)); diff --git a/XenModel/Actions/SR/SrRefreshAction.cs b/XenModel/Actions/SR/SrRefreshAction.cs index fecbdf53b..ae9b2dd6f 100644 --- a/XenModel/Actions/SR/SrRefreshAction.cs +++ b/XenModel/Actions/SR/SrRefreshAction.cs @@ -29,9 +29,6 @@ * SUCH DAMAGE. */ -using System; -using System.Collections.Generic; -using System.Text; using XenAPI; @@ -39,15 +36,12 @@ namespace XenAdmin.Actions { public class SrRefreshAction : PureAsyncAction { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public SrRefreshAction(SR Sr, bool suppress_history = false) : base(Sr.Connection, string.Format(Messages.SR_REFRESH_ACTION_TITLE, Sr.NameWithoutHost()), suppress_history) { SR = Sr; } - protected override void Run() { Description = Messages.SR_REFRESH_ACTION_DESC; diff --git a/XenModel/Actions/SR/SrRepairAction.cs b/XenModel/Actions/SR/SrRepairAction.cs index a6440abb3..93508b03f 100644 --- a/XenModel/Actions/SR/SrRepairAction.cs +++ b/XenModel/Actions/SR/SrRepairAction.cs @@ -72,8 +72,7 @@ namespace XenAdmin.Actions protected override void Run() { - log.Debug("Running SR repair"); - log.DebugFormat("SR='{0}'", SR.Name()); + log.DebugFormat("Repairing SR='{0}'", SR.Name()); //CA-176935, CA-173497 - we need to run Plug for the master first - creating a new list of hosts where the master is always first var allHosts = new List(); @@ -101,10 +100,7 @@ namespace XenAdmin.Actions return; } - for (int i = 0; i < _hostList.Count; i++) - { - log.DebugFormat("_hostList[{0}]='{1}'", i, _hostList[i].Name()); - } + log.DebugFormat("_hostList: {0}", string.Join(",", _hostList.Select(s => s.Name()))); int max = _hostList.Count * 2; int delta = 100 / max; @@ -120,10 +116,9 @@ namespace XenAdmin.Actions } } } - catch (Exception e) { - log.DebugFormat("Cluster pool resync failed with {0}", e.Message); + log.Debug("Cluster pool resync failed.", e); } foreach (Host host in _hostList) @@ -134,7 +129,7 @@ namespace XenAdmin.Actions if (template != null) { this.Description = string.Format(Messages.ACTION_SR_REPAIR_CREATE_PBD, Helpers.GetName(host)); - log.Debug(this.Description); + log.Debug($"Creating PBD for {Helpers.GetName(host)}."); var newPbd = new PBD { @@ -174,7 +169,7 @@ namespace XenAdmin.Actions if (thePBD != null && !thePBD.currently_attached) { this.Description = string.Format(Messages.ACTION_SR_REPAIR_PLUGGING_PBD, Helpers.GetName(host)); - log.Debug(this.Description); + log.Debug($"Plugging PBD for {Helpers.GetName(host)}."); try { diff --git a/XenModel/Actions/SR/SrTrimAction.cs b/XenModel/Actions/SR/SrTrimAction.cs index 261badc62..24b542fc9 100644 --- a/XenModel/Actions/SR/SrTrimAction.cs +++ b/XenModel/Actions/SR/SrTrimAction.cs @@ -57,7 +57,7 @@ namespace XenAdmin.Actions if (host == null) { - log.WarnFormat("Plugin call trim.do_trim({0}) is not possible. Reason: {1}", SR.uuid, Messages.SR_TRIM_NO_STORAGE_HOST_ERROR); + log.WarnFormat("Plugin call trim.do_trim({0}) is not possible. Reason: Cannot reclaim freed space, because the SR is detached.", SR.uuid); Exception = new Exception(Messages.SR_TRIM_NO_STORAGE_HOST_ERROR); return; } diff --git a/XenModel/Actions/StatusReportAction.cs b/XenModel/Actions/StatusReportAction.cs index c6505f763..3cc67394a 100644 --- a/XenModel/Actions/StatusReportAction.cs +++ b/XenModel/Actions/StatusReportAction.cs @@ -161,7 +161,7 @@ namespace XenAdmin.Actions } catch (Exception e) { - log.ErrorFormat("Exception while writing {0} file: {1}", fileName, e); + log.Error($"Exception while writing out {fileName}.", e); } } } diff --git a/XenModel/Actions/SupplementalPack/UploadSupplementalPackAction.cs b/XenModel/Actions/SupplementalPack/UploadSupplementalPackAction.cs index d98e88d32..f7e749762 100644 --- a/XenModel/Actions/SupplementalPack/UploadSupplementalPackAction.cs +++ b/XenModel/Actions/SupplementalPack/UploadSupplementalPackAction.cs @@ -47,7 +47,7 @@ namespace XenAdmin.Actions private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private readonly string suppPackFilePath; - private readonly long _totalUpdateSize; + private long _totalUpdateSize; private readonly List servers; private long totalCount; private long totalUploaded; @@ -77,7 +77,6 @@ namespace XenAdmin.Actions suppPackFilePath = path; _updateName = Path.GetFileNameWithoutExtension(suppPackFilePath); - _totalUpdateSize = (new FileInfo(path)).Length; servers = selectedServers; } @@ -85,6 +84,8 @@ namespace XenAdmin.Actions { SafeToExit = false; + _totalUpdateSize = new FileInfo(suppPackFilePath).Length; + var srList = SelectTargetSr(); if (srList.Count == 0) diff --git a/XenModel/Actions/Updates/DownloadAndUnzipXenServerPatchAction.cs b/XenModel/Actions/Updates/DownloadAndUnzipXenServerPatchAction.cs index 38a4a9159..ef7dadf41 100644 --- a/XenModel/Actions/Updates/DownloadAndUnzipXenServerPatchAction.cs +++ b/XenModel/Actions/Updates/DownloadAndUnzipXenServerPatchAction.cs @@ -50,8 +50,7 @@ namespace XenAdmin.Actions public class DownloadAndUnzipXenServerPatchAction : AsyncAction, IByteProgressAction { - private static readonly log4net.ILog log = - log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private const int SLEEP_TIME_TO_CHECK_DOWNLOAD_STATUS_MS = 900; private const int SLEEP_TIME_BEFORE_RETRY_MS = 5000; @@ -145,7 +144,11 @@ namespace XenAdmin.Actions log.ErrorFormat( "Error while downloading from '{0}'. Number of errors so far (including this): {1}. Trying maximum {2} times.", address, errorCount, MAX_NUMBER_OF_TRIES); - log.Error(patchDownloadError ?? new Exception(Messages.ERROR_UNKNOWN)); + + if (patchDownloadError == null) + log.Error("An unknown error occurred."); + else + log.Error(patchDownloadError); } } while (errorCount < MAX_NUMBER_OF_TRIES && needToRetry); } @@ -183,17 +186,17 @@ namespace XenAdmin.Actions private void ExtractFile() { ArchiveIterator iterator = null; + DotNetZipZipIterator zipIterator = null; + try { using (Stream stream = new FileStream(outputFileName, FileMode.Open, FileAccess.Read)) { iterator = ArchiveFactory.Reader(ArchiveFactory.Type.Zip, stream); - DotNetZipZipIterator zipIterator = iterator as DotNetZipZipIterator; + zipIterator = iterator as DotNetZipZipIterator; + if (zipIterator != null) - { - zipIterator.CurrentFileExtractProgressChanged += - archiveIterator_CurrentFileExtractProgressChanged; - } + zipIterator.CurrentFileExtractProgressChanged += archiveIterator_CurrentFileExtractProgressChanged; while (iterator.HasNext()) { @@ -215,25 +218,22 @@ namespace XenAdmin.Actions PatchPath = path; log.InfoFormat("Update file extracted to '{0}'", path); - break; } } } - - if (zipIterator != null) - { - zipIterator.CurrentFileExtractProgressChanged -= archiveIterator_CurrentFileExtractProgressChanged; - } } } catch (Exception e) { - log.ErrorFormat("Exception occurred when extracting downloaded archive: {0}", e.Message); + log.Error("Exception occurred when extracting downloaded archive.", e); throw new Exception(Messages.DOWNLOAD_AND_EXTRACT_ACTION_EXTRACTING_ERROR); } finally { + if (zipIterator != null) + zipIterator.CurrentFileExtractProgressChanged -= archiveIterator_CurrentFileExtractProgressChanged; + if (iterator != null) iterator.Dispose(); @@ -283,7 +283,7 @@ namespace XenAdmin.Actions } catch (Exception e) { - log.ErrorFormat("Exception occurred when preparing archive: {0}", e.Message); + log.Error("Exception occurred when preparing archive.", e); throw; } } @@ -299,9 +299,9 @@ namespace XenAdmin.Actions MarkCompleted(); } - void archiveIterator_CurrentFileExtractProgressChanged(object sender, ExtractProgressChangedEventArgs e) + void archiveIterator_CurrentFileExtractProgressChanged(long bytesTransferred, long totalBytesToTransfer) { - int pc = downloadUpdate ? 95 + (int)(5.0 * e.BytesTransferred / e.TotalBytesToTransfer) : (int)(100.0 * e.BytesTransferred / e.TotalBytesToTransfer); + int pc = downloadUpdate ? 95 + (int)(5.0 * bytesTransferred / totalBytesToTransfer) : (int)(100.0 * bytesTransferred / totalBytesToTransfer); PercentComplete = pc; } diff --git a/XenModel/Actions/Updates/DownloadUpdatesXmlAction.cs b/XenModel/Actions/Updates/DownloadUpdatesXmlAction.cs index 9f3ea84fd..8dfa662e6 100644 --- a/XenModel/Actions/Updates/DownloadUpdatesXmlAction.cs +++ b/XenModel/Actions/Updates/DownloadUpdatesXmlAction.cs @@ -45,7 +45,6 @@ namespace XenAdmin.Actions { public class DownloadUpdatesXmlAction : AsyncAction { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private const string XenCenterVersionsNode = "xencenterversions"; private const string XenServerVersionsNode = "serverversions"; private const string PatchesNode = "patches"; @@ -252,6 +251,11 @@ namespace XenAdmin.Actions string patchUuid = ""; bool presentAsUpdate = false; string minXcVersion = ""; + string hotfixEligibility = ""; + string hotfixEligibilityPremiumDate = ""; + string hotfixEligibilityNoneDate = ""; + string eolDate = ""; + foreach (XmlAttribute attrib in version.Attributes) { @@ -275,6 +279,14 @@ namespace XenAdmin.Actions presentAsUpdate = attrib.Value.ToUpperInvariant() == bool.TrueString.ToUpperInvariant(); else if (attrib.Name == "minimum-xc-version") minXcVersion = attrib.Value; + else if (attrib.Name == "hotfix-eligibility") + hotfixEligibility = attrib.Value; + else if (attrib.Name == "hotfix-eligibility-premium-date") + hotfixEligibilityPremiumDate = attrib.Value; + else if (attrib.Name == "hotfix-eligibility-none-date") + hotfixEligibilityNoneDate = attrib.Value; + else if (attrib.Name == "eol-date") + eolDate = attrib.Value; } List patches = new List(); @@ -310,7 +322,7 @@ namespace XenAdmin.Actions } XenServerVersions.Add(new XenServerVersion(version_oem, name, is_latest, is_latest_cr, url, patches, minimalPatches, timestamp, - buildNumber, patchUuid, presentAsUpdate, minXcVersion)); + buildNumber, patchUuid, presentAsUpdate, minXcVersion, hotfixEligibility, hotfixEligibilityPremiumDate, hotfixEligibilityNoneDate, eolDate)); } } } diff --git a/XenModel/Actions/Updates/XenServerVersion.cs b/XenModel/Actions/Updates/XenServerVersion.cs index d82fa568a..596ccf5e9 100644 --- a/XenModel/Actions/Updates/XenServerVersion.cs +++ b/XenModel/Actions/Updates/XenServerVersion.cs @@ -47,6 +47,10 @@ namespace XenAdmin.Core public string PatchUuid; public bool PresentAsUpdate; public Version MinimumXcVersion; + public hotfix_eligibility HotfixEligibility; + public DateTime HotfixEligibilityPremiumDate; + public DateTime HotfixEligibilityNoneDate; + public DateTime EolDate; /// /// A host of this version is considered up-to-date when it has all the patches in this list installed on it @@ -72,7 +76,8 @@ namespace XenAdmin.Core /// /// Indicates that the new version (usually a CU) should be presented as an update where possible public XenServerVersion(string version_oem, string name, bool latest, bool latestCr, string url, List patches, List minimumPatches, - string timestamp, string buildNumber, string patchUuid, bool presentAsUpdate, string minXcVersion) + string timestamp, string buildNumber, string patchUuid, bool presentAsUpdate, string minXcVersion, string hotfixEligibility, string hotfixEligibilityPremiumDate, + string hotfixEligibilityNoneDate, string eolDate) { ParseVersion(version_oem); Name = name; @@ -86,6 +91,10 @@ namespace XenAdmin.Core PatchUuid = patchUuid; PresentAsUpdate = presentAsUpdate; ParseMinXcVersion(minXcVersion); + Enum.TryParse(hotfixEligibility, out HotfixEligibility); + DateTime.TryParse(hotfixEligibilityPremiumDate, out HotfixEligibilityPremiumDate); + DateTime.TryParse(hotfixEligibilityNoneDate, out HotfixEligibilityNoneDate); + DateTime.TryParse(eolDate, out EolDate); } private void ParseVersion(string version_oem) @@ -115,6 +124,25 @@ namespace XenAdmin.Core return !string.IsNullOrEmpty(PatchUuid); } } + } + public enum hotfix_eligibility + { + /// + /// All customers are eligible for hotfixes. + /// + all, + /// + /// Only paying customers are eligible for hotfixes. + /// + premium, + /// + /// The only hotfix available is a Cumulative Update, for paying customers. + /// + cu, + /// + /// The version has reached EOL for all customers and no more hotfixes will be released. + /// + none } } \ No newline at end of file diff --git a/XenModel/Actions/VBD/VbdSaveAndPlugAction.cs b/XenModel/Actions/VBD/VbdSaveAndPlugAction.cs index 509b0fd83..04aa36f4f 100644 --- a/XenModel/Actions/VBD/VbdSaveAndPlugAction.cs +++ b/XenModel/Actions/VBD/VbdSaveAndPlugAction.cs @@ -41,23 +41,17 @@ namespace XenAdmin.Actions public class VbdSaveAndPlugAction : AsyncAction { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private readonly Action _ShowMustRebootBoxCD; - private readonly Action _ShowVBDWarningBox; - private readonly XenAPI.VBD vbd; - private bool InstallingTools = false; + private readonly VBD vbd; - public VbdSaveAndPlugAction(VM vm, XenAPI.VBD vbd, string vdiName, XenAPI.Session session, bool installingTools, bool supress, Action showMustRebootBoxCD, Action showVBDWarningBox) - : this(vm, vbd, vdiName, session, supress,showMustRebootBoxCD,showVBDWarningBox) + /// + /// Subscribe to this even unless installing tools + /// + public event Action ShowUserInstruction; + + public VbdSaveAndPlugAction(VM vm, VBD vbd, string vdiName, Session session, bool suppress) + : base(vm.Connection, string.Format(Messages.ATTACHING_VIRTUAL_DISK, vdiName, vm.Name()), "", suppress) { - InstallingTools = installingTools; - } - - public VbdSaveAndPlugAction(VM vm, XenAPI.VBD vbd, string vdiName, XenAPI.Session session, bool supress, Action showMustRebootBoxCD, Action showVBDWarningBox) - : base(vm.Connection, string.Format(Messages.ATTACHING_VIRTUAL_DISK, vdiName, vm.Name()), "", supress) - { - _ShowVBDWarningBox = showVBDWarningBox; - _ShowMustRebootBoxCD = showMustRebootBoxCD; VM = vm; this.vbd = vbd; // Preserve existing session if provided. @@ -82,7 +76,7 @@ namespace XenAdmin.Actions // Then if we can plug the vbd in, do so... if (vbdServerRef != null && - XenAPI.VBD.get_allowed_operations(Session, vbdServerRef).Contains(XenAPI.vbd_operations.plug)) + VBD.get_allowed_operations(Session, vbdServerRef).Contains(vbd_operations.plug)) { log.DebugFormat("Attempting to hot plug VBD {0}.", vbd.uuid); @@ -92,23 +86,13 @@ namespace XenAdmin.Actions } else { - XenAPI.VM vm = this.Connection.Resolve(vbd.VM); - if (vm != null && vm.power_state != XenAPI.vm_power_state.Halted) + VM vm = this.Connection.Resolve(vbd.VM); + if (vm != null && vm.power_state != vm_power_state.Halted) { - if (InstallingTools) - { - //Program.Invoke(Program.MainWindow, ShowMustRebootBox); - // this is now done inside InstallToolsCommand - } - else if (vbd.type == XenAPI.vbd_type.CD) - { - _ShowMustRebootBoxCD(); - } + if (vbd.type == vbd_type.CD) + ShowUserInstruction?.Invoke(Messages.NEW_DVD_DRIVE_REBOOT); else - { - // Plug could not happen straight away: show warning. - _ShowVBDWarningBox(); - } + ShowUserInstruction?.Invoke(Messages.NEWDISKWIZARD_MESSAGE); } } } diff --git a/XenModel/Actions/VM/CreateCdDriveAction.cs b/XenModel/Actions/VM/CreateCdDriveAction.cs index 22495b70e..66e787548 100644 --- a/XenModel/Actions/VM/CreateCdDriveAction.cs +++ b/XenModel/Actions/VM/CreateCdDriveAction.cs @@ -38,17 +38,15 @@ namespace XenAdmin.Actions { public class CreateCdDriveAction : AsyncAction { - private readonly bool InstallingTools; - private Action _showMustRebootBoxCD; - private Action _showVBDWarningBox; + /// + /// Subscribe to this even unless installing tools + /// + public event Action ShowUserInstruction; - public CreateCdDriveAction(VM vm, bool installingTools, Action showMustRebootBoxCD, Action showVBDWarningBox) + public CreateCdDriveAction(VM vm) : base(vm.Connection, string.Format(Messages.NEW_DVD_DRIVE_CREATE_TITLE, vm.Name())) { - _showMustRebootBoxCD = showMustRebootBoxCD; - _showVBDWarningBox = showVBDWarningBox; VM = vm; - InstallingTools = installingTools; #region RBAC Dependencies ApiMethodsToRoleCheck.Add("vm.assert_agile"); @@ -87,7 +85,8 @@ namespace XenAdmin.Actions mode = XenAPI.vbd_mode.RO }; - VbdSaveAndPlugAction cdCreate = new VbdSaveAndPlugAction(VM, cdDrive, Messages.DVD_DRIVE, Session, InstallingTools, true,_showMustRebootBoxCD,_showVBDWarningBox); + var cdCreate = new VbdSaveAndPlugAction(VM, cdDrive, Messages.DVD_DRIVE, Session, true); + cdCreate.ShowUserInstruction += msg => ShowUserInstruction?.Invoke(msg); cdCreate.RunExternal(Session); Description = Messages.NEW_DVD_DRIVE_DONE; } diff --git a/XenModel/Actions/VM/CreateVMAction.cs b/XenModel/Actions/VM/CreateVMAction.cs index efa46ab0e..beee5c687 100644 --- a/XenModel/Actions/VM/CreateVMAction.cs +++ b/XenModel/Actions/VM/CreateVMAction.cs @@ -87,8 +87,7 @@ namespace XenAdmin.Actions.VMActions private readonly bool StartAfter; private readonly Host CopyBiosStringsFrom; private readonly SR FullCopySR; - private readonly GPU_group GpuGroup; - private readonly VGPU_type VgpuType; + private readonly List vGpus; private readonly long CoresPerSocket; private readonly string cloudConfigDriveTemplateText; private SR firstSR = null; @@ -140,7 +139,7 @@ namespace XenAdmin.Actions.VMActions List disks, SR fullCopySR, List vifs, bool startAfter, Action warningDialogHAInvalidConfig, Action startDiagnosisForm, - GPU_group gpuGroup, VGPU_type vgpuType, bool modifyVgpuSettings, long coresPerSocket, string cloudConfigDriveTemplateText) + List vGpus, bool modifyVgpuSettings, long coresPerSocket, string cloudConfigDriveTemplateText) : base(connection, string.Format(Messages.CREATE_VM, name), string.Format(Messages.CREATE_VM_FROM_TEMPLATE, name, Helpers.GetName(template))) { @@ -165,8 +164,7 @@ namespace XenAdmin.Actions.VMActions StartAfter = startAfter; _warningDialogHAInvalidConfig = warningDialogHAInvalidConfig; _startDiagnosisForm = startDiagnosisForm; - GpuGroup = gpuGroup; - VgpuType = vgpuType; + this.vGpus = vGpus; CoresPerSocket = coresPerSocket; this.cloudConfigDriveTemplateText = cloudConfigDriveTemplateText; @@ -174,7 +172,7 @@ namespace XenAdmin.Actions.VMActions if (HomeServer != null || pool_of_one != null) // otherwise we have no where to put the action AppliesTo.Add(HomeServer != null ? HomeServer.opaque_ref : pool_of_one.opaque_ref); - assignOrRemoveVgpu = GpuGroup != null && VgpuType != null || modifyVgpuSettings && Helpers.GpuCapability(Connection); + assignOrRemoveVgpu = vGpus != null && vGpus.Count > 0 || modifyVgpuSettings && Helpers.GpuCapability(Connection); #region RBAC Dependencies @@ -302,7 +300,17 @@ namespace XenAdmin.Actions.VMActions { if (assignOrRemoveVgpu) { - var action = new GpuAssignAction(VM, GpuGroup, VgpuType); + var newvGpus = new List(); + foreach (var vGpu in vGpus) + { + newvGpus.Add(new VGPU + { + GPU_group = new XenRef(vGpu.GPU_group.opaque_ref), + type = new XenRef(vGpu.type.opaque_ref), + device = vGpu.device + }); + } + var action = new GpuAssignAction(VM, newvGpus); action.RunExternal(Session); } } diff --git a/XenModel/Actions/VM/ExportVmAction.cs b/XenModel/Actions/VM/ExportVmAction.cs index 925725629..f8ee62953 100644 --- a/XenModel/Actions/VM/ExportVmAction.cs +++ b/XenModel/Actions/VM/ExportVmAction.cs @@ -108,10 +108,10 @@ namespace XenAdmin.Actions Uri.EscapeDataString(this.VM.uuid), Uri.EscapeDataString(this.RelatedTask.opaque_ref)); - log.DebugFormat("Exporting {0} from {1} to {2}", VM.Name(), uriBuilder.ToString(), _filename); + log.DebugFormat("Exporting {0} to {1}", VM.Name(), _filename); // The DownloadFile call will block, so we need a separate thread to poll for task status. - Thread taskThread = new Thread((ThreadStart)progressPoll); + Thread taskThread = new Thread(progressPoll); taskThread.Name = "Progress polling thread for ExportVmAction for " + VM.Name().Ellipsise(20); taskThread.IsBackground = true; taskThread.Start(); @@ -146,8 +146,8 @@ namespace XenAdmin.Actions if (!Win32.FlushFileBuffers(fs.SafeFileHandle)) { Win32Exception exn = new Win32Exception(System.Runtime.InteropServices.Marshal.GetLastWin32Error()); - log.ErrorFormat("FlushFileBuffers failed in ExportVmAction.\nNativeErrorCode={0}\nMessage={1}\nToString={2}", - exn.NativeErrorCode, exn.Message, exn.ToString()); + log.Error(string.Format("FlushFileBuffers failed in ExportVmAction with NativeErrorCode={0}", + exn.NativeErrorCode), exn); } } @@ -157,7 +157,7 @@ namespace XenAdmin.Actions int i = 0; long filesize = new FileInfo(tmpFile).Length / 50; //Div by 50 to save doing the * 50 in the callback - Export.verifyCallback callback = new Export.verifyCallback(delegate(uint size) + Export.verifyCallback callback = size => { read += size; i++; @@ -169,7 +169,7 @@ namespace XenAdmin.Actions PercentComplete = 50 + (int)(read / filesize); i = 0; } - }); + }; try { @@ -179,7 +179,7 @@ namespace XenAdmin.Actions this.Description = Messages.ACTION_EXPORT_VERIFY; export = new Export(); - export.verify(fs, null, (Export.cancellingCallback)delegate() { return Cancelling; }, callback); + export.verify(fs, null, () => Cancelling, callback); } } catch (Exception e) @@ -216,20 +216,19 @@ namespace XenAdmin.Actions var fi = new FileInfo(tmpFile); log.DebugFormat("Progress of the action until exception: {0}", PercentComplete); log.DebugFormat("Size file exported until exception: {0}", fi.Length); + try { using (Stream stream = new FileStream(tmpFile, FileMode.Open, FileAccess.Read)) + using (var iterator = ArchiveFactory.Reader(ArchiveFactory.Type.Tar, stream)) { - ArchiveIterator iterator = ArchiveFactory.Reader(ArchiveFactory.Type.Tar, - stream); while (iterator.HasNext()) - { log.DebugFormat("Tar entry: {0} {1}", iterator.CurrentFileName(), iterator.CurrentFileSize()); - } } } catch (Exception) {} + log.DebugFormat("Deleting {0}", tmpFile); File.Delete(tmpFile); throw new Exception(Description); @@ -252,9 +251,9 @@ namespace XenAdmin.Actions { using (FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write)) { - using (Stream http = HTTPHelper.GET(uri, Connection, true, true)) + using (Stream http = HTTPHelper.GET(uri, Connection, true)) { - new Export().verify(http, fs, (Export.cancellingCallback)delegate() { return Cancelling; }); + new Export().verify(http, fs, () => Cancelling); } } } diff --git a/XenModel/Actions/VM/GpuAssignAction.cs b/XenModel/Actions/VM/GpuAssignAction.cs index 0d0baa7d1..d30d0ce26 100644 --- a/XenModel/Actions/VM/GpuAssignAction.cs +++ b/XenModel/Actions/VM/GpuAssignAction.cs @@ -34,43 +34,50 @@ using System.Collections.Generic; using System.Text; using XenAdmin.Core; - using XenAPI; namespace XenAdmin.Actions { public class GpuAssignAction : PureAsyncAction { - VM vm; - GPU_group gpu_group; - private VGPU_type vgpuType; + private readonly VM vm; + private readonly List vGpus; - public GpuAssignAction(VM vm, GPU_group gpu_group, VGPU_type vgpuType) + public GpuAssignAction(VM vm, List vGpus) : base(vm.Connection, "Set GPU", true) { this.vm = vm; - this.gpu_group = gpu_group; - this.vgpuType = vgpuType; + this.vGpus = vGpus; } protected override void Run() { - // Remove any existing VGPUs before adding new ones - foreach (VGPU vgpu in vm.Connection.ResolveAll(vm.VGPUs)) + var vgpuSetToRemove = new HashSet(vm.Connection.ResolveAll(vm.VGPUs)); + // Existing vGPUs must have opaque_ref + var vgpuSetToUnchanged = new HashSet(vGpus.FindAll(x => x.opaque_ref != null)); + + vgpuSetToRemove.ExceptWith(vgpuSetToUnchanged); + + foreach (VGPU vgpu in vgpuSetToRemove) VGPU.destroy(Session, vgpu.opaque_ref); - if (gpu_group == null) // The VM doesn't want a VGPU + // New added vGPUs haven't opaque_ref + foreach (var vGpu in vGpus.FindAll(x => x.opaque_ref == null)) + AddGpu(vm.Connection.Resolve(vGpu.GPU_group), vm.Connection.Resolve(vGpu.type), vGpu.device ?? "0"); + } + + private void AddGpu(GPU_group gpuGroup, VGPU_type vGpuType, string device = "0") + { + if (gpuGroup == null) return; - // Add the new VGPU - string device = "0"; // fixed at the moment, see PR-1060 - Dictionary other_config = new Dictionary(); + Dictionary other_config = new Dictionary(); - if (Helpers.FeatureForbidden(vm, Host.RestrictVgpu) || vgpuType == null) - VGPU.async_create(Session, vm.opaque_ref, gpu_group.opaque_ref, device, other_config); + if (Helpers.FeatureForbidden(vm, Host.RestrictVgpu) || vGpuType == null) + VGPU.async_create(Session, vm.opaque_ref, gpuGroup.opaque_ref, device, other_config); else - VGPU.async_create(Session, vm.opaque_ref, gpu_group.opaque_ref, device, - other_config, vgpuType.opaque_ref); + VGPU.async_create(Session, vm.opaque_ref, gpuGroup.opaque_ref, device, + other_config, vGpuType.opaque_ref); } } } diff --git a/XenModel/Actions/VM/ImportVmAction.cs b/XenModel/Actions/VM/ImportVmAction.cs index 8a02ddd00..bc5735df5 100644 --- a/XenModel/Actions/VM/ImportVmAction.cs +++ b/XenModel/Actions/VM/ImportVmAction.cs @@ -30,12 +30,9 @@ */ using System; -using System.ComponentModel; using System.Collections.Generic; using System.IO; using System.Linq; -using System.Text; -using System.Net; using XenAdmin.Core; using XenAPI; using System.Threading; @@ -242,8 +239,7 @@ namespace XenAdmin.Actions } catch (Exception e) { - log.ErrorFormat("Exception while deleting network {0}. Squashing.", network.Name()); - log.Error(e, e); + log.Error($"Exception while deleting network {network.Name()}. Squashing.", e); } } } @@ -363,17 +359,17 @@ namespace XenAdmin.Actions // CA-33665: We found a situation before were the task handling had been messed up, we should check the exit code as a failsafe if (exitCode != 0) - throw new Failure(new[] {Messages.IMPORT_GENERIC_FAIL}); + throw new Failure(Messages.IMPORT_GENERIC_FAIL); return Task.get_result(Session, RelatedTask); } - catch (Exception exn) + catch { List excep = TaskErrorInfo(); if (excep.Count > 0) throw new Failure(excep); else - throw exn; + throw; } finally { diff --git a/XenModel/Actions/VM/InstallPVToolsAction.cs b/XenModel/Actions/VM/InstallPVToolsAction.cs index cbfed693c..cea8a635a 100644 --- a/XenModel/Actions/VM/InstallPVToolsAction.cs +++ b/XenModel/Actions/VM/InstallPVToolsAction.cs @@ -41,7 +41,6 @@ namespace XenAdmin.Actions /// public class InstallPVToolsAction : AsyncAction { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private readonly bool _searchHiddenIsOs; public InstallPVToolsAction(VM vm, bool searchHiddenISOs) diff --git a/XenModel/Actions/WLB/DisableWLBAction.cs b/XenModel/Actions/WLB/DisableWLBAction.cs index eeacf5b4a..b6331f2d6 100644 --- a/XenModel/Actions/WLB/DisableWLBAction.cs +++ b/XenModel/Actions/WLB/DisableWLBAction.cs @@ -89,7 +89,7 @@ namespace XenAdmin.Actions.Wlb //Force disabling of WLB XenAPI.Pool.set_wlb_enabled(this.Session, Pool.opaque_ref, false); WlbServerState.SetState(this.Session, Pool, WlbServerState.ServerState.ConnectionError, (Failure)ex); - log.Debug(string.Format(Messages.ACTION_WLB_DECONFIGURE_FAILED, Pool.Name(), ex.Message)); + log.Debug($"Disconnecting Workload Balancing failed on pool {Pool.Name()}. Workload Balancing has been paused.", ex); throw new Exception(string.Format(Messages.ACTION_WLB_DECONFIGURE_FAILED, Pool.Name(), ex.Message)); } finally diff --git a/XenModel/Actions/XCM/ActivateConversionVpxAction.cs b/XenModel/Actions/XCM/ActivateConversionVpxAction.cs new file mode 100644 index 000000000..3862e3dcf --- /dev/null +++ b/XenModel/Actions/XCM/ActivateConversionVpxAction.cs @@ -0,0 +1,146 @@ +/* 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.Linq; +using System.Threading; +using XenAPI; + + +namespace XenAdmin.Actions.Xcm +{ + public class ActivateConversionVpxAction : AsyncAction + { + private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + + private const int TIMEOUT = 2 * 60 * 1000; //milliseconds + private const int SLEEP = 2000; //milliseconds + + public ActivateConversionVpxAction(VM conversionVm) + : base(conversionVm?.Connection, "", true) + { + ConversionVm = conversionVm; + } + + public VM ConversionVm { get; private set; } + public string ServiceIp { get; private set; } + + protected override void Run() + { + if (ConversionVm == null) + throw new Exception(Messages.CONVERSION_CANNOT_FIND_VPX); + + switch (ConversionVm.power_state) + { + case vm_power_state.Halted: + case vm_power_state.Paused: + case vm_power_state.Suspended: + case vm_power_state.Running: + break; + default: + log.Error($"The conversion VPX {ConversionVm.uuid} is in an unknown power state"); + throw new Exception(Messages.CONVERSION_VPX_UNKNOWN_POWER_STATE); + } + + try + { + switch (ConversionVm.power_state) + { + case vm_power_state.Halted: + Description = Messages.CONVERSION_VPX_START; + VM.start(Connection.Session, ConversionVm.opaque_ref, false, false); + break; + case vm_power_state.Paused: + Description = Messages.CONVERSION_VPX_UNPAUSE; + VM.unpause(Connection.Session, ConversionVm.opaque_ref); + break; + case vm_power_state.Suspended: + Description = Messages.CONVERSION_VPX_RESUME; + VM.resume(Connection.Session, ConversionVm.opaque_ref, false, false); + break; + } + } + catch (Exception e) + { + if (e is Failure f && f.ErrorDescription.Count > 0 && f.ErrorDescription[0] == Failure.VM_BAD_POWER_STATE) + { + //ignore + } + else + { + log.Error($"Failed to activate conversion VPX {ConversionVm.uuid}", e); + throw new Exception(Messages.CONVERSION_INITIALIZING_VPX_FAILURE); + } + } + + Description = Messages.CONVERSION_VPX_OBTAIN_IP; + + string ipAddress = null; + var tries = TIMEOUT / SLEEP; + + while (tries > 0) + { + if (Cancelling) + throw new CancelledException(); + + if (Helper.IsNullOrEmptyOpaqueRef(ConversionVm.guest_metrics.opaque_ref)) + { + ConversionVm = Connection.Resolve(new XenRef(ConversionVm.opaque_ref)); + } + else + { + var metrics = Connection.Resolve(ConversionVm.guest_metrics); + if (metrics != null) + { + // device 0 is the internal network for the VM; find an external one + var vif = Connection.ResolveAll(ConversionVm.VIFs).FirstOrDefault(v => + v.device != "0" && metrics.networks.TryGetValue($"{v.device}/ip", out ipAddress)); + + if (vif != null) + break; + } + } + + Thread.Sleep(SLEEP); + tries--; + } + + if (string.IsNullOrEmpty(ipAddress)) + { + log.Error($"Cannot obtain an IP address for conversion VPX {ConversionVm.uuid}."); + throw new Exception(Messages.CONVERSION_CANNOT_OBTAIN_VPX_IP); + } + + ServiceIp = ipAddress; + } + } +} diff --git a/XenModel/Actions/ZipStatusReportAction.cs b/XenModel/Actions/ZipStatusReportAction.cs index 2049c4681..0064f4138 100644 --- a/XenModel/Actions/ZipStatusReportAction.cs +++ b/XenModel/Actions/ZipStatusReportAction.cs @@ -30,10 +30,7 @@ */ using System; -using System.Collections.Generic; using System.IO; -using System.Text; - using XenCenterLib.Archive; @@ -47,27 +44,24 @@ namespace XenAdmin.Actions /// The folder containing the raw files as downloaded from the server /// private readonly string _inputTempFolder; + + /// + /// Temporary folder in which we assemble the log files from the server + /// before repackaging them in a single zip file. + /// + private string _extractTempDir; + /// /// The destination zip file for the repackaged server log files /// private readonly string _destFile; /// - /// A dictionary mapping file to original modification time. The filepath used is the full path - /// within the staging directory (extractTempDir) where we put all the files before repacking them. - /// The modification time either comes from the source tarball (if downloaded from a server), or - /// the source file (if copying a local file). - /// - private readonly Dictionary ModTimes = new Dictionary(); - - private long bytesToCompress = 1; - - /// - /// Constructor to zip downloaded file action + /// Creates a new instance of the action for zipping downloaded server log files /// /// Temporary folder to store the downloaded logs /// The target file to store the compressed result - /// Whether to suppress history in the event tab + /// Whether to suppress history in the Events TabPage public ZipStatusReportAction(string tempFolder, string destFile, bool suppressHistory=true) : base(null, Messages.BUGTOOL_SAVING, Messages.BUGTOOL_SAVING, suppressHistory) { @@ -77,335 +71,147 @@ namespace XenAdmin.Actions protected override void Run() { - // The directory in which we assemble the log files from the server before repackaging them - // in a single zip file. - string extractTempDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); + do + { + _extractTempDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); + } while (Directory.Exists(_extractTempDir)); + + Directory.CreateDirectory(_extractTempDir); try { // Calculate total bytes to save - long bytesToExtract = 1, bytesExtracted = 0; - foreach (string inputFile in Directory.GetFiles(_inputTempFolder)) - { + long bytesToCompress = 0, bytesToExtract = 0, bytesExtracted = 0; + + var files = Directory.GetFiles(_inputTempFolder); + + foreach (string inputFile in files) bytesToExtract += new FileInfo(inputFile).Length; - } - // Create temp dir for extracted stuff - if (Directory.Exists(extractTempDir)) - { - Directory.Delete(extractTempDir); - } - Directory.CreateDirectory(extractTempDir); - - // Extract each of the raw server files to the temp extraction directory - foreach (string inputFile in Directory.GetFiles(_inputTempFolder)) + foreach (string inputFile in files) { if (inputFile.ToLowerInvariant().EndsWith(".tar")) { - // Un-tar it. SharpZipLib doesn't account for illegal filenames or characters in - // filenames (e.g. ':'in Windows), so first we stream the tar to a new tar, - // sanitizing any bad filenames as we go. + // Sanitize and un-tar each of the raw server tars to the temp extraction directory - // We also need to record the modification times of all the files, so that we can - // restore them into the final zip. - string outFilename = inputFile.Substring(0, inputFile.Length - 4); if (outFilename.Length == 0) outFilename = Path.GetRandomFileName(); - string outputDir = Path.Combine(extractTempDir, Path.GetFileName(outFilename)); + string outputDir = Path.Combine(_extractTempDir, Path.GetFileName(outFilename)); string sanitizedTar = Path.GetTempFileName(); + TarSanitization.SanitizeTarForWindows(inputFile, sanitizedTar, CheckCancellation); - using (ArchiveIterator tarIterator = ArchiveFactory.Reader(ArchiveFactory.Type.Tar, File.OpenRead(inputFile))) + using (FileStream fs = File.OpenRead(sanitizedTar)) + using (ArchiveIterator tarIterator = ArchiveFactory.Reader(ArchiveFactory.Type.Tar, fs)) { - using (ArchiveWriter tarWriter = ArchiveFactory.Writer(ArchiveFactory.Type.Tar, File.OpenWrite(sanitizedTar))) - { - Dictionary usedNames = new Dictionary(); - while (tarIterator.HasNext()) - { - if (Cancelling) - { - throw new CancelledException(); - } - - using( MemoryStream ms = new MemoryStream() ) - { - tarIterator.ExtractCurrentFile(ms); - string saneName = SanitizeTarName(tarIterator.CurrentFileName(), usedNames); - tarWriter.Add(ms, saneName); - ModTimes[Path.Combine(outputDir, saneName)] = tarIterator.CurrentFileModificationTime(); - } - - } - } + Directory.CreateDirectory(outputDir); + tarIterator.ExtractAllContents(outputDir); + bytesToCompress += Core.Helpers.GetDirSize(new DirectoryInfo(outputDir)); } - // Now extract the sanitized tar - using(FileStream fs = File.OpenRead(sanitizedTar)) + try + { + File.Delete(sanitizedTar); + } + catch { - using (ArchiveIterator tarIterator = ArchiveFactory.Reader(ArchiveFactory.Type.Tar, fs)) - { - Directory.CreateDirectory(outputDir); - tarIterator.ExtractAllContents(outputDir); - bytesToCompress += Core.Helpers.GetDirSize(new DirectoryInfo(outputDir)); - } } } else { // Just copy vanilla input files unmodified to the temp directory - string outputFile = Path.Combine(extractTempDir, Path.GetFileName(inputFile)); + string outputFile = Path.Combine(_extractTempDir, Path.GetFileName(inputFile)); File.Copy(inputFile, outputFile); - ModTimes[outputFile] = new FileInfo(inputFile).LastWriteTimeUtc; bytesToCompress += new FileInfo(outputFile).Length; } bytesExtracted += new FileInfo(inputFile).Length; File.Delete(inputFile); - this.PercentComplete = (int)(50.0 * bytesExtracted / bytesToExtract); - - if (Cancelling) - { - throw new CancelledException(); - } + PercentComplete = (int)(50.0 * bytesExtracted / bytesToExtract); + CheckCancellation(); } // Now zip up all the temporarily extracted files into a single zip file for the user - log.DebugFormat("Packing {0} of bug report files into zip file {1}", + log.DebugFormat("Packing {0} of bug report files into zip file {1}", Util.DiskSizeString(bytesToCompress), _destFile); - LogDescriptionChanges = false; - try - { - - ZipToOutputFile(extractTempDir); - PercentComplete = 100; - - // Only cleanup files if it succeeded (or cancelled) - CleanupFiles(extractTempDir); - } - finally - { - LogDescriptionChanges = true; - } - - if (Cancelling) - throw new CancelledException(); + ZipToOutputFile(_extractTempDir, CheckCancellation, p => PercentComplete = 50 + p / 2); + CleanupFiles(); + PercentComplete = 100; } catch (CancelledException) { - CleanupFiles(extractTempDir, true); - + CleanupFiles(true); throw; } catch (Exception exn) { - ZipToOutputFile(_inputTempFolder); - PercentComplete = 100; - log.ErrorFormat("An exception was trapped while creating a server status report: " + exn.Message); + try + { + log.Error("Failed to package sanitized server status report: ", exn); + log.Debug("Attempting to package raw downloaded server files."); + ZipToOutputFile(_inputTempFolder, CheckCancellation); + } + catch(CancelledException) + { + CleanupFiles(true); + throw; + } + catch + { + log.Debug("Failed to package raw downloaded server files."); + } + throw new Exception(Messages.STATUS_REPORT_ZIP_FAILED); } } - private void ZipToOutputFile(string folderToZip) + private void CheckCancellation() { - using (ArchiveWriter zip = ArchiveFactory.Writer(ArchiveFactory.Type.Zip, File.OpenWrite(_destFile))) - { - zip.CreateArchive(folderToZip); - } + if (Cancelling) + throw new CancelledException(); } - private void CleanupFiles(string extractTempDir, bool deleteDestFile = false) + private void ZipToOutputFile(string folderToZip, Action cancellingDelegate = null, Action progressDelegate = null) + { + using (ArchiveWriter zip = ArchiveFactory.Writer(ArchiveFactory.Type.Zip, File.OpenWrite(_destFile))) + zip.CreateArchive(folderToZip, cancellingDelegate, progressDelegate); + } + + private void CleanupFiles(bool deleteDestFile = false) { - // We completed successfully: delete temporary files - log.Debug("Deleting temporary files"); try { - // Delete temp directory of raw server files to-be-decompressed + log.Debug("Deleting temporary directory with raw downloaded server files"); Directory.Delete(_inputTempFolder, true); } catch (Exception exn) { - log.Warn("Could not delete temporary decompressed files directory", exn); + log.Warn("Could not delete temporary directory with raw downloaded server files", exn); } try { - // Try to remove temp decompressed files dir - Directory.Delete(extractTempDir, true); + log.Debug("Deleting directory with temporarily extracted files"); + Directory.Delete(_extractTempDir, true); } catch (Exception exn) { - log.Warn("Could not delete temporary extracted files directory", exn); + log.Warn("Could not delete directory with temporarily extracted files", exn); } try { if (deleteDestFile) { + log.Debug("Deleting destination zip file"); File.Delete(_destFile); } } catch (Exception ex) { - log.Warn("Could not delete destination file", ex); - } - } - - /// - /// Maps file/directory names that are illegal under Windows to 'sanitized' versions. The usedNames - /// parameter ensures this is done consistently within a directory tree. - /// - /// The dictionary is used by SanitizeTarName() to ensure names are consistently sanitized. e.g.: - /// dir1: -> dir1_ - /// dir1? -> dir1_ (1) - /// dir1_ -> dir1_ (2) - /// dir1:/file -> dir1_/file - /// dir1?/file -> dir1_ (1)/file - /// - /// Pass the same dictionary to each invocation to get unique outputs within the same tree. - /// - private static string SanitizeTarName(string path, Dictionary usedNames) - { - string sanitizedPath = ""; - Stack bitsToEscape = new Stack(); - // Trim any trailing slashes (usually indicates path is a directory) - path = path.TrimEnd(new char[] { '/' }); - // Take members off the end of the path until we have a name that already is - // a key in our dictionary, or until we have the empty string. - while (!usedNames.ContainsKey(path) && path.Length > 0) - { - string[] bits = path.Split(new char[] { '/' }); - string lastBit = bits[bits.Length - 1]; - int lengthOfLastBit = lastBit.Length; - bitsToEscape.Push(lastBit); - path = path.Substring(0, path.Length - lengthOfLastBit); - path = path.TrimEnd(new char[] { '/' }); - } - - if (usedNames.ContainsKey(path)) - { - sanitizedPath = usedNames[path]; - } - - // Now for each member in the path, look up the escaping of that member if it exists; otherwise - // generate a new, unique escaping. Then append the escaped member to the end of the sanitized - // path and continue. - foreach (string member in bitsToEscape) - { - System.Diagnostics.Trace.Assert(member.Length > 0); - string sanitizedMember = SanitizeTarPathMember(member); - sanitizedPath = Path.Combine(sanitizedPath, sanitizedMember); - path = path + Path.DirectorySeparatorChar + member; - - // Note: even if sanitizedMember == member, we must add it to the dictionary, since - // tar permits names that differ only in case, while Windows does not. We must e.g.: - // abc -> abc - // aBC -> aBC (1) - - if (usedNames.ContainsKey(path)) - { - // We have already generated an escaping for this path prefix: use it - sanitizedPath = usedNames[path]; - continue; - } - - // Generate the unique mapping - string pre = sanitizedPath; - int i = 1; - while (DictionaryContainsIgnoringCase(usedNames, sanitizedPath)) - { - sanitizedPath = string.Format("{0} ({1})", pre, i); - i++; - } - - usedNames.Add(path, sanitizedPath); - } - return sanitizedPath; - } - - private static bool DictionaryContainsIgnoringCase(Dictionary dict, string value) - { - foreach (string v in dict.Values) - { - if (v.ToUpperInvariant() == value.ToUpperInvariant()) - { - return true; - } - } - return false; - } - - // See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/naming_a_file.asp - private static readonly string[] forbiddenNames = { "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9" }; - public static string SanitizeTarPathMember(string member) - { - // Strip any whitespace, or Windows will do it for us, and we might generate non-unique names - member = member.Trim(); - - foreach (string reserved in forbiddenNames) - { - // Names can't be any of com1, com2, or com1.xyz, com2.abc etc. - if (member.ToUpperInvariant() == reserved.ToUpperInvariant() - || member.ToUpperInvariant().StartsWith(reserved.ToUpperInvariant() + ".")) - { - member = "_" + member; - } - } - - // Allow only 31 < c < 126, excluding < > : " / \ | ? * - StringBuilder sb = new StringBuilder(member.Length); - foreach (char c in member.ToCharArray()) - { - if (c > 31 && c < 127 && !IsCharExcluded(c)) - { - sb.Append(c); - } - else - { - sb.Append("_"); - } - } - member = sb.ToString(); - - // Windows also seems not to like filenames ending '.' - if (member.EndsWith(".")) - { - member = member.Substring(0, member.Length - 1) + "_"; - } - - // Don't allow empty filename - if (member.Length == 0) - { - member = "_"; - } - - return member; - } - - private static readonly char[] excludedChars = new char[] { '<', '>', ':', '"', '/', '\\', '|', '?', '*' }; - private static bool IsCharExcluded(char c) - { - foreach (char excluded in excludedChars) - { - if (c == excluded) - { - return true; - } - } - return false; - } - - /// - /// Copies the specified number of bytes from one stream to another via the provided buffer. - /// - private static void CopyStream(Stream inputStream, Stream outputStream, long bytesToCopy, byte[] buf) - { - while (bytesToCopy > 0) - { - int bytesRead = inputStream.Read(buf, 0, Math.Min(bytesToCopy > int.MaxValue ? int.MaxValue : (int)bytesToCopy, buf.Length)); - outputStream.Write(buf, 0, bytesRead); - bytesToCopy -= bytesRead; + log.Warn("Could not delete destination zip file", ex); } } diff --git a/XenModel/Alerts/PerfmonDefinition.cs b/XenModel/Alerts/PerfmonDefinition.cs index 2e8ccf04e..32af3eaa1 100644 --- a/XenModel/Alerts/PerfmonDefinition.cs +++ b/XenModel/Alerts/PerfmonDefinition.cs @@ -274,8 +274,7 @@ namespace XenAdmin.Alerts } catch (Exception e) { - log.DebugFormat("Exception unmarshalling perfmon definition '{0}'", node.OuterXml); - log.Debug(e, e); + log.Debug($"Exception unmarshalling perfmon definition '{node.OuterXml}'", e); } } diff --git a/XenModel/Alerts/Types/Alert.cs b/XenModel/Alerts/Types/Alert.cs index 8dd3fc1ab..3c288dd8f 100644 --- a/XenModel/Alerts/Types/Alert.cs +++ b/XenModel/Alerts/Types/Alert.cs @@ -44,8 +44,8 @@ namespace XenAdmin.Alerts { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private readonly static object XenCenterAlertsLock = new object(); - private readonly static ChangeableList XenCenterAlerts = new ChangeableList(); + private static readonly object XenCenterAlertsLock = new object(); + private static readonly ChangeableList XenCenterAlerts = new ChangeableList(); public bool Dismissing; @@ -62,12 +62,30 @@ namespace XenAdmin.Alerts } } + public static void AddAlertRange(IEnumerable collection) + { + try + { + lock (XenCenterAlertsLock) + XenCenterAlerts.AddRange(collection); + } + catch (Exception e) + { + log.Error("Failed to add incoming alerts", e); + } + } + public static void RemoveAlert(Alert a) { - lock (XenCenterAlertsLock) - XenCenterAlerts.Remove(a); - - log.InfoFormat("Removed {0}: {1} - {2}", a.GetType().Name, a.Title, a.Description); + try + { + lock (XenCenterAlertsLock) + XenCenterAlerts.Remove(a); + } + catch (Exception e) + { + log.Error("Failed to remove alert. ", e); + } } public static void RemoveAlert(Predicate predicate) @@ -91,6 +109,21 @@ namespace XenAdmin.Alerts return XenCenterAlerts.Find(predicate); } + public static int FindAlertIndex(Predicate predicate) + { + lock (XenCenterAlertsLock) + return XenCenterAlerts.FindIndex(predicate); + } + + public static void RefreshAlertAt(int index) + { + lock (XenCenterAlertsLock) + { + if (index >= 0 && index < XenCenterAlerts.Count) + XenCenterAlerts[index] = XenCenterAlerts[index]; // this will trigger the CollectionChanged event with CollectionChangeAction.Refresh + } + } + /// /// locks the list of alerts before taking a total, and then returning that value /// @@ -181,18 +214,11 @@ namespace XenAdmin.Alerts /// /// When the Alert was raised. /// - public DateTime Timestamp - { - get - { - return _timestamp; - } - } + public DateTime Timestamp => _timestamp; /// /// Dismisses the Alert: marks it as dealt with in some way. May only be called once. /// - /// The name of whoever is dismissing the Alert. Must not be null. public virtual void Dismiss() { RemoveAlert(this); @@ -215,9 +241,9 @@ namespace XenAdmin.Alerts return false; } - public virtual string Name { get { return null; } } + public virtual string Name => null; - public virtual string WebPageLabel { get { return null; } } + public virtual string WebPageLabel => null; public abstract string Title { get; } @@ -245,10 +271,7 @@ namespace XenAdmin.Alerts /// /// The text for the 'click here for help...' link. /// - public virtual string HelpLinkText - { - get { return Messages.ALERT_GENERIC_HELP; } - } + public virtual string HelpLinkText => Messages.ALERT_GENERIC_HELP; /// /// The helpid opened when the 'click here for help...' link is clicked. @@ -351,9 +374,6 @@ namespace XenAdmin.Alerts let con = alert.Connection select con).Distinct(); - if (alertConnections.Count() == 0) - return false; - return alertConnections.Any(AllowedToDismiss); } diff --git a/XenModel/CustomFields/CustomFieldsCache.cs b/XenModel/CustomFields/CustomFieldsCache.cs index 183a21c9e..28d1a6ede 100644 --- a/XenModel/CustomFields/CustomFieldsCache.cs +++ b/XenModel/CustomFields/CustomFieldsCache.cs @@ -149,8 +149,7 @@ namespace XenAdmin.CustomFields } catch (Exception e) { - log.DebugFormat("Exception unmarshalling custom field definition '{0}'", node.OuterXml); - log.Debug(e, e); + log.Debug($"Exception unmarshalling custom field definition '{node.OuterXml}'.", e); } } diff --git a/XenModel/FriendlyNames.ja.resx b/XenModel/FriendlyNames.ja.resx index dacd4e071..161ec4cb4 100644 --- a/XenModel/FriendlyNames.ja.resx +++ b/XenModel/FriendlyNames.ja.resx @@ -210,6 +210,9 @@ ネットワーク インターフェイス、ルーティング テーブル、ファイアウォールの現在の状態 + + NVIDIA グラフィック ドライバーの問題を診断するのに役立つログと詳細が含まれています。 + OEM プロバイダ固有のデータを収集します。 @@ -292,13 +295,13 @@ XML ノード '{0}' を認識できませんでした。 - PowerShell の 'ExecutionPolicy' が 'Restricted' の場合、XenServerPSSnapIn を読み込めません。 + PowerShell の 'ExecutionPolicy' が 'Restricted' の場合、XenServerPSModule を読み込めません。 PowerShell プラグインを使用するには、PowerShell をインストールしておく必要があります。PowerShell は、Microsoft 社の Web サイトからダウンロードできます。 - [XenServer] PowerShell コマンドを使用するには、XenServerPSSnapIn をインストールしておく必要があります。XenServerPSSnapIn は SDK に含まれています。 + [XenServer] PowerShell コマンドを使用するには、XenServerPSModule をインストールしておく必要があります。XenServerPSModule は SDK に含まれています。 プラグイン '{1}' の検索 '{0}' を構文解析できません。 @@ -520,7 +523,7 @@ 停止 - ポーズ + 一時停止 実行中 @@ -663,6 +666,9 @@ ネットワークの状態 + + NVIDIA グラフィック ドライバー ログ + OEM 固有のログ diff --git a/XenModel/FriendlyNames.resx b/XenModel/FriendlyNames.resx index 6fe6077fb..994c7bee8 100644 --- a/XenModel/FriendlyNames.resx +++ b/XenModel/FriendlyNames.resx @@ -210,6 +210,9 @@ Current status of the network interfaces, routing tables and firewall + + Contains logs and details useful for diagnosing problems with NVIDIA's graphics drivers. + Collects data specific to your OEM provider. @@ -277,31 +280,31 @@ YUM repository information and RPM package database listing - '{0}.label' has not been defined in the resources file for plugin '{1}'. + '{0}.label' has not been defined in the resources file for plug-in '{1}'. Only one shell or PowerShell command permitted. - Could not find resources file for plugin '{0}' at '{1}'. + Could not find resources file for plug-in '{0}' at '{1}'. Unknown version '{0}'. - XML node '{0}' is not recognised. + XML node '{0}' is not recognized. - Cannot load the XenServerPSSnapIn if the PowerShell 'ExecutionPolicy' is equal to 'Restricted'. + Cannot load the XenServerPSModule if the PowerShell 'ExecutionPolicy' is equal to 'Restricted'. - You must have the Powershell installed to use Powershell Plugins. This can be downloaded from the Microsoft website. + You must have the PowerShell installed to use PowerShell Plug-ins. This can be downloaded from the Microsoft website. - You must have the XenServerPSSnapIn installed to use [XenServer] PowerShell Commands. This can be found in the SDK. + You must have the XenServerPSModule installed to use [XenServer] PowerShell Commands. This can be found in the SDK. - Could not parse search '{0}' for plugin '{1}'. + Could not parse search '{0}' for plug-in '{1}'. The file '{0}' is not a valid saved search. @@ -666,6 +669,9 @@ Network status + + NVIDIA Graphics Driver logs + OEM-specific logs @@ -1620,7 +1626,7 @@ Log files from the RRD daemon - RRD plugin logs + RRD plug-in logs Topology diff --git a/XenModel/FriendlyNames.zh-CN.resx b/XenModel/FriendlyNames.zh-CN.resx index a7f76de2e..38b327c9f 100644 --- a/XenModel/FriendlyNames.zh-CN.resx +++ b/XenModel/FriendlyNames.zh-CN.resx @@ -210,6 +210,9 @@ 网络接口、路由表和防火墙的当前状态 + + 包含有助于诊断 NVIDIA 的图形驱动程序问题的日志和详细信息。 + 收集特定于 OEM 提供商的数据。 @@ -292,13 +295,13 @@ 无法识别 XML 节点“{0}”。 - PowerShell“ExecutionPolicy”等于“受限制”时,无法加载 XenServerPSSnapIn。 + PowerShell“ExecutionPolicy”设置为“受限制”时,无法加载 XenServerPSModule。 - 必须安装 Powershell 才能使用 Powershell 插件。可以从 Microsoft 网站下载 Powershell。 + 必须安装 PowerShell 才能使用 PowerShell 插件。可以从 Microsoft Web 站点下载 PowerShell。 - 必须安装 XenServerPSSnapIn 才能使用 [XenServer] PowerShell 命令。可以在 SDK 中找到 XenServerPSSnapIn。 + 必须安装 XenServerPSModule 才能使用 [XenServer] PowerShell 命令。可以在 SDK 中找到 XenServerPSModule。 无法解析插件“{1}”的搜索“{0}”。 @@ -663,6 +666,9 @@ 网络状态 + + NVIDIA 图形驱动程序日志 + OEM 专有日志 diff --git a/XenModel/I18NException.cs b/XenModel/I18NException.cs index 9e84ebe16..564ade161 100644 --- a/XenModel/I18NException.cs +++ b/XenModel/I18NException.cs @@ -76,7 +76,6 @@ namespace XenAdmin.Core XmlInvalid, PowerShellNotPresent, - PowerShellSnapInNotPresent, PowerShellExecutionPolicyRestricted, XenSearchFileInvalid diff --git a/XenModel/Icons.cs b/XenModel/Icons.cs index 6dd17d28c..7bbb81dc9 100644 --- a/XenModel/Icons.cs +++ b/XenModel/Icons.cs @@ -175,7 +175,7 @@ namespace XenAdmin Ok, Info, Warning, - Error + Error, #endregion } } diff --git a/XenModel/InvisibleMessages.ja.resx b/XenModel/InvisibleMessages.ja.resx index be831e18d..255cd6af0 100644 --- a/XenModel/InvisibleMessages.ja.resx +++ b/XenModel/InvisibleMessages.ja.resx @@ -168,6 +168,9 @@ http://citrix.com/English/aboutCitrix/legal/privacyStatement.asp?ntref=hp_nav_US + + https://docs.citrix.com/ja-jp/citrix-hypervisor/system-requirements/guest-os-support.html + xensearch @@ -193,6 +196,12 @@ https://www.citrix.com/products/citrix-hypervisor/get-started.html - http://docs.citrix.com/{0}/xencenter/current-release/{1}.html?utm_campaign={2}&utm_medium={3}&utm_source={4} + http://docs.citrix.com/ja-jp/xencenter/ + + + ?utm_campaign={0}&utm_medium=ui_link&utm_source={1} + + + http://docs.citrix.com/ja-jp/citrix-hypervisor/whats-new/removed-features.html \ No newline at end of file diff --git a/XenModel/InvisibleMessages.zh-CN.resx b/XenModel/InvisibleMessages.zh-CN.resx index 4b7c19443..7f94dd3cd 100644 --- a/XenModel/InvisibleMessages.zh-CN.resx +++ b/XenModel/InvisibleMessages.zh-CN.resx @@ -168,6 +168,9 @@ http://citrix.com/English/aboutCitrix/legal/privacyStatement.asp?ntref=hp_nav_US + + https://docs.citrix.com/zh-cn/citrix-hypervisor/system-requirements/guest-os-support.html + xensearch @@ -193,6 +196,12 @@ https://www.citrix.com/products/citrix-hypervisor/get-started.html - http://docs.citrix.com/{0}/xencenter/current-release/{1}.html?utm_campaign={2}&utm_medium={3}&utm_source={4} + http://docs.citrix.com/zh-cn/xencenter/ + + + ?utm_campaign={0}&utm_medium=ui_link&utm_source={1} + + + http://docs.citrix.com/zh-cn/citrix-hypervisor/whats-new/removed-features.html \ No newline at end of file diff --git a/XenModel/Mappings/VmMapping.cs b/XenModel/Mappings/VmMapping.cs index d8b9ae9ae..a7c85a665 100644 --- a/XenModel/Mappings/VmMapping.cs +++ b/XenModel/Mappings/VmMapping.cs @@ -46,12 +46,12 @@ namespace XenAdmin.Mappings public string VmNameLabel { get; set; } /// - /// OpaqueRef of the target + /// OpaqueRef of the target pool or host /// public object XenRef { get; set; } /// - /// Name of the target + /// Name of the target pool or host /// public string TargetName { get; set; } diff --git a/XenModel/Messages.Designer.cs b/XenModel/Messages.Designer.cs index 2a0819d35..dadfea000 100755 --- a/XenModel/Messages.Designer.cs +++ b/XenModel/Messages.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// Dieser Code wurde von einem Tool generiert. -// Laufzeitversion:4.0.30319.42000 +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // -// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn -// der Code erneut generiert wird. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -13,12 +13,12 @@ namespace XenAdmin { /// - /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// A strongly-typed resource class, for looking up localized strings, etc. /// - // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert - // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. - // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen - // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] @@ -33,7 +33,7 @@ namespace XenAdmin { } /// - /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] public static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ namespace XenAdmin { } /// - /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle - /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] public static global::System.Globalization.CultureInfo Culture { @@ -61,7 +61,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Activating virtual disks... ähnelt. + /// Looks up a localized string similar to Activating virtual disks.... /// public static string ACTION_ACTIVATING_MULTIPLE_VDIS_STATUS { get { @@ -70,7 +70,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Activating Multiple Virtual Disks ähnelt. + /// Looks up a localized string similar to Activating Multiple Virtual Disks. /// public static string ACTION_ACTIVATING_MULTIPLE_VDIS_TITLE { get { @@ -79,7 +79,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing control domain memory settings on '{0}' ähnelt. + /// Looks up a localized string similar to Changing control domain memory settings on '{0}'. /// public static string ACTION_CHANGE_CONTROL_DOMAIN_MEMORY { get { @@ -88,7 +88,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The memory specified ({0}) was too low. It has to be at least the value of the static minimum ({1}) ähnelt. + /// Looks up a localized string similar to The memory specified ({0}) was too low. It has to be at least the value of the static minimum ({1}). /// public static string ACTION_CHANGE_CONTROL_DOMAIN_MEMORY_VALUE_TOO_LOW { get { @@ -97,7 +97,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change disk size ähnelt. + /// Looks up a localized string similar to Change disk size. /// public static string ACTION_CHANGE_DISK_SIZE { get { @@ -106,7 +106,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change email options ähnelt. + /// Looks up a localized string similar to Change email options. /// public static string ACTION_CHANGE_EMAIL_OPTIONS { get { @@ -115,7 +115,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change home server ähnelt. + /// Looks up a localized string similar to Change home server. /// public static string ACTION_CHANGE_HOME_SERVER { get { @@ -124,7 +124,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Administrator password changed ähnelt. + /// Looks up a localized string similar to Administrator password changed. /// public static string ACTION_CHANGE_HOST_PASSWORD_DONE { get { @@ -133,7 +133,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing administrator password... ähnelt. + /// Looks up a localized string similar to Changing administrator password.... /// public static string ACTION_CHANGE_HOST_PASSWORD_IN_PROGRESS { get { @@ -142,7 +142,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing administrator password on {0} ähnelt. + /// Looks up a localized string similar to Changing administrator password on {0}. /// public static string ACTION_CHANGE_HOST_PASSWORD_TITLE { get { @@ -151,7 +151,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change log destination ähnelt. + /// Looks up a localized string similar to Change log destination. /// public static string ACTION_CHANGE_LOG_DESTINATION { get { @@ -160,7 +160,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing memory settings for {0}... ähnelt. + /// Looks up a localized string similar to Changing memory settings for {0}.... /// public static string ACTION_CHANGE_MEMORY_SETTINGS { get { @@ -169,7 +169,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changed memory settings for {0} ähnelt. + /// Looks up a localized string similar to Changed memory settings for {0}. /// public static string ACTION_CHANGE_MEMORY_SETTINGS_DONE { get { @@ -178,7 +178,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change multipath setting ähnelt. + /// Looks up a localized string similar to Change multipath setting. /// public static string ACTION_CHANGE_MULTIPATH { get { @@ -187,7 +187,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing IP address from {0}... ähnelt. + /// Looks up a localized string similar to Removing IP address from {0}.... /// public static string ACTION_CHANGE_NETWORKING_BRINGING_DOWN { get { @@ -196,7 +196,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die IP address on {0} deconfigured ähnelt. + /// Looks up a localized string similar to IP address on {0} deconfigured. /// public static string ACTION_CHANGE_NETWORKING_BRINGING_DOWN_DONE { get { @@ -205,7 +205,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuring IP address on {0}... ähnelt. + /// Looks up a localized string similar to Configuring IP address on {0}.... /// public static string ACTION_CHANGE_NETWORKING_BRINGING_UP { get { @@ -214,7 +214,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die IP address on {0} configured ähnelt. + /// Looks up a localized string similar to IP address on {0} configured. /// public static string ACTION_CHANGE_NETWORKING_BRINGING_UP_DONE { get { @@ -223,7 +223,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Management facility on {0} deconfigured ähnelt. + /// Looks up a localized string similar to Management facility on {0} deconfigured. /// public static string ACTION_CHANGE_NETWORKING_DEPURPOSED { get { @@ -232,7 +232,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deconfiguring management facility on {0}... ähnelt. + /// Looks up a localized string similar to Deconfiguring management facility on {0}.... /// public static string ACTION_CHANGE_NETWORKING_DEPURPOSING { get { @@ -241,7 +241,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Networking reconfiguration done ähnelt. + /// Looks up a localized string similar to Networking reconfiguration done. /// public static string ACTION_CHANGE_NETWORKING_DONE { get { @@ -250,7 +250,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Management interface on {0} configured ähnelt. + /// Looks up a localized string similar to Management interface on {0} configured. /// public static string ACTION_CHANGE_NETWORKING_MANAGEMENT_RECONFIGURED { get { @@ -259,7 +259,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuring management interface on {0}... ähnelt. + /// Looks up a localized string similar to Configuring management interface on {0}.... /// public static string ACTION_CHANGE_NETWORKING_MANAGEMENT_RECONFIGURING { get { @@ -268,7 +268,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reconfiguring server networking ähnelt. + /// Looks up a localized string similar to Reconfiguring server networking. /// public static string ACTION_CHANGE_NETWORKING_TITLE { get { @@ -277,7 +277,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change power on settings ähnelt. + /// Looks up a localized string similar to Change power on settings. /// public static string ACTION_CHANGE_POWER_ON { get { @@ -286,7 +286,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change shadow multiplier ähnelt. + /// Looks up a localized string similar to Change shadow multiplier. /// public static string ACTION_CHANGE_SHADOW_MULTIPLIER { get { @@ -295,7 +295,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk size changed for '{0}'. ähnelt. + /// Looks up a localized string similar to Disk size changed for '{0}'.. /// public static string ACTION_CHANGED_DISK_SIZE_FOR { get { @@ -304,7 +304,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing disk size for '{0}'... ähnelt. + /// Looks up a localized string similar to Changing disk size for '{0}'.... /// public static string ACTION_CHANGING_DISK_SIZE_FOR { get { @@ -313,7 +313,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing email options for '{0}'... ähnelt. + /// Looks up a localized string similar to Changing email options for '{0}'.... /// public static string ACTION_CHANGING_EMAIL_OPTIONS_FOR { get { @@ -322,7 +322,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing home server for '{0}'... ähnelt. + /// Looks up a localized string similar to Changing home server for '{0}'.... /// public static string ACTION_CHANGING_HOME_SERVER_FOR { get { @@ -331,7 +331,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing log destination for '{0}'... ähnelt. + /// Looks up a localized string similar to Changing log destination for '{0}'.... /// public static string ACTION_CHANGING_LOG_DESTINATION_FOR { get { @@ -340,7 +340,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing multipath setting for '{0}'... ähnelt. + /// Looks up a localized string similar to Changing multipath setting for '{0}'.... /// public static string ACTION_CHANGING_MULTIPATH_FOR { get { @@ -349,7 +349,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing power on settings... ähnelt. + /// Looks up a localized string similar to Changing power on settings.... /// public static string ACTION_CHANGING_POWER_ON { get { @@ -358,7 +358,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing shadow multiplier for '{0}'... ähnelt. + /// Looks up a localized string similar to Changing shadow multiplier for '{0}'.... /// public static string ACTION_CHANGING_SHADOW_MULTIPLIER_FOR { get { @@ -367,7 +367,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking disk space on {0} ähnelt. + /// Looks up a localized string similar to Checking disk space on {0}. /// public static string ACTION_CHECK_DISK_SPACE_DESCRIPTION { get { @@ -376,7 +376,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Check disk space ähnelt. + /// Looks up a localized string similar to Check disk space. /// public static string ACTION_CHECK_DISK_SPACE_TITLE { get { @@ -385,7 +385,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cleaning up disk space on {0} ähnelt. + /// Looks up a localized string similar to Cleaning up disk space on {0}. /// public static string ACTION_CLEANUP_DISK_SPACE_DESCRIPTION { get { @@ -394,7 +394,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Successfully cleaned up disk space on {0} ähnelt. + /// Looks up a localized string similar to Successfully cleaned up disk space on {0}. /// public static string ACTION_CLEANUP_DISK_SPACE_SUCCESS { get { @@ -403,7 +403,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Clean up disk space ähnelt. + /// Looks up a localized string similar to Clean up disk space. /// public static string ACTION_CLEANUP_DISK_SPACE_TITLE { get { @@ -412,7 +412,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuring PVS-Accelerator ähnelt. + /// Looks up a localized string similar to Configuring PVS-Accelerator. /// public static string ACTION_CONFUGURE_PVS_SITE_DESCRIPTION { get { @@ -421,7 +421,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configured ähnelt. + /// Looks up a localized string similar to Configured. /// public static string ACTION_CONFUGURE_PVS_SITE_DONE { get { @@ -430,7 +430,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure PVS-Accelerator on '{0}' ähnelt. + /// Looks up a localized string similar to Configure PVS-Accelerator on '{0}'. /// public static string ACTION_CONFUGURE_PVS_SITE_TITLE { get { @@ -439,7 +439,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating {0} ... ähnelt. + /// Looks up a localized string similar to Creating {0} .... /// public static string ACTION_CREATE_BOND_DESCRIPTION { get { @@ -448,7 +448,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} created ähnelt. + /// Looks up a localized string similar to {0} created. /// public static string ACTION_CREATE_BOND_DONE { get { @@ -457,7 +457,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating {0} ähnelt. + /// Looks up a localized string similar to Creating {0}. /// public static string ACTION_CREATE_BOND_TITLE { get { @@ -466,7 +466,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deactivating virtual disks... ähnelt. + /// Looks up a localized string similar to Deactivating virtual disks.... /// public static string ACTION_DEACTIVATING_MULTIPLE_VDIS_STATUS { get { @@ -475,7 +475,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deactivating Multiple Virtual Disks ähnelt. + /// Looks up a localized string similar to Deactivating Multiple Virtual Disks. /// public static string ACTION_DEACTIVATING_MULTIPLE_VDIS_TITLE { get { @@ -484,7 +484,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting cache configuration ähnelt. + /// Looks up a localized string similar to Deleting cache configuration. /// public static string ACTION_DELETE_PVS_SITE_DESCRIPTION { get { @@ -493,7 +493,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Done ähnelt. + /// Looks up a localized string similar to Done. /// public static string ACTION_DELETE_PVS_SITE_DONE { get { @@ -502,7 +502,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting cache configuration on '{0}' ähnelt. + /// Looks up a localized string similar to Deleting cache configuration on '{0}'. /// public static string ACTION_DELETE_PVS_SITE_TITLE { get { @@ -511,7 +511,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting storage items... ähnelt. + /// Looks up a localized string similar to Deleting storage items.... /// public static string ACTION_DELETING_MULTIPLE_STORAGE_ITEMS_STATUS { get { @@ -520,7 +520,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting Multiple Storage Items ähnelt. + /// Looks up a localized string similar to Deleting Multiple Storage Items. /// public static string ACTION_DELETING_MULTIPLE_STORAGE_ITEMS_TITLE { get { @@ -529,7 +529,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destroying {0} ... ähnelt. + /// Looks up a localized string similar to Destroying {0} .... /// public static string ACTION_DESTROY_BOND_DESCRIPTION { get { @@ -538,7 +538,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} destroyed ähnelt. + /// Looks up a localized string similar to {0} destroyed. /// public static string ACTION_DESTROY_BOND_DONE { get { @@ -547,7 +547,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destroying {0} ähnelt. + /// Looks up a localized string similar to Destroying {0}. /// public static string ACTION_DESTROY_BOND_TITLE { get { @@ -556,7 +556,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detaching storage items... ähnelt. + /// Looks up a localized string similar to Detaching storage items.... /// public static string ACTION_DETACHING_MULTIPLE_VDIS_STATUS { get { @@ -565,7 +565,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detaching Multiple Storage Items ähnelt. + /// Looks up a localized string similar to Detaching Multiple Storage Items. /// public static string ACTION_DETACHING_MULTIPLE_VDIS_TITLE { get { @@ -574,7 +574,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable VM autostart ähnelt. + /// Looks up a localized string similar to Disable VM autostart. /// public static string ACTION_DISABLE_AUTOSTART_ON_VM { get { @@ -583,7 +583,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable Changed Block Tracking ähnelt. + /// Looks up a localized string similar to Disable Changed Block Tracking. /// public static string ACTION_DISABLE_CHANGED_BLOCK_TRACKING { get { @@ -592,7 +592,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling Changed Block Tracking for VM '{0}' ähnelt. + /// Looks up a localized string similar to Disabling Changed Block Tracking for VM '{0}'. /// public static string ACTION_DISABLE_CHANGED_BLOCK_TRACKING_FOR { get { @@ -601,7 +601,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable IGMP snooping ähnelt. + /// Looks up a localized string similar to Disable IGMP snooping. /// public static string ACTION_DISABLE_IGMP_SNOOPING { get { @@ -610,7 +610,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable live patching ähnelt. + /// Looks up a localized string similar to Disable live patching. /// public static string ACTION_DISABLE_LIVE_PATCHING { get { @@ -619,7 +619,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable PVS-Accelerator ähnelt. + /// Looks up a localized string similar to Disable PVS-Accelerator. /// public static string ACTION_DISABLE_PVS_READ_CACHING { get { @@ -628,7 +628,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling PVS-Accelerator for VM '{0}' ähnelt. + /// Looks up a localized string similar to Disabling PVS-Accelerator for VM '{0}'. /// public static string ACTION_DISABLE_PVS_READ_CACHING_FOR { get { @@ -637,7 +637,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling ähnelt. + /// Looks up a localized string similar to Disabling . /// public static string ACTION_DISABLE_VM_ENLIGHTENMENT_DESCRIPTION { get { @@ -646,7 +646,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable container management on VM '{0}' ähnelt. + /// Looks up a localized string similar to Disable container management on VM '{0}'. /// public static string ACTION_DISABLE_VM_ENLIGHTENMENT_TITLE { get { @@ -655,7 +655,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabled Changed Block Tracking for selected VMs ähnelt. + /// Looks up a localized string similar to Disabled Changed Block Tracking for selected VMs. /// public static string ACTION_DISABLED_CHANGED_BLOCK_TRACKING { get { @@ -664,7 +664,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabled PVS-Accelerator for selected VMs ähnelt. + /// Looks up a localized string similar to Disabled PVS-Accelerator for selected VMs. /// public static string ACTION_DISABLED_PVS_READ_CACHING { get { @@ -673,7 +673,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling autostart for '{0}' ähnelt. + /// Looks up a localized string similar to Disabling autostart for '{0}'. /// public static string ACTION_DISABLING_AUTOSTART_ON_VM { get { @@ -682,7 +682,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling Changed Block Tracking for selected VMs ähnelt. + /// Looks up a localized string similar to Disabling Changed Block Tracking for selected VMs. /// public static string ACTION_DISABLING_CHANGED_BLOCK_TRACKING { get { @@ -691,7 +691,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling live patching for '{0}' ähnelt. + /// Looks up a localized string similar to Disabling live patching for '{0}'. /// public static string ACTION_DISABLING_LIVE_PATCHING { get { @@ -700,7 +700,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling PVS-Accelerator for selected VMs ähnelt. + /// Looks up a localized string similar to Disabling PVS-Accelerator for selected VMs. /// public static string ACTION_DISABLING_PVS_READ_CACHING { get { @@ -709,7 +709,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Activated disk... ähnelt. + /// Looks up a localized string similar to Activated disk.... /// public static string ACTION_DISK_ACTIVATED { get { @@ -718,7 +718,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Activating disk... ähnelt. + /// Looks up a localized string similar to Activating disk.... /// public static string ACTION_DISK_ACTIVATING { get { @@ -727,7 +727,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Activating disk '{0}' on VM '{1}'... ähnelt. + /// Looks up a localized string similar to Activating disk '{0}' on VM '{1}'.... /// public static string ACTION_DISK_ACTIVATING_TITLE { get { @@ -736,7 +736,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Added disk ähnelt. + /// Looks up a localized string similar to Added disk. /// public static string ACTION_DISK_ADDED { get { @@ -745,7 +745,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding disk ähnelt. + /// Looks up a localized string similar to Adding disk. /// public static string ACTION_DISK_ADDING { get { @@ -754,7 +754,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating disk '{0}' on SR '{1}' ähnelt. + /// Looks up a localized string similar to Creating disk '{0}' on SR '{1}'. /// public static string ACTION_DISK_ADDING_TITLE { get { @@ -763,7 +763,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attaching disk to VM '{0}'... ähnelt. + /// Looks up a localized string similar to Attaching disk to VM '{0}'.... /// public static string ACTION_DISK_ATTACHING { get { @@ -772,7 +772,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deactivated disk ähnelt. + /// Looks up a localized string similar to Deactivated disk. /// public static string ACTION_DISK_DEACTIVATED { get { @@ -781,7 +781,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deactivating disk... ähnelt. + /// Looks up a localized string similar to Deactivating disk.... /// public static string ACTION_DISK_DEACTIVATING { get { @@ -790,7 +790,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deactivating disk '{0}' on VM '{1}'... ähnelt. + /// Looks up a localized string similar to Deactivating disk '{0}' on VM '{1}'.... /// public static string ACTION_DISK_DEACTIVATING_TITLE { get { @@ -799,7 +799,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting disk '{0}' from SR '{1}' ähnelt. + /// Looks up a localized string similar to Deleting disk '{0}' from SR '{1}'. /// public static string ACTION_DISK_DELETING_TITLE { get { @@ -808,7 +808,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detached disk ähnelt. + /// Looks up a localized string similar to Detached disk. /// public static string ACTION_DISK_DETACHED { get { @@ -817,7 +817,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detaching disk ähnelt. + /// Looks up a localized string similar to Detaching disk. /// public static string ACTION_DISK_DETACHING { get { @@ -826,7 +826,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detaching disk '{0}' from VM '{1}' ähnelt. + /// Looks up a localized string similar to Detaching disk '{0}' from VM '{1}'. /// public static string ACTION_DISK_DETACHING_TITLE { get { @@ -835,7 +835,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Waiting for the volume to become available... ähnelt. + /// Looks up a localized string similar to Waiting for the volume to become available.... /// public static string ACTION_DISK_WAITING_FOR_AVAILABLE { get { @@ -844,7 +844,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuring DR ähnelt. + /// Looks up a localized string similar to Configuring DR. /// public static string ACTION_DR_CONFIGURING { get { @@ -853,7 +853,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool metadata replication disabled ähnelt. + /// Looks up a localized string similar to Pool metadata replication disabled. /// public static string ACTION_DR_DISABLED { get { @@ -862,7 +862,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling pool metadata replication ähnelt. + /// Looks up a localized string similar to Disabling pool metadata replication. /// public static string ACTION_DR_DISABLING { get { @@ -871,7 +871,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling pool metadata replication on storage {0} ähnelt. + /// Looks up a localized string similar to Disabling pool metadata replication on storage {0}. /// public static string ACTION_DR_DISABLING_ON { get { @@ -880,7 +880,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool metadata replication enabled ähnelt. + /// Looks up a localized string similar to Pool metadata replication enabled. /// public static string ACTION_DR_ENABLED { get { @@ -889,7 +889,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling pool metadata replication ähnelt. + /// Looks up a localized string similar to Enabling pool metadata replication. /// public static string ACTION_DR_ENABLING { get { @@ -898,7 +898,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling pool metadata replication on storage '{0}' ähnelt. + /// Looks up a localized string similar to Enabling pool metadata replication on storage '{0}'. /// public static string ACTION_DR_ENABLING_ON { get { @@ -907,7 +907,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Recover vApp '{0}' ähnelt. + /// Looks up a localized string similar to Recover vApp '{0}'. /// public static string ACTION_DR_RECOVER_APPLIANCE_TITLE { get { @@ -916,7 +916,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die '{0}' recovered ähnelt. + /// Looks up a localized string similar to '{0}' recovered. /// public static string ACTION_DR_RECOVER_DONE { get { @@ -925,7 +925,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Recovering ähnelt. + /// Looks up a localized string similar to Recovering. /// public static string ACTION_DR_RECOVER_STATUS { get { @@ -934,7 +934,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Recover VM '{0}' ähnelt. + /// Looks up a localized string similar to Recover VM '{0}'. /// public static string ACTION_DR_RECOVER_VM_TITLE { get { @@ -943,7 +943,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage Repositories prepared ähnelt. + /// Looks up a localized string similar to Storage Repositories prepared. /// public static string ACTION_DR_TASK_CREATE_DONE { get { @@ -952,7 +952,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Preparing Storage Repositories ähnelt. + /// Looks up a localized string similar to Preparing Storage Repositories. /// public static string ACTION_DR_TASK_CREATE_STATUS { get { @@ -961,7 +961,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Prepare Storage Repositories ähnelt. + /// Looks up a localized string similar to Prepare Storage Repositories. /// public static string ACTION_DR_TASK_CREATE_TITLE { get { @@ -970,7 +970,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die DR cleanup completed ähnelt. + /// Looks up a localized string similar to DR cleanup completed. /// public static string ACTION_DR_TASK_DESTROY_DONE { get { @@ -979,7 +979,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Performing DR cleanup... ähnelt. + /// Looks up a localized string similar to Performing DR cleanup.... /// public static string ACTION_DR_TASK_DESTROY_STATUS { get { @@ -988,7 +988,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die DR cleanup ({0}) ähnelt. + /// Looks up a localized string similar to DR cleanup ({0}). /// public static string ACTION_DR_TASK_DESTROY_TITLE { get { @@ -997,7 +997,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enable VM autostart ähnelt. + /// Looks up a localized string similar to Enable VM autostart. /// public static string ACTION_ENABLE_AUTOSTART_ON_VM { get { @@ -1006,7 +1006,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enable IGMP snooping ähnelt. + /// Looks up a localized string similar to Enable IGMP snooping. /// public static string ACTION_ENABLE_IGMP_SNOOPING { get { @@ -1015,7 +1015,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enable live patching ähnelt. + /// Looks up a localized string similar to Enable live patching. /// public static string ACTION_ENABLE_LIVE_PATCHING { get { @@ -1024,7 +1024,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enable PVS-Accelerator ähnelt. + /// Looks up a localized string similar to Enable PVS-Accelerator. /// public static string ACTION_ENABLE_PVS_READ_CACHING { get { @@ -1033,7 +1033,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling PVS-Accelerator for VM '{0}' on '{1}' ähnelt. + /// Looks up a localized string similar to Enabling PVS-Accelerator for VM '{0}' on '{1}'. /// public static string ACTION_ENABLE_PVS_READ_CACHING_FOR { get { @@ -1042,7 +1042,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling ähnelt. + /// Looks up a localized string similar to Enabling. /// public static string ACTION_ENABLE_VM_ENLIGHTENMENT_DESCRIPTION { get { @@ -1051,7 +1051,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enable container management on VM '{0}' ähnelt. + /// Looks up a localized string similar to Enable container management on VM '{0}'. /// public static string ACTION_ENABLE_VM_ENLIGHTENMENT_TITLE { get { @@ -1060,7 +1060,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabled PVS-Accelerator for selected VMs ähnelt. + /// Looks up a localized string similar to Enabled PVS-Accelerator for selected VMs. /// public static string ACTION_ENABLED_PVS_READ_CACHING { get { @@ -1069,7 +1069,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling autostart for '{0}' ähnelt. + /// Looks up a localized string similar to Enabling autostart for '{0}'. /// public static string ACTION_ENABLING_AUTOSTART_ON_VM { get { @@ -1078,7 +1078,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling live patching for '{0}' ähnelt. + /// Looks up a localized string similar to Enabling live patching for '{0}'. /// public static string ACTION_ENABLING_LIVE_PATCHING { get { @@ -1087,7 +1087,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling PVS-Accelerator for selected VMs ähnelt. + /// Looks up a localized string similar to Enabling PVS-Accelerator for selected VMs. /// public static string ACTION_ENABLING_PVS_READ_CACHING { get { @@ -1096,7 +1096,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export failed due to a block checksum mismatch. Please retry the export. ähnelt. + /// Looks up a localized string similar to Export failed due to a block checksum mismatch. Please retry the export.. /// public static string ACTION_EXPORT_DESCRIPTION_BLOCK_CHECKSUM_FAILED { get { @@ -1105,7 +1105,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export canceled ähnelt. + /// Looks up a localized string similar to Export canceled. /// public static string ACTION_EXPORT_DESCRIPTION_CANCELLED { get { @@ -1114,7 +1114,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export failed: disk full. ähnelt. + /// Looks up a localized string similar to Export failed: disk full.. /// public static string ACTION_EXPORT_DESCRIPTION_DISK_FULL { get { @@ -1123,7 +1123,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export failed ähnelt. + /// Looks up a localized string similar to Export failed. /// public static string ACTION_EXPORT_DESCRIPTION_FAILED { get { @@ -1132,7 +1132,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export failed due to open destination file {0} failed ähnelt. + /// Looks up a localized string similar to Export failed due to open destination file {0} failed. /// public static string ACTION_EXPORT_DESCRIPTION_FAILED_OF_OPEN_FILE { get { @@ -1141,7 +1141,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export failed due to a header checksum mismatch. Please retry the export. ähnelt. + /// Looks up a localized string similar to Export failed due to a header checksum mismatch. Please retry the export.. /// public static string ACTION_EXPORT_DESCRIPTION_HEADER_CHECKSUM_FAILED { get { @@ -1150,7 +1150,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exporting... ähnelt. + /// Looks up a localized string similar to Exporting.... /// public static string ACTION_EXPORT_DESCRIPTION_IN_PROGRESS { get { @@ -1159,7 +1159,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Preparing to export ähnelt. + /// Looks up a localized string similar to Preparing to export. /// public static string ACTION_EXPORT_DESCRIPTION_PREPARING { get { @@ -1168,7 +1168,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exported ähnelt. + /// Looks up a localized string similar to Exported. /// public static string ACTION_EXPORT_DESCRIPTION_SUCCESSFUL { get { @@ -1177,7 +1177,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export failed: disk in use elsewhere. ähnelt. + /// Looks up a localized string similar to Export failed: disk in use elsewhere.. /// public static string ACTION_EXPORT_DESCRIPTION_VDI_IN_USE { get { @@ -1186,7 +1186,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export canceled and deleting destination file '{0}' failed ähnelt. + /// Looks up a localized string similar to Export canceled and deleting destination file '{0}' failed. /// public static string ACTION_EXPORT_POOL_RESOURCE_CANCEL_AND_FILE_UNDELETE { get { @@ -1195,7 +1195,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exporting pool resource list from '{0}' ähnelt. + /// Looks up a localized string similar to Exporting pool resource list from '{0}'. /// public static string ACTION_EXPORT_POOL_RESOURCE_LIST_FROM_X { get { @@ -1204,7 +1204,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exporting {0} to backup file ähnelt. + /// Looks up a localized string similar to Exporting {0} to backup file. /// public static string ACTION_EXPORT_TASK_DESCRIPTION { get { @@ -1213,7 +1213,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exporting {0} ähnelt. + /// Looks up a localized string similar to Exporting {0}. /// public static string ACTION_EXPORT_TASK_NAME { get { @@ -1222,7 +1222,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Verifying Export... ähnelt. + /// Looks up a localized string similar to Verifying Export.... /// public static string ACTION_EXPORT_VERIFY { get { @@ -1231,7 +1231,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fetch data sources ähnelt. + /// Looks up a localized string similar to Fetch data sources. /// public static string ACTION_GET_DATASOURCES { get { @@ -1240,7 +1240,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Getting space requirements on {0} ähnelt. + /// Looks up a localized string similar to Getting space requirements on {0}. /// public static string ACTION_GET_DISK_SPACE_REQUIREMENTS_DESCRIPTION { get { @@ -1249,7 +1249,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Get space requirements ähnelt. + /// Looks up a localized string similar to Get space requirements. /// public static string ACTION_GET_DISK_SPACE_REQUIREMENTS_TITLE { get { @@ -1258,7 +1258,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Get Health Check analysis result from [Citrix] Insight Services ähnelt. + /// Looks up a localized string similar to Get Health Check analysis result from [Citrix] Insight Services. /// public static string ACTION_GET_HEALTH_CHECK_RESULT { get { @@ -1267,7 +1267,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to get the analysis result ähnelt. + /// Looks up a localized string similar to Failed to get the analysis result. /// public static string ACTION_GET_HEALTH_CHECK_RESULT_FAILED { get { @@ -1276,7 +1276,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Getting the analysis result ähnelt. + /// Looks up a localized string similar to Getting the analysis result. /// public static string ACTION_GET_HEALTH_CHECK_RESULT_PROGRESS { get { @@ -1285,7 +1285,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Action completed. {0} VDIs found. ähnelt. + /// Looks up a localized string similar to Action completed. {0} VDIs found.. /// public static string ACTION_GET_METADATA_VDIS_DONE { get { @@ -1294,7 +1294,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Looking for metadata VDIs on '{0}' ähnelt. + /// Looks up a localized string similar to Looking for metadata VDIs on '{0}'. /// public static string ACTION_GET_METADATA_VDIS_STATUS { get { @@ -1303,7 +1303,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Get metadata VDIs ähnelt. + /// Looks up a localized string similar to Get metadata VDIs. /// public static string ACTION_GET_METADATA_VDIS_TITLE { get { @@ -1312,7 +1312,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Retrieving system status capabilities ähnelt. + /// Looks up a localized string similar to Retrieving system status capabilities. /// public static string ACTION_GET_SYSTEM_STATUS_CAPABILITIES { get { @@ -1321,7 +1321,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Retrieved system status capabilities ähnelt. + /// Looks up a localized string similar to Retrieved system status capabilities. /// public static string ACTION_GET_SYSTEM_STATUS_CAPABILITIES_DONE { get { @@ -1330,7 +1330,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Retrieving system status capabilities from server {0} ähnelt. + /// Looks up a localized string similar to Retrieving system status capabilities from server {0}. /// public static string ACTION_GET_SYSTEM_STATUS_CAPABILITIES_ON { get { @@ -1339,7 +1339,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fetching data sources ähnelt. + /// Looks up a localized string similar to Fetching data sources. /// public static string ACTION_GETTING_DATASOURCES { get { @@ -1348,7 +1348,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting HA restart priority ähnelt. + /// Looks up a localized string similar to Setting HA restart priority. /// public static string ACTION_HA_UNPROTECT_VM_DESCRIPTION { get { @@ -1357,7 +1357,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting HA restart priority on '{0}' to '{1}' ähnelt. + /// Looks up a localized string similar to Setting HA restart priority on '{0}' to '{1}'. /// public static string ACTION_HA_UNPROTECT_VM_TITLE { get { @@ -1366,7 +1366,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Authentication with [Citrix] Insight Services ähnelt. + /// Looks up a localized string similar to Authentication with [Citrix] Insight Services. /// public static string ACTION_HEALTHCHECK_AUTHENTICATION { get { @@ -1375,7 +1375,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Authenticating with [Citrix] Insight Services ähnelt. + /// Looks up a localized string similar to Authenticating with [Citrix] Insight Services. /// public static string ACTION_HEALTHCHECK_AUTHENTICATION_PROGRESS { get { @@ -1384,7 +1384,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' rebooted ähnelt. + /// Looks up a localized string similar to Server '{0}' rebooted. /// public static string ACTION_HOST_REBOOTED { get { @@ -1393,7 +1393,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' rebooting ähnelt. + /// Looks up a localized string similar to Server '{0}' rebooting. /// public static string ACTION_HOST_REBOOTING { get { @@ -1402,7 +1402,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' shut down ähnelt. + /// Looks up a localized string similar to Server '{0}' shut down. /// public static string ACTION_HOST_SHUTDOWN { get { @@ -1411,7 +1411,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' shutting down ähnelt. + /// Looks up a localized string similar to Server '{0}' shutting down. /// public static string ACTION_HOST_SHUTTING_DOWN { get { @@ -1420,7 +1420,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' failed to respond to the remote power-on request. ähnelt. + /// Looks up a localized string similar to Server '{0}' failed to respond to the remote power-on request.. /// public static string ACTION_HOST_START_FAILED { get { @@ -1429,7 +1429,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Powering on server '{0}' ähnelt. + /// Looks up a localized string similar to Powering on server '{0}'. /// public static string ACTION_HOST_START_TITLE { get { @@ -1438,7 +1438,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Powered on ähnelt. + /// Looks up a localized string similar to Powered on. /// public static string ACTION_HOST_STARTED { get { @@ -1447,7 +1447,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sending remote power-on request... ähnelt. + /// Looks up a localized string similar to Sending remote power-on request.... /// public static string ACTION_HOST_STARTING { get { @@ -1456,7 +1456,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Servers rebooted ähnelt. + /// Looks up a localized string similar to Servers rebooted. /// public static string ACTION_HOSTS_REBOOTED { get { @@ -1465,7 +1465,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooting servers ähnelt. + /// Looks up a localized string similar to Rebooting servers. /// public static string ACTION_HOSTS_REBOOTING { get { @@ -1474,7 +1474,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Servers shut down ähnelt. + /// Looks up a localized string similar to Servers shut down. /// public static string ACTION_HOSTS_SHUTDOWN { get { @@ -1483,7 +1483,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shutting down servers ähnelt. + /// Looks up a localized string similar to Shutting down servers. /// public static string ACTION_HOSTS_SHUTTING_DOWN { get { @@ -1492,7 +1492,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Importing VM '{0}' ähnelt. + /// Looks up a localized string similar to Importing VM '{0}'. /// public static string ACTION_IMPORT_VM_TITLE { get { @@ -1501,7 +1501,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Importing VM '{0}' to '{1}' ähnelt. + /// Looks up a localized string similar to Importing VM '{0}' to '{1}'. /// public static string ACTION_IMPORT_VM_TO_HOST_TITLE { get { @@ -1510,7 +1510,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning for IQNs on iSCSI filer {0} ähnelt. + /// Looks up a localized string similar to Scanning for IQNs on iSCSI filer {0}. /// public static string ACTION_ISCSI_IQN_SCANNING { get { @@ -1519,7 +1519,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning for LUNs on iSCSI filer {0} ähnelt. + /// Looks up a localized string similar to Scanning for LUNs on iSCSI filer {0}. /// public static string ACTION_ISCSI_LUN_SCANNING { get { @@ -1528,7 +1528,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrating {0} virtual disks to {1} ähnelt. + /// Looks up a localized string similar to Migrating {0} virtual disks to {1}. /// public static string ACTION_MIGRATING_X_VDIS { get { @@ -1537,7 +1537,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Completed migrating virtual disks ähnelt. + /// Looks up a localized string similar to Completed migrating virtual disks. /// public static string ACTION_MIGRATING_X_VDIS_COMPLETED { get { @@ -1546,7 +1546,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Started migrating virtual disks ähnelt. + /// Looks up a localized string similar to Started migrating virtual disks. /// public static string ACTION_MIGRATING_X_VDIS_STARTED { get { @@ -1555,7 +1555,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Moving virtual disk '{0}'... ähnelt. + /// Looks up a localized string similar to Moving virtual disk '{0}'.... /// public static string ACTION_MOVING_VDI_STATUS { get { @@ -1564,7 +1564,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Moving Virtual Disk '{0}' to SR '{1}' ähnelt. + /// Looks up a localized string similar to Moving Virtual Disk '{0}' to SR '{1}'. /// public static string ACTION_MOVING_VDI_TITLE { get { @@ -1573,7 +1573,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Moving {0} virtual disks to {1} ähnelt. + /// Looks up a localized string similar to Moving {0} virtual disks to {1}. /// public static string ACTION_MOVING_X_VDIS { get { @@ -1582,7 +1582,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Completed moving virtual disks ähnelt. + /// Looks up a localized string similar to Completed moving virtual disks. /// public static string ACTION_MOVING_X_VDIS_COMPLETED { get { @@ -1591,7 +1591,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Started moving virtual disks ähnelt. + /// Looks up a localized string similar to Started moving virtual disks. /// public static string ACTION_MOVING_X_VDIS_STARTED { get { @@ -1600,7 +1600,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage Repositories prepared ähnelt. + /// Looks up a localized string similar to Storage Repositories prepared. /// public static string ACTION_MULTIPLE_DR_TASK_CREATE_END { get { @@ -1609,7 +1609,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Preparing Storage Repositories ähnelt. + /// Looks up a localized string similar to Preparing Storage Repositories. /// public static string ACTION_MULTIPLE_DR_TASK_CREATE_START { get { @@ -1618,7 +1618,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Prepare Storage Repositories ähnelt. + /// Looks up a localized string similar to Prepare Storage Repositories. /// public static string ACTION_MULTIPLE_DR_TASK_CREATE_TITLE { get { @@ -1627,7 +1627,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pausing ähnelt. + /// Looks up a localized string similar to Pausing. /// public static string ACTION_PAUSE_CONTAINER_DESCRIPTION { get { @@ -1636,7 +1636,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Paused ähnelt. + /// Looks up a localized string similar to Paused. /// public static string ACTION_PAUSE_CONTAINER_END_DESCRIPTION { get { @@ -1645,7 +1645,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pausing Docker Container '{0}' ähnelt. + /// Looks up a localized string similar to Pausing Docker Container '{0}'. /// public static string ACTION_PAUSE_CONTAINER_TITLE { get { @@ -1654,7 +1654,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning... ähnelt. + /// Looks up a localized string similar to Scanning.... /// public static string ACTION_PIF_SCAN_START_DESC { get { @@ -1663,7 +1663,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning NICs on server '{0}' ähnelt. + /// Looks up a localized string similar to Scanning NICs on server '{0}'. /// public static string ACTION_PIF_SCAN_TITLE { get { @@ -1672,7 +1672,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Refreshing networks... ähnelt. + /// Looks up a localized string similar to Refreshing networks.... /// public static string ACTION_PIF_UNPLUG_PLUG_DESC { get { @@ -1681,7 +1681,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Refreshing Networks ähnelt. + /// Looks up a localized string similar to Refreshing Networks. /// public static string ACTION_PIF_UNPLUG_PLUG_TITLE { get { @@ -1690,7 +1690,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding members... ähnelt. + /// Looks up a localized string similar to Adding members.... /// public static string ACTION_POOL_WIZARD_CREATE_DESCRIPTION_ADDING_MEMBERS { get { @@ -1699,7 +1699,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Dropping connections to members... ähnelt. + /// Looks up a localized string similar to Dropping connections to members.... /// public static string ACTION_POOL_WIZARD_CREATE_DESCRIPTION_DISCONNECTING { get { @@ -1708,7 +1708,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating pool completed ähnelt. + /// Looks up a localized string similar to Creating pool completed. /// public static string ACTION_POOL_WIZARD_CREATE_DESCRIPTION_DONE { get { @@ -1717,7 +1717,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Preparing... ähnelt. + /// Looks up a localized string similar to Preparing.... /// public static string ACTION_PREPARING { get { @@ -1726,7 +1726,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM '{0}' could not be shut down. ähnelt. + /// Looks up a localized string similar to VM '{0}' could not be shut down.. /// public static string ACTION_REBOOT_HOST_VM_SHUTDOWN_ACK { get { @@ -1735,7 +1735,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing alerts... ähnelt. + /// Looks up a localized string similar to Removing alerts.... /// public static string ACTION_REMOVE_ALERTS_DESCRIPTION { get { @@ -1744,7 +1744,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removed {0} alerts ähnelt. + /// Looks up a localized string similar to Removed {0} alerts. /// public static string ACTION_REMOVE_ALERTS_DONE { get { @@ -1753,7 +1753,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removed 1 alert ähnelt. + /// Looks up a localized string similar to Removed 1 alert. /// public static string ACTION_REMOVE_ALERTS_DONE_ONE { get { @@ -1762,7 +1762,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing {0} client alerts ähnelt. + /// Looks up a localized string similar to Removing {0} client alerts. /// public static string ACTION_REMOVE_ALERTS_ON_CLIENT_TITLE { get { @@ -1771,7 +1771,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing client alert ähnelt. + /// Looks up a localized string similar to Removing client alert. /// public static string ACTION_REMOVE_ALERTS_ON_CLIENT_TITLE_ONE { get { @@ -1780,7 +1780,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing {0} alerts on '{1}' ähnelt. + /// Looks up a localized string similar to Removing {0} alerts on '{1}'. /// public static string ACTION_REMOVE_ALERTS_ON_CONNECTION_TITLE { get { @@ -1789,7 +1789,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing alert on '{0}' ähnelt. + /// Looks up a localized string similar to Removing alert on '{0}'. /// public static string ACTION_REMOVE_ALERTS_ON_CONNECTION_TITLE_ONE { get { @@ -1798,7 +1798,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing alert {0} of {1}... ähnelt. + /// Looks up a localized string similar to Removing alert {0} of {1}.... /// public static string ACTION_REMOVE_ALERTS_PROGRESS_DESCRIPTION { get { @@ -1807,7 +1807,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restarting ähnelt. + /// Looks up a localized string similar to Restarting. /// public static string ACTION_RESTART_CONTAINER_DESCRIPTION { get { @@ -1816,7 +1816,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restarted ähnelt. + /// Looks up a localized string similar to Restarted. /// public static string ACTION_RESTART_CONTAINER_END_DESCRIPTION { get { @@ -1825,7 +1825,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restarting Docker Container '{0}' ähnelt. + /// Looks up a localized string similar to Restarting Docker Container '{0}'. /// public static string ACTION_RESTART_CONTAINER_TITLE { get { @@ -1834,7 +1834,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resuming ähnelt. + /// Looks up a localized string similar to Resuming. /// public static string ACTION_RESUME_CONTAINER_DESCRIPTION { get { @@ -1843,7 +1843,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resumed ähnelt. + /// Looks up a localized string similar to Resumed. /// public static string ACTION_RESUME_CONTAINER_END_DESCRIPTION { get { @@ -1852,7 +1852,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resuming Docker Container '{0}' ähnelt. + /// Looks up a localized string similar to Resuming Docker Container '{0}'. /// public static string ACTION_RESUME_CONTAINER_TITLE { get { @@ -1861,7 +1861,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Preparing to resume and start VMs... ähnelt. + /// Looks up a localized string similar to Preparing to resume and start VMs.... /// public static string ACTION_RESUMEANDSTARTVMS_PREPARING { get { @@ -1870,7 +1870,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resuming VM {0} of {1} ähnelt. + /// Looks up a localized string similar to Resuming VM {0} of {1}. /// public static string ACTION_RESUMEANDSTARTVMS_RESUMINGN { get { @@ -1879,7 +1879,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting VM {0} of {1} ähnelt. + /// Looks up a localized string similar to Starting VM {0} of {1}. /// public static string ACTION_RESUMEANDSTARTVMS_STARTINGN { get { @@ -1888,7 +1888,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Save alerts ähnelt. + /// Looks up a localized string similar to Save alerts. /// public static string ACTION_SAVE_ALERTS { get { @@ -1897,7 +1897,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving settings... ähnelt. + /// Looks up a localized string similar to Saving settings.... /// public static string ACTION_SAVE_CHANGES_IN_PROGRESS { get { @@ -1906,7 +1906,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Settings saved ähnelt. + /// Looks up a localized string similar to Settings saved. /// public static string ACTION_SAVE_CHANGES_SUCCESSFUL { get { @@ -1915,7 +1915,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Save settings ähnelt. + /// Looks up a localized string similar to Save settings. /// public static string ACTION_SAVE_CHANGES_TITLE { get { @@ -1924,7 +1924,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Save Custom Fields ähnelt. + /// Looks up a localized string similar to Save Custom Fields. /// public static string ACTION_SAVE_CUSTOM_FIELDS { get { @@ -1933,7 +1933,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Save data sources ähnelt. + /// Looks up a localized string similar to Save data sources. /// public static string ACTION_SAVE_DATASOURCES { get { @@ -1942,7 +1942,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Save folder and tags ähnelt. + /// Looks up a localized string similar to Save folder and tags. /// public static string ACTION_SAVE_FOLDER_TAGS { get { @@ -1951,7 +1951,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Save Health Check settings ähnelt. + /// Looks up a localized string similar to Save Health Check settings. /// public static string ACTION_SAVE_HEALTHCHECK_SETTINGS { get { @@ -1960,7 +1960,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Save settings for '{0}'... ähnelt. + /// Looks up a localized string similar to Save settings for '{0}'.... /// public static string ACTION_SAVE_SETTINGS { get { @@ -1969,7 +1969,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving alerts for '{0}'... ähnelt. + /// Looks up a localized string similar to Saving alerts for '{0}'.... /// public static string ACTION_SAVING_ALERTS_FOR { get { @@ -1978,7 +1978,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving Custom Fields for '{0}'... ähnelt. + /// Looks up a localized string similar to Saving Custom Fields for '{0}'.... /// public static string ACTION_SAVING_CUSTOM_FIELDS_FOR { get { @@ -1987,7 +1987,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving data sources ähnelt. + /// Looks up a localized string similar to Saving data sources. /// public static string ACTION_SAVING_DATASOURCES { get { @@ -1996,7 +1996,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving folder and tags for '{0}'... ähnelt. + /// Looks up a localized string similar to Saving folder and tags for '{0}'.... /// public static string ACTION_SAVING_FOLDER_TAGS_FOR { get { @@ -2005,7 +2005,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving Health Check settings for '{0}'... ähnelt. + /// Looks up a localized string similar to Saving Health Check settings for '{0}'.... /// public static string ACTION_SAVING_HEALTHCHECK_SETTINGS { get { @@ -2014,7 +2014,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving settings for '{0}'... ähnelt. + /// Looks up a localized string similar to Saving settings for '{0}'.... /// public static string ACTION_SAVING_SETTINGS_FOR { get { @@ -2023,7 +2023,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving tags for the selected items. ähnelt. + /// Looks up a localized string similar to Saving tags for the selected items.. /// public static string ACTION_SAVING_TAGS_DESCRIPTION { get { @@ -2032,7 +2032,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving tags. ähnelt. + /// Looks up a localized string similar to Saving tags.. /// public static string ACTION_SAVING_TAGS_TITLE { get { @@ -2041,7 +2041,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Performing SR scan from '{0}' ähnelt. + /// Looks up a localized string similar to Performing SR scan from '{0}'. /// public static string ACTION_SCANNING_SR_FROM { get { @@ -2050,7 +2050,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Renamed server network interface ähnelt. + /// Looks up a localized string similar to Renamed server network interface. /// public static string ACTION_SET_SECONDARY_MANAGEMENT_PURPOSE_DONE { get { @@ -2059,7 +2059,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Renaming server network interface ähnelt. + /// Looks up a localized string similar to Renaming server network interface. /// public static string ACTION_SET_SECONDARY_MANAGEMENT_PURPOSE_TITLE { get { @@ -2068,7 +2068,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving VM Configuration ähnelt. + /// Looks up a localized string similar to Saving VM Configuration. /// public static string ACTION_SET_VM_OTHER_CONFIG_TITLE { get { @@ -2077,7 +2077,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut down ähnelt. + /// Looks up a localized string similar to Shut down. /// public static string ACTION_SHUT_DOWN { get { @@ -2086,7 +2086,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete VM ähnelt. + /// Looks up a localized string similar to Delete VM. /// public static string ACTION_SHUTDOWN_AND_DESTROY_VM_TITLE { get { @@ -2095,7 +2095,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete VMs ähnelt. + /// Looks up a localized string similar to Delete VMs. /// public static string ACTION_SHUTDOWN_AND_DESTROY_VMS_TITLE { get { @@ -2104,7 +2104,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shutting down ähnelt. + /// Looks up a localized string similar to Shutting down. /// public static string ACTION_SHUTTING_DOWN { get { @@ -2113,7 +2113,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attached SR ähnelt. + /// Looks up a localized string similar to Attached SR. /// public static string ACTION_SR_ATTACH_SUCCESSFUL { get { @@ -2122,7 +2122,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attaching SR ähnelt. + /// Looks up a localized string similar to Attaching SR. /// public static string ACTION_SR_ATTACHING { get { @@ -2131,7 +2131,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attaching SR '{0}' to '{1}' ähnelt. + /// Looks up a localized string similar to Attaching SR '{0}' to '{1}'. /// public static string ACTION_SR_ATTACHING_TITLE { get { @@ -2140,7 +2140,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Created SR ähnelt. + /// Looks up a localized string similar to Created SR. /// public static string ACTION_SR_CREATE_SUCCESSFUL { get { @@ -2149,7 +2149,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating SR ähnelt. + /// Looks up a localized string similar to Creating SR. /// public static string ACTION_SR_CREATING { get { @@ -2158,7 +2158,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating {0} SR '{1}' on '{2}' ähnelt. + /// Looks up a localized string similar to Creating {0} SR '{1}' on '{2}'. /// public static string ACTION_SR_CREATING_TITLE { get { @@ -2167,7 +2167,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SR destroyed ähnelt. + /// Looks up a localized string similar to SR destroyed. /// public static string ACTION_SR_DESTROY_SUCCESSFUL { get { @@ -2176,7 +2176,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destroying SR '{0}' on '{1}'... ähnelt. + /// Looks up a localized string similar to Destroying SR '{0}' on '{1}'.... /// public static string ACTION_SR_DESTROYING { get { @@ -2185,7 +2185,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detached SR {0} ähnelt. + /// Looks up a localized string similar to Detached SR {0}. /// public static string ACTION_SR_DETACH_SUCCESSFUL { get { @@ -2194,7 +2194,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detaching SR '{0}' from '{1}' ähnelt. + /// Looks up a localized string similar to Detaching SR '{0}' from '{1}'. /// public static string ACTION_SR_DETACHING { get { @@ -2203,7 +2203,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Forgetting SR '{0}' on '{1}'... ähnelt. + /// Looks up a localized string similar to Forgetting SR '{0}' on '{1}'.... /// public static string ACTION_SR_FORGETTING { get { @@ -2212,7 +2212,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SR repair canceled ähnelt. + /// Looks up a localized string similar to SR repair canceled. /// public static string ACTION_SR_REPAIR_CANCELLED { get { @@ -2221,7 +2221,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating PBD for {0} ähnelt. + /// Looks up a localized string similar to Creating PBD for {0}. /// public static string ACTION_SR_REPAIR_CREATE_PBD { get { @@ -2230,7 +2230,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Repair failed: the number of PBDs was not equal to the number of servers. Try running the action again. ähnelt. + /// Looks up a localized string similar to Repair failed: the number of PBDs was not equal to the number of servers. Try running the action again.. /// public static string ACTION_SR_REPAIR_FAILED { get { @@ -2239,7 +2239,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Plugging PBD for {0} ähnelt. + /// Looks up a localized string similar to Plugging PBD for {0}. /// public static string ACTION_SR_REPAIR_PLUGGING_PBD { get { @@ -2248,7 +2248,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Repaired SR {0} ähnelt. + /// Looks up a localized string similar to Repaired SR {0}. /// public static string ACTION_SR_REPAIR_SUCCESSFUL { get { @@ -2257,7 +2257,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Repairing SR {0} ähnelt. + /// Looks up a localized string similar to Repairing SR {0}. /// public static string ACTION_SR_REPAIRING { get { @@ -2266,7 +2266,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning {0} filer {1} for existing SRs... ähnelt. + /// Looks up a localized string similar to Scanning {0} filer {1} for existing SRs.... /// public static string ACTION_SR_SCAN_DESCRIPTION { get { @@ -2275,7 +2275,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning filer {0} ähnelt. + /// Looks up a localized string similar to Scanning filer {0}. /// public static string ACTION_SR_SCAN_NAME { get { @@ -2284,7 +2284,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning {0} ähnelt. + /// Looks up a localized string similar to Scanning {0}. /// public static string ACTION_SR_SCAN_NAME_CSLG { get { @@ -2293,7 +2293,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanned for SRs ähnelt. + /// Looks up a localized string similar to Scanned for SRs. /// public static string ACTION_SR_SCAN_SUCCESSFUL { get { @@ -2302,7 +2302,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning for {0} SRs on {1} ähnelt. + /// Looks up a localized string similar to Scanning for {0} SRs on {1}. /// public static string ACTION_SR_SCANNING { get { @@ -2311,7 +2311,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Set default SR ähnelt. + /// Looks up a localized string similar to Set default SR. /// public static string ACTION_SR_SET_DEFAULT_SUCCESSFUL { get { @@ -2320,7 +2320,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting '{0}' as default SR on '{1}' ähnelt. + /// Looks up a localized string similar to Setting '{0}' as default SR on '{1}'. /// public static string ACTION_SR_SETTING_DEFAULT { get { @@ -2329,7 +2329,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shared SR {0} ähnelt. + /// Looks up a localized string similar to Shared SR {0}. /// public static string ACTION_SR_SHARE_SUCCESSFUL { get { @@ -2338,7 +2338,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sharing SR {0} ähnelt. + /// Looks up a localized string similar to Sharing SR {0}. /// public static string ACTION_SR_SHARING { get { @@ -2347,7 +2347,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reclaiming freed space ähnelt. + /// Looks up a localized string similar to Reclaiming freed space. /// public static string ACTION_SR_TRIM_DESCRIPTION { get { @@ -2356,7 +2356,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Completed ähnelt. + /// Looks up a localized string similar to Completed. /// public static string ACTION_SR_TRIM_DONE { get { @@ -2365,7 +2365,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reclaiming freed space on SR '{0}' ähnelt. + /// Looks up a localized string similar to Reclaiming freed space on SR '{0}'. /// public static string ACTION_SR_TRIM_TITLE { get { @@ -2374,7 +2374,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destroying SRs ähnelt. + /// Looks up a localized string similar to Destroying SRs. /// public static string ACTION_SRS_DESTROYING { get { @@ -2383,7 +2383,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detached SRs ähnelt. + /// Looks up a localized string similar to Detached SRs. /// public static string ACTION_SRS_DETACH_SUCCESSFUL { get { @@ -2392,7 +2392,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detaching SRs ähnelt. + /// Looks up a localized string similar to Detaching SRs. /// public static string ACTION_SRS_DETACHING { get { @@ -2401,7 +2401,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Forgetting SRs ähnelt. + /// Looks up a localized string similar to Forgetting SRs. /// public static string ACTION_SRS_FORGETTING { get { @@ -2410,7 +2410,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade SRs ähnelt. + /// Looks up a localized string similar to Upgrade SRs. /// public static string ACTION_SRS_UPGRADE { get { @@ -2419,7 +2419,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgraded SRS ähnelt. + /// Looks up a localized string similar to Upgraded SRS. /// public static string ACTION_SRS_UPGRADED { get { @@ -2428,7 +2428,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrading SRs ähnelt. + /// Looks up a localized string similar to Upgrading SRs. /// public static string ACTION_SRS_UPGRADING { get { @@ -2437,7 +2437,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting ähnelt. + /// Looks up a localized string similar to Starting. /// public static string ACTION_START_CONTAINER_DESCRIPTION { get { @@ -2446,7 +2446,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Started ähnelt. + /// Looks up a localized string similar to Started. /// public static string ACTION_START_CONTAINER_END_DESCRIPTION { get { @@ -2455,7 +2455,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting Docker Container '{0}' ähnelt. + /// Looks up a localized string similar to Starting Docker Container '{0}'. /// public static string ACTION_START_CONTAINER_TITLE { get { @@ -2464,7 +2464,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There are no VMs or vApps to start ähnelt. + /// Looks up a localized string similar to There are no VMs or vApps to start. /// public static string ACTION_START_VMS_AND_APPLIANCES_NONE_SELECTED { get { @@ -2473,7 +2473,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start VMs and vApps ähnelt. + /// Looks up a localized string similar to Start VMs and vApps. /// public static string ACTION_START_VMS_AND_APPLIANCES_TITLE { get { @@ -2482,7 +2482,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Canceled ähnelt. + /// Looks up a localized string similar to Canceled. /// public static string ACTION_STATUS_CANCELLED { get { @@ -2491,7 +2491,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed ähnelt. + /// Looks up a localized string similar to Failed. /// public static string ACTION_STATUS_FAILED { get { @@ -2500,7 +2500,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die In Progress ähnelt. + /// Looks up a localized string similar to In Progress. /// public static string ACTION_STATUS_IN_PROGRESS { get { @@ -2509,7 +2509,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Succeeded ähnelt. + /// Looks up a localized string similar to Succeeded. /// public static string ACTION_STATUS_SUCCEEDED { get { @@ -2518,7 +2518,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Stopping ähnelt. + /// Looks up a localized string similar to Stopping. /// public static string ACTION_STOP_CONTAINER_DESCRIPTION { get { @@ -2527,7 +2527,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Stopped ähnelt. + /// Looks up a localized string similar to Stopped. /// public static string ACTION_STOP_CONTAINER_END_DESCRIPTION { get { @@ -2536,7 +2536,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Stopping Docker Container '{0}' ähnelt. + /// Looks up a localized string similar to Stopping Docker Container '{0}'. /// public static string ACTION_STOP_CONTAINER_TITLE { get { @@ -2545,7 +2545,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Getting system status canceled ähnelt. + /// Looks up a localized string similar to Getting system status canceled. /// public static string ACTION_SYSTEM_STATUS_CANCELLED { get { @@ -2554,7 +2554,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Compiling status report for {0} ähnelt. + /// Looks up a localized string similar to Compiling status report for {0}. /// public static string ACTION_SYSTEM_STATUS_COMPILING { get { @@ -2563,7 +2563,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Getting system status from the designated servers... ähnelt. + /// Looks up a localized string similar to Getting system status from the designated servers.... /// public static string ACTION_SYSTEM_STATUS_DESCRIPTION { get { @@ -2572,7 +2572,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Getting system status failed: disk full ähnelt. + /// Looks up a localized string similar to Getting system status failed: disk full. /// public static string ACTION_SYSTEM_STATUS_DISK_FULL { get { @@ -2581,7 +2581,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No data was compiled. Press previous to select new items or servers and try again. ähnelt. + /// Looks up a localized string similar to No data was compiled. Press previous to select new items or servers and try again.. /// public static string ACTION_SYSTEM_STATUS_FAILED { get { @@ -2590,7 +2590,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Finished compiling status report ähnelt. + /// Looks up a localized string similar to Finished compiling status report. /// public static string ACTION_SYSTEM_STATUS_SUCCESSFUL { get { @@ -2599,7 +2599,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Finished compiling status report (with errors). A partial status report was compiled. ähnelt. + /// Looks up a localized string similar to Finished compiling status report (with errors). A partial status report was compiled.. /// public static string ACTION_SYSTEM_STATUS_SUCCESSFUL_PARTIAL { get { @@ -2608,7 +2608,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Getting system status information ähnelt. + /// Looks up a localized string similar to Getting system status information. /// public static string ACTION_SYSTEM_STATUS_TITLE { get { @@ -2617,7 +2617,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copy of {0} ähnelt. + /// Looks up a localized string similar to Copy of {0}. /// public static string ACTION_TEMPLATE_CLONE_NEW_NAME { get { @@ -2626,7 +2626,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Duplicated ähnelt. + /// Looks up a localized string similar to Duplicated. /// public static string ACTION_TEMPLATE_CLONED { get { @@ -2635,7 +2635,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Duplicating ähnelt. + /// Looks up a localized string similar to Duplicating. /// public static string ACTION_TEMPLATE_CLONING { get { @@ -2644,7 +2644,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restart toolstack on '{0}' ähnelt. + /// Looks up a localized string similar to Restart toolstack on '{0}'. /// public static string ACTION_TOOLSTACK_RESTART_ON { get { @@ -2653,7 +2653,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Toolstack restarted. ähnelt. + /// Looks up a localized string similar to Toolstack restarted.. /// public static string ACTION_TOOLSTACK_RESTARTED { get { @@ -2662,7 +2662,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Toolstack restarted on '{0}'. ähnelt. + /// Looks up a localized string similar to Toolstack restarted on '{0}'.. /// public static string ACTION_TOOLSTACK_RESTARTED_ON { get { @@ -2671,7 +2671,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restarting toolstack... ähnelt. + /// Looks up a localized string similar to Restarting toolstack.... /// public static string ACTION_TOOLSTACK_RESTARTING { get { @@ -2680,7 +2680,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restarting toolstack on '{0}'... ähnelt. + /// Looks up a localized string similar to Restarting toolstack on '{0}'.... /// public static string ACTION_TOOLSTACK_RESTARTING_ON { get { @@ -2689,7 +2689,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Transfer Health Check settings ähnelt. + /// Looks up a localized string similar to Transfer Health Check settings. /// public static string ACTION_TRANSFER_HEALTHCHECK_SETTINGS { get { @@ -2698,7 +2698,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updating integrated GPU passthrough on '{0}' ähnelt. + /// Looks up a localized string similar to Updating integrated GPU passthrough on '{0}'. /// public static string ACTION_UPDATE_INTEGRATED_GPU_PASSTHROUGH_TITLE { get { @@ -2707,7 +2707,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upload server status report to [Citrix] Insight Services ähnelt. + /// Looks up a localized string similar to Upload server status report to [Citrix] Insight Services. /// public static string ACTION_UPLOAD_SERVER_STATUS_REPORT { get { @@ -2716,7 +2716,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to upload the status report. ähnelt. + /// Looks up a localized string similar to Failed to upload the status report.. /// public static string ACTION_UPLOAD_SERVER_STATUS_REPORT_FAILED { get { @@ -2725,7 +2725,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uploading report to [Citrix] Insight Services ({0} of {1}) ähnelt. + /// Looks up a localized string similar to Uploading report to [Citrix] Insight Services ({0} of {1}). /// public static string ACTION_UPLOAD_SERVER_STATUS_REPORT_PERCENTAGE { get { @@ -2734,7 +2734,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uploading report to [Citrix] Insight Services ähnelt. + /// Looks up a localized string similar to Uploading report to [Citrix] Insight Services. /// public static string ACTION_UPLOAD_SERVER_STATUS_REPORT_PROGRESS { get { @@ -2743,7 +2743,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upload error. The patch was uploaded, but it cannot be found on the host. ähnelt. + /// Looks up a localized string similar to Upload error. The patch was uploaded, but it cannot be found on the host.. /// public static string ACTION_UPLOADPATCHTOMASTERPLANACTION_FAILED { get { @@ -2752,7 +2752,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die USB passthrough disabled ähnelt. + /// Looks up a localized string similar to USB passthrough disabled. /// public static string ACTION_USB_PASSTHROUGH_DISABLED { get { @@ -2761,7 +2761,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling USB passthrough for {0} ähnelt. + /// Looks up a localized string similar to Disabling USB passthrough for {0}. /// public static string ACTION_USB_PASSTHROUGH_DISABLING { get { @@ -2770,7 +2770,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die USB passthrough enabled ähnelt. + /// Looks up a localized string similar to USB passthrough enabled. /// public static string ACTION_USB_PASSTHROUGH_ENABLED { get { @@ -2779,7 +2779,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling USB passthrough for {0} ähnelt. + /// Looks up a localized string similar to Enabling USB passthrough for {0}. /// public static string ACTION_USB_PASSTHROUGH_ENABLING { get { @@ -2788,7 +2788,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual disk created ähnelt. + /// Looks up a localized string similar to Virtual disk created. /// public static string ACTION_VDI_CREATED { get { @@ -2797,7 +2797,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating virtual disk... ähnelt. + /// Looks up a localized string similar to Creating virtual disk.... /// public static string ACTION_VDI_CREATING { get { @@ -2806,7 +2806,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating disk '{0}' on SR '{1}' ähnelt. + /// Looks up a localized string similar to Creating disk '{0}' on SR '{1}'. /// public static string ACTION_VDI_CREATING_TITLE { get { @@ -2815,7 +2815,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual disk deleted ähnelt. + /// Looks up a localized string similar to Virtual disk deleted. /// public static string ACTION_VDI_DELETED { get { @@ -2824,7 +2824,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting virtual disk... ähnelt. + /// Looks up a localized string similar to Deleting virtual disk.... /// public static string ACTION_VDI_DELETING { get { @@ -2833,7 +2833,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Metadata loaded ähnelt. + /// Looks up a localized string similar to Metadata loaded. /// public static string ACTION_VDI_LOAD_METADATA_DONE { get { @@ -2842,7 +2842,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Loading metadata from SR '{0}' ähnelt. + /// Looks up a localized string similar to Loading metadata from SR '{0}'. /// public static string ACTION_VDI_LOAD_METADATA_STATUS { get { @@ -2851,7 +2851,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Load metadata from SR '{0}' ähnelt. + /// Looks up a localized string similar to Load metadata from SR '{0}'. /// public static string ACTION_VDI_LOAD_METADATA_TITLE { get { @@ -2860,7 +2860,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Metadata database opened ähnelt. + /// Looks up a localized string similar to Metadata database opened. /// public static string ACTION_VDI_OPEN_DATABASE_DONE { get { @@ -2869,7 +2869,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Opening metadata database from SR '{0}' ähnelt. + /// Looks up a localized string similar to Opening metadata database from SR '{0}'. /// public static string ACTION_VDI_OPEN_DATABASE_STATUS { get { @@ -2878,7 +2878,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Open metadata database from SR '{0}' ähnelt. + /// Looks up a localized string similar to Open metadata database from SR '{0}'. /// public static string ACTION_VDI_OPEN_DATABASE_TITLE { get { @@ -2887,7 +2887,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual GPU configuration saved ähnelt. + /// Looks up a localized string similar to Virtual GPU configuration saved. /// public static string ACTION_VGPU_CONFIGURATION_SAVED { get { @@ -2896,7 +2896,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving virtual GPU configuration ähnelt. + /// Looks up a localized string similar to Saving virtual GPU configuration. /// public static string ACTION_VGPU_CONFIGURATION_SAVING { get { @@ -2905,7 +2905,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual network interface created ähnelt. + /// Looks up a localized string similar to Virtual network interface created. /// public static string ACTION_VIF_CREATED { get { @@ -2914,7 +2914,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating virtual network interface ähnelt. + /// Looks up a localized string similar to Creating virtual network interface. /// public static string ACTION_VIF_CREATING { get { @@ -2923,7 +2923,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating new virtual network interface on VM {0} ähnelt. + /// Looks up a localized string similar to Creating new virtual network interface on VM {0}. /// public static string ACTION_VIF_CREATING_TITLE { get { @@ -2932,7 +2932,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual network interface deleted ähnelt. + /// Looks up a localized string similar to Virtual network interface deleted. /// public static string ACTION_VIF_DELETED { get { @@ -2941,7 +2941,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting virtual network interface ähnelt. + /// Looks up a localized string similar to Deleting virtual network interface. /// public static string ACTION_VIF_DELETING { get { @@ -2950,7 +2950,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting virtual network interface '{0}' from VM '{1}' ähnelt. + /// Looks up a localized string similar to Deleting virtual network interface '{0}' from VM '{1}'. /// public static string ACTION_VIF_DELETING_TITLE { get { @@ -2959,7 +2959,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Activating virtual network interface on VM '{0}' ähnelt. + /// Looks up a localized string similar to Activating virtual network interface on VM '{0}'. /// public static string ACTION_VIF_PLUG_TITLE { get { @@ -2968,7 +2968,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Activated virtual network interface ähnelt. + /// Looks up a localized string similar to Activated virtual network interface. /// public static string ACTION_VIF_PLUGGED { get { @@ -2977,7 +2977,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Activating virtual network interface... ähnelt. + /// Looks up a localized string similar to Activating virtual network interface.... /// public static string ACTION_VIF_PLUGGING { get { @@ -2986,7 +2986,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deactivating virtual network interface on VM '{0}' ähnelt. + /// Looks up a localized string similar to Deactivating virtual network interface on VM '{0}'. /// public static string ACTION_VIF_UNPLUG_TITLE { get { @@ -2995,7 +2995,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deactivated virtual network interface ähnelt. + /// Looks up a localized string similar to Deactivated virtual network interface. /// public static string ACTION_VIF_UNPLUGGED { get { @@ -3004,7 +3004,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deactivating virtual network interface... ähnelt. + /// Looks up a localized string similar to Deactivating virtual network interface.... /// public static string ACTION_VIF_UNPLUGGING { get { @@ -3013,7 +3013,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual network interface updated ähnelt. + /// Looks up a localized string similar to Virtual network interface updated. /// public static string ACTION_VIF_UPDATED { get { @@ -3022,7 +3022,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updating virtual network interface ähnelt. + /// Looks up a localized string similar to Updating virtual network interface. /// public static string ACTION_VIF_UPDATING { get { @@ -3031,7 +3031,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updating virtual network interface '{0}' on VM '{1}' ähnelt. + /// Looks up a localized string similar to Updating virtual network interface '{0}' on VM '{1}'. /// public static string ACTION_VIF_UPDATING_TITLE { get { @@ -3040,7 +3040,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copied ähnelt. + /// Looks up a localized string similar to Copied. /// public static string ACTION_VM_COPIED { get { @@ -3049,7 +3049,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copying ähnelt. + /// Looks up a localized string similar to Copying. /// public static string ACTION_VM_COPYING { get { @@ -3058,7 +3058,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copying VM '{0}' to '{1}' on SR '{2}' ähnelt. + /// Looks up a localized string similar to Copying VM '{0}' to '{1}' on SR '{2}'. /// public static string ACTION_VM_COPYING_TITLE { get { @@ -3067,7 +3067,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copying VM '{0}' ähnelt. + /// Looks up a localized string similar to Copying VM '{0}'. /// public static string ACTION_VM_COPYING_TITLE_MEDDLING { get { @@ -3076,7 +3076,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copying {0} canceled ähnelt. + /// Looks up a localized string similar to Copying {0} canceled. /// public static string ACTION_VM_CROSS_POOL_COPY_CANCELLED { get { @@ -3085,7 +3085,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copying VM '{0}' to '{1}' ähnelt. + /// Looks up a localized string similar to Copying VM '{0}' to '{1}'. /// public static string ACTION_VM_CROSS_POOL_COPY_TITLE { get { @@ -3094,7 +3094,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting snapshot '{0}'... ähnelt. + /// Looks up a localized string similar to Deleting snapshot '{0}'.... /// public static string ACTION_VM_DELETE_SNAPSHOT_TITLE { get { @@ -3103,7 +3103,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting snapshots ähnelt. + /// Looks up a localized string similar to Deleting snapshots. /// public static string ACTION_VM_DELETE_SNAPSHOTS_TITLE { get { @@ -3112,7 +3112,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleted ähnelt. + /// Looks up a localized string similar to Deleted. /// public static string ACTION_VM_DESTROYED { get { @@ -3121,7 +3121,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting ähnelt. + /// Looks up a localized string similar to Deleting. /// public static string ACTION_VM_DESTROYING { get { @@ -3130,7 +3130,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting VM '{0}' from '{1}' ähnelt. + /// Looks up a localized string similar to Deleting VM '{0}' from '{1}'. /// public static string ACTION_VM_DESTROYING_TITLE { get { @@ -3139,7 +3139,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrating {0} canceled ähnelt. + /// Looks up a localized string similar to Migrating {0} canceled. /// public static string ACTION_VM_MIGRATE_CANCELLED { get { @@ -3148,7 +3148,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrated ähnelt. + /// Looks up a localized string similar to Migrated. /// public static string ACTION_VM_MIGRATED { get { @@ -3157,7 +3157,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrating ähnelt. + /// Looks up a localized string similar to Migrating. /// public static string ACTION_VM_MIGRATING { get { @@ -3166,7 +3166,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrating VM '{0}' to '{1}' ähnelt. + /// Looks up a localized string similar to Migrating VM '{0}' to '{1}'. /// public static string ACTION_VM_MIGRATING_NON_RESIDENT { get { @@ -3175,7 +3175,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrating VM '{0}' from '{1}' to '{2}' ähnelt. + /// Looks up a localized string similar to Migrating VM '{0}' from '{1}' to '{2}'. /// public static string ACTION_VM_MIGRATING_RESIDENT { get { @@ -3184,7 +3184,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrating VM '{0}' ähnelt. + /// Looks up a localized string similar to Migrating VM '{0}'. /// public static string ACTION_VM_MIGRATING_TITLE { get { @@ -3193,7 +3193,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Moving VM to new storage... ähnelt. + /// Looks up a localized string similar to Moving VM to new storage.... /// public static string ACTION_VM_MOVING { get { @@ -3202,7 +3202,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Moving VM '{0}' to '{1}' on SR '{2}' ähnelt. + /// Looks up a localized string similar to Moving VM '{0}' to '{1}' on SR '{2}'. /// public static string ACTION_VM_MOVING_TITLE { get { @@ -3211,25 +3211,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM paused ähnelt. - /// - public static string ACTION_VM_PAUSED { - get { - return ResourceManager.GetString("ACTION_VM_PAUSED", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die VM pausing ähnelt. - /// - public static string ACTION_VM_PAUSING { - get { - return ResourceManager.GetString("ACTION_VM_PAUSING", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooted ähnelt. + /// Looks up a localized string similar to Rebooted. /// public static string ACTION_VM_REBOOTED { get { @@ -3238,7 +3220,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooting VM ähnelt. + /// Looks up a localized string similar to Rebooting VM. /// public static string ACTION_VM_REBOOTING { get { @@ -3247,7 +3229,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooting VM '{0}' on '{1}' ähnelt. + /// Looks up a localized string similar to Rebooting VM '{0}' on '{1}'. /// public static string ACTION_VM_REBOOTING_ON_TITLE { get { @@ -3256,7 +3238,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooting VM '{0}' ähnelt. + /// Looks up a localized string similar to Rebooting VM '{0}'. /// public static string ACTION_VM_REBOOTING_TITLE { get { @@ -3265,7 +3247,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resumed ähnelt. + /// Looks up a localized string similar to Resumed. /// public static string ACTION_VM_RESUMED { get { @@ -3274,7 +3256,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resuming VM ähnelt. + /// Looks up a localized string similar to Resuming VM. /// public static string ACTION_VM_RESUMING { get { @@ -3283,7 +3265,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resuming VM '{0}' on '{1}' ähnelt. + /// Looks up a localized string similar to Resuming VM '{0}' on '{1}'. /// public static string ACTION_VM_RESUMING_ON_TITLE { get { @@ -3292,7 +3274,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resuming VM '{0}' ähnelt. + /// Looks up a localized string similar to Resuming VM '{0}'. /// public static string ACTION_VM_RESUMING_TITLE { get { @@ -3301,7 +3283,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot reverted ähnelt. + /// Looks up a localized string similar to Snapshot reverted. /// public static string ACTION_VM_REVERT_SNAPSHOT_DONE { get { @@ -3310,7 +3292,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reverting snapshot '{0}'... ähnelt. + /// Looks up a localized string similar to Reverting snapshot '{0}'.... /// public static string ACTION_VM_REVERT_SNAPSHOT_STATUS { get { @@ -3319,7 +3301,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Revert snapshot '{0}' ähnelt. + /// Looks up a localized string similar to Revert snapshot '{0}'. /// public static string ACTION_VM_REVERT_SNAPSHOT_TITLE { get { @@ -3328,7 +3310,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut down ähnelt. + /// Looks up a localized string similar to Shut down. /// public static string ACTION_VM_SHUT_DOWN { get { @@ -3337,7 +3319,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shutting down VM ähnelt. + /// Looks up a localized string similar to Shutting down VM. /// public static string ACTION_VM_SHUTTING_DOWN { get { @@ -3346,7 +3328,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shutting down VM '{0}' on '{1}' ähnelt. + /// Looks up a localized string similar to Shutting down VM '{0}' on '{1}'. /// public static string ACTION_VM_SHUTTING_DOWN_ON_TITLE { get { @@ -3355,7 +3337,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shutting down VM '{0}' ähnelt. + /// Looks up a localized string similar to Shutting down VM '{0}'. /// public static string ACTION_VM_SHUTTING_DOWN_TITLE { get { @@ -3364,7 +3346,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshotting VM '{0}'... ähnelt. + /// Looks up a localized string similar to Snapshotting VM '{0}'.... /// public static string ACTION_VM_SNAPSHOT_TITLE { get { @@ -3373,7 +3355,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Started ähnelt. + /// Looks up a localized string similar to Started. /// public static string ACTION_VM_STARTED { get { @@ -3382,7 +3364,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Started paused ähnelt. + /// Looks up a localized string similar to Started paused. /// public static string ACTION_VM_STARTED_PAUSED { get { @@ -3391,7 +3373,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting VM ähnelt. + /// Looks up a localized string similar to Starting VM. /// public static string ACTION_VM_STARTING { get { @@ -3400,7 +3382,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting VM '{0}' on '{1}' ähnelt. + /// Looks up a localized string similar to Starting VM '{0}' on '{1}'. /// public static string ACTION_VM_STARTING_ON_TITLE { get { @@ -3409,7 +3391,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting paused ähnelt. + /// Looks up a localized string similar to Starting paused. /// public static string ACTION_VM_STARTING_PAUSED { get { @@ -3418,7 +3400,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting VM '{0}' paused on '{1}' ähnelt. + /// Looks up a localized string similar to Starting VM '{0}' paused on '{1}'. /// public static string ACTION_VM_STARTING_PAUSED_ON_TITLE { get { @@ -3427,7 +3409,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting VM '{0}' paused ähnelt. + /// Looks up a localized string similar to Starting VM '{0}' paused. /// public static string ACTION_VM_STARTING_PAUSED_TITLE { get { @@ -3436,7 +3418,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting VM '{0}' ähnelt. + /// Looks up a localized string similar to Starting VM '{0}'. /// public static string ACTION_VM_STARTING_TITLE { get { @@ -3445,7 +3427,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Suspended ähnelt. + /// Looks up a localized string similar to Suspended. /// public static string ACTION_VM_SUSPENDED { get { @@ -3454,7 +3436,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Suspending VM ähnelt. + /// Looks up a localized string similar to Suspending VM. /// public static string ACTION_VM_SUSPENDING { get { @@ -3463,7 +3445,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Suspending VM '{0}' ähnelt. + /// Looks up a localized string similar to Suspending VM '{0}'. /// public static string ACTION_VM_SUSPENDING_TITLE { get { @@ -3472,7 +3454,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Conversion to template complete ähnelt. + /// Looks up a localized string similar to Conversion to template complete. /// public static string ACTION_VM_TEMPLATIZED { get { @@ -3481,7 +3463,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Converting to template ähnelt. + /// Looks up a localized string similar to Converting to template. /// public static string ACTION_VM_TEMPLATIZING { get { @@ -3490,7 +3472,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Converting VM '{0}' to template ähnelt. + /// Looks up a localized string similar to Converting VM '{0}' to template. /// public static string ACTION_VM_TEMPLATIZING_TITLE { get { @@ -3499,7 +3481,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting selected VMs ähnelt. + /// Looks up a localized string similar to Deleting selected VMs. /// public static string ACTION_VMS_DESTROYING_TITLE { get { @@ -3508,7 +3490,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrating VMs ähnelt. + /// Looks up a localized string similar to Migrating VMs. /// public static string ACTION_VMS_MIGRATING_TITLE { get { @@ -3517,7 +3499,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooting VMs ähnelt. + /// Looks up a localized string similar to Rebooting VMs. /// public static string ACTION_VMS_REBOOTING_TITLE { get { @@ -3526,7 +3508,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resuming VMs ähnelt. + /// Looks up a localized string similar to Resuming VMs. /// public static string ACTION_VMS_RESUMING_ON_TITLE { get { @@ -3535,7 +3517,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shutting Down VMs ähnelt. + /// Looks up a localized string similar to Shutting Down VMs. /// public static string ACTION_VMS_SHUTTING_DOWN_TITLE { get { @@ -3544,7 +3526,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting VMs ähnelt. + /// Looks up a localized string similar to Starting VMs. /// public static string ACTION_VMS_STARTING_ON_TITLE { get { @@ -3553,7 +3535,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Suspending VMs ähnelt. + /// Looks up a localized string similar to Suspending VMs. /// public static string ACTION_VMS_SUSPENDING_TITLE { get { @@ -3562,7 +3544,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die USB device attached ähnelt. + /// Looks up a localized string similar to USB device attached. /// public static string ACTION_VUSB_CREATED { get { @@ -3571,7 +3553,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attaching USB device '{0}' to VM '{1}' ähnelt. + /// Looks up a localized string similar to Attaching USB device '{0}' to VM '{1}'. /// public static string ACTION_VUSB_CREATING { get { @@ -3580,7 +3562,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die USB device detached ähnelt. + /// Looks up a localized string similar to USB device detached. /// public static string ACTION_VUSB_DELETED { get { @@ -3589,7 +3571,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detaching USB device '{0}' from VM '{1}' ähnelt. + /// Looks up a localized string similar to Detaching USB device '{0}' from VM '{1}'. /// public static string ACTION_VUSB_DELETING { get { @@ -3598,7 +3580,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detach USB device ähnelt. + /// Looks up a localized string similar to Detach USB device. /// public static string ACTION_VUSB_DETACH { get { @@ -3607,7 +3589,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to detach the selected USB device? ähnelt. + /// Looks up a localized string similar to Are you sure you want to detach the selected USB device?. /// public static string ACTION_VUSB_DETACH_CONFIRM { get { @@ -3616,7 +3598,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Waiting for slaves to recover... ähnelt. + /// Looks up a localized string similar to Waiting for slaves to recover.... /// public static string ACTION_WAIT_FOR_SLAVES_TO_RECOVER { get { @@ -3625,7 +3607,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disconnecting Workload Balancing failed on pool {0}: {1} Workload Balancing has been paused. ähnelt. + /// Looks up a localized string similar to Disconnecting Workload Balancing failed on pool {0}: {1} Workload Balancing has been paused.. /// public static string ACTION_WLB_DECONFIGURE_FAILED { get { @@ -3634,7 +3616,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Optimizing ähnelt. + /// Looks up a localized string similar to Optimizing. /// public static string ACTION_WLB_POOL_OPTIMIZING { get { @@ -3643,7 +3625,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Downloading WLB report '{0}' from '{1}' ({2}) ähnelt. + /// Looks up a localized string similar to Downloading WLB report '{0}' from '{1}' ({2}). /// public static string ACTION_WLB_REPORT { get { @@ -3652,7 +3634,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Download canceled ähnelt. + /// Looks up a localized string similar to Download canceled. /// public static string ACTION_WLB_REPORT_CANCELLED { get { @@ -3661,7 +3643,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Downloading... ähnelt. + /// Looks up a localized string similar to Downloading.... /// public static string ACTION_WLB_REPORT_DOWNLOADING { get { @@ -3670,7 +3652,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Download failed ähnelt. + /// Looks up a localized string similar to Download failed. /// public static string ACTION_WLB_REPORT_FAILED { get { @@ -3679,7 +3661,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Downloaded ähnelt. + /// Looks up a localized string similar to Downloaded. /// public static string ACTION_WLB_REPORT_SUCCESSFUL { get { @@ -3688,7 +3670,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Downloading WLB report {0} ähnelt. + /// Looks up a localized string similar to Downloading WLB report {0}. /// public static string ACTION_WLB_REPORT_TASK_DESCRIPTION { get { @@ -3697,7 +3679,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Downloading WLB report {0} ähnelt. + /// Looks up a localized string similar to Downloading WLB report {0}. /// public static string ACTION_WLB_REPORT_TASK_NAME { get { @@ -3706,7 +3688,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A&ctivate ähnelt. + /// Looks up a localized string similar to A&ctivate. /// public static string ACTIVATE { get { @@ -3715,12 +3697,12 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] is unable to contact the activation server. + /// Looks up a localized string similar to [XenCenter] is unable to contact the activation server. /// ///If you are not currently connected to the internet, we can save ///the activation request to a file, for you to upload at a later date. /// - ///To use this file, visit https://{0}. ähnelt. + ///To use this file, visit https://{0}.. /// public static string ACTIVATION_FAILED_MESSAGE { get { @@ -3729,7 +3711,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saved activation request to {0}. ähnelt. + /// Looks up a localized string similar to Saved activation request to {0}.. /// public static string ACTIVATION_REQUEST_SAVED { get { @@ -3738,7 +3720,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sending activation request ähnelt. + /// Looks up a localized string similar to Sending activation request. /// public static string ACTIVATION_REQUEST_TITLE { get { @@ -3747,7 +3729,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Save... ähnelt. + /// Looks up a localized string similar to Save.... /// public static string ACTIVATION_SAVE { get { @@ -3756,7 +3738,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Active Directory Users ähnelt. + /// Looks up a localized string similar to Active Directory Users. /// public static string ACTIVE_DIRECTORY_TAB_TITLE { get { @@ -3765,7 +3747,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding/removing users from Active Directory ACL ähnelt. + /// Looks up a localized string similar to Adding/removing users from Active Directory ACL. /// public static string AD_ADDING_REMOVING { get { @@ -3774,7 +3756,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding/removing users from Active Directory ACL on '{0}' ähnelt. + /// Looks up a localized string similar to Adding/removing users from Active Directory ACL on '{0}'. /// public static string AD_ADDING_REMOVING_ON { get { @@ -3783,7 +3765,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding/removing roles from subject ähnelt. + /// Looks up a localized string similar to Adding/removing roles from subject. /// public static string AD_ADDING_REMOVING_ROLES { get { @@ -3792,7 +3774,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding/removing roles from subject '{0}' ähnelt. + /// Looks up a localized string similar to Adding/removing roles from subject '{0}'. /// public static string AD_ADDING_REMOVING_ROLES_ON { get { @@ -3801,7 +3783,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (Always granted access) ähnelt. + /// Looks up a localized string similar to (Always granted access). /// public static string AD_ALWAYS_GRANTED_ACCESS { get { @@ -3810,7 +3792,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are logged in using your AD user account. You can only change the password when logged in using the local root account. ähnelt. + /// Looks up a localized string similar to You are logged in using your AD user account. You can only change the password when logged in using the local root account.. /// public static string AD_CANNOT_CHANGE_PASSWORD { get { @@ -3819,7 +3801,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot modify the root account ähnelt. + /// Looks up a localized string similar to Cannot modify the root account. /// public static string AD_CANNOT_MODIFY_ROOT { get { @@ -3828,10 +3810,10 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die '{0}' is joined to the Active Directory domain '{1}', while the pool '{2}' is joined to the Active Directory domain '{3}'. + /// Looks up a localized string similar to '{0}' is joined to the Active Directory domain '{1}', while the pool '{2}' is joined to the Active Directory domain '{3}'. ///'{0}' can only join the pool if they both have the same AD configuration. /// - ///To join '{0}' to the pool '{2}', first disable AD on '{0}'. ähnelt. + ///To join '{0}' to the pool '{2}', first disable AD on '{0}'.. /// public static string AD_CHANGE_DOMAIN_BLURB { get { @@ -3840,7 +3822,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' belongs to domain '{1}'. ähnelt. + /// Looks up a localized string similar to Pool '{0}' belongs to domain '{1}'.. /// public static string AD_CONFIGURED_BLURB { get { @@ -3849,7 +3831,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' belongs to domain '{1}'. ähnelt. + /// Looks up a localized string similar to Server '{0}' belongs to domain '{1}'.. /// public static string AD_CONFIGURED_BLURB_HOST { get { @@ -3858,7 +3840,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die AD authentication is currently being configured for pool '{0}'. ähnelt. + /// Looks up a localized string similar to AD authentication is currently being configured for pool '{0}'.. /// public static string AD_CONFIGURING_BLURB { get { @@ -3867,7 +3849,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die AD authentication is currently being configured for server '{0}'. ähnelt. + /// Looks up a localized string similar to AD authentication is currently being configured for server '{0}'.. /// public static string AD_CONFIGURING_BLURB_HOST { get { @@ -3876,9 +3858,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to terminate this user session? + /// Looks up a localized string similar to Are you sure you want to terminate this user session? /// - ///This will disconnect you from '{0}'. ähnelt. + ///This will disconnect you from '{0}'.. /// public static string AD_CONFIRM_SELF_TERMINATE { get { @@ -3887,7 +3869,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Terminate Session ähnelt. + /// Looks up a localized string similar to Terminate Session. /// public static string AD_CONFIRM_SELF_TERMINATE_OK { get { @@ -3896,11 +3878,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are about to revoke the permissions for user '{0}'. + /// Looks up a localized string similar to You are about to revoke the permissions for user '{0}'. /// ///You are currently logged in as '{0}' on '{1}', and doing this will disconnect you from '{1}'. To reconnect, you will need to supply the local root account credentials, or the credentials for another authorized AD user. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string AD_CONFIRM_SUICIDE { get { @@ -3909,11 +3891,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are about to revoke the permissions for group '{0}'. + /// Looks up a localized string similar to You are about to revoke the permissions for group '{0}'. /// ///The user you are currently logged into '{1}' with is a member of '{0}'. Proceeding will disconnect you and any other members of this group from '{1}'. To reconnect, you will need to supply the local root account credentials, or the credentials for another authorized AD user. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string AD_CONFIRM_SUICIDE_GROUP { get { @@ -3922,7 +3904,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Subject could not be resolved in your AD ähnelt. + /// Looks up a localized string similar to Subject could not be resolved in your AD. /// public static string AD_COULD_NOT_RESOLVE_SUFFIX { get { @@ -3931,7 +3913,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling AD authentication ähnelt. + /// Looks up a localized string similar to Disabling AD authentication. /// public static string AD_DISABLING { get { @@ -3940,8 +3922,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - ///Host: {1} ähnelt. + /// Looks up a localized string similar to {0} + ///Host: {1}. /// public static string AD_FAILURE_WITH_HOST { get { @@ -3950,7 +3932,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die AD Authentication ähnelt. + /// Looks up a localized string similar to AD Authentication. /// public static string AD_FEATURE_NAME { get { @@ -3959,7 +3941,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Join Domain... ähnelt. + /// Looks up a localized string similar to &Join Domain.... /// public static string AD_JOIN_DOMAIN { get { @@ -3968,11 +3950,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has Active Directory authentication enabled. In order for '{1}' to join the pool, it must share the same AD configuration. + /// Looks up a localized string similar to Pool '{0}' has Active Directory authentication enabled. In order for '{1}' to join the pool, it must share the same AD configuration. /// ///To join '{1}' to the Active Directory domain '{2}', enter a domain user account name and password, then click OK. /// - ///You must use a user account with sufficient privileges. ähnelt. + ///You must use a user account with sufficient privileges.. /// public static string AD_JOIN_DOMAIN_BLURB { get { @@ -3981,7 +3963,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter your fully qualified AD domain name, and a user name and password with sufficient privileges to add servers to your domain. ähnelt. + /// Looks up a localized string similar to Enter your fully qualified AD domain name, and a user name and password with sufficient privileges to add servers to your domain.. /// public static string AD_JOIN_DOMAIN_BLURB_SHORT { get { @@ -3990,7 +3972,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter your fully qualified AD domain name, and a user name and password with sufficient privileges to add servers to your domain. ähnelt. + /// Looks up a localized string similar to Enter your fully qualified AD domain name, and a user name and password with sufficient privileges to add servers to your domain.. /// public static string AD_JOIN_DOMAIN_BLURB_SHORT_HOST { get { @@ -3999,9 +3981,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are about to remove '{0}' from the AD domain '{1}'. Any users authenticated using AD will be disconnected. + /// Looks up a localized string similar to You are about to remove '{0}' from the AD domain '{1}'. Any users authenticated using AD will be disconnected. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string AD_LEAVE_CONFIRM { get { @@ -4010,7 +3992,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die L&eave Domain... ähnelt. + /// Looks up a localized string similar to L&eave Domain.... /// public static string AD_LEAVE_DOMAIN { get { @@ -4019,11 +4001,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are currently connected to pool '{0}' using Active Directory authentication. + /// Looks up a localized string similar to You are currently connected to pool '{0}' using Active Directory authentication. ///If you leave the AD domain '{1}', you will be disconnected from the pool. ///To reconnect, you will need to supply the local root account credentials. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string AD_LEAVE_WARNING { get { @@ -4032,11 +4014,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are currently connected to server '{0}' using Active Directory authentication. + /// Looks up a localized string similar to You are currently connected to server '{0}' using Active Directory authentication. ///If you leave the AD domain '{1}', you will be disconnected from the server. ///To reconnect, you will need to supply the local root account credentials. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string AD_LEAVE_WARNING_HOST { get { @@ -4045,7 +4027,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Alternatively, select ignore to leave the machine account enabled. ähnelt. + /// Looks up a localized string similar to Alternatively, select ignore to leave the machine account enabled.. /// public static string AD_LEAVING_ADDITIONAL_BLURB { get { @@ -4054,7 +4036,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Local root account ähnelt. + /// Looks up a localized string similar to Local root account. /// public static string AD_LOCAL_ROOT_ACCOUNT { get { @@ -4063,9 +4045,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are currently logged in as one of the selected users. If you continue you will be logged out of '{0}'. + /// Looks up a localized string similar to You are currently logged in as one of the selected users. If you continue you will be logged out of '{0}'. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string AD_LOGOUT_SUICIDE_MANY { get { @@ -4074,9 +4056,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are currently logged in as the selected user. If you continue you will be logged out of '{0}'. + /// Looks up a localized string similar to You are currently logged in as the selected user. If you continue you will be logged out of '{0}'. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string AD_LOGOUT_SUICIDE_ONE { get { @@ -4085,7 +4067,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please wait while [XenCenter] establishes your current external authentication configuration. ähnelt. + /// Looks up a localized string similar to Please wait while [XenCenter] establishes your current external authentication configuration.. /// public static string AD_MASTER_UNAVAILABLE_BLURB { get { @@ -4094,7 +4076,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die AD is not currently configured for pool '{0}'. To enable AD authentication, click Join Domain. ähnelt. + /// Looks up a localized string similar to AD is not currently configured for pool '{0}'. To enable AD authentication, click Join Domain.. /// public static string AD_NOT_CONFIGURED_BLURB { get { @@ -4103,7 +4085,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die AD is not currently configured for server '{0}'. To enable AD authentication, click Join Domain. ähnelt. + /// Looks up a localized string similar to AD is not currently configured for server '{0}'. To enable AD authentication, click Join Domain.. /// public static string AD_NOT_CONFIGURED_BLURB_HOST { get { @@ -4112,7 +4094,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resolving AD names ähnelt. + /// Looks up a localized string similar to Resolving AD names. /// public static string AD_RESOLVING_NAMES { get { @@ -4121,7 +4103,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resolving AD names on '{0}' ähnelt. + /// Looks up a localized string similar to Resolving AD names on '{0}'. /// public static string AD_RESOLVING_NAMES_ON { get { @@ -4130,7 +4112,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resolving... ähnelt. + /// Looks up a localized string similar to Resolving.... /// public static string AD_RESOLVING_SUFFIX { get { @@ -4139,7 +4121,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool Admin ähnelt. + /// Looks up a localized string similar to Pool Admin. /// public static string AD_ROLE_POOL_ADMIN { get { @@ -4148,7 +4130,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool Operator ähnelt. + /// Looks up a localized string similar to Pool Operator. /// public static string AD_ROLE_POOL_OPERATOR { get { @@ -4157,7 +4139,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Read Only ähnelt. + /// Looks up a localized string similar to Read Only. /// public static string AD_ROLE_READ_ONLY { get { @@ -4166,7 +4148,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM Admin ähnelt. + /// Looks up a localized string similar to VM Admin. /// public static string AD_ROLE_VM_ADMIN { get { @@ -4175,7 +4157,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM Operator ähnelt. + /// Looks up a localized string similar to VM Operator. /// public static string AD_ROLE_VM_OPERATOR { get { @@ -4184,7 +4166,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM Power Admin ähnelt. + /// Looks up a localized string similar to VM Power Admin. /// public static string AD_ROLE_VM_POWER_ADMIN { get { @@ -4193,7 +4175,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the role you want to assign to group '{0}'. Each role inherits all the privileges of the subordinate role below it in the list. ähnelt. + /// Looks up a localized string similar to Select the role you want to assign to group '{0}'. Each role inherits all the privileges of the subordinate role below it in the list.. /// public static string AD_SELECT_ROLE_GROUP { get { @@ -4202,7 +4184,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the role you want to assign to these groups. Each role inherits all the privileges of the subordinate role below it in the list. ähnelt. + /// Looks up a localized string similar to Select the role you want to assign to these groups. Each role inherits all the privileges of the subordinate role below it in the list.. /// public static string AD_SELECT_ROLE_GROUP_MANY { get { @@ -4211,7 +4193,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the role you want to assign to these users and groups. Each role inherits all the privileges of the subordinate role below it in the list. ähnelt. + /// Looks up a localized string similar to Select the role you want to assign to these users and groups. Each role inherits all the privileges of the subordinate role below it in the list.. /// public static string AD_SELECT_ROLE_MIXED { get { @@ -4220,7 +4202,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the role you want to assign to user '{0}'. Each role inherits all the privileges of the subordinate role below it in the list. ähnelt. + /// Looks up a localized string similar to Select the role you want to assign to user '{0}'. Each role inherits all the privileges of the subordinate role below it in the list.. /// public static string AD_SELECT_ROLE_USER { get { @@ -4229,7 +4211,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the role you want to assign to these users. Each role inherits all the privileges of the subordinate role below it in the list. ähnelt. + /// Looks up a localized string similar to Select the role you want to assign to these users. Each role inherits all the privileges of the subordinate role below it in the list.. /// public static string AD_SELECT_ROLE_USER_MANY { get { @@ -4238,7 +4220,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a single subject to change their role ähnelt. + /// Looks up a localized string similar to Select a single subject to change their role. /// public static string AD_SELECT_SINGLE_SUBJECT { get { @@ -4247,7 +4229,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Subject '{0}' already has access to the server. ähnelt. + /// Looks up a localized string similar to Subject '{0}' already has access to the server.. /// public static string AD_USER_ALREADY_HAS_ACCESS { get { @@ -4256,7 +4238,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Add ähnelt. + /// Looks up a localized string similar to &Add. /// public static string ADD { get { @@ -4265,7 +4247,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Add custom field '{0}' ähnelt. + /// Looks up a localized string similar to Add custom field '{0}'. /// public static string ADD_CUSTOM_FIELD { get { @@ -4274,9 +4256,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the server '{0}' to a pool that is configured to use AD authentication. All pool members must use the same authentication method. + /// Looks up a localized string similar to You are attempting to add the server '{0}' to a pool that is configured to use AD authentication. All pool members must use the same authentication method. /// - ///Do you want to enable AD authentication on your server and join it to the same domain as the pool? ähnelt. + ///Do you want to enable AD authentication on your server and join it to the same domain as the pool?. /// public static string ADD_HOST_TO_POOL_AD_MESSAGE { get { @@ -4285,11 +4267,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the following servers to a pool that is configured to use AD authentication: + /// Looks up a localized string similar to You are attempting to add the following servers to a pool that is configured to use AD authentication: /// ///{0} /// - ///All pool members must use the same authentication method. Do you want to enable AD authentication on these servers and join them to the same domain as the pool? ähnelt. + ///All pool members must use the same authentication method. Do you want to enable AD authentication on these servers and join them to the same domain as the pool?. /// public static string ADD_HOST_TO_POOL_AD_MESSAGE_MULTIPLE { get { @@ -4298,11 +4280,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the server '{0}' to a pool that is using older CPUs. + /// Looks up a localized string similar to You are attempting to add the server '{0}' to a pool that is using older CPUs. /// ///VMs running in the pool will only use the CPU features common to all the servers in the pool. /// - ///Do you want to do this? ähnelt. + ///Do you want to do this?. /// public static string ADD_HOST_TO_POOL_CPU_DOWN_LEVEL_HOST_MESSAGE { get { @@ -4311,13 +4293,13 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the following servers to a pool that is using older CPUs. + /// Looks up a localized string similar to You are attempting to add the following servers to a pool that is using older CPUs. /// ///{0} /// ///VMs running in the pool will only use the CPU features common to all the servers in the pool. /// - ///Do you want to do this? ähnelt. + ///Do you want to do this?. /// public static string ADD_HOST_TO_POOL_CPU_DOWN_LEVEL_HOST_MESSAGE_MULTIPLE { get { @@ -4326,11 +4308,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the server '{0}' to a pool that is using different CPUs. + /// Looks up a localized string similar to You are attempting to add the server '{0}' to a pool that is using different CPUs. /// ///VMs starting on the pool in future will only use the reduced set of CPU features common to all the servers in the pool. VMs already running in the pool will not be able to migrate to the new server until they are restarted. /// - ///Do you want to do this? ähnelt. + ///Do you want to do this?. /// public static string ADD_HOST_TO_POOL_CPU_DOWN_LEVEL_POOL_AND_HOST_MESSAGE { get { @@ -4339,13 +4321,13 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the following servers to a pool that is using different CPUs. + /// Looks up a localized string similar to You are attempting to add the following servers to a pool that is using different CPUs. /// ///{0} /// ///VMs starting on the pool in future will only use the reduced set of CPU features common to all the servers in the pool. VMs already running in the pool will not be able to migrate to the new servers until they are restarted. /// - ///Do you want to do this? ähnelt. + ///Do you want to do this?. /// public static string ADD_HOST_TO_POOL_CPU_DOWN_LEVEL_POOL_AND_HOST_MESSAGE_MULTIPLE { get { @@ -4354,11 +4336,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the server '{0}' to a pool that is using newer CPUs. + /// Looks up a localized string similar to You are attempting to add the server '{0}' to a pool that is using newer CPUs. /// ///VMs starting on the pool in future will only use the reduced set of CPU features common to all the servers in the pool. VMs already running in the pool will not be able to migrate to the new server until they are restarted. /// - ///Do you want to do this? ähnelt. + ///Do you want to do this?. /// public static string ADD_HOST_TO_POOL_CPU_DOWN_LEVEL_POOL_MESSAGE { get { @@ -4367,13 +4349,13 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the following servers to a pool that is using newer CPUs. + /// Looks up a localized string similar to You are attempting to add the following servers to a pool that is using newer CPUs. /// ///{0} /// ///VMs starting on the pool in future will only use the reduced set of CPU features common to all the servers in the pool. VMs already running in the pool will not be able to migrate to the new servers until they are restarted. /// - ///Do you want to do this? ähnelt. + ///Do you want to do this?. /// public static string ADD_HOST_TO_POOL_CPU_DOWN_LEVEL_POOL_MESSAGE_MULTIPLE { get { @@ -4382,11 +4364,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the server '{0}' to a pool that is using older CPUs. + /// Looks up a localized string similar to You are attempting to add the server '{0}' to a pool that is using older CPUs. /// ///[XenServer] can continue by rebooting the server and reducing its CPU to the level of the existing servers in the pool. This will shut down any VMs running on the server. This feature is supported for CPU combinations listed in the [XenServer] Hardware Compatibility List. /// - ///Do you want to do this? ähnelt. + ///Do you want to do this?. /// public static string ADD_HOST_TO_POOL_CPU_MASKING_MESSAGE { get { @@ -4395,13 +4377,13 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the following servers to a pool that is using older CPUs: + /// Looks up a localized string similar to You are attempting to add the following servers to a pool that is using older CPUs: /// ///{0} /// ///[XenServer] can continue by rebooting the servers and reducing their CPUs to the level of the existing servers in the pool. This will shut down any VMs running on the servers. This feature is supported for CPU combinations listed in the [XenServer] Hardware Compatibility List. /// - ///Do you want to do this? ähnelt. + ///Do you want to do this?. /// public static string ADD_HOST_TO_POOL_CPU_MASKING_MESSAGE_MULTIPLE { get { @@ -4410,7 +4392,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to move the server '{0}' into the pool '{1}': the pool is no longer connected. ähnelt. + /// Looks up a localized string similar to Unable to move the server '{0}' into the pool '{1}': the pool is no longer connected.. /// public static string ADD_HOST_TO_POOL_DISCONNECTED_POOL { get { @@ -4419,7 +4401,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to move selected servers into the pool '{0}': the pool is no longer connected. ähnelt. + /// Looks up a localized string similar to Unable to move selected servers into the pool '{0}': the pool is no longer connected.. /// public static string ADD_HOST_TO_POOL_DISCONNECTED_POOL_MULTIPLE { get { @@ -4428,9 +4410,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the server '{0}' to a licensed pool. + /// Looks up a localized string similar to You are attempting to add the server '{0}' to a licensed pool. /// - ///Do you want to apply the licensing from the pool to this server? ähnelt. + ///Do you want to apply the licensing from the pool to this server?. /// public static string ADD_HOST_TO_POOL_LICENSE_MESSAGE { get { @@ -4439,11 +4421,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the following servers to a licensed pool. + /// Looks up a localized string similar to You are attempting to add the following servers to a licensed pool. /// ///{0} /// - ///Do you want to apply the licensing from the pool to these servers? ähnelt. + ///Do you want to apply the licensing from the pool to these servers?. /// public static string ADD_HOST_TO_POOL_LICENSE_MESSAGE_MULTIPLE { get { @@ -4452,11 +4434,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following supplemental pack should be installed on all servers in a pool, but currently is not: + /// Looks up a localized string similar to The following supplemental pack should be installed on all servers in a pool, but currently is not: /// ///{0} /// - ///It is strongly recommended that you Cancel and apply the latest version of the pack to all servers before expanding the pool. ähnelt. + ///It is strongly recommended that you Cancel and apply the latest version of the pack to all servers before expanding the pool.. /// public static string ADD_HOST_TO_POOL_SUPP_PACK { get { @@ -4465,11 +4447,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following supplemental packs should be installed on all servers in a pool, but currently are not: + /// Looks up a localized string similar to The following supplemental packs should be installed on all servers in a pool, but currently are not: /// ///{0} /// - ///It is strongly recommended that you Cancel and apply the latest version of the packs to all servers before expanding the pool. ähnelt. + ///It is strongly recommended that you Cancel and apply the latest version of the packs to all servers before expanding the pool.. /// public static string ADD_HOST_TO_POOL_SUPP_PACKS { get { @@ -4478,7 +4460,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Add New Server ähnelt. + /// Looks up a localized string similar to Add New Server. /// public static string ADD_NEW_CONNECT_TO { get { @@ -4487,7 +4469,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter the host name or IP address of the server you want to add and your user login credentials for that server. ähnelt. + /// Looks up a localized string similar to Enter the host name or IP address of the server you want to add and your user login credentials for that server.. /// public static string ADD_NEW_ENTER_CREDENTIALS { get { @@ -4496,7 +4478,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Incorrect user name and/or password. ähnelt. + /// Looks up a localized string similar to Incorrect user name and/or password.. /// public static string ADD_NEW_INCORRECT { get { @@ -4505,7 +4487,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Add New Server... ähnelt. + /// Looks up a localized string similar to &Add New Server.... /// public static string ADD_NEW_SERVER_MENU_ITEM { get { @@ -4514,7 +4496,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Add a pool or standalone server... ähnelt. + /// Looks up a localized string similar to Add a pool or standalone server.... /// public static string ADD_POOL_OR_SERVER { get { @@ -4523,7 +4505,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import &StorageLink Volume... ähnelt. + /// Looks up a localized string similar to Import &StorageLink Volume.... /// public static string ADD_SL_VOLUME { get { @@ -4532,7 +4514,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Add tag '{0}' ähnelt. + /// Looks up a localized string similar to Add tag '{0}'. /// public static string ADD_TAG { get { @@ -4541,7 +4523,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Add tags '{0}' ähnelt. + /// Looks up a localized string similar to Add tags '{0}'. /// public static string ADD_TAGS { get { @@ -4550,7 +4532,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New &Virtual Disk... ähnelt. + /// Looks up a localized string similar to New &Virtual Disk.... /// public static string ADD_VIRTUAL_DISK { get { @@ -4559,7 +4541,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Added custom field '{0}' ähnelt. + /// Looks up a localized string similar to Added custom field '{0}'. /// public static string ADDED_CUSTOM_FIELD { get { @@ -4568,7 +4550,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Added tag '{0}' ähnelt. + /// Looks up a localized string similar to Added tag '{0}' . /// public static string ADDED_TAG { get { @@ -4577,7 +4559,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Added tags '{0}' ähnelt. + /// Looks up a localized string similar to Added tags '{0}' . /// public static string ADDED_TAGS { get { @@ -4586,7 +4568,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Added to access list ähnelt. + /// Looks up a localized string similar to Added to access list. /// public static string ADDED_TO_ACCESS_LIST { get { @@ -4595,7 +4577,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding custom field '{0}' ähnelt. + /// Looks up a localized string similar to Adding custom field '{0}'. /// public static string ADDING_CUSTOM_FIELD { get { @@ -4604,7 +4586,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding EULAS... ähnelt. + /// Looks up a localized string similar to Adding EULAS.... /// public static string ADDING_EULAS { get { @@ -4613,7 +4595,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding resolved names to access list... ähnelt. + /// Looks up a localized string similar to Adding resolved names to access list.... /// public static string ADDING_RESOLVED_TO_ACCESS_LIST { get { @@ -4622,7 +4604,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding server '{0}' to pool '{1}' ähnelt. + /// Looks up a localized string similar to Adding server '{0}' to pool '{1}'. /// public static string ADDING_SERVER_TO_POOL { get { @@ -4631,7 +4613,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding selected servers to pool '{0}' ähnelt. + /// Looks up a localized string similar to Adding selected servers to pool '{0}'. /// public static string ADDING_SERVERS_TO_POOL { get { @@ -4640,7 +4622,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding tag '{0}' ähnelt. + /// Looks up a localized string similar to Adding tag '{0}'. /// public static string ADDING_TAG { get { @@ -4649,7 +4631,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding tags '{0}' ähnelt. + /// Looks up a localized string similar to Adding tags '{0}'. /// public static string ADDING_TAGS { get { @@ -4658,7 +4640,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding to access list... ähnelt. + /// Looks up a localized string similar to Adding to access list.... /// public static string ADDING_TO_ACCESS_LIST { get { @@ -4667,7 +4649,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Address ähnelt. + /// Looks up a localized string similar to Address. /// public static string ADDRESS { get { @@ -4676,7 +4658,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] can no longer authenticate with the existing credentials for this server. Enter new credentials to proceed. ähnelt. + /// Looks up a localized string similar to [XenCenter] can no longer authenticate with the existing credentials for this server. Enter new credentials to proceed.. /// public static string ADDSERVER_PASS_NEW { get { @@ -4685,7 +4667,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Advanced Options ähnelt. + /// Looks up a localized string similar to Advanced Options. /// public static string ADVANCED_OPTIONS { get { @@ -4694,7 +4676,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Don't assign this VM a home server. The VM will be started on any server with the necessary resources. (Shared storage required). ähnelt. + /// Looks up a localized string similar to &Don't assign this VM a home server. The VM will be started on any server with the necessary resources. (Shared storage required).. /// public static string AFFINITY_PICKER_DYNAMIC_NOT_SHARED_SR { get { @@ -4703,7 +4685,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Don't assign this VM a home server. The VM will be started on any server with the necessary resources. ähnelt. + /// Looks up a localized string similar to &Don't assign this VM a home server. The VM will be started on any server with the necessary resources.. /// public static string AFFINITY_PICKER_DYNAMIC_SHARED_SR { get { @@ -4712,7 +4694,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die is after ähnelt. + /// Looks up a localized string similar to is after. /// public static string AFTER { get { @@ -4721,7 +4703,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Aggregate ähnelt. + /// Looks up a localized string similar to Aggregate. /// public static string AGGREGATE { get { @@ -4730,7 +4712,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Agile ähnelt. + /// Looks up a localized string similar to Agile. /// public static string AGILE { get { @@ -4739,7 +4721,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Actions ähnelt. + /// Looks up a localized string similar to Actions. /// public static string ALERT_ACTIONS { get { @@ -4748,7 +4730,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Alarm Settings ähnelt. + /// Looks up a localized string similar to Alarm Settings. /// public static string ALERT_ALARM_ACTION { get { @@ -4757,7 +4739,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CPU Usage Alarm ähnelt. + /// Looks up a localized string similar to CPU Usage Alarm. /// public static string ALERT_ALARM_CPU { get { @@ -4766,8 +4748,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CPU usage on {0} has been on average {1} for the last {2}. - ///This alarm is set to be triggered when CPU usage is more than {3}. ähnelt. + /// Looks up a localized string similar to CPU usage on {0} has been on average {1} for the last {2}. + ///This alarm is set to be triggered when CPU usage is more than {3}.. /// public static string ALERT_ALARM_CPU_DESCRIPTION { get { @@ -4776,7 +4758,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk Usage Alarm ähnelt. + /// Looks up a localized string similar to Disk Usage Alarm. /// public static string ALERT_ALARM_DISK { get { @@ -4785,8 +4767,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk usage on {0} has been on average {1} for the last {2}. - ///This alarm is set to be triggered when disk usage is more than {3}. ähnelt. + /// Looks up a localized string similar to Disk usage on {0} has been on average {1} for the last {2}. + ///This alarm is set to be triggered when disk usage is more than {3}.. /// public static string ALERT_ALARM_DISK_DESCRIPTION { get { @@ -4795,7 +4777,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Control Domain Memory Usage ähnelt. + /// Looks up a localized string similar to Control Domain Memory Usage. /// public static string ALERT_ALARM_DOM0_MEMORY { get { @@ -4804,7 +4786,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Control Domain Memory Demand Alarm ähnelt. + /// Looks up a localized string similar to Control Domain Memory Demand Alarm. /// public static string ALERT_ALARM_DOM0_MEMORY_DEMAND { get { @@ -4813,8 +4795,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The memory required by the control domain on {0} is {1} of its allocated memory. Occasional performance degradation can be expected when memory swapping is forced to happen. - ///This alarm is set to be triggered when the memory required by the control domain is above {2} of its allocated memory. ähnelt. + /// Looks up a localized string similar to The memory required by the control domain on {0} is {1} of its allocated memory. Occasional performance degradation can be expected when memory swapping is forced to happen. + ///This alarm is set to be triggered when the memory required by the control domain is above {2} of its allocated memory.. /// public static string ALERT_ALARM_DOM0_MEMORY_DEMAND_DESCRIPTION { get { @@ -4823,7 +4805,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die File System on Control Domain Full ähnelt. + /// Looks up a localized string similar to File System on Control Domain Full. /// public static string ALERT_ALARM_FILESYSTEM { get { @@ -4832,7 +4814,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk usage for the Control Domain on {0} has reached {1}. [XenServer]'s performance will be critically affected if this disk becomes full. Log files or other non-essential (user created) files should be removed. ähnelt. + /// Looks up a localized string similar to Disk usage for the Control Domain on {0} has reached {1}. [XenServer]'s performance will be critically affected if this disk becomes full. Log files or other non-essential (user created) files should be removed.. /// public static string ALERT_ALARM_FILESYSTEM_DESCRIPTION { get { @@ -4841,7 +4823,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die File System on Logs Partition Full ähnelt. + /// Looks up a localized string similar to File System on Logs Partition Full. /// public static string ALERT_ALARM_LOG_FILESYSTEM { get { @@ -4850,7 +4832,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The disk usage for the Logs Partition on {0} has reached {1}. Logging will be critically affected if this disk becomes full. Old log files should be removed. ähnelt. + /// Looks up a localized string similar to The disk usage for the Logs Partition on {0} has reached {1}. Logging will be critically affected if this disk becomes full. Old log files should be removed.. /// public static string ALERT_ALARM_LOG_FILESYSTEM_DESCRIPTION { get { @@ -4859,7 +4841,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory Usage Alarm ähnelt. + /// Looks up a localized string similar to Memory Usage Alarm. /// public static string ALERT_ALARM_MEMORY { get { @@ -4868,8 +4850,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Free memory on {0} has been {1} for the last {2}. - ///This alarm is set to be triggered when free memory falls below {3}. ähnelt. + /// Looks up a localized string similar to Free memory on {0} has been {1} for the last {2}. + ///This alarm is set to be triggered when free memory falls below {3}.. /// public static string ALERT_ALARM_MEMORY_DESCRIPTION { get { @@ -4878,7 +4860,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network Usage Alarm ähnelt. + /// Looks up a localized string similar to Network Usage Alarm. /// public static string ALERT_ALARM_NETWORK { get { @@ -4887,8 +4869,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network usage on {0} has been on average {1} for the last {2}. - ///This alarm is set to be triggered when network usage is more than {3}. ähnelt. + /// Looks up a localized string similar to Network usage on {0} has been on average {1} for the last {2}. + ///This alarm is set to be triggered when network usage is more than {3}.. /// public static string ALERT_ALARM_NETWORK_DESCRIPTION { get { @@ -4897,7 +4879,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SR Disk Space Alarm ähnelt. + /// Looks up a localized string similar to SR Disk Space Alarm. /// public static string ALERT_ALARM_SR_PHYSICAL_UTILISATION { get { @@ -4906,8 +4888,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The physical utilization on {0} is about {1} of its capacity. - ///This alarm is set to be triggered when the physical utilisation of the SR goes above {2}. ähnelt. + /// Looks up a localized string similar to The physical utilization on {0} is about {1} of its capacity. + ///This alarm is set to be triggered when the physical utilisation of the SR goes above {2}.. /// public static string ALERT_ALARM_SR_PHYSICAL_UTILISATION_DESCRIPTION { get { @@ -4916,7 +4898,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage Throughput Alarm ähnelt. + /// Looks up a localized string similar to Storage Throughput Alarm. /// public static string ALERT_ALARM_STORAGE { get { @@ -4925,8 +4907,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The total read and write throughput of {0} on storage repository '{1}' has been {2} for the last {3}. - ///This alarm is set to be triggered when the total throughput exceeds {4}. ähnelt. + /// Looks up a localized string similar to The total read and write throughput of {0} on storage repository '{1}' has been {2} for the last {3}. + ///This alarm is set to be triggered when the total throughput exceeds {4}.. /// public static string ALERT_ALARM_STORAGE_DESCRIPTION { get { @@ -4935,7 +4917,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (Showing first {0} entries) ähnelt. + /// Looks up a localized string similar to (Showing first {0} entries). /// public static string ALERT_CAP_LABEL { get { @@ -4944,7 +4926,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die When CPU usage exceeds {0}% for {1} min(s) ähnelt. + /// Looks up a localized string similar to When CPU usage exceeds {0}% for {1} min(s). /// public static string ALERT_CPUS_SUB_TEXT { get { @@ -4953,7 +4935,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die When disk usage exceeds {0} for {1} min(s) ähnelt. + /// Looks up a localized string similar to When disk usage exceeds {0} for {1} min(s). /// public static string ALERT_DISK_SUB_TEXT { get { @@ -4962,7 +4944,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Dismiss ähnelt. + /// Looks up a localized string similar to Dismiss. /// public static string ALERT_DISMISS { get { @@ -4971,9 +4953,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You have applied filters to the list of alerts. Do you want to dismiss all alerts from every connected server, or only the alerts you have chosen to view? In both cases the dismissed alerts will be removed from the servers permanently. + /// Looks up a localized string similar to You have applied filters to the list of alerts. Do you want to dismiss all alerts from every connected server, or only the alerts you have chosen to view? In both cases the dismissed alerts will be removed from the servers permanently. /// - ///Note that if RBAC is enabled, only alerts which you have privileges to dismiss will be affected. ähnelt. + ///Note that if RBAC is enabled, only alerts which you have privileges to dismiss will be affected.. /// public static string ALERT_DISMISS_ALL_CONTINUE { get { @@ -4982,9 +4964,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This operation will remove permanently all alerts from every connected server. Do you want to continue? + /// Looks up a localized string similar to This operation will remove permanently all alerts from every connected server. Do you want to continue? /// - ///Note that if RBAC is enabled, only alerts which you have privileges to dismiss will be affected. ähnelt. + ///Note that if RBAC is enabled, only alerts which you have privileges to dismiss will be affected.. /// public static string ALERT_DISMISS_ALL_NO_FILTER_CONTINUE { get { @@ -4993,7 +4975,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Once a system alert is dismissed it will be removed from the server permanently. Do you want to continue? ähnelt. + /// Looks up a localized string similar to Once a system alert is dismissed it will be removed from the server permanently. Do you want to continue?. /// public static string ALERT_DISMISS_CONFIRM { get { @@ -5002,9 +4984,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This operation will remove the selected alerts from the servers permanently. Do you want to continue? + /// Looks up a localized string similar to This operation will remove the selected alerts from the servers permanently. Do you want to continue? /// - ///Note that if RBAC is enabled, only alerts which you have privileges to dismiss will be affected. ähnelt. + ///Note that if RBAC is enabled, only alerts which you have privileges to dismiss will be affected.. /// public static string ALERT_DISMISS_SELECTED_CONFIRM { get { @@ -5013,7 +4995,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die When control domain memory usage exceeds {0} for {1} min(s) ähnelt. + /// Looks up a localized string similar to When control domain memory usage exceeds {0} for {1} min(s). /// public static string ALERT_DOM0_MEMORY_SUB_TEXT { get { @@ -5022,16 +5004,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export &all ähnelt. - /// - public static string ALERT_EXPORT_ALL_BUTTON { - get { - return ResourceManager.GetString("ALERT_EXPORT_ALL_BUTTON", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die You have applied filters to the list of alerts. Do you want to export all alerts from every connected server, or only the alerts you have chosen to view? ähnelt. + /// Looks up a localized string similar to You have applied filters to the list of alerts. Do you want to export all alerts from every connected server, or only the alerts you have chosen to view?. /// public static string ALERT_EXPORT_ALL_OR_FILTERED { get { @@ -5040,16 +5013,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Only export &visible ähnelt. - /// - public static string ALERT_EXPORT_FILTERED_BUTTON { - get { - return ResourceManager.GetString("ALERT_EXPORT_FILTERED_BUTTON", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Help ähnelt. + /// Looks up a localized string similar to Help. /// public static string ALERT_GENERIC_HELP { get { @@ -5058,7 +5022,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die When free memory falls below {0} for {1} min(s) ähnelt. + /// Looks up a localized string similar to When free memory falls below {0} for {1} min(s). /// public static string ALERT_MEMORY_SUB_TEXT { get { @@ -5067,7 +5031,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die When network usage exceeds {0} for {1} min(s) ähnelt. + /// Looks up a localized string similar to When network usage exceeds {0} for {1} min(s). /// public static string ALERT_NET_SUB_TEXT { get { @@ -5076,7 +5040,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Go to Web Page ähnelt. + /// Looks up a localized string similar to Go to Web Page. /// public static string ALERT_NEW_PATCH_DOWNLOAD { get { @@ -5085,7 +5049,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} is now available ähnelt. + /// Looks up a localized string similar to {0} is now available. /// public static string ALERT_NEW_VERSION { get { @@ -5094,7 +5058,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} is now available. Click in the action row menu at "Go to Web Page". ähnelt. + /// Looks up a localized string similar to {0} is now available. Download the new version from the [Citrix] website.. /// public static string ALERT_NEW_VERSION_DETAILS { get { @@ -5103,7 +5067,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Go to Web Page ähnelt. + /// Looks up a localized string similar to Go to Web Page. /// public static string ALERT_NEW_VERSION_DOWNLOAD { get { @@ -5112,7 +5076,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die When SR physical utilization exceeds {0} for {1} min(s) ähnelt. + /// Looks up a localized string similar to When SR physical utilization exceeds {0} for {1} min(s). /// public static string ALERT_SR_PHYSICAL_UTILISATION_SUB_TEXT { get { @@ -5121,7 +5085,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die When storage throughput exceeds {0} for {1} min(s) ähnelt. + /// Looks up a localized string similar to When storage throughput exceeds {0} for {1} min(s). /// public static string ALERT_SR_SUB_TEXT { get { @@ -5130,7 +5094,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Alerts ähnelt. + /// Looks up a localized string similar to Alerts. /// public static string ALERTS { get { @@ -5139,7 +5103,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Alerts found: {0} ähnelt. + /// Looks up a localized string similar to Alerts found: {0}. /// public static string ALERTS_FOUND { get { @@ -5148,7 +5112,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Total alerts: {0} ähnelt. + /// Looks up a localized string similar to Total alerts: {0}. /// public static string ALERTS_TOTAL { get { @@ -5157,7 +5121,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die All Files ähnelt. + /// Looks up a localized string similar to All Files. /// public static string ALL_FILES { get { @@ -5166,7 +5130,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die All of the following: ähnelt. + /// Looks up a localized string similar to All of the following:. /// public static string ALL_OF { get { @@ -5175,7 +5139,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die All your managed servers are fully licensed. ähnelt. + /// Looks up a localized string similar to All your managed servers are fully licensed.. /// public static string ALL_SERVERS_LICENSED { get { @@ -5184,7 +5148,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die All Storage Repositories ähnelt. + /// Looks up a localized string similar to All Storage Repositories. /// public static string ALL_SRS { get { @@ -5193,7 +5157,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die All resources ähnelt. + /// Looks up a localized string similar to All resources. /// public static string ALL_TYPES { get { @@ -5202,7 +5166,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die All resources and folders ähnelt. + /// Looks up a localized string similar to All resources and folders. /// public static string ALL_TYPES_AND_FOLDERS { get { @@ -5211,7 +5175,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die All Updates Applied ähnelt. + /// Looks up a localized string similar to All Updates Applied. /// public static string ALL_UPDATES_APPLIED { get { @@ -5220,7 +5184,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Allow to continue ähnelt. + /// Looks up a localized string similar to &Allow to continue. /// public static string ALLOW_TO_CONTINUE { get { @@ -5229,7 +5193,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Allowed MTU range: {0} to {1} ähnelt. + /// Looks up a localized string similar to Allowed MTU range: {0} to {1}. /// public static string ALLOWED_MTU_RANGE { get { @@ -5238,7 +5202,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Allowed MTU value: {0} ähnelt. + /// Looks up a localized string similar to Allowed MTU value: {0}. /// public static string ALLOWED_MTU_VALUE { get { @@ -5247,9 +5211,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The SR '{0}' is currently attached elsewhere. Do you want to attach it to '{1}'? + /// Looks up a localized string similar to The SR '{0}' is currently attached elsewhere. Do you want to attach it to '{1}'? /// - ///Warning: you must ensure that the SR is not in use by any server not connected to [XenCenter]. Failure to do so may result in data loss. ähnelt. + ///Warning: you must ensure that the SR is not in use by any server not connected to [XenCenter]. Failure to do so may result in data loss.. /// public static string ALREADY_ATTACHED_ELSEWHERE { get { @@ -5258,7 +5222,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are already connected to server '{0}'. ähnelt. + /// Looks up a localized string similar to You are already connected to server '{0}'.. /// public static string ALREADY_CONNECTED { get { @@ -5267,7 +5231,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die already in {0} ähnelt. + /// Looks up a localized string similar to already in {0}. /// public static string ALREADY_IN_BOND { get { @@ -5276,7 +5240,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Any ancestor folder ähnelt. + /// Looks up a localized string similar to Any ancestor folder. /// public static string ANCESTOR_FOLDERS { get { @@ -5285,7 +5249,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Any of the following: ähnelt. + /// Looks up a localized string similar to Any of the following:. /// public static string ANY_OF { get { @@ -5294,7 +5258,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Applied on: ähnelt. + /// Looks up a localized string similar to Applied on: . /// public static string APPLIED_ON { get { @@ -5303,7 +5267,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Applies To ähnelt. + /// Looks up a localized string similar to Applies To. /// public static string APPLIES_TO { get { @@ -5312,7 +5276,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Apply hotfix ähnelt. + /// Looks up a localized string similar to Apply hotfix. /// public static string APPLY_HOTFIX { get { @@ -5321,7 +5285,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Applied update '{0}' to server '{1}'. Result: {2}. ähnelt. + /// Looks up a localized string similar to Applied update '{0}' to server '{1}'. Result: {2}.. /// public static string APPLY_PATCH_LOG_MESSAGE { get { @@ -5330,7 +5294,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Applying hotfix to '{0}' ähnelt. + /// Looks up a localized string similar to Applying hotfix to '{0}'. /// public static string APPLYING_HOTFIX_TO_HOST { get { @@ -5339,7 +5303,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Applying update '{0}' to server '{1}'... ähnelt. + /// Looks up a localized string similar to Applying update '{0}' to server '{1}'.... /// public static string APPLYING_PATCH { get { @@ -5348,7 +5312,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die License applied ähnelt. + /// Looks up a localized string similar to License applied. /// public static string APPLYLICENSE_APPLIED { get { @@ -5357,7 +5321,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Applying license {0}... ähnelt. + /// Looks up a localized string similar to Applying license {0}.... /// public static string APPLYLICENSE_APPLYING { get { @@ -5366,7 +5330,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Preparing to apply license ähnelt. + /// Looks up a localized string similar to Preparing to apply license. /// public static string APPLYLICENSE_PREP { get { @@ -5375,7 +5339,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Applying license to server {0} ähnelt. + /// Looks up a localized string similar to Applying license to server {0}. /// public static string APPLYLICENSE_TITLE { get { @@ -5384,7 +5348,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die License updated ähnelt. + /// Looks up a localized string similar to License updated. /// public static string APPLYLICENSE_UPDATED { get { @@ -5393,7 +5357,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die are empty ähnelt. + /// Looks up a localized string similar to are empty. /// public static string ARE_EMPTY { get { @@ -5402,7 +5366,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die are not empty ähnelt. + /// Looks up a localized string similar to are not empty. /// public static string ARE_NOT_EMPTY { get { @@ -5411,7 +5375,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die As soon as the snapshot is taken ähnelt. + /// Looks up a localized string similar to As soon as the snapshot is taken. /// public static string ASAPSNAPSHOTTAKEN { get { @@ -5420,7 +5384,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A-SIS capable ähnelt. + /// Looks up a localized string similar to A-SIS capable. /// public static string ASIS_CAPABLE { get { @@ -5429,7 +5393,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM migration status ähnelt. + /// Looks up a localized string similar to VM migration status. /// public static string ASSERT_CAN_EVACUATE_CHECK_DESCRIPTION { get { @@ -5438,7 +5402,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Can recover VM check ähnelt. + /// Looks up a localized string similar to {0}: Can recover VM check. /// public static string ASSERT_VM_CAN_BE_RECOVERED_CHECK_DESCRIPTION { get { @@ -5447,7 +5411,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die License Details ähnelt. + /// Looks up a localized string similar to License Details. /// public static string ASSIGN_LICENSE_DIALOG_COLLAPSE_MESSAGE { get { @@ -5456,7 +5420,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die License Details ähnelt. + /// Looks up a localized string similar to License Details. /// public static string ASSIGN_LICENSE_DIALOG_EXPAND_MESSAGE { get { @@ -5465,7 +5429,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Assign to vA&pp ähnelt. + /// Looks up a localized string similar to Assign to vA&pp. /// public static string ASSIGN_VM_APPLIANCE { get { @@ -5474,7 +5438,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Assign VM '{0}' to vApp '{1}' ähnelt. + /// Looks up a localized string similar to Assign VM '{0}' to vApp '{1}'. /// public static string ASSIGN_VM_TO_VAPP { get { @@ -5483,7 +5447,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Assign VMs to vApp '{0}' ähnelt. + /// Looks up a localized string similar to Assign VMs to vApp '{0}'. /// public static string ASSIGN_VMS_TO_VAPP { get { @@ -5492,7 +5456,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Assign VM to snapsh&ot schedule ähnelt. + /// Looks up a localized string similar to Assign to Snapshot Schedu&le. /// public static string ASSIGN_VMSS_POLICY { get { @@ -5501,7 +5465,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Assign VM to snapshot schedule ähnelt. + /// Looks up a localized string similar to Assign to Snapshot Schedu&le. /// public static string ASSIGN_VMSS_POLICY_CONTEXT_MENU { get { @@ -5510,7 +5474,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Assign VM to snapshot schedule... ähnelt. + /// Looks up a localized string similar to Assign VM to snapshot schedule.... /// public static string ASSIGN_VMSS_POLICY_NOAMP { get { @@ -5519,7 +5483,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vApp assigned. ähnelt. + /// Looks up a localized string similar to vApp assigned.. /// public static string ASSIGNED_VM_APPLIANCE { get { @@ -5528,7 +5492,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot schedule assigned. ähnelt. + /// Looks up a localized string similar to Snapshot schedule assigned.. /// public static string ASSIGNED_VMSS_POLICY { get { @@ -5537,7 +5501,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Assigning vApp... ähnelt. + /// Looks up a localized string similar to Assigning vApp.... /// public static string ASSIGNING_VM_APPLIANCE { get { @@ -5546,7 +5510,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Assigning to a snapshot schedule... ähnelt. + /// Looks up a localized string similar to Assigning to a snapshot schedule.... /// public static string ASSIGNING_VMSS_POLICY { get { @@ -5555,7 +5519,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected disk can only be attached in read/write mode ähnelt. + /// Looks up a localized string similar to The selected disk can only be attached in read/write mode. /// public static string ATTACH_DISK_DIALOG_READONLY_DISABLED_FOR_HVM { get { @@ -5564,7 +5528,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Attach SR ähnelt. + /// Looks up a localized string similar to &Attach SR. /// public static string ATTACH_SR { get { @@ -5573,7 +5537,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - {1} ähnelt. + /// Looks up a localized string similar to {0} - {1} . /// public static string ATTACHDISK_SIZE_DESCRIPTION { get { @@ -5582,7 +5546,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attached ähnelt. + /// Looks up a localized string similar to Attached. /// public static string ATTACHDISKWIZARD_ATTACHED { get { @@ -5591,7 +5555,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die attached to ähnelt. + /// Looks up a localized string similar to attached to. /// public static string ATTACHED_TO { get { @@ -5600,7 +5564,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attached virtual disks ähnelt. + /// Looks up a localized string similar to Attached virtual disks. /// public static string ATTACHED_VIRTUAL_DISKS { get { @@ -5609,7 +5573,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attaching virtual disk '{0}' to VM '{1}' ähnelt. + /// Looks up a localized string similar to Attaching virtual disk '{0}' to VM '{1}'. /// public static string ATTACHING_VIRTUAL_DISK { get { @@ -5618,7 +5582,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Authorizing User ähnelt. + /// Looks up a localized string similar to Authorizing User. /// public static string AUTHORIZING_USER { get { @@ -5627,7 +5591,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die License status for automated updates ähnelt. + /// Looks up a localized string similar to License status for automated updates. /// public static string AUTOMATED_UPDATES_LICENSE_CHECK_DESCRIPTION { get { @@ -5636,13 +5600,13 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This warning may have various causes. Please consider one of the following solutions and try again: + /// Looks up a localized string similar to This warning may have various causes. Please consider one of the following solutions and try again: /// ///- License any unlicensed hosts in the pool. /// ///- Ensure automated updates are not restricted on any hosts in the pool. /// - ///- Deselect the updates application checkbox on the previous page. [XenCenter] will upgrade the selected servers to the new version without applying any updates. ähnelt. + ///- Deselect the updates application checkbox on the previous page. [XenCenter] will upgrade the selected servers to the new version without applying any updates.. /// public static string AUTOMATED_UPDATES_UNLICENSED_WARNING_MORE_INFO { get { @@ -5651,7 +5615,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Auto-start on server boot ähnelt. + /// Looks up a localized string similar to Auto-start on server boot. /// public static string AUTOSTART { get { @@ -5660,7 +5624,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: VM {1} has autostart enabled ähnelt. + /// Looks up a localized string similar to {0}: VM {1} has autostart enabled. /// public static string AUTOSTART_ENABLED_CHECK_DESCRIPTION { get { @@ -5669,7 +5633,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die available ähnelt. + /// Looks up a localized string similar to available. /// public static string AVAILABLE { get { @@ -5678,7 +5642,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Download ähnelt. + /// Looks up a localized string similar to Download. /// public static string AVAILABLE_UPDATES_DOWNLOAD_TEXT { get { @@ -5687,7 +5651,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An error occurred when searching for updates: {0} ähnelt. + /// Looks up a localized string similar to An error occurred when searching for updates: {0}. /// public static string AVAILABLE_UPDATES_ERROR { get { @@ -5696,7 +5660,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following software updates for your system are available online. ähnelt. + /// Looks up a localized string similar to The following software updates for your system are available online.. /// public static string AVAILABLE_UPDATES_FOUND { get { @@ -5705,7 +5669,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There was an internal error when searching for available updates. Please see the logs for more information. ähnelt. + /// Looks up a localized string similar to There was an internal error when searching for available updates. Please see the logs for more information.. /// public static string AVAILABLE_UPDATES_INTERNAL_ERROR { get { @@ -5714,7 +5678,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There was a network error when searching for available updates. Please see the logs for more information. ähnelt. + /// Looks up a localized string similar to There was a network error when searching for available updates. Please see the logs for more information.. /// public static string AVAILABLE_UPDATES_NETWORK_ERROR { get { @@ -5723,7 +5687,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No updates found. ähnelt. + /// Looks up a localized string similar to No updates found.. /// public static string AVAILABLE_UPDATES_NOT_FOUND { get { @@ -5732,7 +5696,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Searching for updates... ähnelt. + /// Looks up a localized string similar to Searching for updates.... /// public static string AVAILABLE_UPDATES_SEARCHING { get { @@ -5741,7 +5705,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Backing up server '{0}' ähnelt. + /// Looks up a localized string similar to Backing up server '{0}'. /// public static string BACKINGUP_HOST { get { @@ -5750,7 +5714,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Backing up server '{0}', {1} received... ähnelt. + /// Looks up a localized string similar to Backing up server '{0}', {1} received... . /// public static string BACKINGUP_HOST_WITH_DATA { get { @@ -5759,7 +5723,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Back Up Server... ähnelt. + /// Looks up a localized string similar to Back Up Server.... /// public static string BACKUP_HOST { get { @@ -5768,7 +5732,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Backup name ähnelt. + /// Looks up a localized string similar to Backup name. /// public static string BACKUP_NAME { get { @@ -5777,7 +5741,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the server to restore from the list below. If the server you want is not listed here, you can add it by clicking Add New Server. ähnelt. + /// Looks up a localized string similar to Select the server to restore from the list below. If the server you want is not listed here, you can add it by clicking Add New Server.. /// public static string BACKUP_SELECT_HOST { get { @@ -5786,7 +5750,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restore ähnelt. + /// Looks up a localized string similar to Restore. /// public static string BACKUP_SELECT_HOST_BUTTON { get { @@ -5795,7 +5759,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restore from Backup ähnelt. + /// Looks up a localized string similar to Restore from Backup. /// public static string BACKUP_SELECT_HOST_TITLE { get { @@ -5804,9 +5768,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The server you are connecting to has been restored from a backup of '{0}', a server you are already connected to. + /// Looks up a localized string similar to The server you are connecting to has been restored from a backup of '{0}', a server you are already connected to. /// - ///This is a potentially dangerous operation and is not allowed. ähnelt. + ///This is a potentially dangerous operation and is not allowed.. /// public static string BAD_RESTORE_DETECTED { get { @@ -5815,7 +5779,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The server '{0}' gave a bad response to the query. ähnelt. + /// Looks up a localized string similar to The server '{0}' gave a bad response to the query.. /// public static string BAD_SERVER_RESPONSE { get { @@ -5824,7 +5788,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose the VMs whose memory settings you want to adjust ähnelt. + /// Looks up a localized string similar to Choose the VMs whose memory settings you want to adjust. /// public static string BALLOONING_PAGE_CHOOSEVMS_PAGETITLE { get { @@ -5833,7 +5797,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select VMs ähnelt. + /// Looks up a localized string similar to Select VMs. /// public static string BALLOONING_PAGE_CHOOSEVMS_TEXT { get { @@ -5842,7 +5806,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure the memory settings for your selected VMs ähnelt. + /// Looks up a localized string similar to Configure the memory settings for your selected VMs. /// public static string BALLOONING_PAGE_MEMORY_PAGETITLE { get { @@ -5851,7 +5815,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adjust memory settings ähnelt. + /// Looks up a localized string similar to Adjust memory settings. /// public static string BALLOONING_PAGE_MEMORY_TEXT { get { @@ -5860,7 +5824,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Set a fixed memory for this VM, or set a memory range and allow the VM's memory allocation to be adjusted automatically. ähnelt. + /// Looks up a localized string similar to Set a fixed memory for this VM, or set a memory range and allow the VM's memory allocation to be adjusted automatically.. /// public static string BALLOONING_RUBRIC { get { @@ -5869,7 +5833,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Set the memory range and static maximum memory for this VM. ähnelt. + /// Looks up a localized string similar to Set the memory range and static maximum memory for this VM.. /// public static string BALLOONING_RUBRIC_ADVANCED { get { @@ -5878,7 +5842,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Set the memory range and static maximum memory for VMs created from this template. ähnelt. + /// Looks up a localized string similar to Set the memory range and static maximum memory for VMs created from this template.. /// public static string BALLOONING_RUBRIC_ADVANCED_TEMPLATE { get { @@ -5887,7 +5851,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Set a fixed memory for VMs created from this template, or set a memory range and allow the VMs' memory allocation to be adjusted automatically. ähnelt. + /// Looks up a localized string similar to Set a fixed memory for VMs created from this template, or set a memory range and allow the VMs' memory allocation to be adjusted automatically.. /// public static string BALLOONING_RUBRIC_TEMPLATE { get { @@ -5896,7 +5860,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Base ähnelt. + /// Looks up a localized string similar to Base. /// public static string BASE { get { @@ -5905,7 +5869,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die is before ähnelt. + /// Looks up a localized string similar to is before. /// public static string BEFORE { get { @@ -5914,7 +5878,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Before You Start ähnelt. + /// Looks up a localized string similar to Before You Start. /// public static string BEFORE_YOU_START { get { @@ -5923,7 +5887,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die bigger than ähnelt. + /// Looks up a localized string similar to bigger than. /// public static string BIGGER_THAN { get { @@ -5932,7 +5896,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die BIOS Boot ähnelt. + /// Looks up a localized string similar to BIOS Boot. /// public static string BIOS_BOOT { get { @@ -5941,7 +5905,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die BIOS strings copied ähnelt. + /// Looks up a localized string similar to The BIOS boot mode is not supported with the selected template.. + /// + public static string BIOS_BOOT_MODE_UNSUPPORTED_WARNING { + get { + return ResourceManager.GetString("BIOS_BOOT_MODE_UNSUPPORTED_WARNING", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to BIOS strings copied. /// public static string BIOS_STRINGS_COPIED { get { @@ -5950,7 +5923,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Bonded network ähnelt. + /// Looks up a localized string similar to Bonded network. /// public static string BOND { get { @@ -5959,7 +5932,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Create Bond ähnelt. + /// Looks up a localized string similar to Create Bond. /// public static string BOND_CREATE { get { @@ -5968,7 +5941,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Create bond anyway ähnelt. + /// Looks up a localized string similar to &Create bond anyway. /// public static string BOND_CREATE_CONTINUE { get { @@ -5977,11 +5950,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Can’t create this bond while HA is enabled + /// Looks up a localized string similar to Can’t create this bond while HA is enabled /// ///A management interface exists on one of the selected NICs. Moving the management interface to the bond could result in HA network heartbeat failure, so this action is not allowed while HA is on. /// - ///To continue, either select different NICs for the bond, or disable HA, create the bond, and then enable HA again. ähnelt. + ///To continue, either select different NICs for the bond, or disable HA, create the bond, and then enable HA again.. /// public static string BOND_CREATE_HA_ENABLED { get { @@ -5990,9 +5963,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This bond cannot be created because both management and secondary interfaces exist on your selected bond members. + /// Looks up a localized string similar to This bond cannot be created because both management and secondary interfaces exist on your selected bond members. /// - ///Both types of interface cannot be added to the same bond. Choose different bond members, or move the management interfaces before creating the bond. ähnelt. + ///Both types of interface cannot be added to the same bond. Choose different bond members, or move the management interfaces before creating the bond.. /// public static string BOND_CREATE_WILL_DISTURB_BOTH { get { @@ -6001,9 +5974,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating this bond will automatically move the clustering network on one of your selected bond members to the bond itself: + /// Looks up a localized string similar to Creating this bond will automatically move the clustering network on one of your selected bond members to the bond itself: /// - ///- If your network configuration is incorrect then hosts may permanently lose the connection to the clustering network, which will cause undesired host fences. ähnelt. + ///- If your network configuration is incorrect then hosts may permanently lose the connection to the clustering network, which will cause undesired host fences.. /// public static string BOND_CREATE_WILL_DISTURB_CLUSTERING { get { @@ -6012,11 +5985,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating this bond will automatically move the management interface on one of your selected bond members to the bond itself: + /// Looks up a localized string similar to Creating this bond will automatically move the management interface on one of your selected bond members to the bond itself: /// ///- [XenCenter] connections to the pool will temporarily be disturbed /// - ///- If your network configuration is incorrect then [XenCenter] may permanently lose the connection to the pool, or pool members may be unable to contact each other. ähnelt. + ///- If your network configuration is incorrect then [XenCenter] may permanently lose the connection to the pool, or pool members may be unable to contact each other.. /// public static string BOND_CREATE_WILL_DISTURB_PRIMARY { get { @@ -6025,7 +5998,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating this bond will disrupt traffic through the secondary interfaces on the bond members while the interfaces are moved onto the bond itself. ähnelt. + /// Looks up a localized string similar to Creating this bond will disrupt traffic through the secondary interfaces on the bond members while the interfaces are moved onto the bond itself.. /// public static string BOND_CREATE_WILL_DISTURB_SECONDARY { get { @@ -6034,7 +6007,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Delete bond anyway ähnelt. + /// Looks up a localized string similar to &Delete bond anyway. /// public static string BOND_DELETE_CONTINUE { get { @@ -6043,11 +6016,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Can’t delete this bond while HA is enabled + /// Looks up a localized string similar to Can’t delete this bond while HA is enabled /// ///A management interface exists on one of the bonded NICs. Deleting the bond could result in HA network heartbeat failure, so this action is not allowed while HA is on. /// - ///To continue, disable HA, delete the bond, and then enable HA again. ähnelt. + ///To continue, disable HA, delete the bond, and then enable HA again.. /// public static string BOND_DELETE_HA_ENABLED { get { @@ -6056,7 +6029,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} + /// Looks up a localized string similar to {0} /// ///Deleting this bond will automatically transfer the management and secondary interfaces on the bond to the first slave member of the bond: /// @@ -6064,7 +6037,7 @@ namespace XenAdmin { /// ///- Traffic through the secondary interface will be disrupted /// - ///- If your network configuration is incorrect then [XenCenter] may permanently lose the connection to the pool, or pool members may be unable to contact each other. ähnelt. + ///- If your network configuration is incorrect then [XenCenter] may permanently lose the connection to the pool, or pool members may be unable to contact each other.. /// public static string BOND_DELETE_WILL_DISTURB_BOTH { get { @@ -6073,13 +6046,13 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} + /// Looks up a localized string similar to {0} /// ///Deleting this bond will automatically transfer the management interface on the bond to the first slave member of the bond: /// ///- [XenCenter] connections to the pool will temporarily be disturbed /// - ///- If your network configuration is incorrect then [XenCenter] may permanently lose the connection to the pool, or pool members may be unable to contact each other. ähnelt. + ///- If your network configuration is incorrect then [XenCenter] may permanently lose the connection to the pool, or pool members may be unable to contact each other.. /// public static string BOND_DELETE_WILL_DISTURB_PRIMARY { get { @@ -6088,9 +6061,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} + /// Looks up a localized string similar to {0} /// - ///Deleting this bond will disrupt traffic through the secondary interface on the bond while the interface is moved to the first slave of the bond. ähnelt. + ///Deleting this bond will disrupt traffic through the secondary interface on the bond while the interface is moved to the first slave of the bond.. /// public static string BOND_DELETE_WILL_DISTURB_SECONDARY { get { @@ -6099,7 +6072,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find the bond in [XenCenter]'s cache. ähnelt. + /// Looks up a localized string similar to Could not find the bond in [XenCenter]'s cache.. /// public static string BOND_GONE { get { @@ -6108,7 +6081,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find the bond master in [XenCenter]'s cache. ähnelt. + /// Looks up a localized string similar to Could not find the bond master in [XenCenter]'s cache.. /// public static string BOND_MASTER_GONE { get { @@ -6117,7 +6090,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM will not boot from devices below this line ähnelt. + /// Looks up a localized string similar to VM will not boot from devices below this line. /// public static string BOOT_DEVICE_DISABLED_ROW_TEXT { get { @@ -6126,7 +6099,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die DVD-Drive ähnelt. + /// Looks up a localized string similar to DVD-Drive. /// public static string BOOT_DVD_DRIVE { get { @@ -6135,7 +6108,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Hard Disk ähnelt. + /// Looks up a localized string similar to Hard Disk. /// public static string BOOT_HARD_DISK { get { @@ -6144,7 +6117,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Boot Mode ähnelt. + /// Looks up a localized string similar to Boot Mode. /// public static string BOOT_MODE { get { @@ -6153,7 +6126,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Boot order: {0} ähnelt. + /// Looks up a localized string similar to Boot order: {0}. /// public static string BOOTORDER { get { @@ -6162,16 +6135,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Boot order: {0} (auto-start on server boot) ähnelt. - /// - public static string BOOTORDER_AUTOSTART { - get { - return ResourceManager.GetString("BOOTORDER_AUTOSTART", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die There are broken SRs after the upgrade. To solve this problem you should reattach the SRs. ähnelt. + /// Looks up a localized string similar to There are broken SRs after the upgrade. To solve this problem you should reattach the SRs.. /// public static string BROKEN_SRS_AFTER_UPGRADE { get { @@ -6180,7 +6144,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Your Tools ISO is on a broken SR, [XenCenter] will attempt to fix it before proceeding. Do you want to continue? ähnelt. + /// Looks up a localized string similar to Your Tools ISO is on a broken SR, [XenCenter] will attempt to fix it before proceeding. Do you want to continue?. /// public static string BROKEN_TOOLS_PROMPT { get { @@ -6189,7 +6153,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Compiling [XenCenter] logs and metadata ähnelt. + /// Looks up a localized string similar to Compiling [XenCenter] logs and metadata. /// public static string BUGTOOL_CLIENT_ACTION_LOGS_META { get { @@ -6198,7 +6162,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Compiling [XenCenter] metadata ähnelt. + /// Looks up a localized string similar to Compiling [XenCenter] metadata. /// public static string BUGTOOL_CLIENT_ACTION_META { get { @@ -6207,7 +6171,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] logs and metadata ähnelt. + /// Looks up a localized string similar to [XenCenter] logs and metadata. /// public static string BUGTOOL_CLIENT_LOGS_META { get { @@ -6216,7 +6180,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] metadata ähnelt. + /// Looks up a localized string similar to [XenCenter] metadata. /// public static string BUGTOOL_CLIENT_META { get { @@ -6225,7 +6189,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die status-report- ähnelt. + /// Looks up a localized string similar to status-report-. /// public static string BUGTOOL_FILE_PREFIX { get { @@ -6234,7 +6198,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the data you want to include in your report ähnelt. + /// Looks up a localized string similar to Select the data you want to include in your report. /// public static string BUGTOOL_PAGE_CAPABILITIES_PAGETITLE { get { @@ -6243,7 +6207,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select Report Contents ähnelt. + /// Looks up a localized string similar to Select Report Contents. /// public static string BUGTOOL_PAGE_CAPABILITIES_TEXT { get { @@ -6252,7 +6216,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Case number is invalid. ähnelt. + /// Looks up a localized string similar to Case number is invalid.. /// public static string BUGTOOL_PAGE_DESTINATION_INVALID_CASE_NO { get { @@ -6261,7 +6225,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destination directory is invalid. ähnelt. + /// Looks up a localized string similar to Destination directory is invalid.. /// public static string BUGTOOL_PAGE_DESTINATION_INVALID_FOLDER { get { @@ -6270,7 +6234,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die File name is invalid. ähnelt. + /// Looks up a localized string similar to File name is invalid.. /// public static string BUGTOOL_PAGE_DESTINATION_INVALID_NAME { get { @@ -6279,7 +6243,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a destination folder for the report files ähnelt. + /// Looks up a localized string similar to Select a destination folder for the report files. /// public static string BUGTOOL_PAGE_DESTINATION_PAGETITLE { get { @@ -6288,7 +6252,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Report Destination ähnelt. + /// Looks up a localized string similar to Report Destination. /// public static string BUGTOOL_PAGE_DESTINATION_TEXT { get { @@ -6297,9 +6261,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to leave this page? + /// Looks up a localized string similar to Are you sure you want to leave this page? /// - ///This will cancel compilation of the status report. ähnelt. + ///This will cancel compilation of the status report.. /// public static string BUGTOOL_PAGE_RETRIEVEDATA_CONFIRM_CANCEL { get { @@ -6308,7 +6272,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Compiling Status Report ähnelt. + /// Looks up a localized string similar to Compiling Status Report. /// public static string BUGTOOL_PAGE_RETRIEVEDATA_PAGE_TITLE { get { @@ -6317,7 +6281,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Compile Report ähnelt. + /// Looks up a localized string similar to Compile Report. /// public static string BUGTOOL_PAGE_RETRIEVEDATA_TEXT { get { @@ -6326,7 +6290,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select Servers ähnelt. + /// Looks up a localized string similar to Select Servers. /// public static string BUGTOOL_PAGE_SERVERS_TEXT { get { @@ -6335,7 +6299,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the servers you want to include in the report ähnelt. + /// Looks up a localized string similar to Select the servers you want to include in the report. /// public static string BUGTOOL_PAGE_SERVERS_TITLE { get { @@ -6344,7 +6308,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed. A {0} user cannot retrieve all the specified items. ähnelt. + /// Looks up a localized string similar to Failed. A {0} user cannot retrieve all the specified items.. /// public static string BUGTOOL_RBAC_FAILURE { get { @@ -6353,7 +6317,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Canceled ähnelt. + /// Looks up a localized string similar to Canceled. /// public static string BUGTOOL_REPORTSTATUS_CANCELLED { get { @@ -6362,7 +6326,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Compiling ähnelt. + /// Looks up a localized string similar to Compiling. /// public static string BUGTOOL_REPORTSTATUS_COMPILING { get { @@ -6371,7 +6335,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Downloading - {0} ähnelt. + /// Looks up a localized string similar to Downloading - {0}. /// public static string BUGTOOL_REPORTSTATUS_DOWNLOADING { get { @@ -6380,7 +6344,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed - Please see logs for details ähnelt. + /// Looks up a localized string similar to Failed - Please see logs for details. /// public static string BUGTOOL_REPORTSTATUS_FAILED { get { @@ -6389,7 +6353,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Queued ähnelt. + /// Looks up a localized string similar to Queued. /// public static string BUGTOOL_REPORTSTATUS_QUEUED { get { @@ -6398,7 +6362,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving server status report ähnelt. + /// Looks up a localized string similar to Saving server status report. /// public static string BUGTOOL_SAVING { get { @@ -6407,7 +6371,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Built-in network ähnelt. + /// Looks up a localized string similar to Built-in network. /// public static string BUILTIN_NETWORK { get { @@ -6416,7 +6380,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die PCI Bus Path ähnelt. + /// Looks up a localized string similar to PCI Bus Path. /// public static string BUS_PATH { get { @@ -6425,7 +6389,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Open or Collapse the Properties ähnelt. + /// Looks up a localized string similar to Open or Collapse the Properties. /// public static string BUTTON_DISCLOSURE_TOOLTIP { get { @@ -6434,7 +6398,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cache not yet populated ähnelt. + /// Looks up a localized string similar to Cache not yet populated. /// public static string CACHE_NOT_YET_POPULATED { get { @@ -6443,7 +6407,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Caching ähnelt. + /// Looks up a localized string similar to Caching. /// public static string CACHING { get { @@ -6452,7 +6416,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cancel ähnelt. + /// Looks up a localized string similar to Cancel. /// public static string CANCEL { get { @@ -6461,7 +6425,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cancel Connect ähnelt. + /// Looks up a localized string similar to Cancel Connect. /// public static string CANCEL_CONNECT { get { @@ -6470,7 +6434,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Canceling... ähnelt. + /// Looks up a localized string similar to Canceling.... /// public static string CANCELING { get { @@ -6479,7 +6443,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Canceling Tasks ähnelt. + /// Looks up a localized string similar to Canceling Tasks. /// public static string CANCELING_TASKS { get { @@ -6488,7 +6452,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Canceled by user ähnelt. + /// Looks up a localized string similar to Canceled by user. /// public static string CANCELLED_BY_USER { get { @@ -6497,7 +6461,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This ISO storage is in use and cannot be activated. ähnelt. + /// Looks up a localized string similar to This ISO storage is in use and cannot be activated.. /// public static string CANNOT_ACTIVATE_ISO_IN_USE { get { @@ -6506,7 +6470,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This snapshot is in use and cannot be activated. ähnelt. + /// Looks up a localized string similar to This snapshot is in use and cannot be activated.. /// public static string CANNOT_ACTIVATE_SNAPSHOT_IN_USE { get { @@ -6515,7 +6479,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This virtual disk is already activated on VM '{0}'. ähnelt. + /// Looks up a localized string similar to This virtual disk is already activated on VM '{0}'.. /// public static string CANNOT_ACTIVATE_VD_ALREADY_ACTIVE { get { @@ -6524,7 +6488,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This virtual disk is in use and cannot be activated. ähnelt. + /// Looks up a localized string similar to This virtual disk is in use and cannot be activated.. /// public static string CANNOT_ACTIVATE_VD_IN_USE { get { @@ -6533,7 +6497,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die It is not possible to activate this virtual disk on VM '{0}' as the VM is not running. ähnelt. + /// Looks up a localized string similar to It is not possible to activate this virtual disk on VM '{0}' as the VM is not running.. /// public static string CANNOT_ACTIVATE_VD_VM_HALTED { get { @@ -6542,7 +6506,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You must install I/O drivers on VM '{0}' before you can activate this virtual disk for the VM. ähnelt. + /// Looks up a localized string similar to You must install I/O drivers on VM '{0}' before you can activate this virtual disk for the VM.. /// public static string CANNOT_ACTIVATE_VD_VM_NEEDS_IO_DRIVERS { get { @@ -6551,7 +6515,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You must install [Citrix VM Tools] on VM '{0}' before you can activate this virtual disk for the VM. ähnelt. + /// Looks up a localized string similar to You must install [Citrix VM Tools] on VM '{0}' before you can activate this virtual disk for the VM.. /// public static string CANNOT_ACTIVATE_VD_VM_NEEDS_TOOLS { get { @@ -6560,7 +6524,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The interface can only be changed when the host is in maintenance mode, because clustering is enabled on {0}. ähnelt. + /// Looks up a localized string similar to The interface can only be changed when the host is in maintenance mode, because clustering is enabled on {0}.. /// public static string CANNOT_CHANGE_IP_CLUSTERING_ENABLED { get { @@ -6569,7 +6533,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (The network's MTU cannot be changed because it is in use as the management interface '{0}') ähnelt. + /// Looks up a localized string similar to (The network's MTU cannot be changed because it is in use as the management interface '{0}'). /// public static string CANNOT_CONFIGURE_JUMBO_DISTURB_MANAGEMENT { get { @@ -6578,7 +6542,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (The network's MTU cannot be changed because there are active VMs attached without tools installed) ähnelt. + /// Looks up a localized string similar to (The network's MTU cannot be changed because there are active VMs attached without tools installed). /// public static string CANNOT_CONFIGURE_JUMBO_VM_NO_TOOLS { get { @@ -6587,7 +6551,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You cannot configure an archive that is more frequent than the snapshot schedule ähnelt. + /// Looks up a localized string similar to You cannot configure an archive that is more frequent than the snapshot schedule. /// public static string CANNOT_CONFIGURE_MORE_FREQ_ARCHIVE { get { @@ -6596,7 +6560,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (The network's NIC and VLAN cannot be changed as it is in use as the management interface '{0}') ähnelt. + /// Looks up a localized string similar to (The network's NIC and VLAN cannot be changed as it is in use as the management interface '{0}'). /// public static string CANNOT_CONFIGURE_NET_DISTURB_MANAGEMENT { get { @@ -6605,7 +6569,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (The network's NIC and VLAN cannot be changed as there are active VMs attached) ähnelt. + /// Looks up a localized string similar to (The network's NIC and VLAN cannot be changed as there are active VMs attached). /// public static string CANNOT_CONFIGURE_NET_VMS_ATTACHED { get { @@ -6614,7 +6578,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This ISO storage is in use and cannot be deactivated. ähnelt. + /// Looks up a localized string similar to This ISO storage is in use and cannot be deactivated.. /// public static string CANNOT_DEACTIVATE_ISO_IN_USE { get { @@ -6623,7 +6587,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This virtual disk is already deactivated on VM '{0}'. ähnelt. + /// Looks up a localized string similar to This virtual disk is already deactivated on VM '{0}'.. /// public static string CANNOT_DEACTIVATE_NOT_ACTIVE { get { @@ -6632,7 +6596,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This snapshot is in use and cannot be deactivated. ähnelt. + /// Looks up a localized string similar to This snapshot is in use and cannot be deactivated.. /// public static string CANNOT_DEACTIVATE_SNAPSHOT_IN_USE { get { @@ -6641,7 +6605,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This virtual disk is in use and cannot be deactivated. ähnelt. + /// Looks up a localized string similar to This virtual disk is in use and cannot be deactivated.. /// public static string CANNOT_DEACTIVATE_VDI_IN_USE { get { @@ -6650,7 +6614,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You must install I/O drivers on VM '{0}' before you can deactivate this virtual disk for the VM. ähnelt. + /// Looks up a localized string similar to You must install I/O drivers on VM '{0}' before you can deactivate this virtual disk for the VM.. /// public static string CANNOT_DEACTIVATE_VDI_NEEDS_IO_DRIVERS { get { @@ -6659,7 +6623,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You must install [Citrix VM Tools] on VM '{0}' before you can deactivate this virtual disk for the VM. ähnelt. + /// Looks up a localized string similar to You must install [Citrix VM Tools] on VM '{0}' before you can deactivate this virtual disk for the VM.. /// public static string CANNOT_DEACTIVATE_VDI_NEEDS_TOOLS { get { @@ -6668,7 +6632,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die It is not possible to deactivate this virtual disk on VM '{0}' because the VM is not running. ähnelt. + /// Looks up a localized string similar to It is not possible to deactivate this virtual disk on VM '{0}' because the VM is not running.. /// public static string CANNOT_DEACTIVATE_VDI_VM_NOT_RUNNING { get { @@ -6677,7 +6641,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual disks must be deactivated before being deleted. This virtual disk is in use by the VM '{0}'. ähnelt. + /// Looks up a localized string similar to Virtual disks must be deactivated before being deleted. This virtual disk is in use by the VM '{0}'.. /// public static string CANNOT_DELETE_ACTIVE_VDI { get { @@ -6686,7 +6650,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ISO storage must be ejected from VMs before being deleted. This storage is in use by the VM '{0}'. ähnelt. + /// Looks up a localized string similar to ISO storage must be ejected from VMs before being deleted. This storage is in use by the VM '{0}'.. /// public static string CANNOT_DELETE_ACTIVE_VDI_ISO { get { @@ -6695,9 +6659,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die It is not possible to deactivate and delete this virtual disk on the VM '{0}': + /// Looks up a localized string similar to It is not possible to deactivate and delete this virtual disk on the VM '{0}': /// - ///{1} ähnelt. + ///{1}. /// public static string CANNOT_DELETE_CANNOT_DEACTIVATE_REASON { get { @@ -6706,7 +6670,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] templates cannot be deleted. ähnelt. + /// Looks up a localized string similar to [XenServer] templates cannot be deleted.. /// public static string CANNOT_DELETE_DEFAULT_TEMPLATE { get { @@ -6715,7 +6679,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This virtual disk is used for DR. To delete it, configure DR not to save data to this storage repository. ähnelt. + /// Looks up a localized string similar to This virtual disk is used for DR. To delete it, configure DR not to save data to this storage repository.. /// public static string CANNOT_DELETE_DR_VD { get { @@ -6724,7 +6688,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This virtual disk is used for HA. To delete it, first disable HA. ähnelt. + /// Looks up a localized string similar to This virtual disk is used for HA. To delete it, first disable HA.. /// public static string CANNOT_DELETE_HA_VD { get { @@ -6733,7 +6697,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot delete this system disk as it is in use by the running VM '{0}'. ähnelt. + /// Looks up a localized string similar to Cannot delete this system disk as it is in use by the running VM '{0}'.. /// public static string CANNOT_DELETE_IN_USE_SYS_VD { get { @@ -6742,7 +6706,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die It is not possible to delete this ISO storage. Please check your SR supports this operation and try again. ähnelt. + /// Looks up a localized string similar to It is not possible to delete this ISO storage. Please check your SR supports this operation and try again.. /// public static string CANNOT_DELETE_ISO_GENERIC { get { @@ -6751,7 +6715,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This ISO storage is currently in use and cannot be deleted. ähnelt. + /// Looks up a localized string similar to This ISO storage is currently in use and cannot be deleted.. /// public static string CANNOT_DELETE_ISO_IN_USE { get { @@ -6760,7 +6724,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die It is not possible to delete this snapshot. Please check your SR supports this operation and try again. ähnelt. + /// Looks up a localized string similar to It is not possible to delete this snapshot. Please check your SR supports this operation and try again.. /// public static string CANNOT_DELETE_SNAPSHOT_GENERIC { get { @@ -6769,7 +6733,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This snapshot is currently in use and cannot be deleted. ähnelt. + /// Looks up a localized string similar to This snapshot is currently in use and cannot be deleted.. /// public static string CANNOT_DELETE_SNAPSHOT_IN_USE { get { @@ -6778,7 +6742,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting the [Citrix VM Tools] ISO storage is not supported. ähnelt. + /// Looks up a localized string similar to Deleting the [Citrix VM Tools] ISO storage is not supported.. /// public static string CANNOT_DELETE_TOOLS_SR { get { @@ -6787,7 +6751,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die It is not possible to delete this virtual disk. Please check your SR supports this operation and try again. ähnelt. + /// Looks up a localized string similar to It is not possible to delete this virtual disk. Please check your SR supports this operation and try again.. /// public static string CANNOT_DELETE_VD_GENERIC { get { @@ -6796,7 +6760,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This virtual disk is currently in use and cannot be deleted. ähnelt. + /// Looks up a localized string similar to This virtual disk is currently in use and cannot be deleted.. /// public static string CANNOT_DELETE_VD_IN_USE { get { @@ -6805,7 +6769,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This virtual disk is active on VM '{0}'. Deactivate the virtual disk before deleting. ähnelt. + /// Looks up a localized string similar to This virtual disk is active on VM '{0}'. Deactivate the virtual disk before deleting.. /// public static string CANNOT_DELETE_VDI_ACTIVE_ON { get { @@ -6814,7 +6778,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This virtual disk is attached to multiple VMs. Detach your virtual disk from these VMs before deleting it. ähnelt. + /// Looks up a localized string similar to This virtual disk is attached to multiple VMs. Detach your virtual disk from these VMs before deleting it.. /// public static string CANNOT_DELETE_VDI_MULTIPLE_VBDS { get { @@ -6823,7 +6787,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Running VMs require tools to be installed before you can delete their virtual disks. This disk is in us by the running VM '{0}'. ähnelt. + /// Looks up a localized string similar to Running VMs require tools to be installed before you can delete their virtual disks. This disk is in us by the running VM '{0}'.. /// public static string CANNOT_DELETE_VDI_RUNNING_VM_NO_TOOLS { get { @@ -6832,7 +6796,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual disks cannot be deleted from suspended VMs. This virtual disk is used by the suspended VM '{0}'. ähnelt. + /// Looks up a localized string similar to Virtual disks cannot be deleted from suspended VMs. This virtual disk is used by the suspended VM '{0}'.. /// public static string CANNOT_DELETE_VDI_SUSPENDED_VM { get { @@ -6841,7 +6805,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find XML node {0}. ähnelt. + /// Looks up a localized string similar to Could not find XML node {0}.. /// public static string CANNOT_FIND_NODE { get { @@ -6850,7 +6814,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You cannot configure an SR of type '{0}' using [XenCenter]. ähnelt. + /// Looks up a localized string similar to You cannot configure an SR of type '{0}' using [XenCenter].. /// public static string CANNOT_FIND_SR_WIZARD_TYPE { get { @@ -6859,7 +6823,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot move this virtual disk because it is attached to a VM that is not running. ähnelt. + /// Looks up a localized string similar to Cannot move this virtual disk because it is attached to a VM that is not running.. /// public static string CANNOT_MIGRATE_VDI_NON_RUNNING_VM { get { @@ -6868,7 +6832,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This virtual disk has CBT enabled. It cannot be moved to another storage repository. ähnelt. + /// Looks up a localized string similar to This virtual disk has CBT enabled. It cannot be moved to another storage repository.. /// public static string CANNOT_MOVE_CBT_ENABLED_VDI { get { @@ -6877,7 +6841,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This virtual disk is used for DR. It cannot be moved to another storage repository. ähnelt. + /// Looks up a localized string similar to This virtual disk is used for DR. It cannot be moved to another storage repository.. /// public static string CANNOT_MOVE_DR_VD { get { @@ -6886,7 +6850,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This virtual disk is used for HA. It cannot be moved to another storage repository. ähnelt. + /// Looks up a localized string similar to This virtual disk is used for HA. It cannot be moved to another storage repository.. /// public static string CANNOT_MOVE_HA_VD { get { @@ -6895,7 +6859,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This virtual disk is in use and cannot be moved. ähnelt. + /// Looks up a localized string similar to This virtual disk is in use and cannot be moved.. /// public static string CANNOT_MOVE_VDI_IN_USE { get { @@ -6904,7 +6868,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot disks cannot be moved ähnelt. + /// Looks up a localized string similar to Snapshot disks cannot be moved. /// public static string CANNOT_MOVE_VDI_IS_SNAPSHOT { get { @@ -6913,7 +6877,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot parse required parameter '{1}' on XML node '{0}' ähnelt. + /// Looks up a localized string similar to Cannot parse required parameter '{1}' on XML node '{0}'. /// public static string CANNOT_PARSE_NODE_PARAM { get { @@ -6922,7 +6886,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This IP address cannot be removed, because clustering is enabled on {0}. ähnelt. + /// Looks up a localized string similar to This IP address cannot be removed, because clustering is enabled on {0}.. /// public static string CANNOT_REMOVE_IP_WHEN_CLUSTERING_ON_NETWORK { get { @@ -6931,7 +6895,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This StorageLink server cannot be removed because it is currently in use. ähnelt. + /// Looks up a localized string similar to This StorageLink server cannot be removed because it is currently in use.. /// public static string CANNOT_REMOVE_SL_SERVER { get { @@ -6940,9 +6904,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The server '{0}' cannot join the pool '{1}' for the following reason: + /// Looks up a localized string similar to The server '{0}' cannot join the pool '{1}' for the following reason: /// - ///{2} ähnelt. + ///{2}. /// public static string CANT_JOIN_POOL_1 { get { @@ -6951,9 +6915,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following servers cannot join the pool '{0}': + /// Looks up a localized string similar to The following servers cannot join the pool '{0}': /// - ///{1} ähnelt. + ///{1}. /// public static string CANT_JOIN_POOL_N { get { @@ -6962,7 +6926,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die DVD drive on {0} ähnelt. + /// Looks up a localized string similar to DVD drive on {0}. /// public static string CD_DRIVE { get { @@ -6971,7 +6935,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The DVD drive cannot be created, because you have reached the maximum number of virtual disks allowed for this virtual machine. ähnelt. + /// Looks up a localized string similar to The DVD drive cannot be created, because you have reached the maximum number of virtual disks allowed for this virtual machine.. /// public static string CDDRIVE_MAX_ALLOWED_VBDS { get { @@ -6980,7 +6944,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ability to download updates ähnelt. + /// Looks up a localized string similar to Ability to download updates. /// public static string CFU_STATUS_CHECK_DESCRIPTION { get { @@ -6989,7 +6953,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change... ähnelt. + /// Looks up a localized string similar to Change.... /// public static string CHANGE { get { @@ -6998,7 +6962,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change policy '{0}' status ähnelt. + /// Looks up a localized string similar to Change policy '{0}' status. /// public static string CHANGE_POLICY_STATUS { get { @@ -7007,7 +6971,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Insert [XenServer] CD ähnelt. + /// Looks up a localized string similar to Insert [XenServer] CD. /// public static string CHANGE_SERVER_CD { get { @@ -7016,7 +6980,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change Server Password... ähnelt. + /// Looks up a localized string similar to Change Server Password.... /// public static string CHANGE_SERVER_PASSWORD { get { @@ -7025,9 +6989,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The VM '{0}' is already assigned to the snapshot schedule '{1}'. + /// Looks up a localized string similar to The VM '{0}' is already assigned to the snapshot schedule '{1}'. /// - ///Do you want to assign it to the schedule '{2}' instead? ähnelt. + ///Do you want to assign it to the schedule '{2}' instead?. /// public static string CHANGE_VM_SNAPSHOT_SCHEDULE_WARNING { get { @@ -7036,7 +7000,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Assign VM to vApp ähnelt. + /// Looks up a localized string similar to Assign VM to vApp. /// public static string CHANGE_VMS_APPLIANCE { get { @@ -7045,9 +7009,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The VM '{0}' is already assigned to the vApp '{1}'. + /// Looks up a localized string similar to The VM '{0}' is already assigned to the vApp '{1}'. /// - ///Do you want to assign it to the vApp '{2}' instead? ähnelt. + ///Do you want to assign it to the vApp '{2}' instead?. /// public static string CHANGE_VMS_APPLIANCE_WARNING { get { @@ -7056,9 +7020,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Some of the VMs you selected are already assigned to a different vApp. + /// Looks up a localized string similar to Some of the VMs you selected are already assigned to a different vApp. /// - ///Do you want to assign these VMs to the vApp '{0}' instead? ähnelt. + ///Do you want to assign these VMs to the vApp '{0}' instead?. /// public static string CHANGE_VMS_APPLIANCES_WARNING { get { @@ -7067,9 +7031,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Some of the VMs you selected are already assigned to a different snapshot schedule. + /// Looks up a localized string similar to Some of the VMs you selected are already assigned to a different snapshot schedule. /// - ///Do you want to assign these VMs to the schedule '{0}' instead? ähnelt. + ///Do you want to assign these VMs to the schedule '{0}' instead?. /// public static string CHANGE_VMS_SNAPSHOT_SCHEDULE_WARNING { get { @@ -7078,7 +7042,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Assign VM to snapshot schedule ähnelt. + /// Looks up a localized string similar to Assign VM to snapshot schedule. /// public static string CHANGE_VMSS_POLICY { get { @@ -7087,7 +7051,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changed [XenCenter] master password ähnelt. + /// Looks up a localized string similar to Changed [XenCenter] master password. /// public static string CHANGED_MASTER_PASSWORD { get { @@ -7096,7 +7060,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changed [XenCenter] master password for session restore ähnelt. + /// Looks up a localized string similar to Changed [XenCenter] master password for session restore. /// public static string CHANGED_MASTER_PASSWORD_LONG { get { @@ -7105,7 +7069,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server CD changed ähnelt. + /// Looks up a localized string similar to Server CD changed. /// public static string CHANGED_SERVER_CD { get { @@ -7114,7 +7078,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change Server Password - {0} ähnelt. + /// Looks up a localized string similar to Change Server Password - {0}. /// public static string CHANGEPASS_DIALOG_TITLE { get { @@ -7123,7 +7087,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please type the root password for {0}: ähnelt. + /// Looks up a localized string similar to Please type the root password for '{0}':. /// public static string CHANGEPASS_ROOT_PASS { get { @@ -7132,7 +7096,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' cannot have WLB enabled ähnelt. + /// Looks up a localized string similar to Pool '{0}' cannot have WLB enabled. /// public static string CHECK_WLB_ENABLED { get { @@ -7141,7 +7105,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking automated updates can be applied ähnelt. + /// Looks up a localized string similar to Checking automated updates can be applied. /// public static string CHECKING_AUTOMATED_UPDATES_POSSIBLE { get { @@ -7150,7 +7114,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking VM migration status ähnelt. + /// Looks up a localized string similar to Checking VM migration status. /// public static string CHECKING_CANEVACUATE_STATUS { get { @@ -7159,7 +7123,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking clustering status ähnelt. + /// Looks up a localized string similar to Checking clustering status. /// public static string CHECKING_CLUSTERING_STATUS { get { @@ -7168,7 +7132,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking for pending restart ähnelt. + /// Looks up a localized string similar to Checking for pending restart. /// public static string CHECKING_FOR_PENDING_RESTART { get { @@ -7177,7 +7141,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking HA and WLB status ähnelt. + /// Looks up a localized string similar to Checking HA and WLB status. /// public static string CHECKING_HA_STATUS { get { @@ -7186,7 +7150,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking host liveness status ähnelt. + /// Looks up a localized string similar to Checking host liveness status. /// public static string CHECKING_HOST_LIVENESS_STATUS { get { @@ -7195,7 +7159,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking host memory status ähnelt. + /// Looks up a localized string similar to Checking host memory status. /// public static string CHECKING_HOST_MEMORY_POST_UPGRADE { get { @@ -7204,7 +7168,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Host memory check ähnelt. + /// Looks up a localized string similar to Host memory check. /// public static string CHECKING_HOST_MEMORY_POST_UPGRADE_DESCRIPTION { get { @@ -7213,7 +7177,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking host upgrade readiness ähnelt. + /// Looks up a localized string similar to Checking host upgrade readiness. /// public static string CHECKING_PREPARE_TO_UPGRADE { get { @@ -7222,7 +7186,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Host upgrade readiness check ähnelt. + /// Looks up a localized string similar to Host upgrade readiness check. /// public static string CHECKING_PREPARE_TO_UPGRADE_DESCRIPTION { get { @@ -7231,7 +7195,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking role... ähnelt. + /// Looks up a localized string similar to Checking guest compatibility. + /// + public static string CHECKING_PV_GUESTS { + get { + return ResourceManager.GetString("CHECKING_PV_GUESTS", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Checking role.... /// public static string CHECKING_ROLE { get { @@ -7240,7 +7213,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking partition layout ähnelt. + /// Looks up a localized string similar to Checking partition layout. /// public static string CHECKING_SAFE_TO_UPGRADE { get { @@ -7249,7 +7222,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Host partition layout check ähnelt. + /// Looks up a localized string similar to Host partition layout check. /// public static string CHECKING_SAFE_TO_UPGRADE_DESCRIPTION { get { @@ -7258,7 +7231,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking reboots required ähnelt. + /// Looks up a localized string similar to Checking reboots required. /// public static string CHECKING_SERVER_NEEDS_REBOOT { get { @@ -7267,7 +7240,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking server selection ähnelt. + /// Looks up a localized string similar to Checking server selection. /// public static string CHECKING_SERVER_SELECTION { get { @@ -7276,7 +7249,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking server side status ähnelt. + /// Looks up a localized string similar to Checking server side status. /// public static string CHECKING_SERVER_SIDE_STATUS { get { @@ -7285,7 +7258,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking storage connections status ähnelt. + /// Looks up a localized string similar to Checking storage connections status. /// public static string CHECKING_STORAGE_CONNECTIONS_STATUS { get { @@ -7294,7 +7267,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking StorageLink connections ähnelt. + /// Looks up a localized string similar to Checking StorageLink connections. /// public static string CHECKING_STORAGELINK_CONNECTIONS { get { @@ -7303,7 +7276,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking StorageLink status ähnelt. + /// Looks up a localized string similar to Checking StorageLink status. /// public static string CHECKING_STORAGELINK_STATUS { get { @@ -7312,7 +7285,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking upgrade hotfix status ähnelt. + /// Looks up a localized string similar to Checking upgrade hotfix status. /// public static string CHECKING_UPGRADE_HOTFIX_STATUS { get { @@ -7321,7 +7294,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking [XenCenter] version ähnelt. + /// Looks up a localized string similar to Checking [XenCenter] version. /// public static string CHECKING_XENCENTER_VERSION { get { @@ -7330,7 +7303,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cross-server private network ähnelt. + /// Looks up a localized string similar to Cross-server private network. /// public static string CHIN { get { @@ -7339,7 +7312,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cross-server private networks ähnelt. + /// Looks up a localized string similar to Cross-server private networks. /// public static string CHINS { get { @@ -7348,7 +7321,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cross-server private networks require the vSwitch Controller to be configured and running. ähnelt. + /// Looks up a localized string similar to Cross-server private networks require the vSwitch Controller to be configured and running.. /// public static string CHINS_NEED_VSWITCHCONTROLLER { get { @@ -7357,7 +7330,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose another &destination ähnelt. + /// Looks up a localized string similar to Choose another &destination. /// public static string CHOOSE_ANOTHER_DESTINATION { get { @@ -7366,7 +7339,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Multipathing is not enabled on all servers of your pool. To ensure system stability, it is strongly recommended that you use multipathing for your storage connectivity. ähnelt. + /// Looks up a localized string similar to Multipathing is not enabled on all servers of your pool. To ensure system stability, it is strongly recommended that you use multipathing for your storage connectivity.. /// public static string CHOOSE_SR_PROVISIONING_PAGE_MULTIPATHING_MANY { get { @@ -7375,7 +7348,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Multipathing is not enabled on your server. To ensure system stability, it is strongly recommended that you use multipathing for your storage connectivity. ähnelt. + /// Looks up a localized string similar to Multipathing is not enabled on your server. To ensure system stability, it is strongly recommended that you use multipathing for your storage connectivity.. /// public static string CHOOSE_SR_PROVISIONING_PAGE_MULTIPATHING_ONE { get { @@ -7384,7 +7357,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose the provisioning method ähnelt. + /// Looks up a localized string similar to Choose the provisioning method. /// public static string CHOOSE_SR_PROVISIONING_PAGE_TITLE { get { @@ -7393,7 +7366,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose the type of new storage ähnelt. + /// Looks up a localized string similar to Choose the type of new storage. /// public static string CHOOSE_SR_TYPE_PAGE_TITLE { get { @@ -7402,7 +7375,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a checkbox to add a VM to the vApp; clear its checkbox to remove it from the vApp. ähnelt. + /// Looks up a localized string similar to Select a checkbox to add a VM to the vApp; clear its checkbox to remove it from the vApp.. /// public static string CHOOSE_VMS_VAPP_RUBRIC { get { @@ -7411,7 +7384,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a checkbox to add a VM to the snapshot schedule; clear its checkbox to remove it from the schedule. ähnelt. + /// Looks up a localized string similar to Select a checkbox to add a VM to the snapshot schedule; clear its checkbox to remove it from the schedule.. /// public static string CHOOSE_VMS_VMSS_RUBRIC { get { @@ -7420,7 +7393,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Clear Search ähnelt. + /// Looks up a localized string similar to Clear Search. /// public static string CLEAR_SEARCH { get { @@ -7429,7 +7402,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cloning template '{0}' ähnelt. + /// Looks up a localized string similar to Cloning template '{0}'. /// public static string CLONING_TEMPLATE { get { @@ -7438,7 +7411,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Close ähnelt. + /// Looks up a localized string similar to Close. /// public static string CLOSE { get { @@ -7447,7 +7420,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die To close this wizard, click Finish ähnelt. + /// Looks up a localized string similar to To close this wizard, click Finish. /// public static string CLOSE_WIZARD_CLICK_FINISH { get { @@ -7456,7 +7429,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Clustering ähnelt. + /// Looks up a localized string similar to Clustering. /// public static string CLUSTERING { get { @@ -7465,7 +7438,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Clustering status check ähnelt. + /// Looks up a localized string similar to Clustering status check. /// public static string CLUSTERING_STATUS_CHECK { get { @@ -7474,7 +7447,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Collapse Children ähnelt. + /// Looks up a localized string similar to &Collapse Children. /// public static string COLLAPSE_CHILDREN { get { @@ -7483,7 +7456,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die for use with Common Criteria versions of [XenServer] only ähnelt. + /// Looks up a localized string similar to for use with Common Criteria versions of [XenServer] only. /// public static string COMMON_CRITERIA_TEXT { get { @@ -7492,7 +7465,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Completed ähnelt. + /// Looks up a localized string similar to Completed. /// public static string COMPLETED { get { @@ -7501,7 +7474,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Completed, with some errors encountered. See the application log files for more information. ähnelt. + /// Looks up a localized string similar to Completed, with some errors encountered. See the application log files for more information.. /// public static string COMPLETED_WITH_ERRORS { get { @@ -7510,7 +7483,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Compressing appliance files... ähnelt. + /// Looks up a localized string similar to Compressing appliance files.... /// public static string COMPRESSING_FILES { get { @@ -7519,7 +7492,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Configure HA... ähnelt. + /// Looks up a localized string similar to Configure HA. + /// + public static string CONFIGURE_HA { + get { + return ResourceManager.GetString("CONFIGURE_HA", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to &Configure HA.... /// public static string CONFIGURE_HA_ELLIPSIS { get { @@ -7528,7 +7510,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuring Workload Balancing ähnelt. + /// Looks up a localized string similar to Configuring Workload Balancing . /// public static string CONFIGURING_WLB { get { @@ -7537,7 +7519,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuring Workload Balancing on pool '{0}' ähnelt. + /// Looks up a localized string similar to Configuring Workload Balancing on pool '{0}'. /// public static string CONFIGURING_WLB_ON { get { @@ -7546,9 +7528,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing the Control Domain memory will cause the server to be rebooted. + /// Looks up a localized string similar to Changing the Control Domain memory will cause the server to be rebooted. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string CONFIRM_CHANGE_CONTROL_DOMAIN_MEMORY { get { @@ -7557,9 +7539,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing the maximum memory of these VMs will cause them to be rebooted. + /// Looks up a localized string similar to Changing the maximum memory of these VMs will cause them to be rebooted. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string CONFIRM_CHANGE_MEMORY_MAX_PLURAL { get { @@ -7568,9 +7550,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing the maximum memory of this VM will cause it to be rebooted. + /// Looks up a localized string similar to Changing the maximum memory of this VM will cause it to be rebooted. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string CONFIRM_CHANGE_MEMORY_MAX_SINGULAR { get { @@ -7579,9 +7561,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing the memory of these VMs while they are running will cause them to be forcibly rebooted. This operation can cause data loss. + /// Looks up a localized string similar to Changing the memory of these VMs while they are running will cause them to be forcibly rebooted. This operation can cause data loss. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string CONFIRM_CHANGE_MEMORY_PLURAL { get { @@ -7590,9 +7572,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing the memory of this VM while it is running will cause it to be forcibly rebooted. This operation can cause data loss. + /// Looks up a localized string similar to Changing the memory of this VM while it is running will cause it to be forcibly rebooted. This operation can cause data loss. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string CONFIRM_CHANGE_MEMORY_SINGULAR { get { @@ -7601,9 +7583,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing the static maximum memory of these VMs will cause them to be rebooted. + /// Looks up a localized string similar to Changing the static maximum memory of these VMs will cause them to be rebooted. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string CONFIRM_CHANGE_STATIC_MAX_PLURAL { get { @@ -7612,9 +7594,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing the static maximum memory of this VM will cause it to be rebooted. + /// Looks up a localized string similar to Changing the static maximum memory of this VM will cause it to be rebooted. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string CONFIRM_CHANGE_STATIC_MAX_SINGULAR { get { @@ -7623,7 +7605,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to delete the selected {0}? ähnelt. + /// Looks up a localized string similar to Are you sure you want to delete the selected {0}?. /// public static string CONFIRM_DELETE { get { @@ -7632,7 +7614,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You want to delete these {0} selected items. ähnelt. + /// Looks up a localized string similar to You want to delete these {0} selected items.. /// public static string CONFIRM_DELETE_ITEMS { get { @@ -7641,7 +7623,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Multiple Items ähnelt. + /// Looks up a localized string similar to Delete Multiple Items. /// public static string CONFIRM_DELETE_ITEMS_TITLE { get { @@ -7650,9 +7632,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to delete the selected policies? + /// Looks up a localized string similar to Do you want to delete the selected policies? /// - ///{0} VMs are currently protected with these policies and will no longer be protected if you delete the policies. ähnelt. + ///{0} VMs are currently protected with these policies and will no longer be protected if you delete the policies.. /// public static string CONFIRM_DELETE_POLICIES { get { @@ -7661,7 +7643,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to delete the selected policies? ähnelt. + /// Looks up a localized string similar to Do you want to delete the selected policies?. /// public static string CONFIRM_DELETE_POLICIES_0 { get { @@ -7670,9 +7652,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to delete policy '{0}'? + /// Looks up a localized string similar to Do you want to delete policy '{0}'? /// - ///{1} VMs are currently protected with this policy and will no longer be protected if you delete the policy. ähnelt. + ///{1} VMs are currently protected with this policy and will no longer be protected if you delete the policy.. /// public static string CONFIRM_DELETE_POLICY { get { @@ -7681,7 +7663,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to delete policy '{0}'? ähnelt. + /// Looks up a localized string similar to Do you want to delete policy '{0}'?. /// public static string CONFIRM_DELETE_POLICY_0 { get { @@ -7690,7 +7672,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to delete '{0}'? ähnelt. + /// Looks up a localized string similar to Are you sure you want to delete '{0}'?. /// public static string CONFIRM_DELETE_PVS_SITE { get { @@ -7699,7 +7681,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to delete '{0}'? This configuration is in use by PVS-Accelerator. ähnelt. + /// Looks up a localized string similar to Are you sure you want to delete '{0}'? This configuration is in use by PVS-Accelerator.. /// public static string CONFIRM_DELETE_PVS_SITE_IN_USE { get { @@ -7708,7 +7690,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to delete the tag '{0}' from all managed resources? ähnelt. + /// Looks up a localized string similar to Are you sure you want to delete the tag '{0}' from all managed resources?. /// public static string CONFIRM_DELETE_TAG { get { @@ -7717,7 +7699,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Tag ähnelt. + /// Looks up a localized string similar to Delete Tag. /// public static string CONFIRM_DELETE_TAG_TITLE { get { @@ -7726,7 +7708,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to delete the selected tags from all managed resources? ähnelt. + /// Looks up a localized string similar to Are you sure you want to delete the selected tags from all managed resources?. /// public static string CONFIRM_DELETE_TAGS { get { @@ -7735,7 +7717,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Tags ähnelt. + /// Looks up a localized string similar to Delete Tags. /// public static string CONFIRM_DELETE_TAGS_TITLE { get { @@ -7744,7 +7726,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete {0} ähnelt. + /// Looks up a localized string similar to Delete {0}. /// public static string CONFIRM_DELETE_TITLE { get { @@ -7753,7 +7735,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to delete VM '{0}' from '{1}'? ähnelt. + /// Looks up a localized string similar to Are you sure you want to delete VM '{0}' from '{1}'?. /// public static string CONFIRM_DELETE_VM { get { @@ -7762,9 +7744,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to delete vApp '{0}'? + /// Looks up a localized string similar to Do you want to delete vApp '{0}'? /// - ///{1} VMs are currently included in this vApp. ähnelt. + ///{1} VMs are currently included in this vApp.. /// public static string CONFIRM_DELETE_VM_APPLIANCE { get { @@ -7773,7 +7755,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to delete vApp '{0}'? ähnelt. + /// Looks up a localized string similar to Do you want to delete vApp '{0}'?. /// public static string CONFIRM_DELETE_VM_APPLIANCE_0 { get { @@ -7782,9 +7764,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to delete vApp '{0}'? + /// Looks up a localized string similar to Do you want to delete vApp '{0}'? /// - ///{1} VM is currently included in this vApp. ähnelt. + ///{1} VM is currently included in this vApp.. /// public static string CONFIRM_DELETE_VM_APPLIANCE_1 { get { @@ -7793,9 +7775,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to delete vApp '{0}'? + /// Looks up a localized string similar to Are you sure you want to delete vApp '{0}'? /// - ///This will also delete its VMs. ähnelt. + ///This will also delete its VMs.. /// public static string CONFIRM_DELETE_VM_APPLIANCE_AND_VMS { get { @@ -7804,9 +7786,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to delete the selected vApps? + /// Looks up a localized string similar to Do you want to delete the selected vApps? /// - ///{0} VMs are currently included in these vApps. ähnelt. + ///{0} VMs are currently included in these vApps.. /// public static string CONFIRM_DELETE_VM_APPLIANCES { get { @@ -7815,7 +7797,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to delete the selected vApps? ähnelt. + /// Looks up a localized string similar to Do you want to delete the selected vApps?. /// public static string CONFIRM_DELETE_VM_APPLIANCES_0 { get { @@ -7824,9 +7806,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to delete the selected vApps? + /// Looks up a localized string similar to Do you want to delete the selected vApps? /// - ///{0} VM is currently included in one of these vApps. ähnelt. + ///{0} VM is currently included in one of these vApps.. /// public static string CONFIRM_DELETE_VM_APPLIANCES_1 { get { @@ -7835,9 +7817,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to delete the following VMs from '{1}'? + /// Looks up a localized string similar to Are you sure you want to delete the following VMs from '{1}'? /// - ///{0} ähnelt. + ///{0}. /// public static string CONFIRM_DELETE_VMS { get { @@ -7846,12 +7828,12 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to destroy '{0}'? + /// Looks up a localized string similar to Are you sure you want to destroy '{0}'? /// ///You should only need to destroy a server if it has physically failed. ///Destroying this server will permanently remove it from the pool along with its local SRs, DVD drives and removable storage. The server will need to be reinstalled before it can be used again. /// - ///This action is final and unrecoverable. ähnelt. + ///This action is final and unrecoverable.. /// public static string CONFIRM_DESTROY_HOST { get { @@ -7860,7 +7842,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destroy Server ähnelt. + /// Looks up a localized string similar to Destroy Server. /// public static string CONFIRM_DESTROY_HOST_TITLE { get { @@ -7869,7 +7851,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Yes, Destroy ähnelt. + /// Looks up a localized string similar to &Yes, Destroy. /// public static string CONFIRM_DESTROY_HOST_YES_BUTTON_LABEL { get { @@ -7878,7 +7860,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will disable Changed Block Tracking on the disks of the selected VM. If you are using any third-party solutions to back up the VM, they might be affected. Note that Changed Block Tracking cannot be enabled again from [XenCenter]. Do you want to continue? ähnelt. + /// Looks up a localized string similar to This will disable Changed Block Tracking on the disks of the selected VM. If you are using any third-party solutions to back up the VM, they might be affected. Note that Changed Block Tracking cannot be enabled again from [XenCenter]. Do you want to continue?. /// public static string CONFIRM_DISABLE_CBT_VM { get { @@ -7887,7 +7869,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable Changed Block Tracking on VM "{0}" ähnelt. + /// Looks up a localized string similar to Disable Changed Block Tracking on VM "{0}". /// public static string CONFIRM_DISABLE_CBT_VM_TITLE { get { @@ -7896,7 +7878,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will disable Changed Block Tracking on the disks of the selected VMs. If you are using any third-party solutions to back up the VMs, they might be affected. Note that Changed Block Tracking cannot be enabled again from [XenCenter]. Do you want to continue? ähnelt. + /// Looks up a localized string similar to This will disable Changed Block Tracking on the disks of the selected VMs. If you are using any third-party solutions to back up the VMs, they might be affected. Note that Changed Block Tracking cannot be enabled again from [XenCenter]. Do you want to continue?. /// public static string CONFIRM_DISABLE_CBT_VMS { get { @@ -7905,7 +7887,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable Changed Block Tracking on selected VMs ähnelt. + /// Looks up a localized string similar to Disable Changed Block Tracking on selected VMs. /// public static string CONFIRM_DISABLE_CBT_VMS_TITLE { get { @@ -7914,7 +7896,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to disable Health Check on the selected pool? ähnelt. + /// Looks up a localized string similar to Are you sure you want to disable Health Check on the selected pool?. /// public static string CONFIRM_DISABLE_HEALTH_CHECK_POOL { get { @@ -7923,7 +7905,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to disable Health Check on the selected server? ähnelt. + /// Looks up a localized string similar to Are you sure you want to disable Health Check on the selected server?. /// public static string CONFIRM_DISABLE_HEALTH_CHECK_SERVER { get { @@ -7932,12 +7914,12 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The export file may be larger than your filesystem limit. + /// Looks up a localized string similar to The export file may be larger than your filesystem limit. /// ///Estimated file size: {0} ///Filesystem limit: {1} /// - ///Are you sure you want to export VM {2}? ähnelt. + ///Are you sure you want to export VM {2}?. /// public static string CONFIRM_EXPORT_FAT { get { @@ -7946,12 +7928,12 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There might not be enough free disk space for the export operation to complete. + /// Looks up a localized string similar to There might not be enough free disk space for the export operation to complete. /// ///Estimated space required: {0} ///Free space: {1} /// - ///Are you sure you want to export VM {2}? ähnelt. + ///Are you sure you want to export VM {2}?. /// public static string CONFIRM_EXPORT_NOT_ENOUGH_MEMORY { get { @@ -7960,7 +7942,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to forcibly reboot the selected VM? This operation will cancel all running tasks for the VM and can result in data loss. ähnelt. + /// Looks up a localized string similar to Are you sure you want to forcibly reboot the selected VM? This operation will cancel all running tasks for the VM and can result in data loss.. /// public static string CONFIRM_FORCEREBOOT_VM { get { @@ -7969,7 +7951,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to forcibly reboot the selected VM? This operation can result in data loss. ähnelt. + /// Looks up a localized string similar to Are you sure you want to forcibly reboot the selected VM? This operation can result in data loss.. /// public static string CONFIRM_FORCEREBOOT_VM_NO_CANCEL_TASKS { get { @@ -7978,7 +7960,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Force VM Reboot ähnelt. + /// Looks up a localized string similar to Force VM Reboot. /// public static string CONFIRM_FORCEREBOOT_VM_TITLE { get { @@ -7987,7 +7969,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to forcibly reboot the selected VMs? This operation will cancel all running tasks for the VMs and can result in data loss. ähnelt. + /// Looks up a localized string similar to Are you sure you want to forcibly reboot the selected VMs? This operation will cancel all running tasks for the VMs and can result in data loss.. /// public static string CONFIRM_FORCEREBOOT_VMS { get { @@ -7996,7 +7978,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to forcibly reboot the selected VMs? This operation can result in data loss. ähnelt. + /// Looks up a localized string similar to Are you sure you want to forcibly reboot the selected VMs? This operation can result in data loss.. /// public static string CONFIRM_FORCEREBOOT_VMS_NO_CANCEL_TASKS { get { @@ -8005,7 +7987,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Force Reboot Multiple VMs ähnelt. + /// Looks up a localized string similar to Force Reboot Multiple VMs. /// public static string CONFIRM_FORCEREBOOT_VMS_TITLE { get { @@ -8014,7 +7996,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to forcibly shut down the selected VM? This operation will cancel all running tasks for the VM and can result in data loss. ähnelt. + /// Looks up a localized string similar to Are you sure you want to forcibly shut down the selected VM? This operation will cancel all running tasks for the VM and can result in data loss.. /// public static string CONFIRM_FORCESHUTDOWN_VM { get { @@ -8023,7 +8005,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to forcibly shut down the selected VM? This operation can result in data loss. ähnelt. + /// Looks up a localized string similar to Are you sure you want to forcibly shut down the selected VM? This operation can result in data loss.. /// public static string CONFIRM_FORCESHUTDOWN_VM_NO_CANCEL_TASKS { get { @@ -8032,7 +8014,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Force Shut Down VM ähnelt. + /// Looks up a localized string similar to Force Shut Down VM. /// public static string CONFIRM_FORCESHUTDOWN_VM_TITLE { get { @@ -8041,7 +8023,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to forcibly shut down the selected VMs? This operation will cancel all running tasks for each of the selected VMs and can result in data loss. ähnelt. + /// Looks up a localized string similar to Are you sure you want to forcibly shut down the selected VMs? This operation will cancel all running tasks for each of the selected VMs and can result in data loss.. /// public static string CONFIRM_FORCESHUTDOWN_VMS { get { @@ -8050,7 +8032,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to forcibly shut down the selected VMs? This operation can result in data loss. ähnelt. + /// Looks up a localized string similar to Are you sure you want to forcibly shut down the selected VMs? This operation can result in data loss.. /// public static string CONFIRM_FORCESHUTDOWN_VMS_NO_CANCEL_TASKS { get { @@ -8059,7 +8041,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Force Shut Down Multiple VMs ähnelt. + /// Looks up a localized string similar to Force Shut Down Multiple VMs. /// public static string CONFIRM_FORCESHUTDOWN_VMS_TITLE { get { @@ -8068,43 +8050,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Confirm Pause VM ähnelt. - /// - public static string CONFIRM_PAUSE_VM { - get { - return ResourceManager.GetString("CONFIRM_PAUSE_VM", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Confirm Pause VM ähnelt. - /// - public static string CONFIRM_PAUSE_VM_TITLE { - get { - return ResourceManager.GetString("CONFIRM_PAUSE_VM_TITLE", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Confirm pausing VMs ähnelt. - /// - public static string CONFIRM_PAUSE_VMS { - get { - return ResourceManager.GetString("CONFIRM_PAUSE_VMS", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Confirm Pause VMs ähnelt. - /// - public static string CONFIRM_PAUSE_VMS_TITLE { - get { - return ResourceManager.GetString("CONFIRM_PAUSE_VMS_TITLE", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooting a server will also shut down all the VMs running on it. '{0}' is running a storage virtual appliance and rebooting it might impact the availability of your storage. Are you sure you want to continue? ähnelt. + /// Looks up a localized string similar to Rebooting a server will also shut down all the VMs running on it. '{0}' is running a storage virtual appliance and rebooting it might impact the availability of your storage. Are you sure you want to continue?. /// public static string CONFIRM_REBOOT_HCI_WARN_SERVER { get { @@ -8113,11 +8059,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooting a server will also shut down all the VMs running on it. The following servers are running a storage virtual appliance and rebooting them might impact the availablity of your storage: + /// Looks up a localized string similar to Rebooting a server will also shut down all the VMs running on it. The following servers are running a storage virtual appliance and rebooting them might impact the availablity of your storage: /// ///{0} /// - ///Are you sure you want to continue? ähnelt. + ///Are you sure you want to continue?. /// public static string CONFIRM_REBOOT_HCI_WARN_SERVERS { get { @@ -8126,9 +8072,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to reboot '{0}'? + /// Looks up a localized string similar to Are you sure you want to reboot '{0}'? /// - ///This will also shut down all the VMs currently running on it. ähnelt. + ///This will also shut down all the VMs currently running on it.. /// public static string CONFIRM_REBOOT_SERVER { get { @@ -8137,7 +8083,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to reboot '{0}'? ähnelt. + /// Looks up a localized string similar to Are you sure you want to reboot '{0}'?. /// public static string CONFIRM_REBOOT_SERVER_NO_VMS { get { @@ -8146,7 +8092,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reboot Server ähnelt. + /// Looks up a localized string similar to Reboot Server. /// public static string CONFIRM_REBOOT_SERVER_TITLE { get { @@ -8155,7 +8101,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Yes, Reboot ähnelt. + /// Looks up a localized string similar to &Yes, Reboot. /// public static string CONFIRM_REBOOT_SERVER_YES_BUTTON_LABEL { get { @@ -8164,9 +8110,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to reboot the selected servers? + /// Looks up a localized string similar to Are you sure you want to reboot the selected servers? /// - ///This will also shut down all the VMs currently running on them. ähnelt. + ///This will also shut down all the VMs currently running on them.. /// public static string CONFIRM_REBOOT_SERVERS { get { @@ -8175,7 +8121,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to reboot the selected servers? ähnelt. + /// Looks up a localized string similar to Are you sure you want to reboot the selected servers?. /// public static string CONFIRM_REBOOT_SERVERS_NO_VMS { get { @@ -8184,7 +8130,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reboot Multiple Servers ähnelt. + /// Looks up a localized string similar to Reboot Multiple Servers. /// public static string CONFIRM_REBOOT_SERVERS_TITLE { get { @@ -8193,7 +8139,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to reboot the selected VM? ähnelt. + /// Looks up a localized string similar to Are you sure you want to reboot the selected VM?. /// public static string CONFIRM_REBOOT_VM { get { @@ -8202,7 +8148,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reboot VM ähnelt. + /// Looks up a localized string similar to Reboot VM. /// public static string CONFIRM_REBOOT_VM_TITLE { get { @@ -8211,7 +8157,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to reboot the selected VMs? ähnelt. + /// Looks up a localized string similar to Are you sure you want to reboot the selected VMs?. /// public static string CONFIRM_REBOOT_VMS { get { @@ -8220,7 +8166,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reboot Multiple VMs ähnelt. + /// Looks up a localized string similar to Reboot Multiple VMs. /// public static string CONFIRM_REBOOT_VMS_TITLE { get { @@ -8229,7 +8175,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to restart the toolstack on the selected servers? Note that [XenCenter] will temporarily lose connection to them. ähnelt. + /// Looks up a localized string similar to Are you sure you want to restart the toolstack on the selected servers? Note that [XenCenter] will temporarily lose connection to them.. /// public static string CONFIRM_RESTART_TOOLSTACK_MANY_SERVERS { get { @@ -8238,7 +8184,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to restart the toolstack on '{0}'? Note that [XenCenter] will temporarily lose connection to the server. ähnelt. + /// Looks up a localized string similar to Are you sure you want to restart the toolstack on '{0}'? Note that [XenCenter] will temporarily lose connection to the server.. /// public static string CONFIRM_RESTART_TOOLSTACK_ONE_SERVER { get { @@ -8247,7 +8193,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restart Toolstack ähnelt. + /// Looks up a localized string similar to Restart Toolstack. /// public static string CONFIRM_RESTART_TOOLSTACK_TITLE { get { @@ -8256,7 +8202,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to shut down the selected vApp? ähnelt. + /// Looks up a localized string similar to Are you sure you want to shut down the selected vApp?. /// public static string CONFIRM_SHUT_DOWN_APPLIANCE { get { @@ -8265,9 +8211,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to shut down the following vApps? + /// Looks up a localized string similar to Are you sure you want to shut down the following vApps? /// - ///{0} ähnelt. + ///{0}. /// public static string CONFIRM_SHUT_DOWN_APPLIANCES { get { @@ -8276,7 +8222,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shutting down a server will also shut down all the VMs running on it. '{0}' is running a storage virtual appliance and shutting it down might impact the availability of your storage. Are you sure you want to continue? ähnelt. + /// Looks up a localized string similar to Shutting down a server will also shut down all the VMs running on it. '{0}' is running a storage virtual appliance and shutting it down might impact the availability of your storage. Are you sure you want to continue?. /// public static string CONFIRM_SHUTDOWN_HCI_WARN_SERVER { get { @@ -8285,11 +8231,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shutting down a server will also shut down all the VMs running on it. The following servers are running a storage virtual appliance and shutting them down might impact the availablity of your storage: + /// Looks up a localized string similar to Shutting down a server will also shut down all the VMs running on it. The following servers are running a storage virtual appliance and shutting them down might impact the availablity of your storage: /// ///{0} /// - ///Are you sure you want to continue? ähnelt. + ///Are you sure you want to continue?. /// public static string CONFIRM_SHUTDOWN_HCI_WARN_SERVERS { get { @@ -8298,9 +8244,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to shut down '{0}'? + /// Looks up a localized string similar to Are you sure you want to shut down '{0}'? /// - ///This will also shut down all the VMs currently running on it. ähnelt. + ///This will also shut down all the VMs currently running on it.. /// public static string CONFIRM_SHUTDOWN_SERVER { get { @@ -8309,7 +8255,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to shut down '{0}'? ähnelt. + /// Looks up a localized string similar to Are you sure you want to shut down '{0}'?. /// public static string CONFIRM_SHUTDOWN_SERVER_NO_VMS { get { @@ -8318,7 +8264,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut Down Server ähnelt. + /// Looks up a localized string similar to Shut Down Server. /// public static string CONFIRM_SHUTDOWN_SERVER_TITLE { get { @@ -8327,7 +8273,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Yes, Shut Down ähnelt. + /// Looks up a localized string similar to &Yes, Shut Down. /// public static string CONFIRM_SHUTDOWN_SERVER_YES_BUTTON_LABEL { get { @@ -8336,9 +8282,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to shut down the selected servers? + /// Looks up a localized string similar to Are you sure you want to shut down the selected servers? /// - ///This will also shut down all the VMs currently running on them. ähnelt. + ///This will also shut down all the VMs currently running on them.. /// public static string CONFIRM_SHUTDOWN_SERVERS { get { @@ -8347,7 +8293,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to shut down the selected servers? ähnelt. + /// Looks up a localized string similar to Are you sure you want to shut down the selected servers?. /// public static string CONFIRM_SHUTDOWN_SERVERS_NO_VMS { get { @@ -8356,7 +8302,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut Down Multiple Servers ähnelt. + /// Looks up a localized string similar to Shut Down Multiple Servers. /// public static string CONFIRM_SHUTDOWN_SERVERS_TITLE { get { @@ -8365,7 +8311,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to shut down the selected VM? ähnelt. + /// Looks up a localized string similar to Are you sure you want to shut down the selected VM?. /// public static string CONFIRM_SHUTDOWN_VM { get { @@ -8374,7 +8320,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut Down VM ähnelt. + /// Looks up a localized string similar to Shut Down VM. /// public static string CONFIRM_SHUTDOWN_VM_TITLE { get { @@ -8383,7 +8329,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to shut down the selected VMs? ähnelt. + /// Looks up a localized string similar to Are you sure you want to shut down the selected VMs?. /// public static string CONFIRM_SHUTDOWN_VMS { get { @@ -8392,7 +8338,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut Down Multiple VMs ähnelt. + /// Looks up a localized string similar to Shut Down Multiple VMs. /// public static string CONFIRM_SHUTDOWN_VMS_TITLE { get { @@ -8401,7 +8347,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to suspend the selected VM? ähnelt. + /// Looks up a localized string similar to Are you sure you want to suspend the selected VM?. /// public static string CONFIRM_SUSPEND_VM { get { @@ -8410,7 +8356,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Suspend VM ähnelt. + /// Looks up a localized string similar to Suspend VM. /// public static string CONFIRM_SUSPEND_VM_TITLE { get { @@ -8419,7 +8365,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to suspend the selected VMs? ähnelt. + /// Looks up a localized string similar to Are you sure you want to suspend the selected VMs?. /// public static string CONFIRM_SUSPEND_VMS { get { @@ -8428,7 +8374,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Suspend Multiple VMs ähnelt. + /// Looks up a localized string similar to Suspend Multiple VMs. /// public static string CONFIRM_SUSPEND_VMS_TITLE { get { @@ -8437,8 +8383,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The process of reclaiming space may place significant load on the storage controller, temporarily affecting the storage's performance. - ///Would you like to carry out the operation at this time? ähnelt. + /// Looks up a localized string similar to The process of reclaiming space may place significant load on the storage controller, temporarily affecting the storage's performance. + ///Would you like to carry out the operation at this time?. /// public static string CONFIRM_TRIM_SR { get { @@ -8447,7 +8393,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reclaim freed space ähnelt. + /// Looks up a localized string similar to Reclaim freed space. /// public static string CONFIRM_TRIM_SR_TITLE { get { @@ -8456,7 +8402,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Confirmations ähnelt. + /// Looks up a localized string similar to Confirmations. /// public static string CONFIRMATIONS { get { @@ -8465,7 +8411,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Confirm dismissal of notifications ähnelt. + /// Looks up a localized string similar to Confirm dismissal of warnings or notifications. /// public static string CONFIRMATIONS_DETAIL { get { @@ -8474,7 +8420,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not connect to {0}. ähnelt. + /// Looks up a localized string similar to Could not connect to {0}.. /// public static string CONNCET_CONNECTION_FAILURE { get { @@ -8483,7 +8429,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Connect ähnelt. + /// Looks up a localized string similar to &Connect. /// public static string CONNECT { get { @@ -8492,7 +8438,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find {0}. ähnelt. + /// Looks up a localized string similar to Could not find {0}.. /// public static string CONNECT_RESOLUTION_FAILURE { get { @@ -8501,7 +8447,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connect to Server ähnelt. + /// Looks up a localized string similar to Connect to Server. /// public static string CONNECT_TO_SERVER { get { @@ -8510,7 +8456,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter your user name and password to connect to this server. ähnelt. + /// Looks up a localized string similar to Enter your user name and password to connect to this server.. /// public static string CONNECT_TO_SERVER_BLURB { get { @@ -8519,7 +8465,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connected ähnelt. + /// Looks up a localized string similar to Connected. /// public static string CONNECTED { get { @@ -8528,7 +8474,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connecting... ähnelt. + /// Looks up a localized string similar to Connecting.... /// public static string CONNECTING { get { @@ -8537,7 +8483,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connecting to {0} in progress. ähnelt. + /// Looks up a localized string similar to Connecting to {0} in progress.. /// public static string CONNECTING_NOTICE_TEXT { get { @@ -8546,7 +8492,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connecting to {0} ähnelt. + /// Looks up a localized string similar to Connecting to {0}. /// public static string CONNECTING_NOTICE_TITLE { get { @@ -8555,7 +8501,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connection ähnelt. + /// Looks up a localized string similar to Connection. /// public static string CONNECTION { get { @@ -8564,7 +8510,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The server closed the connection immediately. ähnelt. + /// Looks up a localized string similar to The server closed the connection immediately.. /// public static string CONNECTION_CLOSED_BY_SERVER { get { @@ -8573,7 +8519,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connection to {0} closed. ähnelt. + /// Looks up a localized string similar to Connection to {0} closed.. /// public static string CONNECTION_CLOSED_NOTICE_TEXT { get { @@ -8582,7 +8528,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disconnected from {0} ähnelt. + /// Looks up a localized string similar to Disconnected from {0}. /// public static string CONNECTION_CLOSED_NOTICE_TITLE { get { @@ -8591,7 +8537,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Proxy and timeout options ähnelt. + /// Looks up a localized string similar to Proxy and timeout options. /// public static string CONNECTION_DESC { get { @@ -8600,7 +8546,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connection Failed: A connection to {0} already exists ähnelt. + /// Looks up a localized string similar to Connection Failed: A connection to {0} already exists. /// public static string CONNECTION_EXISTS { get { @@ -8609,7 +8555,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connection Failed: You tried to connect to an already connected server ähnelt. + /// Looks up a localized string similar to Connection Failed: You tried to connect to an already connected server. /// public static string CONNECTION_EXISTS_NULL { get { @@ -8618,7 +8564,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to connect to {0} ähnelt. + /// Looks up a localized string similar to Failed to connect to {0}. /// public static string CONNECTION_FAILED_TITLE { get { @@ -8627,7 +8573,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Looking for master for {0} on {1}... ähnelt. + /// Looks up a localized string similar to Looking for master for {0} on {1}.... /// public static string CONNECTION_FINDING_MASTER_DESCRIPTION { get { @@ -8636,7 +8582,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Looking for master for {0} ähnelt. + /// Looks up a localized string similar to Looking for master for {0}. /// public static string CONNECTION_FINDING_MASTER_TITLE { get { @@ -8645,7 +8591,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connection General Properties ähnelt. + /// Looks up a localized string similar to Connection General Properties. /// public static string CONNECTION_GENERAL_TAB_TITLE { get { @@ -8654,7 +8600,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not contact server ähnelt. + /// Looks up a localized string similar to Could not contact server. /// public static string CONNECTION_IO_EXCEPTION { get { @@ -8663,7 +8609,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Lost connection to {0}. Will search for a new pool master in {1} seconds. ähnelt. + /// Looks up a localized string similar to Lost connection to {0}. Will search for a new pool master in {1} seconds.. /// public static string CONNECTION_LOST_NOTICE_MASTER_IN_X_SECONDS { get { @@ -8672,7 +8618,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Lost connection to {0} ähnelt. + /// Looks up a localized string similar to Lost connection to {0}. /// public static string CONNECTION_LOST_NOTICE_TITLE { get { @@ -8681,7 +8627,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Lost connection to {0}. Will reconnect in {1} seconds. ähnelt. + /// Looks up a localized string similar to Lost connection to {0}. Will reconnect in {1} seconds.. /// public static string CONNECTION_LOST_RECONNECT_IN_X_SECONDS { get { @@ -8690,7 +8636,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connection to {0} successful. ähnelt. + /// Looks up a localized string similar to Connection to {0} successful.. /// public static string CONNECTION_OK_NOTICE_TEXT { get { @@ -8699,7 +8645,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connected to {0} ähnelt. + /// Looks up a localized string similar to Connected to {0}. /// public static string CONNECTION_OK_NOTICE_TITLE { get { @@ -8708,7 +8654,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connection to {0}: redirecting to the pool master at {1} ähnelt. + /// Looks up a localized string similar to Connection to {0}: redirecting to the pool master at {1}. /// public static string CONNECTION_REDIRECTING { get { @@ -8717,7 +8663,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The connection was refused. ähnelt. + /// Looks up a localized string similar to The connection was refused.. /// public static string CONNECTION_REFUSED { get { @@ -8726,7 +8672,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Refused connection to {0} ähnelt. + /// Looks up a localized string similar to Refused connection to {0}. /// public static string CONNECTION_REFUSED_TITLE { get { @@ -8735,7 +8681,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connection to Server {0} restricted because a connection already exists to another XE Express Server ({1}) ähnelt. + /// Looks up a localized string similar to Connection to Server {0} restricted because a connection already exists to another XE Express Server ({1}). /// public static string CONNECTION_RESTRICTED_MESSAGE { get { @@ -8744,9 +8690,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connection to server {0} restricted - a connection to a [Citrix XenServer] Express Edition server ({1}) already exists. + /// Looks up a localized string similar to Connection to server {0} restricted - a connection to a [Citrix XenServer] Express Edition server ({1}) already exists. /// - ///You can only connect to a single [Citrix XenServer] Express Edition server at a time. To find out how to upgrade your license, follow the link below. ähnelt. + ///You can only connect to a single [Citrix XenServer] Express Edition server at a time. To find out how to upgrade your license, follow the link below.. /// public static string CONNECTION_RESTRICTED_MESSAGE_LONG { get { @@ -8755,7 +8701,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot connect to {0} because of license restriction ähnelt. + /// Looks up a localized string similar to Cannot connect to {0} due to license restrictions on the server. /// public static string CONNECTION_RESTRICTED_NOTICE_TITLE { get { @@ -8764,7 +8710,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connection to {0}: trying to find pool at {1} ähnelt. + /// Looks up a localized string similar to Connection to {0}: trying to find pool at {1}. /// public static string CONNECTION_RETRYING_SLAVE { get { @@ -8773,7 +8719,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The connection to the server was lost ähnelt. + /// Looks up a localized string similar to The connection to the server was lost. /// public static string CONNECTION_WAS_LOST { get { @@ -8782,7 +8728,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connection to {0}: will try to connect to another pool member in {1} seconds ähnelt. + /// Looks up a localized string similar to Connection to {0}: will try to connect to another pool member in {1} seconds. /// public static string CONNECTION_WILL_RETRY_SLAVE { get { @@ -8791,7 +8737,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Console ähnelt. + /// Looks up a localized string similar to Console. /// public static string CONSOLE { get { @@ -8800,7 +8746,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Keyboard shortcuts and scaling options ähnelt. + /// Looks up a localized string similar to Keyboard shortcuts and scaling options. /// public static string CONSOLE_DESC { get { @@ -8809,7 +8755,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} server console ähnelt. + /// Looks up a localized string similar to {0} server console. /// public static string CONSOLE_HOST { get { @@ -8818,7 +8764,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server is unavailable. ähnelt. + /// Looks up a localized string similar to This server is unavailable.. /// public static string CONSOLE_HOST_DEAD { get { @@ -8827,7 +8773,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} Nutanix CVM console ähnelt. + /// Looks up a localized string similar to {0} Nutanix CVM console. /// public static string CONSOLE_HOST_NUTANIX { get { @@ -8836,7 +8782,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is currently shut down. ähnelt. + /// Looks up a localized string similar to This VM is currently shut down.. /// public static string CONSOLE_POWER_STATE_HALTED { get { @@ -8845,7 +8791,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is currently shut down. Click here to start it. ähnelt. + /// Looks up a localized string similar to This VM is currently shut down. Click here to start it.. /// public static string CONSOLE_POWER_STATE_HALTED_START { get { @@ -8854,7 +8800,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is currently paused. ähnelt. + /// Looks up a localized string similar to This VM is currently paused.. /// public static string CONSOLE_POWER_STATE_PAUSED { get { @@ -8863,7 +8809,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is currently paused. Click here to unpause it. ähnelt. + /// Looks up a localized string similar to This VM is currently paused. Click here to unpause it.. /// public static string CONSOLE_POWER_STATE_PAUSED_UNPAUSE { get { @@ -8872,7 +8818,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is currently suspended. ähnelt. + /// Looks up a localized string similar to This VM is currently suspended.. /// public static string CONSOLE_POWER_STATE_SUSPENDED { get { @@ -8881,7 +8827,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is currently suspended. Click here to resume it. ähnelt. + /// Looks up a localized string similar to This VM is currently suspended. Click here to resume it.. /// public static string CONSOLE_POWER_STATE_SUSPENDED_RESUME { get { @@ -8890,7 +8836,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die contained in ähnelt. + /// Looks up a localized string similar to contained in. /// public static string CONTAINED_IN { get { @@ -8899,7 +8845,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Container ähnelt. + /// Looks up a localized string similar to Container. /// public static string CONTAINER { get { @@ -8908,7 +8854,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Command ähnelt. + /// Looks up a localized string similar to Command. /// public static string CONTAINER_COMMAND { get { @@ -8917,7 +8863,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Created ähnelt. + /// Looks up a localized string similar to Created. /// public static string CONTAINER_CREATED { get { @@ -8926,7 +8872,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Container General Properties ähnelt. + /// Looks up a localized string similar to Container General Properties. /// public static string CONTAINER_GENERAL_TAB_TITLE { get { @@ -8935,7 +8881,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Image ähnelt. + /// Looks up a localized string similar to Image. /// public static string CONTAINER_IMAGE { get { @@ -8944,7 +8890,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} on '{1}' {2} ähnelt. + /// Looks up a localized string similar to {0} on '{1}' {2}. /// public static string CONTAINER_ON_VM_TITLE { get { @@ -8953,7 +8899,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ports ähnelt. + /// Looks up a localized string similar to Ports. /// public static string CONTAINER_PORTS { get { @@ -8962,7 +8908,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Address: {0} ähnelt. + /// Looks up a localized string similar to Address: {0}. /// public static string CONTAINER_PORTS_ADDRESS { get { @@ -8971,7 +8917,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Private port: {0} ähnelt. + /// Looks up a localized string similar to Private port: {0}. /// public static string CONTAINER_PORTS_PRIVATE_PORT { get { @@ -8980,7 +8926,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Protocol: {0} ähnelt. + /// Looks up a localized string similar to Protocol: {0}. /// public static string CONTAINER_PORTS_PROTOCOL { get { @@ -8989,7 +8935,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Public port: {0} ähnelt. + /// Looks up a localized string similar to Public port: {0}. /// public static string CONTAINER_PORTS_PUBLIC_PORT { get { @@ -8998,7 +8944,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die contains ähnelt. + /// Looks up a localized string similar to contains. /// public static string CONTAINS { get { @@ -9007,7 +8953,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Continue with export ähnelt. + /// Looks up a localized string similar to &Continue with export. /// public static string CONTINUE_WITH_EXPORT { get { @@ -9016,7 +8962,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Control domain on host {0} ähnelt. + /// Looks up a localized string similar to Control domain on host {0}. /// public static string CONTROL_DOM_ON_HOST { get { @@ -9025,7 +8971,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Control Domain Memory Settings - {0} ähnelt. + /// Looks up a localized string similar to Control Domain Memory Settings - {0}. /// public static string CONTROL_DOMAIN_MEMORY_DIALOG_TITLE { get { @@ -9034,7 +8980,758 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Convert ähnelt. + /// Looks up a localized string similar to Are you sure you want to cancel this conversion?. + /// + public static string CONVERSION_CANCEL_CONFIRM { + get { + return ResourceManager.GetString("CONVERSION_CANCEL_CONFIRM", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot cancel the conversion. Please see logs for details.. + /// + public static string CONVERSION_CANCEL_FAILURE { + get { + return ResourceManager.GetString("CONVERSION_CANCEL_FAILURE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot find a Conversion Manager virtual appliance.. + /// + public static string CONVERSION_CANNOT_FIND_VPX { + get { + return ResourceManager.GetString("CONVERSION_CANNOT_FIND_VPX", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot obtain an IP address for the Conversion Manager virtual appliance.. + /// + public static string CONVERSION_CANNOT_OBTAIN_VPX_IP { + get { + return ResourceManager.GetString("CONVERSION_CANNOT_OBTAIN_VPX_IP", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to This action will clear all the completed conversions from the Conversion Manager virtual appliance history. + /// + ///This action cannot be undone. Are you sure you want to continue?. + /// + public static string CONVERSION_CLEAR_HISTORY_CONFIRM { + get { + return ResourceManager.GetString("CONVERSION_CLEAR_HISTORY_CONFIRM", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot clear the conversion history. Please see logs for details.. + /// + public static string CONVERSION_CLEAR_HISTORY_FAILURE { + get { + return ResourceManager.GetString("CONVERSION_CLEAR_HISTORY_FAILURE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Connecting to the VMware server.... + /// + public static string CONVERSION_CONNECTING_VMWARE { + get { + return ResourceManager.GetString("CONVERSION_CONNECTING_VMWARE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot connect to the VMware server. Please see logs for details.. + /// + public static string CONVERSION_CONNECTING_VMWARE_FAILURE { + get { + return ResourceManager.GetString("CONVERSION_CONNECTING_VMWARE_FAILURE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Connected successfully to the VMware server. + /// + public static string CONVERSION_CONNECTING_VMWARE_SUCCESS { + get { + return ResourceManager.GetString("CONVERSION_CONNECTING_VMWARE_SUCCESS", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Lost connection to the Conversion Manager virtual appliance. Will reconnect in {0} sec.. + /// + public static string CONVERSION_CONNECTING_VPX_INTERRUPTION { + get { + return ResourceManager.GetString("CONVERSION_CONNECTING_VPX_INTERRUPTION", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Connected to the Conversion Manager virtual appliance.. + /// + public static string CONVERSION_CONNECTING_VPX_SUCCESS { + get { + return ResourceManager.GetString("CONVERSION_CONNECTING_VPX_SUCCESS", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot start a new conversion. Please see logs for details.. + /// + public static string CONVERSION_CREATE_FAILURE { + get { + return ResourceManager.GetString("CONVERSION_CREATE_FAILURE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to VMware Server. + /// + public static string CONVERSION_CREDENTIALS_PAGE_TEXT { + get { + return ResourceManager.GetString("CONVERSION_CREDENTIALS_PAGE_TEXT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Connect to VMware server. + /// + public static string CONVERSION_CREDENTIALS_PAGE_TITLE { + get { + return ResourceManager.GetString("CONVERSION_CREDENTIALS_PAGE_TITLE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Conversion ID. + /// + public static string CONVERSION_DETAIL_CONVERSION_ID { + get { + return ResourceManager.GetString("CONVERSION_DETAIL_CONVERSION_ID", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Description. + /// + public static string CONVERSION_DETAIL_DESCRIPTION { + get { + return ResourceManager.GetString("CONVERSION_DETAIL_DESCRIPTION", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Disk write. + /// + public static string CONVERSION_DETAIL_DISK_WRITE { + get { + return ResourceManager.GetString("CONVERSION_DETAIL_DISK_WRITE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Duration. + /// + public static string CONVERSION_DETAIL_DURATION { + get { + return ResourceManager.GetString("CONVERSION_DETAIL_DURATION", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Finish time. + /// + public static string CONVERSION_DETAIL_FINISH_TIME { + get { + return ResourceManager.GetString("CONVERSION_DETAIL_FINISH_TIME", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot refresh the conversion. Please see logs for details.. + /// + public static string CONVERSION_DETAIL_GET_FAILURE { + get { + return ResourceManager.GetString("CONVERSION_DETAIL_GET_FAILURE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Network read. + /// + public static string CONVERSION_DETAIL_NETWORK_READ { + get { + return ResourceManager.GetString("CONVERSION_DETAIL_NETWORK_READ", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} (compressed). + /// + public static string CONVERSION_DETAIL_NETWORK_READ_COMPRESSED { + get { + return ResourceManager.GetString("CONVERSION_DETAIL_NETWORK_READ_COMPRESSED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Start time. + /// + public static string CONVERSION_DETAIL_START_TIME { + get { + return ResourceManager.GetString("CONVERSION_DETAIL_START_TIME", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Status. + /// + public static string CONVERSION_DETAIL_STATUS { + get { + return ResourceManager.GetString("CONVERSION_DETAIL_STATUS", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Target SR. + /// + public static string CONVERSION_DETAIL_TARGET_SR { + get { + return ResourceManager.GetString("CONVERSION_DETAIL_TARGET_SR", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Export conversions to {0}. + /// + public static string CONVERSION_EXPORT { + get { + return ResourceManager.GetString("CONVERSION_EXPORT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to You have applied filters to the list of conversions. Do you want to export all conversions, or only the conversions you have chosen to view?. + /// + public static string CONVERSION_EXPORT_ALL_OR_FILTERED { + get { + return ResourceManager.GetString("CONVERSION_EXPORT_ALL_OR_FILTERED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exported conversions to {0}. + /// + public static string CONVERSION_EXPORTED { + get { + return ResourceManager.GetString("CONVERSION_EXPORTED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exporting conversions to {0}.... + /// + public static string CONVERSION_EXPORTING { + get { + return ResourceManager.GetString("CONVERSION_EXPORTING", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Initializing the Conversion Manager virtual appliance.... + /// + public static string CONVERSION_INITIALIZING_VPX { + get { + return ResourceManager.GetString("CONVERSION_INITIALIZING_VPX", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot initialize the Conversion Manager virtual appliance. Please see logs for details.. + /// + public static string CONVERSION_INITIALIZING_VPX_FAILURE { + get { + return ResourceManager.GetString("CONVERSION_INITIALIZING_VPX_FAILURE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Save conversion log to {0}. + /// + public static string CONVERSION_LOG_SAVE { + get { + return ResourceManager.GetString("CONVERSION_LOG_SAVE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Save Conversion Log. + /// + public static string CONVERSION_LOG_SAVE_TITLE { + get { + return ResourceManager.GetString("CONVERSION_LOG_SAVE_TITLE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Saved conversion log to {0}. + /// + public static string CONVERSION_LOG_SAVED { + get { + return ResourceManager.GetString("CONVERSION_LOG_SAVED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Saving conversion log to {0}. + /// + public static string CONVERSION_LOG_SAVING { + get { + return ResourceManager.GetString("CONVERSION_LOG_SAVING", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Manage Conversions - {0}. + /// + public static string CONVERSION_MANAGER_TITLE { + get { + return ResourceManager.GetString("CONVERSION_MANAGER_TITLE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Map the virtual ethernet adapters for the VMware VM(s) you are converting to networks in the destination pool or standalone server.. + /// + public static string CONVERSION_NETWORK_PAGE_BLURB { + get { + return ResourceManager.GetString("CONVERSION_NETWORK_PAGE_BLURB", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to VMware Network. + /// + public static string CONVERSION_NETWORK_PAGE_COLUMN_HEADER { + get { + return ResourceManager.GetString("CONVERSION_NETWORK_PAGE_COLUMN_HEADER", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Retrieving source network data.... + /// + public static string CONVERSION_NETWORK_PAGE_QUERYING_NETWORKS { + get { + return ResourceManager.GetString("CONVERSION_NETWORK_PAGE_QUERYING_NETWORKS", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to retrieve source network data. + /// + public static string CONVERSION_NETWORK_PAGE_QUERYING_NETWORKS_FAILURE { + get { + return ResourceManager.GetString("CONVERSION_NETWORK_PAGE_QUERYING_NETWORKS_FAILURE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Networking. + /// + public static string CONVERSION_NETWORK_PAGE_TEXT { + get { + return ResourceManager.GetString("CONVERSION_NETWORK_PAGE_TEXT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Optionally, select [XenServer] networks to connect the VMs. + /// + public static string CONVERSION_NETWORK_PAGE_TITLE { + get { + return ResourceManager.GetString("CONVERSION_NETWORK_PAGE_TITLE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to A {0} user does not have sufficient permissions to run the Conversion Manager. Please login using an account with one of the following roles: + /// + ///{1}. + /// + public static string CONVERSION_RBAC_RESTRICTION { + get { + return ResourceManager.GetString("CONVERSION_RBAC_RESTRICTION", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot retry the conversion. Please see logs for details.. + /// + public static string CONVERSION_RETRY_FAILURE { + get { + return ResourceManager.GetString("CONVERSION_RETRY_FAILURE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Select Conversion Manager Virtual Appliance - {0}. + /// + public static string CONVERSION_SELECT_VPX_TITLE { + get { + return ResourceManager.GetString("CONVERSION_SELECT_VPX_TITLE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Canceled. + /// + public static string CONVERSION_STATUS_CANCELLED { + get { + return ResourceManager.GetString("CONVERSION_STATUS_CANCELLED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Created. + /// + public static string CONVERSION_STATUS_CREATED { + get { + return ResourceManager.GetString("CONVERSION_STATUS_CREATED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed. + /// + public static string CONVERSION_STATUS_FAILED { + get { + return ResourceManager.GetString("CONVERSION_STATUS_FAILED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Incomplete. + /// + public static string CONVERSION_STATUS_INCOMPLETE { + get { + return ResourceManager.GetString("CONVERSION_STATUS_INCOMPLETE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Queued. + /// + public static string CONVERSION_STATUS_QUEUED { + get { + return ResourceManager.GetString("CONVERSION_STATUS_QUEUED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to In progress. + /// + public static string CONVERSION_STATUS_RUNNING { + get { + return ResourceManager.GetString("CONVERSION_STATUS_RUNNING", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Complete. + /// + public static string CONVERSION_STATUS_SUCCESSFUL { + get { + return ResourceManager.GetString("CONVERSION_STATUS_SUCCESSFUL", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Free space {0}. + /// + public static string CONVERSION_STORAGE_PAGE_FREE_SPACE { + get { + return ResourceManager.GetString("CONVERSION_STORAGE_PAGE_FREE_SPACE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Retrieving available SRs.... + /// + public static string CONVERSION_STORAGE_PAGE_QUERYING_SRS { + get { + return ResourceManager.GetString("CONVERSION_STORAGE_PAGE_QUERYING_SRS", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to There are no SR locations that can accommodate the disks for the converted VMs. + /// + public static string CONVERSION_STORAGE_PAGE_QUERYING_SRS_EMPTY { + get { + return ResourceManager.GetString("CONVERSION_STORAGE_PAGE_QUERYING_SRS_EMPTY", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to retrieve available SRs. + /// + public static string CONVERSION_STORAGE_PAGE_QUERYING_SRS_FAILURE { + get { + return ResourceManager.GetString("CONVERSION_STORAGE_PAGE_QUERYING_SRS_FAILURE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Required space {0}. + /// + public static string CONVERSION_STORAGE_PAGE_REQUIRED_SPACE { + get { + return ResourceManager.GetString("CONVERSION_STORAGE_PAGE_REQUIRED_SPACE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The SR is overcommitted. + /// + public static string CONVERSION_STORAGE_PAGE_SR_OVERCOMMIT { + get { + return ResourceManager.GetString("CONVERSION_STORAGE_PAGE_SR_OVERCOMMIT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to There is not enough available space on this SR. + /// + public static string CONVERSION_STORAGE_PAGE_SR_TOO_SMALL { + get { + return ResourceManager.GetString("CONVERSION_STORAGE_PAGE_SR_TOO_SMALL", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Storage. + /// + public static string CONVERSION_STORAGE_PAGE_TEXT { + get { + return ResourceManager.GetString("CONVERSION_STORAGE_PAGE_TEXT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Select target storage. + /// + public static string CONVERSION_STORAGE_PAGE_TITLE { + get { + return ResourceManager.GetString("CONVERSION_STORAGE_PAGE_TITLE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Used space {0}. + /// + public static string CONVERSION_STORAGE_PAGE_USED_SPACE { + get { + return ResourceManager.GetString("CONVERSION_STORAGE_PAGE_USED_SPACE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Preserve MAC addresses:. + /// + public static string CONVERSION_SUMMARY_DATA_MAC { + get { + return ResourceManager.GetString("CONVERSION_SUMMARY_DATA_MAC", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Network:. + /// + public static string CONVERSION_SUMMARY_DATA_NETWORK { + get { + return ResourceManager.GetString("CONVERSION_SUMMARY_DATA_NETWORK", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Storage:. + /// + public static string CONVERSION_SUMMARY_DATA_SR { + get { + return ResourceManager.GetString("CONVERSION_SUMMARY_DATA_SR", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to VM(s) to convert:. + /// + public static string CONVERSION_SUMMARY_DATA_VMS { + get { + return ResourceManager.GetString("CONVERSION_SUMMARY_DATA_VMS", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to VMware server:. + /// + public static string CONVERSION_SUMMARY_DATA_VMWARE_SERVER { + get { + return ResourceManager.GetString("CONVERSION_SUMMARY_DATA_VMWARE_SERVER", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Finish. + /// + public static string CONVERSION_SUMMARY_PAGE_TEXT { + get { + return ResourceManager.GetString("CONVERSION_SUMMARY_PAGE_TEXT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Review the conversion settings. + /// + public static string CONVERSION_SUMMARY_PAGE_TITLE { + get { + return ResourceManager.GetString("CONVERSION_SUMMARY_PAGE_TITLE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} (Template). + /// + public static string CONVERSION_TEMPLATE { + get { + return ResourceManager.GetString("CONVERSION_TEMPLATE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to &Try again. + /// + public static string CONVERSION_TRY_AGAIN { + get { + return ResourceManager.GetString("CONVERSION_TRY_AGAIN", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Checking compatibility with the Conversion Manager virtual appliance.... + /// + public static string CONVERSION_VERSION_CHECK { + get { + return ResourceManager.GetString("CONVERSION_VERSION_CHECK", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot retrieve the Conversion Manager virtual appliance version. Please see logs for details.. + /// + public static string CONVERSION_VERSION_CHECK_FAILURE { + get { + return ResourceManager.GetString("CONVERSION_VERSION_CHECK_FAILURE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to [XenCenter] is incompatible with this version of the Conversion Manager virtual appliance.. + /// + public static string CONVERSION_VERSION_INCOMPATIBILITY { + get { + return ResourceManager.GetString("CONVERSION_VERSION_INCOMPATIBILITY", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The version of the Conversion Manager virtual appliance you are using is earlier than [BRANDING_VERSION_7_0]. You can use the legacy Conversion Manager console to set up and control conversions. However, it is strongly recommended that you import and configure the Conversion Manager virtual appliance matching your [XenServer] version.. + /// + public static string CONVERSION_VERSION_INCOMPATIBILITY_INFO { + get { + return ResourceManager.GetString("CONVERSION_VERSION_INCOMPATIBILITY_INFO", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Virtual Machines. + /// + public static string CONVERSION_VM_PAGE_TEXT { + get { + return ResourceManager.GetString("CONVERSION_VM_PAGE_TEXT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Select the VMs to convert. + /// + public static string CONVERSION_VM_PAGE_TITLE { + get { + return ResourceManager.GetString("CONVERSION_VM_PAGE_TITLE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Obtaining an IP address for the Conversion Manager virtual appliance.... + /// + public static string CONVERSION_VPX_OBTAIN_IP { + get { + return ResourceManager.GetString("CONVERSION_VPX_OBTAIN_IP", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Resuming the Conversion Manager virtual appliance.... + /// + public static string CONVERSION_VPX_RESUME { + get { + return ResourceManager.GetString("CONVERSION_VPX_RESUME", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Starting the Conversion Manager virtual appliance.... + /// + public static string CONVERSION_VPX_START { + get { + return ResourceManager.GetString("CONVERSION_VPX_START", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot deduce the power state of the Conversion Manager virtual appliance.. + /// + public static string CONVERSION_VPX_UNKNOWN_POWER_STATE { + get { + return ResourceManager.GetString("CONVERSION_VPX_UNKNOWN_POWER_STATE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Un-pausing the Conversion Manager virtual appliance.... + /// + public static string CONVERSION_VPX_UNPAUSE { + get { + return ResourceManager.GetString("CONVERSION_VPX_UNPAUSE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to New Conversion. + /// + public static string CONVERSION_WIZARD_TEXT { + get { + return ResourceManager.GetString("CONVERSION_WIZARD_TEXT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to &Convert. /// public static string CONVERT { get { @@ -9043,7 +9740,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to convert VM '{0}' to a template? This cannot be undone. ähnelt. + /// Looks up a localized string similar to Are you sure you want to convert VM '{0}' to a template? This cannot be undone.. /// public static string CONVERT_TEMPLATE_DIALOG_TEXT { get { @@ -9052,7 +9749,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Convert VM to Template ähnelt. + /// Looks up a localized string similar to Convert VM to Template. /// public static string CONVERT_TO_TEMPLATE { get { @@ -9061,7 +9758,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copy ähnelt. + /// Looks up a localized string similar to Copy. /// public static string COPY { get { @@ -9070,7 +9767,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Copy ähnelt. + /// Looks up a localized string similar to &Copy. /// public static string COPY_MENU_ITEM { get { @@ -9079,7 +9776,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copy Template ähnelt. + /// Looks up a localized string similar to Copy Template. /// public static string COPY_TEMPLATE { get { @@ -9088,7 +9785,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Clone the existing template, using a storage-level fast disk clone operation ähnelt. + /// Looks up a localized string similar to Clone the existing template, using a storage-level fast disk clone operation. /// public static string COPY_TEMPLATE_FAST_CLONE_DESCRIPTION { get { @@ -9097,7 +9794,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Provide a name and a description (optional) for the new template and then select a copy mode. ähnelt. + /// Looks up a localized string similar to Provide a name and a description (optional) for the new template and then select a copy mode.. /// public static string COPY_TEMPLATE_INTRA_POOL_RUBRIC { get { @@ -9106,7 +9803,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete original template after copy ähnelt. + /// Looks up a localized string similar to Delete original template after copy. /// public static string COPY_TEMPLATE_REMOVE { get { @@ -9115,7 +9812,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Create a full copy of the existing template on this storage repository: ähnelt. + /// Looks up a localized string similar to Create a full copy of the existing template on this storage repository:. /// public static string COPY_TEMPLATE_SELECT_SR { get { @@ -9124,7 +9821,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copy Template ähnelt. + /// Looks up a localized string similar to Copy Template. /// public static string COPY_TEMPLATE_WIZARD_TITLE { get { @@ -9133,7 +9830,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copy Template to {0} ähnelt. + /// Looks up a localized string similar to Copy Template to {0}. /// public static string COPY_TEMPLATE_WIZARD_TITLE_AND_LOCATION { get { @@ -9142,7 +9839,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copying {0} canceled. ähnelt. + /// Looks up a localized string similar to Copying {0} canceled.. /// public static string COPY_TO_SHARED_CANCELLED { get { @@ -9151,7 +9848,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copy Virtual Machine ähnelt. + /// Looks up a localized string similar to Copy Virtual Machine. /// public static string COPY_VM { get { @@ -9160,7 +9857,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Clone ähnelt. + /// Looks up a localized string similar to Clone. /// public static string COPY_VM_CLONE_TEMPLATE_SLOW { get { @@ -9169,7 +9866,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Clone the existing VM, using a storage-level fast disk clone operation ähnelt. + /// Looks up a localized string similar to Clone the existing VM, using a storage-level fast disk clone operation. /// public static string COPY_VM_FAST_CLONE_DESCRIPTION { get { @@ -9178,7 +9875,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Provide a name and a description (optional) for the new VM and then select a copy mode. ähnelt. + /// Looks up a localized string similar to Provide a name and a description (optional) for the new VM and then select a copy mode.. /// public static string COPY_VM_INTRA_POOL_RUBRIC { get { @@ -9187,7 +9884,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete original VM after copy ähnelt. + /// Looks up a localized string similar to Delete original VM after copy. /// public static string COPY_VM_REMOVE { get { @@ -9196,7 +9893,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Create a full copy of the existing VM on this storage repository: ähnelt. + /// Looks up a localized string similar to Create a full copy of the existing VM on this storage repository:. /// public static string COPY_VM_SELECT_SR { get { @@ -9205,7 +9902,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Clone the existing template ähnelt. + /// Looks up a localized string similar to Clone the existing template. /// public static string COPY_VM_SLOW_CLONE_DESCRIPTION { get { @@ -9214,7 +9911,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select where would you like to copy your template ähnelt. + /// Looks up a localized string similar to Select where would you like to copy your template. /// public static string COPY_VM_WIZARD_RUBRIC_TEMPLATE { get { @@ -9223,7 +9920,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select where would you like to copy your VM. ähnelt. + /// Looks up a localized string similar to Select where would you like to copy your VM.. /// public static string COPY_VM_WIZARD_RUBRIC_VM { get { @@ -9232,7 +9929,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copy VM ähnelt. + /// Looks up a localized string similar to Copy VM. /// public static string COPY_VM_WIZARD_TITLE { get { @@ -9241,7 +9938,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copy VM to {0} ähnelt. + /// Looks up a localized string similar to Copy VM to {0}. /// public static string COPY_VM_WIZARD_TITLE_AND_LOCATION { get { @@ -9250,7 +9947,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copyright © {0} All rights reserved. ähnelt. + /// Looks up a localized string similar to Copyright © {0} All rights reserved.. /// public static string COPYRIGHT { get { @@ -9259,7 +9956,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not open URL '{0}' ähnelt. + /// Looks up a localized string similar to Could not open URL '{0}'. /// public static string COULD_NOT_OPEN_URL { get { @@ -9268,9 +9965,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not write to file '{0}'. + /// Looks up a localized string similar to Could not write to file '{0}'. /// - ///{1} ähnelt. + ///{1}. /// public static string COULD_NOT_WRITE_FILE { get { @@ -9279,7 +9976,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die /sec ähnelt. + /// Looks up a localized string similar to /sec. /// public static string COUNTS_PER_SEC_UNIT { get { @@ -9288,7 +9985,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die incompatible hardware platform version ähnelt. + /// Looks up a localized string similar to incompatible hardware platform version. /// public static string CPM_FAILURE_REASON_HARDWARE_PLATFORM { get { @@ -9297,7 +9994,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die incompatible version numbers ähnelt. + /// Looks up a localized string similar to incompatible version numbers. /// public static string CPM_FAILURE_REASON_VERSION { get { @@ -9306,7 +10003,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do not automatically delete source virtual disks ähnelt. + /// Looks up a localized string similar to Do not automatically delete source virtual disks. /// public static string CPM_SUMMARY_AUTO_DELETE_FALSE { get { @@ -9315,7 +10012,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Automatically delete source virtual disks ähnelt. + /// Looks up a localized string similar to Automatically delete source virtual disks. /// public static string CPM_SUMMARY_AUTO_DELETE_TRUE { get { @@ -9324,7 +10021,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destination: ähnelt. + /// Looks up a localized string similar to Destination:. /// public static string CPM_SUMMARY_KEY_DESTINATION { get { @@ -9333,7 +10030,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Template: ähnelt. + /// Looks up a localized string similar to Template:. /// public static string CPM_SUMMARY_KEY_MIGRATE_TEMPLATE { get { @@ -9342,7 +10039,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM: ähnelt. + /// Looks up a localized string similar to VM:. /// public static string CPM_SUMMARY_KEY_MIGRATE_VM { get { @@ -9351,7 +10048,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Networking: ähnelt. + /// Looks up a localized string similar to Networking:. /// public static string CPM_SUMMARY_KEY_NETWORK { get { @@ -9360,7 +10057,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage: ähnelt. + /// Looks up a localized string similar to Storage:. /// public static string CPM_SUMMARY_KEY_STORAGE { get { @@ -9369,7 +10066,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Target Server: ähnelt. + /// Looks up a localized string similar to Target Server:. /// public static string CPM_SUMMARY_KEY_TARGET_SERVER { get { @@ -9378,7 +10075,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migration Network: ähnelt. + /// Looks up a localized string similar to Migration Network:. /// public static string CPM_SUMMARY_KEY_TRANSFER_NETWORK { get { @@ -9387,7 +10084,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network not found ähnelt. + /// Looks up a localized string similar to Network not found. /// public static string CPM_SUMMARY_NETWORK_NOT_FOUND { get { @@ -9396,7 +10093,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unset ähnelt. + /// Looks up a localized string similar to Unset. /// public static string CPM_SUMMARY_UNSET { get { @@ -9405,7 +10102,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pl&ace all virtual disks on the same SR: ähnelt. + /// Looks up a localized string similar to Pl&ace all virtual disks on the same SR:. /// public static string CPM_WIZARD_ALL_ON_SAME_SR_RADIO { get { @@ -9414,7 +10111,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destination ähnelt. + /// Looks up a localized string similar to Destination. /// public static string CPM_WIZARD_COPY_MODE_TAB_TITLE { get { @@ -9423,7 +10120,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destination ähnelt. + /// Looks up a localized string similar to Destination. /// public static string CPM_WIZARD_COPY_MODE_TITLE { get { @@ -9432,7 +10129,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Destination: ähnelt. + /// Looks up a localized string similar to &Destination:. /// public static string CPM_WIZARD_DESTINATION_DESTINATION { get { @@ -9441,7 +10138,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the pool or standalone server where you want to copy the selected VMs to. ähnelt. + /// Looks up a localized string similar to Select the pool or standalone server where you want to copy the selected VMs to.. /// public static string CPM_WIZARD_DESTINATION_INSTRUCTIONS_COPY { get { @@ -9450,7 +10147,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the pool or standalone server where you want to copy the selected VM to. ähnelt. + /// Looks up a localized string similar to Select the pool or standalone server where you want to copy the selected VM to.. /// public static string CPM_WIZARD_DESTINATION_INSTRUCTIONS_COPY_SINGLE { get { @@ -9459,7 +10156,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the pool or standalone server where you want to copy the selected templates to. ähnelt. + /// Looks up a localized string similar to Select the pool or standalone server where you want to copy the selected templates to.. /// public static string CPM_WIZARD_DESTINATION_INSTRUCTIONS_COPY_TEMPLATE { get { @@ -9468,7 +10165,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the pool or standalone server where you want to copy the selected template to. ähnelt. + /// Looks up a localized string similar to Select the pool or standalone server where you want to copy the selected template to.. /// public static string CPM_WIZARD_DESTINATION_INSTRUCTIONS_COPY_TEMPLATE_SINGLE { get { @@ -9477,7 +10174,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the pool or standalone server where you want to migrate the selected VMs to. ähnelt. + /// Looks up a localized string similar to Select the pool or standalone server where you want to migrate the selected VMs to.. /// public static string CPM_WIZARD_DESTINATION_INSTRUCTIONS_MIGRATE { get { @@ -9486,7 +10183,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the pool or standalone server where you want to migrate the selected VM to. ähnelt. + /// Looks up a localized string similar to Select the pool or standalone server where you want to migrate the selected VM to.. /// public static string CPM_WIZARD_DESTINATION_INSTRUCTIONS_MIGRATE_SINGLE { get { @@ -9495,7 +10192,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the pool or standalone server where you want to move the selected VMs to. ähnelt. + /// Looks up a localized string similar to Select the pool or standalone server where you want to move the selected VMs to.. /// public static string CPM_WIZARD_DESTINATION_INSTRUCTIONS_MOVE { get { @@ -9504,7 +10201,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the pool or standalone server where you want to move the selected VM to. ähnelt. + /// Looks up a localized string similar to Select the pool or standalone server where you want to move the selected VM to.. /// public static string CPM_WIZARD_DESTINATION_INSTRUCTIONS_MOVE_SINGLE { get { @@ -9513,7 +10210,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destination Pool ähnelt. + /// Looks up a localized string similar to Destination Pool. /// public static string CPM_WIZARD_DESTINATION_TAB_TITLE { get { @@ -9522,7 +10219,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Specify a &target server in the destination pool (optional): ähnelt. + /// Looks up a localized string similar to Specify a &target server in the destination pool (optional):. /// public static string CPM_WIZARD_DESTINATION_TABLE_INTRO { get { @@ -9531,7 +10228,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the destination pool or standalone server ähnelt. + /// Looks up a localized string similar to Select the destination pool or standalone server. /// public static string CPM_WIZARD_DESTINATION_TITLE { get { @@ -9540,9 +10237,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The destination host has become unreachable. + /// Looks up a localized string similar to The destination host has become unreachable. /// - ///Please reconnect the host and try again. ähnelt. + ///Please reconnect the host and try again.. /// public static string CPM_WIZARD_ERROR_TARGET_DISCONNECTED { get { @@ -9551,7 +10248,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The wizard is ready to begin migrating the selected VMs using the settings shown below. Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to migrate the VMs. ähnelt. + /// Looks up a localized string similar to The wizard is ready to begin migrating the selected VMs using the settings shown below. Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to migrate the VMs.. /// public static string CPM_WIZARD_FINISH_PAGE_INTRO { get { @@ -9560,7 +10257,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The wizard is ready to begin copying the selected VMs using the settings shown below. Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to copy the VMs. ähnelt. + /// Looks up a localized string similar to The wizard is ready to begin copying the selected VMs using the settings shown below. Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to copy the VMs.. /// public static string CPM_WIZARD_FINISH_PAGE_INTRO_COPY { get { @@ -9569,7 +10266,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The wizard is ready to begin copying the selected VM using the settings shown below. Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to copy the VM. ähnelt. + /// Looks up a localized string similar to The wizard is ready to begin copying the selected VM using the settings shown below. Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to copy the VM.. /// public static string CPM_WIZARD_FINISH_PAGE_INTRO_COPY_SINGLE { get { @@ -9578,7 +10275,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The wizard is ready to begin copying the selected template using the settings shown below. Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to copy the template. ähnelt. + /// Looks up a localized string similar to The wizard is ready to begin copying the selected template using the settings shown below. Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to copy the template.. /// public static string CPM_WIZARD_FINISH_PAGE_INTRO_COPY_SINGLE_TEMPLATE { get { @@ -9587,7 +10284,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The wizard is ready to begin copying the selected templates using the settings shown below. Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to copy the templates. ähnelt. + /// Looks up a localized string similar to The wizard is ready to begin copying the selected templates using the settings shown below. Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to copy the templates.. /// public static string CPM_WIZARD_FINISH_PAGE_INTRO_COPY_TEMPLATE { get { @@ -9596,7 +10293,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The wizard is ready to begin migrating the selected VM using the settings shown below. Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to migrate the VM. ähnelt. + /// Looks up a localized string similar to The wizard is ready to begin migrating the selected VM using the settings shown below. Please review these settings and click Previous if you need to go back and make any changes, otherwise click Finish to migrate the VM.. /// public static string CPM_WIZARD_FINISH_PAGE_INTRO_SINGLE { get { @@ -9605,7 +10302,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Review settings ähnelt. + /// Looks up a localized string similar to Review settings. /// public static string CPM_WIZARD_FINISH_PAGE_TITLE { get { @@ -9614,7 +10311,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Name and Storage ähnelt. + /// Looks up a localized string similar to Name and Storage. /// public static string CPM_WIZARD_INTRA_POOL_COPY_TAB_TITLE { get { @@ -9623,7 +10320,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Name and Storage ähnelt. + /// Looks up a localized string similar to Name and Storage. /// public static string CPM_WIZARD_INTRA_POOL_COPY_TITLE { get { @@ -9632,7 +10329,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Map the virtual network interfaces in the selected VMs to networks in the destination pool or standalone server. ähnelt. + /// Looks up a localized string similar to Map the virtual network interfaces in the selected VMs to networks in the destination pool or standalone server.. /// public static string CPM_WIZARD_NETWORKING_INTRO { get { @@ -9641,7 +10338,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Map the virtual network interfaces in the selected VM to networks in the destination pool or standalone server. ähnelt. + /// Looks up a localized string similar to Map the virtual network interfaces in the selected VM to networks in the destination pool or standalone server.. /// public static string CPM_WIZARD_NETWORKING_INTRO_SINGLE { get { @@ -9650,7 +10347,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Map the virtual network interfaces in the selected templates to networks in the destination pool or standalone server. ähnelt. + /// Looks up a localized string similar to Map the virtual network interfaces in the selected templates to networks in the destination pool or standalone server.. /// public static string CPM_WIZARD_NETWORKING_INTRO_TEMPLATE { get { @@ -9659,7 +10356,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Map the virtual network interfaces in the selected template to networks in the destination pool or standalone server. ähnelt. + /// Looks up a localized string similar to Map the virtual network interfaces in the selected template to networks in the destination pool or standalone server.. /// public static string CPM_WIZARD_NETWORKING_INTRO_TEMPLATE_SINGLE { get { @@ -9668,7 +10365,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Networking ähnelt. + /// Looks up a localized string similar to Networking. /// public static string CPM_WIZARD_SELECT_NETWORK_PAGE_TEXT { get { @@ -9677,7 +10374,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure networking ähnelt. + /// Looks up a localized string similar to Configure networking. /// public static string CPM_WIZARD_SELECT_NETWORK_PAGE_TITLE { get { @@ -9686,7 +10383,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage ähnelt. + /// Looks up a localized string similar to Storage. /// public static string CPM_WIZARD_SELECT_STORAGE_PAGE_TEXT { get { @@ -9695,7 +10392,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure storage ähnelt. + /// Looks up a localized string similar to Configure storage. /// public static string CPM_WIZARD_SELECT_STORAGE_PAGE_TITLE { get { @@ -9704,7 +10401,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migration Network ähnelt. + /// Looks up a localized string similar to Migration Network. /// public static string CPM_WIZARD_SELECT_TRANSFER_NETWORK_PAGE_TEXT { get { @@ -9713,7 +10410,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure storage migration settings ähnelt. + /// Looks up a localized string similar to Configure storage migration settings. /// public static string CPM_WIZARD_SELECT_TRANSFER_NETWORK_TITLE { get { @@ -9722,7 +10419,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pla&ce virtual disks onto specified SRs: ähnelt. + /// Looks up a localized string similar to Pla&ce virtual disks onto specified SRs:. /// public static string CPM_WIZARD_SPECIFIC_SR_RADIO { get { @@ -9731,7 +10428,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select one or more storage repositories (SR) in the destination pool or standalone server. ähnelt. + /// Looks up a localized string similar to Select one or more storage repositories (SR) in the destination pool or standalone server.. /// public static string CPM_WIZARD_STORAGE_INSTRUCTIONS { get { @@ -9740,7 +10437,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrate VM ähnelt. + /// Looks up a localized string similar to Migrate VM. /// public static string CPM_WIZARD_TITLE { get { @@ -9749,7 +10446,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrate VM to {0} ähnelt. + /// Looks up a localized string similar to Migrate VM to {0}. /// public static string CPM_WIZARD_TITLE_AND_LOCATION { get { @@ -9758,7 +10455,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected VMs are no longer available in [XenCenter]'s cache. Please verify your selection is valid and relaunch the wizard. ähnelt. + /// Looks up a localized string similar to The selected VMs are no longer available in [XenCenter]'s cache. Please verify your selection is valid and relaunch the wizard.. /// public static string CPM_WIZARD_VM_MISSING_ERROR { get { @@ -9767,7 +10464,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Virtual network interfaces: ähnelt. + /// Looks up a localized string similar to &Virtual network interfaces:. /// public static string CPM_WIZARD_VM_SELECTION_INTRODUCTION { get { @@ -9776,7 +10473,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB is enabled on the host ähnelt. + /// Looks up a localized string similar to WLB is enabled on the host. /// public static string CPM_WLB_ENABLED_ON_HOST_FAILURE_REASON { get { @@ -9785,7 +10482,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB is enabled on the source ähnelt. + /// Looks up a localized string similar to WLB is enabled on the source. /// public static string CPM_WLB_ENABLED_ON_VM_FAILURE_REASON { get { @@ -9794,9 +10491,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a storage network on the destination pool or standalone server that will be used for the live migration of the virtual disks. + /// Looks up a localized string similar to Select a storage network on the destination pool or standalone server that will be used for the live migration of the virtual disks. /// - ///For optimal performance and reliability during template migration, ensure that the network used for the storage migration is not being used for management or virtual machine traffic. ähnelt. + ///For optimal performance and reliability during template migration, ensure that the network used for the storage migration is not being used for management or virtual machine traffic.. /// public static string CPS_WIZARD_MIGRATION_PAGE_TITLE_TEMPLATE { get { @@ -9805,9 +10502,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a storage network on the destination pool or standalone server that will be used for the live migration of the virtual disks. + /// Looks up a localized string similar to Select a storage network on the destination pool or standalone server that will be used for the live migration of the virtual disks. /// - ///For optimal performance and reliability during VM migration, ensure that the network used for the storage migration is not being used for management or virtual machine traffic. ähnelt. + ///For optimal performance and reliability during VM migration, ensure that the network used for the storage migration is not being used for management or virtual machine traffic.. /// public static string CPS_WIZARD_MIGRATION_PAGE_TITLE_VM { get { @@ -9816,7 +10513,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Template - Virtual Network Interface ähnelt. + /// Looks up a localized string similar to Template - Virtual Network Interface. /// public static string CPS_WIZARD_NETWORKING_NETWORK_COLUMN_TEMPLATE { get { @@ -9825,7 +10522,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM - Virtual Network Interface ähnelt. + /// Looks up a localized string similar to VM - Virtual Network Interface. /// public static string CPS_WIZARD_NETWORKING_NETWORK_COLUMN_VM { get { @@ -9834,7 +10531,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Template - Virtual Disk ähnelt. + /// Looks up a localized string similar to Template - Virtual Disk. /// public static string CPS_WIZARD_STORAGE_PAGE_DISK_COLUMN_HEADER_FOR_TEMPLATE { get { @@ -9843,7 +10540,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM - Virtual Disk ähnelt. + /// Looks up a localized string similar to VM - Virtual Disk. /// public static string CPS_WIZARD_STORAGE_PAGE_DISK_COLUMN_HEADER_FOR_VM { get { @@ -9852,7 +10549,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CPU ähnelt. + /// Looks up a localized string similar to CPU. /// public static string CPU { get { @@ -9861,7 +10558,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CPU and Memory ähnelt. + /// Looks up a localized string similar to CPU and Memory. /// public static string CPU_AND_MEMORY { get { @@ -9870,7 +10567,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} vCPU(s) & {1} MB RAM ähnelt. + /// Looks up a localized string similar to {0} vCPU(s) & {1} MB RAM. /// public static string CPU_AND_MEMORY_SUB { get { @@ -9879,7 +10576,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} vCPU(s) ähnelt. + /// Looks up a localized string similar to {0} vCPU(s). /// public static string CPU_SUB { get { @@ -9888,7 +10585,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The number of vCPUs must be a multiple of the number of cores per socket ähnelt. + /// Looks up a localized string similar to The number of vCPUs must be a multiple of the number of cores per socket. /// public static string CPU_TOPOLOGY_INVALID_REASON_MULTIPLE { get { @@ -9897,7 +10594,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The number of sockets must be at most 16 ähnelt. + /// Looks up a localized string similar to The number of sockets must be at most 16. /// public static string CPU_TOPOLOGY_INVALID_REASON_SOCKETS { get { @@ -9906,7 +10603,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die 1 socket with 1 core per socket ähnelt. + /// Looks up a localized string similar to 1 socket with 1 core per socket. /// public static string CPU_TOPOLOGY_STRING_1_SOCKET_1_CORE { get { @@ -9915,7 +10612,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die 1 socket with {0} cores per socket ähnelt. + /// Looks up a localized string similar to 1 socket with {0} cores per socket. /// public static string CPU_TOPOLOGY_STRING_1_SOCKET_N_CORE { get { @@ -9924,7 +10621,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} cores per socket (Invalid configuration) ähnelt. + /// Looks up a localized string similar to {0} cores per socket (Invalid configuration). /// public static string CPU_TOPOLOGY_STRING_INVALID_VALUE { get { @@ -9933,7 +10630,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die 1 core per socket (Invalid configuration) ähnelt. + /// Looks up a localized string similar to 1 core per socket (Invalid configuration). /// public static string CPU_TOPOLOGY_STRING_INVALID_VALUE_1 { get { @@ -9942,7 +10639,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} sockets with 1 core per socket ähnelt. + /// Looks up a localized string similar to {0} sockets with 1 core per socket. /// public static string CPU_TOPOLOGY_STRING_N_SOCKET_1_CORE { get { @@ -9951,7 +10648,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} sockets with {1} cores per socket ähnelt. + /// Looks up a localized string similar to {0} sockets with {1} cores per socket. /// public static string CPU_TOPOLOGY_STRING_N_SOCKET_N_CORE { get { @@ -9960,7 +10657,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating CD drive ähnelt. + /// Looks up a localized string similar to Creating CD drive. /// public static string CREATE_CD_DRIVE { get { @@ -9969,7 +10666,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die C&reate ähnelt. + /// Looks up a localized string similar to C&reate. /// public static string CREATE_MNEMONIC_R { get { @@ -9978,7 +10675,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Create new folder '{0}' ähnelt. + /// Looks up a localized string similar to Create new folder '{0}'. /// public static string CREATE_NEW_FOLDER { get { @@ -9987,7 +10684,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Create new folders '{0}' ähnelt. + /// Looks up a localized string similar to Create new folders '{0}'. /// public static string CREATE_NEW_FOLDERS { get { @@ -9996,7 +10693,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Create policy ähnelt. + /// Looks up a localized string similar to Create policy. /// public static string CREATE_POLICY { get { @@ -10005,7 +10702,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Create Template From Snapshot... ähnelt. + /// Looks up a localized string similar to &Create Template From Snapshot.... /// public static string CREATE_TEMPLATE_FROM_SNAPSHOT_MENU_ITEM { get { @@ -10014,7 +10711,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Create VM '{0}' ähnelt. + /// Looks up a localized string similar to Create VM '{0}'. /// public static string CREATE_VM { get { @@ -10023,7 +10720,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Create vApp ähnelt. + /// Looks up a localized string similar to Create vApp. /// public static string CREATE_VM_APPLIANCE { get { @@ -10032,7 +10729,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating VM '{0}' from template '{1}' ähnelt. + /// Looks up a localized string similar to Creating VM '{0}' from template '{1}'. /// public static string CREATE_VM_FROM_TEMPLATE { get { @@ -10041,7 +10738,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Created new folder ähnelt. + /// Looks up a localized string similar to Created new folder. /// public static string CREATED_NEW_FOLDER { get { @@ -10050,7 +10747,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Created new folders ähnelt. + /// Looks up a localized string similar to Created new folders. /// public static string CREATED_NEW_FOLDERS { get { @@ -10059,7 +10756,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vApp '{0}' created. ähnelt. + /// Looks up a localized string similar to vApp '{0}' created.. /// public static string CREATED_VM_APPLIANCE { get { @@ -10068,7 +10765,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot schedule '{0}' created. ähnelt. + /// Looks up a localized string similar to Snapshot schedule '{0}' created.. /// public static string CREATED_VMSS { get { @@ -10077,7 +10774,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Created '{0}' by cloning '{1}' ähnelt. + /// Looks up a localized string similar to Created '{0}' by cloning '{1}'. /// public static string CREATEDVM_CLONE { get { @@ -10086,7 +10783,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Created '{0}' by copying '{1}' ähnelt. + /// Looks up a localized string similar to Created '{0}' by copying '{1}'. /// public static string CREATEDVM_COPY { get { @@ -10095,7 +10792,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM creation canceled ähnelt. + /// Looks up a localized string similar to VM creation canceled. /// public static string CREATEVM_CANCELLED { get { @@ -10104,7 +10801,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuring CD drive for {0} ähnelt. + /// Looks up a localized string similar to Configuring CD drive for {0}. /// public static string CREATEVM_CD { get { @@ -10113,7 +10810,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating '{0}' by cloning '{1}' ähnelt. + /// Looks up a localized string similar to Creating '{0}' by cloning '{1}'. /// public static string CREATEVM_CLONE { get { @@ -10122,7 +10819,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating '{0}' by copying '{1}' ähnelt. + /// Looks up a localized string similar to Creating '{0}' by copying '{1}'. /// public static string CREATEVM_COPY { get { @@ -10131,7 +10828,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuring disks for {0} ähnelt. + /// Looks up a localized string similar to Configuring disks for {0}. /// public static string CREATEVM_DISKS { get { @@ -10140,7 +10837,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuring network interfaces for {0} ähnelt. + /// Looks up a localized string similar to Configuring network interfaces for {0}. /// public static string CREATEVM_NETWORK { get { @@ -10149,7 +10846,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Provisioning new storage for {0} ähnelt. + /// Looks up a localized string similar to Provisioning new storage for {0}. /// public static string CREATEVM_PROVISIONING { get { @@ -10158,7 +10855,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating cloud config drive ähnelt. + /// Looks up a localized string similar to Creating cloud config drive. /// public static string CREATING_CLOUD_CONFIG_DRIVE { get { @@ -10167,7 +10864,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating disks ähnelt. + /// Looks up a localized string similar to Creating disks. /// public static string CREATING_DISKS { get { @@ -10176,7 +10873,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Archiving appliance files into single package file {0}... ähnelt. + /// Looks up a localized string similar to Archiving appliance files into single package file {0}.... /// public static string CREATING_FILE { get { @@ -10185,7 +10882,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating manifest file... ähnelt. + /// Looks up a localized string similar to Creating manifest file.... /// public static string CREATING_MANIFEST { get { @@ -10194,7 +10891,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating new pool '{0}' with master '{1}' ähnelt. + /// Looks up a localized string similar to Creating new pool '{0}' with master '{1}'. /// public static string CREATING_NAMED_POOL_WITH_MASTER { get { @@ -10203,7 +10900,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating new folder... ähnelt. + /// Looks up a localized string similar to Creating new folder.... /// public static string CREATING_NEW_FOLDER { get { @@ -10212,7 +10909,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating new folders... ähnelt. + /// Looks up a localized string similar to Creating new folders.... /// public static string CREATING_NEW_FOLDERS { get { @@ -10221,7 +10918,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating vApp '{0}'... ähnelt. + /// Looks up a localized string similar to Creating vApp '{0}'.... /// public static string CREATING_VM_APPLIANCE { get { @@ -10230,7 +10927,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating snapshot schedule '{0}'... ähnelt. + /// Looks up a localized string similar to Creating snapshot schedule '{0}'.... /// public static string CREATING_VMSS { get { @@ -10239,7 +10936,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creation time ähnelt. + /// Looks up a localized string similar to Creation time. /// public static string CREATION_TIME { get { @@ -10248,7 +10945,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die User name and password check complete ähnelt. + /// Looks up a localized string similar to User name and password check complete. /// public static string CREDENTIALS_CHECK_COMPLETE { get { @@ -10257,7 +10954,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking user name and password... ähnelt. + /// Looks up a localized string similar to Checking user name and password.... /// public static string CREDENTIALS_CHECKING { get { @@ -10266,7 +10963,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Dell EqualLogic ähnelt. + /// Looks up a localized string similar to Dell EqualLogic. /// public static string CSLG_DELL_DIRECT { get { @@ -10275,7 +10972,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Direct Connection ähnelt. + /// Looks up a localized string similar to Direct Connection. /// public static string CSLG_DIRECT_CONNECTION { get { @@ -10284,7 +10981,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NetApp ähnelt. + /// Looks up a localized string similar to NetApp. /// public static string CSLG_NETAPP_DIRECT { get { @@ -10293,7 +10990,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Storage adapter: ähnelt. + /// Looks up a localized string similar to &Storage adapter:. /// public static string CSLG_STORAGEADAPTER { get { @@ -10302,7 +10999,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die StorageLink adapters ähnelt. + /// Looks up a localized string similar to StorageLink adapters. /// public static string CSLG_STORAGELINK_ADAPTERS { get { @@ -10311,7 +11008,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die StorageLink Server ({0}) ähnelt. + /// Looks up a localized string similar to StorageLink Server ({0}). /// public static string CSLG_STORAGELINK_SERVER { get { @@ -10320,7 +11017,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Comma Separated Value ähnelt. + /// Looks up a localized string similar to Comma Separated Value. /// public static string CSV_DESCRIPTION { get { @@ -10329,7 +11026,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Current ähnelt. + /// Looks up a localized string similar to Current. /// public static string CURRENT { get { @@ -10338,7 +11035,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Current location ähnelt. + /// Looks up a localized string similar to Current location. /// public static string CURRENT_LOCATION { get { @@ -10347,7 +11044,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Current memory usage: {0} ähnelt. + /// Looks up a localized string similar to Current memory usage: {0}. /// public static string CURRENT_MEMORY_USAGE { get { @@ -10356,7 +11053,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Current memory usage: {0} per VM ähnelt. + /// Looks up a localized string similar to Current memory usage: {0} per VM. /// public static string CURRENT_MEMORY_USAGE_MULTIPLE { get { @@ -10365,7 +11062,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Current policy ähnelt. + /// Looks up a localized string similar to Current policy. /// public static string CURRENT_POLICY { get { @@ -10374,7 +11071,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Current schedule ähnelt. + /// Looks up a localized string similar to Current schedule. /// public static string CURRENT_SCHEDULE { get { @@ -10383,7 +11080,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Current vApp ähnelt. + /// Looks up a localized string similar to Current vApp. /// public static string CURRENT_VAPP { get { @@ -10392,7 +11089,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Custom... ähnelt. + /// Looks up a localized string similar to Custom.... /// public static string CUSTOM { get { @@ -10401,7 +11098,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} ({1}) ähnelt. + /// Looks up a localized string similar to {0} ({1}). /// public static string CUSTOM_FIELD_NAME_AND_TYPE { get { @@ -10410,7 +11107,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Custom Fields ähnelt. + /// Looks up a localized string similar to Custom Fields. /// public static string CUSTOM_FIELDS { get { @@ -10419,7 +11116,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Custom Search ähnelt. + /// Looks up a localized string similar to Custom Search. /// public static string CUSTOM_SEARCH { get { @@ -10428,7 +11125,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Custom Templates ähnelt. + /// Looks up a localized string similar to Custom Templates. /// public static string CUSTOM_TEMPLATES { get { @@ -10437,7 +11134,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Daily; at {0} ähnelt. + /// Looks up a localized string similar to Daily; at {0}. /// public static string DAILY_SCHEDULE_FORMAT { get { @@ -10446,7 +11143,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CPU ähnelt. + /// Looks up a localized string similar to CPU. /// public static string DATATYPE_CPU { get { @@ -10455,7 +11152,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Custom ähnelt. + /// Looks up a localized string similar to Custom. /// public static string DATATYPE_CUSTOM { get { @@ -10464,7 +11161,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk ähnelt. + /// Looks up a localized string similar to Disk. /// public static string DATATYPE_DISK { get { @@ -10473,7 +11170,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die GPU ähnelt. + /// Looks up a localized string similar to GPU. /// public static string DATATYPE_GPU { get { @@ -10482,7 +11179,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Latency ähnelt. + /// Looks up a localized string similar to Latency. /// public static string DATATYPE_LATENCY { get { @@ -10491,7 +11188,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Load Average ähnelt. + /// Looks up a localized string similar to Load Average. /// public static string DATATYPE_LOADAVERAGE { get { @@ -10500,7 +11197,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory ähnelt. + /// Looks up a localized string similar to Memory. /// public static string DATATYPE_MEMORY { get { @@ -10509,7 +11206,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network ähnelt. + /// Looks up a localized string similar to Network. /// public static string DATATYPE_NETWORK { get { @@ -10518,7 +11215,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die PVS-Accelerator ähnelt. + /// Looks up a localized string similar to PVS-Accelerator. /// public static string DATATYPE_PVS { get { @@ -10527,7 +11224,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage ähnelt. + /// Looks up a localized string similar to Storage. /// public static string DATATYPE_STORAGE { get { @@ -10536,7 +11233,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Date ähnelt. + /// Looks up a localized string similar to Date. /// public static string DATE { get { @@ -10545,7 +11242,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Date & Time ähnelt. + /// Looks up a localized string similar to Date & Time. /// public static string DATE_AND_TIME { get { @@ -10554,7 +11251,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Custom... ähnelt. + /// Looks up a localized string similar to &Custom.... /// public static string DATE_FILTER_CUSTOM { get { @@ -10563,7 +11260,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Last &24 Hours ähnelt. + /// Looks up a localized string similar to Last &24 Hours. /// public static string DATE_FILTER_LAST_24_HOURS { get { @@ -10572,7 +11269,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Last &3 Days ähnelt. + /// Looks up a localized string similar to Last &3 Days. /// public static string DATE_FILTER_LAST_3_DAYS { get { @@ -10581,7 +11278,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Last 3&0 Days ähnelt. + /// Looks up a localized string similar to Last 3&0 Days. /// public static string DATE_FILTER_LAST_30_DAYS { get { @@ -10590,7 +11287,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Last &7 Days ähnelt. + /// Looks up a localized string similar to Last &7 Days. /// public static string DATE_FILTER_LAST_7_DAYS { get { @@ -10599,7 +11296,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die MMM d ähnelt. + /// Looks up a localized string similar to MMM d. /// public static string DATEFORMAT_DM { get { @@ -10608,7 +11305,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die MMM d, yyyy ähnelt. + /// Looks up a localized string similar to MMM d, yyyy. /// public static string DATEFORMAT_DMY { get { @@ -10617,7 +11314,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die MMM d, yyyy h:mm tt ähnelt. + /// Looks up a localized string similar to MMM d, yyyy h:mm tt. /// public static string DATEFORMAT_DMY_HM { get { @@ -10626,7 +11323,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die MMM d, yyyy h:mm:ss tt ähnelt. + /// Looks up a localized string similar to MMM d, yyyy h:mm:ss tt. /// public static string DATEFORMAT_DMY_HMS { get { @@ -10635,7 +11332,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die MMMM d, yyyy ähnelt. + /// Looks up a localized string similar to MMMM d, yyyy. /// public static string DATEFORMAT_DMY_LONG { get { @@ -10644,7 +11341,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ht ähnelt. + /// Looks up a localized string similar to ht. /// public static string DATEFORMAT_H_SHORT { get { @@ -10653,7 +11350,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die h:mm tt ähnelt. + /// Looks up a localized string similar to h:mm tt. /// public static string DATEFORMAT_HM { get { @@ -10662,7 +11359,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die h:mm:ss tt ähnelt. + /// Looks up a localized string similar to h:mm:ss tt. /// public static string DATEFORMAT_HMS { get { @@ -10671,7 +11368,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die dddd, MMMM d, yyyy h:mm tt ähnelt. + /// Looks up a localized string similar to dddd, MMMM d, yyyy h:mm tt. /// public static string DATEFORMAT_WDMY_HM_LONG { get { @@ -10680,7 +11377,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Dea&ctivate ähnelt. + /// Looks up a localized string similar to Dea&ctivate. /// public static string DEACTIVATE { get { @@ -10689,7 +11386,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Debian Etch 4.0 ähnelt. + /// Looks up a localized string similar to Debian Etch 4.0. /// public static string DEBIAN_ETCH_40 { get { @@ -10698,7 +11395,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Debian Sarge 3.1 ähnelt. + /// Looks up a localized string similar to Debian Sarge 3.1. /// public static string DEBIAN_SARGE_31 { get { @@ -10707,7 +11404,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disconnecting Workload Balancing. ähnelt. + /// Looks up a localized string similar to Disconnecting Workload Balancing.. /// public static string DECONFIGURING_WLB { get { @@ -10716,7 +11413,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disconnecting Workload Balancing from pool '{0}'. ähnelt. + /// Looks up a localized string similar to Disconnecting Workload Balancing from pool '{0}'.. /// public static string DECONFIGURING_WLB_ON { get { @@ -10725,7 +11422,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Default ähnelt. + /// Looks up a localized string similar to Default. /// public static string DEFAULT { get { @@ -10734,7 +11431,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Default install of {0} ähnelt. + /// Looks up a localized string similar to Default install of {0}. /// public static string DEFAULT_INSTALL_OF_XENSERVER { get { @@ -10743,7 +11440,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Default Search ähnelt. + /// Looks up a localized string similar to Default Search. /// public static string DEFAULT_SEARCH { get { @@ -10752,7 +11449,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resources by Tag ähnelt. + /// Looks up a localized string similar to Resources by Tag. /// public static string DEFAULT_SEARCH_OBJECTS_BY_TAG { get { @@ -10761,7 +11458,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs and Snapshots ähnelt. + /// Looks up a localized string similar to VMs and Snapshots. /// public static string DEFAULT_SEARCH_SNAPSHOTS_BY_VM { get { @@ -10770,7 +11467,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs by vApp ähnelt. + /// Looks up a localized string similar to VMs by vApp. /// public static string DEFAULT_SEARCH_VMS_BY_APPLIANCE { get { @@ -10779,7 +11476,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs by Network ähnelt. + /// Looks up a localized string similar to VMs by Network. /// public static string DEFAULT_SEARCH_VMS_BY_NETWORK { get { @@ -10788,7 +11485,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs by Operating System ähnelt. + /// Looks up a localized string similar to VMs by Operating System. /// public static string DEFAULT_SEARCH_VMS_BY_OS { get { @@ -10797,7 +11494,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs by Power State ähnelt. + /// Looks up a localized string similar to VMs by Power State. /// public static string DEFAULT_SEARCH_VMS_BY_POWERSTATE { get { @@ -10806,7 +11503,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs without [Citrix VM Tools] ähnelt. + /// Looks up a localized string similar to VMs without [Citrix VM Tools]. /// public static string DEFAULT_SEARCH_VMS_WO_XS_TOOLS { get { @@ -10815,7 +11512,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New virtual disk ähnelt. + /// Looks up a localized string similar to New virtual disk. /// public static string DEFAULT_VDI_NAME { get { @@ -10824,7 +11521,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - {1} ähnelt. + /// Looks up a localized string similar to {0} - {1}. /// public static string DELAY_LOADED_COMBO_BOX_ITEM_FAILURE_REASON { get { @@ -10833,7 +11530,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die unable to determine failure reason ähnelt. + /// Looks up a localized string similar to unable to determine failure reason. /// public static string DELAY_LOADED_COMBO_BOX_ITEM_FAILURE_UNKOWN { get { @@ -10842,7 +11539,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die waiting... ähnelt. + /// Looks up a localized string similar to waiting.... /// public static string DELAY_LOADING_COMBO_BOX_WAITING { get { @@ -10851,7 +11548,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Delete All ähnelt. + /// Looks up a localized string similar to &Delete All. /// public static string DELETE_ALL_BUTTON_LABEL { get { @@ -10860,7 +11557,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete tag '{0}' ähnelt. + /// Looks up a localized string similar to Delete tag '{0}'. /// public static string DELETE_ALL_TAG { get { @@ -10869,7 +11566,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die For every server that currently has system alerts your current role is not privileged enough to dismiss them. ähnelt. + /// Looks up a localized string similar to For every server that currently has system alerts your current role is not privileged enough to dismiss them.. /// public static string DELETE_ANY_MESSAGE_RBAC_BLOCKED { get { @@ -10878,7 +11575,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Bond ähnelt. + /// Looks up a localized string similar to Delete Bond. /// public static string DELETE_BOND { get { @@ -10887,7 +11584,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure that you want to delete {0}? ähnelt. + /// Looks up a localized string similar to Are you sure that you want to delete {0}?. /// public static string DELETE_BOND_MESSAGE { get { @@ -10896,8 +11593,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure that you want to delete {0}? This network is in use by virtual machines, - ///and so will be renamed '{1}'. ähnelt. + /// Looks up a localized string similar to Are you sure that you want to delete {0}? This network is in use by virtual machines, + ///and so will be renamed '{1}'.. /// public static string DELETE_BOND_WITH_VIFS_MESSAGE { get { @@ -10906,7 +11603,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete custom field '{0}' ähnelt. + /// Looks up a localized string similar to Delete custom field '{0}'. /// public static string DELETE_CUSTOM_FIELD { get { @@ -10915,8 +11612,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to permanently delete folder '{0}'? - ///If you do, the resources inside it will no longer be in any folder. ähnelt. + /// Looks up a localized string similar to Are you sure you want to permanently delete folder '{0}'? + ///If you do, the resources inside it will no longer be in any folder.. /// public static string DELETE_FOLDER_CONFIRM_CONTENTS { get { @@ -10925,8 +11622,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to permanently delete folder '{0}'? - ///This will also delete its subfolders, and the resources inside it will no longer be in any folder. ähnelt. + /// Looks up a localized string similar to Are you sure you want to permanently delete folder '{0}'? + ///This will also delete its subfolders, and the resources inside it will no longer be in any folder.. /// public static string DELETE_FOLDER_CONFIRM_CONTENTS_AND_SUBFOLDERS { get { @@ -10935,7 +11632,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to permanently delete folder '{0}'? ähnelt. + /// Looks up a localized string similar to Are you sure you want to permanently delete folder '{0}'?. /// public static string DELETE_FOLDER_CONFIRM_EMPTY { get { @@ -10944,8 +11641,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to permanently delete folder '{0}'? - ///This will also delete its subfolders. ähnelt. + /// Looks up a localized string similar to Are you sure you want to permanently delete folder '{0}'? + ///This will also delete its subfolders.. /// public static string DELETE_FOLDER_CONFIRM_SUBFOLDERS { get { @@ -10954,7 +11651,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Folder ähnelt. + /// Looks up a localized string similar to Delete Folder. /// public static string DELETE_FOLDER_DIALOG_TITLE { get { @@ -10963,7 +11660,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Delete Folder... ähnelt. + /// Looks up a localized string similar to &Delete Folder.... /// public static string DELETE_FOLDER_MENU { get { @@ -10972,8 +11669,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to permanently delete the selected folders? - ///If you do, contained resources will no longer be in any folder. ähnelt. + /// Looks up a localized string similar to Are you sure you want to permanently delete the selected folders? + ///If you do, contained resources will no longer be in any folder.. /// public static string DELETE_FOLDERS_CONFIRM_CONTENTS { get { @@ -10982,8 +11679,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to permanently delete the selected folders? - ///This will also delete all subfolders, and any contained resources will no longer be in any folder. ähnelt. + /// Looks up a localized string similar to Are you sure you want to permanently delete the selected folders? + ///This will also delete all subfolders, and any contained resources will no longer be in any folder.. /// public static string DELETE_FOLDERS_CONFIRM_CONTENTS_AND_SUBFOLDERS { get { @@ -10992,7 +11689,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to permanently delete the selected folders? ähnelt. + /// Looks up a localized string similar to Are you sure you want to permanently delete the selected folders?. /// public static string DELETE_FOLDERS_CONFIRM_EMPTY { get { @@ -11001,8 +11698,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to permanently delete the selected folders? - ///This will also delete subfolders. ähnelt. + /// Looks up a localized string similar to Are you sure you want to permanently delete the selected folders? + ///This will also delete subfolders.. /// public static string DELETE_FOLDERS_CONFIRM_SUBFOLDERS { get { @@ -11011,7 +11708,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Folders ähnelt. + /// Looks up a localized string similar to Delete Folders. /// public static string DELETE_FOLDERS_DIALOG_TITLE { get { @@ -11020,7 +11717,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to delete '{0}'? This operation cannot be undone. ähnelt. + /// Looks up a localized string similar to Are you sure you want to delete '{0}'? This operation cannot be undone.. /// public static string DELETE_GRAPH_MESSAGE { get { @@ -11029,7 +11726,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There are no alerts remaining which you have permission to dismiss. ähnelt. + /// Looks up a localized string similar to There are no alerts remaining which you have permission to dismiss.. /// public static string DELETE_MESSAGE_RBAC_BLOCKED { get { @@ -11038,7 +11735,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Patch ähnelt. + /// Looks up a localized string similar to Delete Patch. /// public static string DELETE_PATCH { get { @@ -11047,7 +11744,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete policies ähnelt. + /// Looks up a localized string similar to Delete policies. /// public static string DELETE_POLICIES { get { @@ -11056,7 +11753,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Search '{0}' ähnelt. + /// Looks up a localized string similar to Delete Search '{0}'. /// public static string DELETE_SEARCH { get { @@ -11065,7 +11762,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Delete ähnelt. + /// Looks up a localized string similar to &Delete. /// public static string DELETE_SEARCH_MENU_ITEM { get { @@ -11074,7 +11771,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to delete saved search '{0}'? ähnelt. + /// Looks up a localized string similar to Are you sure you want to delete saved search '{0}'?. /// public static string DELETE_SEARCH_PROMPT { get { @@ -11083,7 +11780,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove &StorageLink volume... ähnelt. + /// Looks up a localized string similar to Remove &StorageLink volume.... /// public static string DELETE_SL_VOLUME_CONTEXT_MENU_ELIPS { get { @@ -11092,7 +11789,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Delete Snapshot ähnelt. + /// Looks up a localized string similar to &Delete Snapshot. /// public static string DELETE_SNAPSHOT_MENU_ITEM { get { @@ -11101,7 +11798,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete tag '{0}' ähnelt. + /// Looks up a localized string similar to Delete tag '{0}'. /// public static string DELETE_TAG { get { @@ -11110,7 +11807,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete tags ähnelt. + /// Looks up a localized string similar to Delete tags. /// public static string DELETE_TAGS { get { @@ -11119,7 +11816,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Delete Virtual Disk ähnelt. + /// Looks up a localized string similar to &Delete Virtual Disk. /// public static string DELETE_VIRTUAL_DISK { get { @@ -11128,7 +11825,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete vApp ähnelt. + /// Looks up a localized string similar to Delete vApp. /// public static string DELETE_VM_APPLIANCE_TITLE { get { @@ -11137,7 +11834,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete vApps ähnelt. + /// Looks up a localized string similar to Delete vApps. /// public static string DELETE_VM_APPLIANCES { get { @@ -11146,7 +11843,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Snapshot Schedule ähnelt. + /// Looks up a localized string similar to Delete Snapshot Schedule. /// public static string DELETE_VMSS_TITLE { get { @@ -11155,7 +11852,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete WLB Optimization Scheduler ähnelt. + /// Looks up a localized string similar to Delete WLB Optimization Scheduler. /// public static string DELETE_WLB_OPTIMIZATION_SCHEDULE_CAPTION { get { @@ -11164,7 +11861,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete the selected scheduler. Continue? ähnelt. + /// Looks up a localized string similar to This will delete the selected scheduler. Continue?. /// public static string DELETE_WLB_OPTIMIZATION_SCHEDULE_WARNING { get { @@ -11173,7 +11870,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleted tag '{0}' ähnelt. + /// Looks up a localized string similar to Deleted tag '{0}'. /// public static string DELETED_ALL_TAG { get { @@ -11182,7 +11879,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleted custom field '{0}' ähnelt. + /// Looks up a localized string similar to Deleted custom field '{0}'. /// public static string DELETED_CUSTOM_FIELD { get { @@ -11191,7 +11888,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleted object ähnelt. + /// Looks up a localized string similar to Deleted object. /// public static string DELETED_FOLDER { get { @@ -11200,7 +11897,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleted objects ähnelt. + /// Looks up a localized string similar to Deleted objects. /// public static string DELETED_FOLDERS { get { @@ -11209,7 +11906,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleted tag '{0}' ähnelt. + /// Looks up a localized string similar to Deleted tag '{0}'. /// public static string DELETED_TAG { get { @@ -11218,7 +11915,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleted tags ähnelt. + /// Looks up a localized string similar to Deleted tags. /// public static string DELETED_TAGS { get { @@ -11227,7 +11924,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vApps deleted. ähnelt. + /// Looks up a localized string similar to vApps deleted.. /// public static string DELETED_VM_APPLIANCES { get { @@ -11236,7 +11933,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot schedules deleted. ähnelt. + /// Looks up a localized string similar to Snapshot schedules deleted.. /// public static string DELETED_VMSS { get { @@ -11245,7 +11942,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting tag '{0}' ähnelt. + /// Looks up a localized string similar to Deleting tag '{0}'. /// public static string DELETING_ALL_TAG { get { @@ -11254,7 +11951,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting custom field '{0}' ähnelt. + /// Looks up a localized string similar to Deleting custom field '{0}'. /// public static string DELETING_CUSTOM_FIELD { get { @@ -11263,7 +11960,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting object... ähnelt. + /// Looks up a localized string similar to Deleting object.... /// public static string DELETING_FOLDER { get { @@ -11272,7 +11969,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting objects... ähnelt. + /// Looks up a localized string similar to Deleting objects.... /// public static string DELETING_FOLDERS { get { @@ -11281,7 +11978,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting search '{0}'... ähnelt. + /// Looks up a localized string similar to Deleting search '{0}'.... /// public static string DELETING_SEARCH { get { @@ -11290,7 +11987,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting tag '{0}' ähnelt. + /// Looks up a localized string similar to Deleting tag '{0}'. /// public static string DELETING_TAG { get { @@ -11299,7 +11996,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting tags ähnelt. + /// Looks up a localized string similar to Deleting tags. /// public static string DELETING_TAGS { get { @@ -11308,7 +12005,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting vApp '{0}' ähnelt. + /// Looks up a localized string similar to Deleting vApp '{0}'. /// public static string DELETING_VM_APPLIANCE { get { @@ -11317,7 +12014,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting snapshot schedule '{0}' ähnelt. + /// Looks up a localized string similar to Deleting snapshot schedule '{0}'. /// public static string DELETING_VMSS { get { @@ -11326,7 +12023,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Description ähnelt. + /// Looks up a localized string similar to Description. /// public static string DESCRIPTION { get { @@ -11335,7 +12032,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Host destroyed ähnelt. + /// Looks up a localized string similar to Host destroyed. /// public static string DESTROY_HOST_ACTION_COMPLETED_DESC { get { @@ -11344,7 +12041,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Host destroyed, but could not remove its SRs ähnelt. + /// Looks up a localized string similar to Host destroyed, but could not remove its SRs. /// public static string DESTROY_HOST_ACTION_COMPLETED_SRS_NOT_REMOVED_DESC { get { @@ -11353,7 +12050,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destroying host ähnelt. + /// Looks up a localized string similar to Destroying host. /// public static string DESTROY_HOST_ACTION_DESC { get { @@ -11362,7 +12059,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing SRs ähnelt. + /// Looks up a localized string similar to Removing SRs. /// public static string DESTROY_HOST_ACTION_REMOVE_SRS_DESC { get { @@ -11371,7 +12068,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destroying host '{0}' ähnelt. + /// Looks up a localized string similar to Destroying host '{0}'. /// public static string DESTROY_HOST_ACTION_TITLE { get { @@ -11380,7 +12077,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die D&estroy ähnelt. + /// Looks up a localized string similar to D&estroy. /// public static string DESTROY_HOST_CONTEXT_MENU_ITEM_TEXT { get { @@ -11389,7 +12086,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destr&oy ähnelt. + /// Looks up a localized string similar to Destr&oy. /// public static string DESTROY_SR { get { @@ -11398,7 +12095,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destroyed ähnelt. + /// Looks up a localized string similar to Destroyed. /// public static string DESTROYING_HOSTS_END_DESC { get { @@ -11407,7 +12104,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destroying ähnelt. + /// Looks up a localized string similar to Destroying. /// public static string DESTROYING_HOSTS_START_DESC { get { @@ -11416,7 +12113,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destroying servers ähnelt. + /// Looks up a localized string similar to Destroying servers. /// public static string DESTROYING_HOSTS_TITLE { get { @@ -11425,7 +12122,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Making pool '{0}' into standalone server ähnelt. + /// Looks up a localized string similar to Making pool '{0}' into standalone server. /// public static string DESTROYING_POOL { get { @@ -11434,7 +12131,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Detach all ähnelt. + /// Looks up a localized string similar to &Detach all. /// public static string DETACH_ALL_BUTTON_LABEL { get { @@ -11443,7 +12140,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Detach ähnelt. + /// Looks up a localized string similar to &Detach. /// public static string DETACH_SR { get { @@ -11452,7 +12149,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detached ähnelt. + /// Looks up a localized string similar to Detached. /// public static string DETACHED { get { @@ -11461,7 +12158,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (Detached) ähnelt. + /// Looks up a localized string similar to {0} (Detached). /// public static string DETACHED_BRACKETS { get { @@ -11470,7 +12167,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] has detected that an SR already exists on this LUN. This SR is not currently in use by '{0}', would you like to attach it? ähnelt. + /// Looks up a localized string similar to [XenCenter] has detected that an SR already exists on this LUN. This SR is not currently in use by '{0}', would you like to attach it?. /// public static string DETACHED_ISCI_DETECTED { get { @@ -11479,7 +12176,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Details ähnelt. + /// Looks up a localized string similar to Details. /// public static string DETAILS { get { @@ -11488,7 +12185,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Device ähnelt. + /// Looks up a localized string similar to Device. /// public static string DEVICE_NAME { get { @@ -11497,7 +12194,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Device {0}, ({1}) ähnelt. + /// Looks up a localized string similar to Device {0}, ({1}). /// public static string DEVICE_POSITION { get { @@ -11506,7 +12203,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Position {0} is already in use. Your VM will not boot with two disks in the same position. Do you want to swap the disk at '{0}' with this disk? ähnelt. + /// Looks up a localized string similar to Position {0} is already in use. Your VM will not boot with two disks in the same position. Do you want to swap the disk at '{0}' with this disk?. /// public static string DEVICE_POSITION_CONFLICT { get { @@ -11515,7 +12212,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You will have to restart the VM for changes in device position to take effect. ähnelt. + /// Looks up a localized string similar to You will have to restart the VM for changes in device position to take effect.. /// public static string DEVICE_POSITION_RESTART_REQUIRED { get { @@ -11524,7 +12221,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanned for free device positions ähnelt. + /// Looks up a localized string similar to Scanned for free device positions. /// public static string DEVICE_POSITION_SCANNED { get { @@ -11533,7 +12230,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning for free device positions ähnelt. + /// Looks up a localized string similar to Scanning for free device positions. /// public static string DEVICE_POSITION_SCANNING { get { @@ -11542,7 +12239,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No devices available ähnelt. + /// Looks up a localized string similar to No devices available. /// public static string DIALOG_ATTACH_USB_NO_DEVICES_AVAILABLE { get { @@ -11551,7 +12248,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable passthrough ähnelt. + /// Looks up a localized string similar to Disable passthrough. /// public static string DIALOG_USB_USAGE_DISABLE_PASSTHROUGH { get { @@ -11560,7 +12257,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enable passthrough ähnelt. + /// Looks up a localized string similar to Enable passthrough. /// public static string DIALOG_USB_USAGE_ENABLE_PASSTHROUGH { get { @@ -11569,7 +12266,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure that you want to enable passthrough on this device? This will allow this device to be passed through to virtual machines. ähnelt. + /// Looks up a localized string similar to Are you sure that you want to enable passthrough on this device? This will allow this device to be passed through to virtual machines.. /// public static string DIALOG_USB_USAGE_NOTE_ALLOW { get { @@ -11578,7 +12275,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure that you want to disable passthrough on this device? This device will no longer be allowed to be passed through to virtual machines. ähnelt. + /// Looks up a localized string similar to Are you sure that you want to disable passthrough on this device? This device will no longer be allowed to be passed through to virtual machines.. /// public static string DIALOG_USB_USAGE_NOTE_DENY { get { @@ -11587,7 +12284,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Yes, Disable passthrough ähnelt. + /// Looks up a localized string similar to &Yes, Disable passthrough. /// public static string DIALOG_USB_USAGE_OKBUTTON_DISABLE { get { @@ -11596,7 +12293,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Yes, Enable passthrough ähnelt. + /// Looks up a localized string similar to &Yes, Enable passthrough. /// public static string DIALOG_USB_USAGE_OKBUTTON_ENABLE { get { @@ -11605,7 +12302,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disa&ble ähnelt. + /// Looks up a localized string similar to Disa&ble. /// public static string DISABLE { get { @@ -11614,7 +12311,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable clustering. ähnelt. + /// Looks up a localized string similar to Disable clustering.. /// public static string DISABLE_CLUSTERING_ON_POOL { get { @@ -11623,7 +12320,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable HA ähnelt. + /// Looks up a localized string similar to Disable HA. /// public static string DISABLE_HA { get { @@ -11632,7 +12329,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable HA if you want to configure the management interfaces ähnelt. + /// Looks up a localized string similar to Disable HA if you want to configure the management interfaces. /// public static string DISABLE_HA_CONFIGURE_MANAGEMENT_INTERFACES { get { @@ -11641,7 +12338,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable ähnelt. + /// Looks up a localized string similar to Disable. /// public static string DISABLE_NOAMP { get { @@ -11650,7 +12347,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Disable PVS-Accelerator ähnelt. + /// Looks up a localized string similar to &Disable PVS-Accelerator. /// public static string DISABLE_PVS_READ_CACHING_BUTTON { get { @@ -11659,7 +12356,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable P&VS-Accelerator ähnelt. + /// Looks up a localized string similar to Disable P&VS-Accelerator. /// public static string DISABLE_PVS_READ_CACHING_MENU { get { @@ -11668,7 +12365,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pause Workload Balancing ähnelt. + /// Looks up a localized string similar to Pause Workload Balancing . /// public static string DISABLE_WLB { get { @@ -11677,7 +12374,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pa&use ähnelt. + /// Looks up a localized string similar to Pa&use. /// public static string DISABLE_WLB_ELLIPSIS { get { @@ -11686,7 +12383,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabled ähnelt. + /// Looks up a localized string similar to Disabled. /// public static string DISABLED { get { @@ -11695,7 +12392,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabled clustering on {0}. ähnelt. + /// Looks up a localized string similar to Disabled clustering on {0}.. /// public static string DISABLED_CLUSTERING_ON_POOL { get { @@ -11704,7 +12401,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot schedule '{0}' disabled. ähnelt. + /// Looks up a localized string similar to Snapshot schedule '{0}' disabled.. /// public static string DISABLED_VMSS { get { @@ -11713,7 +12410,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling ähnelt. + /// Looks up a localized string similar to Disabling. /// public static string DISABLING { get { @@ -11722,7 +12419,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling Active Directory Authentication ähnelt. + /// Looks up a localized string similar to Disabling Active Directory Authentication. /// public static string DISABLING_AD { get { @@ -11731,7 +12428,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling Active Directory Authentication on pool '{0}' ähnelt. + /// Looks up a localized string similar to Disabling Active Directory Authentication on pool '{0}'. /// public static string DISABLING_AD_ON { get { @@ -11740,7 +12437,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling clustering on {0}. ähnelt. + /// Looks up a localized string similar to Disabling clustering on {0}.. /// public static string DISABLING_CLUSTERING_ON_POOL { get { @@ -11749,7 +12446,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling HA ähnelt. + /// Looks up a localized string similar to Disabling HA. /// public static string DISABLING_HA { get { @@ -11758,7 +12455,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling HA on pool '{0}' ähnelt. + /// Looks up a localized string similar to Disabling HA on pool '{0}'. /// public static string DISABLING_HA_ON { get { @@ -11767,7 +12464,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabling snapshot schedule '{0}'... ähnelt. + /// Looks up a localized string similar to Disabling snapshot schedule '{0}'.... /// public static string DISABLING_VMSS { get { @@ -11776,7 +12473,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pausing Workload Balancing ähnelt. + /// Looks up a localized string similar to Pausing Workload Balancing . /// public static string DISABLING_WLB { get { @@ -11785,7 +12482,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pausing Workload Balancing on pool '{0}' ähnelt. + /// Looks up a localized string similar to Pausing Workload Balancing on pool '{0}'. /// public static string DISABLING_WLB_ON { get { @@ -11794,7 +12491,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disaster Reco&very ähnelt. + /// Looks up a localized string similar to Disaster Reco&very. /// public static string DISASTER_RECOVERY_AMP { get { @@ -11803,7 +12500,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Di&saster Recovery ähnelt. + /// Looks up a localized string similar to Di&saster Recovery. /// public static string DISASTER_RECOVERY_CONTEXT_MENU { get { @@ -11812,7 +12509,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disconnect ähnelt. + /// Looks up a localized string similar to Disconnect. /// public static string DISCONNECT { get { @@ -11821,7 +12518,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Disconnect anyway ähnelt. + /// Looks up a localized string similar to &Disconnect anyway. /// public static string DISCONNECT_ANYWAY { get { @@ -11830,7 +12527,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do&n't disconnect ähnelt. + /// Looks up a localized string similar to Do&n't disconnect. /// public static string DISCONNECT_CANCEL { get { @@ -11839,7 +12536,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unfinished tasks will be canceled if you disconnect from '{0}' before they finish. ähnelt. + /// Looks up a localized string similar to Unfinished tasks will be canceled if you disconnect from '{0}' before they finish.. /// public static string DISCONNECT_WARNING { get { @@ -11848,7 +12545,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disconnected ähnelt. + /// Looks up a localized string similar to Disconnected. /// public static string DISCONNECTED { get { @@ -11857,7 +12554,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The connection to the pool was lost before this action could take place. ähnelt. + /// Looks up a localized string similar to The connection to the pool was lost before this action could take place.. /// public static string DISCONNECTED_BEFORE_ACTION_STARTED { get { @@ -11866,7 +12563,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disconnected servers ähnelt. + /// Looks up a localized string similar to Disconnected servers. /// public static string DISCONNECTED_SERVERS { get { @@ -11875,7 +12572,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Add Virtual Disk ähnelt. + /// Looks up a localized string similar to Add Virtual Disk. /// public static string DISK_ADD { get { @@ -11884,7 +12581,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attach Disk ähnelt. + /// Looks up a localized string similar to Attach Disk. /// public static string DISK_ATTACH { get { @@ -11893,7 +12590,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}% ({1} used) ähnelt. + /// Looks up a localized string similar to {0}% ({1} used). /// public static string DISK_PERCENT_USED { get { @@ -11902,7 +12599,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is not enough available space for this disk ähnelt. + /// Looks up a localized string similar to There is not enough available space for this disk. /// public static string DISK_TOO_BIG { get { @@ -11911,7 +12608,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk size needs to be at least {0} {1} ähnelt. + /// Looks up a localized string similar to Disk size cannot be more than {0}.. + /// + public static string DISK_TOO_BIG_MAX_SIZE { + get { + return ResourceManager.GetString("DISK_TOO_BIG_MAX_SIZE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Disk size needs to be at least {0}.. /// public static string DISK_TOO_SMALL { get { @@ -11920,7 +12626,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk and memory snapshots ähnelt. + /// Looks up a localized string similar to Disk and memory snapshots. /// public static string DISKMEMORY_SNAPSHOTS { get { @@ -11929,7 +12635,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disks ähnelt. + /// Looks up a localized string similar to Disks. /// public static string DISKS { get { @@ -11938,7 +12644,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disks and memory ähnelt. + /// Looks up a localized string similar to Disks and memory. /// public static string DISKS_AND_MEMORY { get { @@ -11947,7 +12653,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disks only ähnelt. + /// Looks up a localized string similar to Disks only. /// public static string DISKS_ONLY { get { @@ -11956,7 +12662,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Dismiss &all ähnelt. + /// Looks up a localized string similar to Dismiss &all. /// public static string DISMISS_ALL_CONFIRM_BUTTON { get { @@ -11965,7 +12671,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Yes, Dismiss &all ähnelt. + /// Looks up a localized string similar to Yes, Dismiss &all. /// public static string DISMISS_ALL_YES_CONFIRM_BUTTON { get { @@ -11974,7 +12680,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Only dismiss &visible ähnelt. + /// Looks up a localized string similar to Only dismiss &visible. /// public static string DISMISS_FILTERED_CONFIRM_BUTTON { get { @@ -11983,7 +12689,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Display ähnelt. + /// Looks up a localized string similar to Display. /// public static string DISPLAY { get { @@ -11992,7 +12698,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Display options ähnelt. + /// Looks up a localized string similar to Display options. /// public static string DISPLAY_DETAILS { get { @@ -12001,7 +12707,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The Dynamic Memory Control (DMC) is not available due to license restrictions on the server. ähnelt. + /// Looks up a localized string similar to Dynamic Memory Control. + /// + public static string DMC { + get { + return ResourceManager.GetString("DMC", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The Dynamic Memory Control (DMC) is not available due to license restrictions on the server.. /// public static string DMC_UNAVAILABLE_LICENSE_RESTRICTION { get { @@ -12010,7 +12725,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A memory range cannot be set because I/O drivers are not installed on this VM. ähnelt. + /// Looks up a localized string similar to A memory range cannot be set because I/O drivers are not installed on this VM.. /// public static string DMC_UNAVAILABLE_NO_IO_NO_MGMNT { get { @@ -12019,7 +12734,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A memory range cannot be set because I/O drivers are not installed on these VMs. ähnelt. + /// Looks up a localized string similar to A memory range cannot be set because I/O drivers are not installed on these VMs.. /// public static string DMC_UNAVAILABLE_NO_IO_NO_MGMNT_PLURAL { get { @@ -12028,7 +12743,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A memory range cannot be set because [Citrix VM Tools] are not installed on this VM. ähnelt. + /// Looks up a localized string similar to A memory range cannot be set because [Citrix VM Tools] are not installed on this VM.. /// public static string DMC_UNAVAILABLE_NOTOOLS { get { @@ -12037,7 +12752,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A memory range cannot be set because [Citrix VM Tools] are not installed on these VMs. ähnelt. + /// Looks up a localized string similar to A memory range cannot be set because [Citrix VM Tools] are not installed on these VMs.. /// public static string DMC_UNAVAILABLE_NOTOOLS_PLURAL { get { @@ -12046,7 +12761,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A memory range cannot be set because the operating system on this VM does not support it. ähnelt. + /// Looks up a localized string similar to A memory range cannot be set because the operating system on this VM does not support it.. /// public static string DMC_UNAVAILABLE_NOTSUPPORTED { get { @@ -12055,7 +12770,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A memory range cannot be set because the operating systems on these VMs do not support it. ähnelt. + /// Looks up a localized string similar to A memory range cannot be set because the operating systems on these VMs do not support it.. /// public static string DMC_UNAVAILABLE_NOTSUPPORTED_PLURAL { get { @@ -12064,7 +12779,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A memory range cannot be set because [Citrix VM Tools] are out of date on this VM. ähnelt. + /// Looks up a localized string similar to A memory range cannot be set because [Citrix VM Tools] are out of date on this VM.. /// public static string DMC_UNAVAILABLE_OLDTOOLS { get { @@ -12073,7 +12788,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A memory range cannot be set because [Citrix VM Tools] are out of date on these VMs. ähnelt. + /// Looks up a localized string similar to A memory range cannot be set because [Citrix VM Tools] are out of date on these VMs.. /// public static string DMC_UNAVAILABLE_OLDTOOLS_PLURAL { get { @@ -12082,7 +12797,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A memory range cannot be set for this template. ähnelt. + /// Looks up a localized string similar to A memory range cannot be set for this template.. /// public static string DMC_UNAVAILABLE_TEMPLATE { get { @@ -12091,7 +12806,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A memory range cannot be set for this VM. ähnelt. + /// Looks up a localized string similar to A memory range cannot be set for this VM.. /// public static string DMC_UNAVAILABLE_VM { get { @@ -12100,7 +12815,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A memory range cannot be set for these VMs. ähnelt. + /// Looks up a localized string similar to A memory range cannot be set for these VMs.. /// public static string DMC_UNAVAILABLE_VMS { get { @@ -12109,7 +12824,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Don't show this message again ähnelt. + /// Looks up a localized string similar to &Don't show this message again. /// public static string DO_NOT_SHOW_THIS_MESSAGE { get { @@ -12118,7 +12833,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Container Details ähnelt. + /// Looks up a localized string similar to Container Details. /// public static string DOCKER_DETAIL_TAB_TITLE { get { @@ -12127,7 +12842,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die API Version ähnelt. + /// Looks up a localized string similar to API Version. /// public static string DOCKER_INFO_API_VERSION { get { @@ -12136,7 +12851,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Arch ähnelt. + /// Looks up a localized string similar to Arch. /// public static string DOCKER_INFO_ARCH { get { @@ -12145,7 +12860,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Debug ähnelt. + /// Looks up a localized string similar to Debug. /// public static string DOCKER_INFO_DEBUG { get { @@ -12154,7 +12869,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Driver ähnelt. + /// Looks up a localized string similar to Driver. /// public static string DOCKER_INFO_DRIVER { get { @@ -12163,7 +12878,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Driver Status ähnelt. + /// Looks up a localized string similar to Driver Status. /// public static string DOCKER_INFO_DRIVER_STATUS { get { @@ -12172,7 +12887,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Execution Driver ähnelt. + /// Looks up a localized string similar to Execution Driver. /// public static string DOCKER_INFO_EXECUTION_DRIVER { get { @@ -12181,7 +12896,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Git Commit ähnelt. + /// Looks up a localized string similar to Git Commit. /// public static string DOCKER_INFO_GIT_COMMIT { get { @@ -12190,7 +12905,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Go Version ähnelt. + /// Looks up a localized string similar to Go Version. /// public static string DOCKER_INFO_GO_VERSION { get { @@ -12199,7 +12914,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Index Server Address ähnelt. + /// Looks up a localized string similar to Index Server Address. /// public static string DOCKER_INFO_INDEX_SERVER_ADDRESS { get { @@ -12208,7 +12923,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Initiate Path ähnelt. + /// Looks up a localized string similar to Initiate Path. /// public static string DOCKER_INFO_INITIATE_PATH { get { @@ -12217,7 +12932,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Initiate Sha1 ähnelt. + /// Looks up a localized string similar to Initiate Sha1. /// public static string DOCKER_INFO_INITIATE_SHA1 { get { @@ -12226,7 +12941,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die IPv4 Forwarding ähnelt. + /// Looks up a localized string similar to IPv4 Forwarding. /// public static string DOCKER_INFO_IPV4_FORWARDING { get { @@ -12235,7 +12950,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Kernel Version ähnelt. + /// Looks up a localized string similar to Kernel Version. /// public static string DOCKER_INFO_KERNEL_VERSION { get { @@ -12244,7 +12959,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Labels ähnelt. + /// Looks up a localized string similar to Labels. /// public static string DOCKER_INFO_LABELS { get { @@ -12253,7 +12968,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory Limit ähnelt. + /// Looks up a localized string similar to Memory Limit. /// public static string DOCKER_INFO_MEMORY_LIMIT { get { @@ -12262,7 +12977,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NCPU ähnelt. + /// Looks up a localized string similar to NCPU. /// public static string DOCKER_INFO_NCPU { get { @@ -12271,7 +12986,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NEvents Listener ähnelt. + /// Looks up a localized string similar to NEvents Listener. /// public static string DOCKER_INFO_NEVENT_LISTENER { get { @@ -12280,7 +12995,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NFd ähnelt. + /// Looks up a localized string similar to NFd. /// public static string DOCKER_INFO_NFD { get { @@ -12289,7 +13004,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NGoroutines ähnelt. + /// Looks up a localized string similar to NGoroutines. /// public static string DOCKER_INFO_NGOROUTINES { get { @@ -12298,7 +13013,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Root Directory ähnelt. + /// Looks up a localized string similar to Root Directory. /// public static string DOCKER_INFO_ROOT_DIR { get { @@ -12307,7 +13022,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Swap Limit ähnelt. + /// Looks up a localized string similar to Swap Limit. /// public static string DOCKER_INFO_SWAP_LIMIT { get { @@ -12316,7 +13031,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Version ähnelt. + /// Looks up a localized string similar to Version. /// public static string DOCKER_INFO_VERSION { get { @@ -12325,7 +13040,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Container Processes ähnelt. + /// Looks up a localized string similar to Container Processes. /// public static string DOCKER_PROCESS_TAB_TITLE { get { @@ -12334,7 +13049,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die does not use ähnelt. + /// Looks up a localized string similar to does not use. /// public static string DOES_NOT_USE { get { @@ -12343,7 +13058,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Don't select a target server ähnelt. + /// Looks up a localized string similar to Don't select a target server. /// public static string DONT_SELECT_TARGET_SERVER { get { @@ -12352,7 +13067,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} is now available ähnelt. + /// Looks up a localized string similar to {0} is now available. /// public static string DOWLOAD_LATEST_XS_TITLE { get { @@ -12361,7 +13076,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Download canceled ähnelt. + /// Looks up a localized string similar to Download canceled. /// public static string DOWNLOAD_AND_EXTRACT_ACTION_DOWNLOAD_CANCELLED_DESC { get { @@ -12370,7 +13085,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Downloading update {0} ähnelt. + /// Looks up a localized string similar to Downloading update {0}. /// public static string DOWNLOAD_AND_EXTRACT_ACTION_DOWNLOADING_DESC { get { @@ -12379,7 +13094,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Downloading update {0} ({1} of {2})... ähnelt. + /// Looks up a localized string similar to Downloading update {0} ({1} of {2}).... /// public static string DOWNLOAD_AND_EXTRACT_ACTION_DOWNLOADING_DETAILS_DESC { get { @@ -12388,7 +13103,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Extracting update {0} ähnelt. + /// Looks up a localized string similar to Extracting update {0}. /// public static string DOWNLOAD_AND_EXTRACT_ACTION_EXTRACTING_DESC { get { @@ -12397,7 +13112,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot extract the update file from downloaded archive. Please see application logs for more details. ähnelt. + /// Looks up a localized string similar to Cannot extract the update file from downloaded archive. Please see application logs for more details.. /// public static string DOWNLOAD_AND_EXTRACT_ACTION_EXTRACTING_ERROR { get { @@ -12406,7 +13121,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update file could not be located. Please see application logs for more details. ähnelt. + /// Looks up a localized string similar to Update file could not be located. Please see application logs for more details.. /// public static string DOWNLOAD_AND_EXTRACT_ACTION_FILE_NOT_FOUND { get { @@ -12415,7 +13130,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Download and extract update {0} ähnelt. + /// Looks up a localized string similar to Download and extract update {0}. /// public static string DOWNLOAD_AND_EXTRACT_ACTION_TITLE { get { @@ -12424,7 +13139,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Download... ähnelt. + /// Looks up a localized string similar to Download.... /// public static string DOWNLOAD_ELLIPSES { get { @@ -12433,7 +13148,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} is now available. Download the latest at the [Citrix] website. ähnelt. + /// Looks up a localized string similar to {0} is now available. Download the latest at the [Citrix] website.. /// public static string DOWNLOAD_LATEST_XS_BODY { get { @@ -12442,7 +13157,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Downloading update from '{0}'... ähnelt. + /// Looks up a localized string similar to Downloading update from '{0}'.... /// public static string DOWNLOADING_PATCH_FROM { get { @@ -12451,7 +13166,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Configure... ähnelt. + /// Looks up a localized string similar to &Configure.... /// public static string DR_CONFIGURE_AMP { get { @@ -12460,7 +13175,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure DR on '{0}' ähnelt. + /// Looks up a localized string similar to Configure DR on '{0}'. /// public static string DR_CONFIGURE_TITLE { get { @@ -12469,7 +13184,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You can only select up to {0} SRs to store the VM configuration data. ähnelt. + /// Looks up a localized string similar to You can only select up to {0} SRs to store the VM configuration data.. /// public static string DR_CONFIGURE_TOO_MANY_SRS { get { @@ -12478,7 +13193,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Dr&y-run... ähnelt. + /// Looks up a localized string similar to Dr&y-run.... /// public static string DR_DRYRUN_AMP { get { @@ -12487,7 +13202,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fail &back... ähnelt. + /// Looks up a localized string similar to Fail &back.... /// public static string DR_FAILBACK_AMP { get { @@ -12496,7 +13211,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fail &over... ähnelt. + /// Looks up a localized string similar to Fail &over.... /// public static string DR_FAILOVER_AMP { get { @@ -12505,7 +13220,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA on pool {0} ähnelt. + /// Looks up a localized string similar to HA on pool {0}. /// public static string DR_HA_CHECK_DESCRIPTION { get { @@ -12514,7 +13229,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Disaster Recovery Wizard... ähnelt. + /// Looks up a localized string similar to &Disaster Recovery Wizard.... /// public static string DR_WIZARD_AMP { get { @@ -12523,7 +13238,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vApp '{0}' ähnelt. + /// Looks up a localized string similar to vApp '{0}'. /// public static string DR_WIZARD_APPLIANCE_CHECK_DESCRIPTION { get { @@ -12532,7 +13247,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Current pool ähnelt. + /// Looks up a localized string similar to Current pool. /// public static string DR_WIZARD_APPLIANCESPAGE_CURRENT_POOL { get { @@ -12541,7 +13256,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the vApps and individual VMs you want to fail back and specify the required power state for them after they have been recovered to pool ‘{0}’. ähnelt. + /// Looks up a localized string similar to Select the vApps and individual VMs you want to fail back and specify the required power state for them after they have been recovered to pool ‘{0}’.. /// public static string DR_WIZARD_APPLIANCESPAGE_DESCRIPTION_FAILBACK { get { @@ -12550,7 +13265,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the vApps and individual VMs you want to recover and specify the required power state for them after they have been recovered. ähnelt. + /// Looks up a localized string similar to Select the vApps and individual VMs you want to recover and specify the required power state for them after they have been recovered.. /// public static string DR_WIZARD_APPLIANCESPAGE_DESCRIPTION_FAILOVER { get { @@ -12559,7 +13274,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Do not start up failed back vApps and VMs ähnelt. + /// Looks up a localized string similar to &Do not start up failed back vApps and VMs. /// public static string DR_WIZARD_APPLIANCESPAGE_FAILBACK_DONOTSTART { get { @@ -12568,7 +13283,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do not start up failed back vApps and VMs ähnelt. + /// Looks up a localized string similar to Do not start up failed back vApps and VMs. /// public static string DR_WIZARD_APPLIANCESPAGE_FAILBACK_DONOTSTART_NOAMP { get { @@ -12577,7 +13292,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die S&tart up all failed back vApps and VMs immediately ähnelt. + /// Looks up a localized string similar to S&tart up all failed back vApps and VMs immediately. /// public static string DR_WIZARD_APPLIANCESPAGE_FAILBACK_START { get { @@ -12586,7 +13301,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start up all failed back vApps and VMs immediately ähnelt. + /// Looks up a localized string similar to Start up all failed back vApps and VMs immediately. /// public static string DR_WIZARD_APPLIANCESPAGE_FAILBACK_START_NOAMP { get { @@ -12595,7 +13310,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sta&rt up failed back vApps and VMs in a paused state ähnelt. + /// Looks up a localized string similar to Sta&rt up failed back vApps and VMs in a paused state. /// public static string DR_WIZARD_APPLIANCESPAGE_FAILBACK_STARTPAUSED { get { @@ -12604,7 +13319,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start up failed back vApps and VMs in a paused state ähnelt. + /// Looks up a localized string similar to Start up failed back vApps and VMs in a paused state. /// public static string DR_WIZARD_APPLIANCESPAGE_FAILBACK_STARTPAUSED_NOAMP { get { @@ -12613,7 +13328,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Do not start up recovered vApps and VMs ähnelt. + /// Looks up a localized string similar to &Do not start up recovered vApps and VMs. /// public static string DR_WIZARD_APPLIANCESPAGE_FAILOVER_DONOTSTART { get { @@ -12622,7 +13337,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do not start up recovered vApps and VMs ähnelt. + /// Looks up a localized string similar to Do not start up recovered vApps and VMs. /// public static string DR_WIZARD_APPLIANCESPAGE_FAILOVER_DONOTSTART_NOAMP { get { @@ -12631,7 +13346,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die S&tart up all recovered vApps and VMs immediately ähnelt. + /// Looks up a localized string similar to S&tart up all recovered vApps and VMs immediately. /// public static string DR_WIZARD_APPLIANCESPAGE_FAILOVER_START { get { @@ -12640,7 +13355,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start up all recovered vApps and VMs immediately ähnelt. + /// Looks up a localized string similar to Start up all recovered vApps and VMs immediately. /// public static string DR_WIZARD_APPLIANCESPAGE_FAILOVER_START_NOAMP { get { @@ -12649,7 +13364,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sta&rt up recovered vApps and VMs in a paused state ähnelt. + /// Looks up a localized string similar to Sta&rt up recovered vApps and VMs in a paused state. /// public static string DR_WIZARD_APPLIANCESPAGE_FAILOVER_STARTPAUSED { get { @@ -12658,7 +13373,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start up recovered vApps and VMs in a paused state ähnelt. + /// Looks up a localized string similar to Start up recovered vApps and VMs in a paused state. /// public static string DR_WIZARD_APPLIANCESPAGE_FAILOVER_STARTPAUSED_NOAMP { get { @@ -12667,7 +13382,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select vApps && VMs ähnelt. + /// Looks up a localized string similar to Select vApps && VMs. /// public static string DR_WIZARD_APPLIANCESPAGE_TEXT { get { @@ -12676,7 +13391,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the vApps or individual virtual machines to fail back to the target pool ähnelt. + /// Looks up a localized string similar to Select the vApps or individual virtual machines to fail back to the target pool. /// public static string DR_WIZARD_APPLIANCESPAGE_TITLE_FAILBACK { get { @@ -12685,7 +13400,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the vApps or individual virtual machines to fail over to the target pool ähnelt. + /// Looks up a localized string similar to Select the vApps or individual virtual machines to fail over to the target pool. /// public static string DR_WIZARD_APPLIANCESPAGE_TITLE_FAILOVER { get { @@ -12694,7 +13409,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [{0} on {1}] ähnelt. + /// Looks up a localized string similar to [{0} on {1}]. /// public static string DR_WIZARD_APPPLIANCESPAGE_POOL_DESCRIPTION { get { @@ -12703,7 +13418,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking for existing vApps and VMs in '{0}' ähnelt. + /// Looks up a localized string similar to Checking for existing vApps and VMs in '{0}'. /// public static string DR_WIZARD_CHECKING_EXISTING_APPLIANCES_AND_VMS { get { @@ -12712,7 +13427,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking HA status ähnelt. + /// Looks up a localized string similar to Checking HA status. /// public static string DR_WIZARD_CHECKING_HA_STATUS { get { @@ -12721,7 +13436,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking power state in source pools ähnelt. + /// Looks up a localized string similar to Checking power state in source pools. /// public static string DR_WIZARD_CHECKING_POWER_STATE_IN_SOURCE_POOLS { get { @@ -12730,7 +13445,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking storage availability in '{0}' ähnelt. + /// Looks up a localized string similar to Checking storage availability in '{0}'. /// public static string DR_WIZARD_CHECKING_VMS_CAN_BE_RECOVERED { get { @@ -12739,7 +13454,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disaster Recovery - Test Failover to pool '{0}' ähnelt. + /// Looks up a localized string similar to Disaster Recovery - Test Failover to pool '{0}'. /// public static string DR_WIZARD_DRYRUN_TITLE { get { @@ -12748,7 +13463,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disaster Recovery - Failback to pool '{0}' ähnelt. + /// Looks up a localized string similar to Disaster Recovery - Failback to pool '{0}'. /// public static string DR_WIZARD_FAILBACK_TITLE { get { @@ -12757,7 +13472,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disaster Recovery - Failover to pool '{0}' ähnelt. + /// Looks up a localized string similar to Disaster Recovery - Failover to pool '{0}'. /// public static string DR_WIZARD_FAILOVER_TITLE { get { @@ -12766,7 +13481,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This wizard will take you through the steps needed to perform a test failover of your critical vApps and VMs. The vApps and VMs you select will be recovered to pool ‘{0}’ on the DR site but will not be started up. ähnelt. + /// Looks up a localized string similar to This wizard will take you through the steps needed to perform a test failover of your critical vApps and VMs. The vApps and VMs you select will be recovered to pool ‘{0}’ on the DR site but will not be started up.. /// public static string DR_WIZARD_FIRSTPAGE_DRYRUN_LINE1 { get { @@ -12775,7 +13490,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuration information for the vApps and VMs to be failed over will be retrieved from remote storage mirrors. Before test failover begins, the wizard will run a number of checks to ensure that the selected vApps and VMs can be recovered to your DR site. ähnelt. + /// Looks up a localized string similar to Configuration information for the vApps and VMs to be failed over will be retrieved from remote storage mirrors. Before test failover begins, the wizard will run a number of checks to ensure that the selected vApps and VMs can be recovered to your DR site.. /// public static string DR_WIZARD_FIRSTPAGE_DRYRUN_LINE2 { get { @@ -12784,10 +13499,10 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You will need to provide information about the following as you step through this wizard: + /// Looks up a localized string similar to You will need to provide information about the following as you step through this wizard: /// ///* The storage mirrors where the vApp and VM configuration data is currently stored. - ///* Which vApps and VMs you want to fail over to the DR site. ähnelt. + ///* Which vApps and VMs you want to fail over to the DR site.. /// public static string DR_WIZARD_FIRSTPAGE_DRYRUN_LINE3 { get { @@ -12796,7 +13511,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This wizard will take you through the steps needed to fail back vApps and VMs to your primary data site. ähnelt. + /// Looks up a localized string similar to This wizard will take you through the steps needed to fail back vApps and VMs to your primary data site.. /// public static string DR_WIZARD_FIRSTPAGE_FAILBACK_LINE1 { get { @@ -12805,7 +13520,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuration information for the vApps and VMs to be failed back will be retrieved from remote storage mirrors. Before failback begins, the wizard will run a number of checks to ensure that the selected vApps and VMs can be recovered to your primary data site. ähnelt. + /// Looks up a localized string similar to Configuration information for the vApps and VMs to be failed back will be retrieved from remote storage mirrors. Before failback begins, the wizard will run a number of checks to ensure that the selected vApps and VMs can be recovered to your primary data site.. /// public static string DR_WIZARD_FIRSTPAGE_FAILBACK_LINE2 { get { @@ -12814,10 +13529,10 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You will need to provide information about the following as you step through this wizard: + /// Looks up a localized string similar to You will need to provide information about the following as you step through this wizard: /// ///* The storage mirrors where the vApp and VM configuration data is currently stored. - ///* Which vApps and VMs you want to fail back. ähnelt. + ///* Which vApps and VMs you want to fail back.. /// public static string DR_WIZARD_FIRSTPAGE_FAILBACK_LINE3 { get { @@ -12826,7 +13541,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Before failback can take place, storage mirroring – remote replication of your VM data – must be halted. ähnelt. + /// Looks up a localized string similar to Before failback can take place, storage mirroring – remote replication of your VM data – must be halted.. /// public static string DR_WIZARD_FIRSTPAGE_FAILBACK_LINE4 { get { @@ -12835,7 +13550,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This wizard will take you through the steps needed to fail over your critical vApps and VMs in the event of a site/datacenter failure at your primary data site. ähnelt. + /// Looks up a localized string similar to This wizard will take you through the steps needed to fail over your critical vApps and VMs in the event of a site/datacenter failure at your primary data site.. /// public static string DR_WIZARD_FIRSTPAGE_FAILOVER_LINE1 { get { @@ -12844,7 +13559,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuration information for the vApps and VMs to be recovered will be retrieved from remote storage mirrors. Before failover begins, the wizard will run a number of checks to ensure that the selected vApps and VMs can be brought back up on your DR site. ähnelt. + /// Looks up a localized string similar to Configuration information for the vApps and VMs to be recovered will be retrieved from remote storage mirrors. Before failover begins, the wizard will run a number of checks to ensure that the selected vApps and VMs can be brought back up on your DR site.. /// public static string DR_WIZARD_FIRSTPAGE_FAILOVER_LINE2 { get { @@ -12853,10 +13568,10 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You will need to provide information about the following as you step though this wizard: + /// Looks up a localized string similar to You will need to provide information about the following as you step though this wizard: /// ///* The storage mirrors where the vApp and VM configuration data is currently stored. - ///* Which vApps and VMs you want to fail over to the DR site. ähnelt. + ///* Which vApps and VMs you want to fail over to the DR site.. /// public static string DR_WIZARD_FIRSTPAGE_FAILOVER_LINE3 { get { @@ -12865,7 +13580,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Before failover can take place, storage mirroring – remote replication of your VM data – must be halted. ähnelt. + /// Looks up a localized string similar to Before failover can take place, storage mirroring – remote replication of your VM data – must be halted.. /// public static string DR_WIZARD_FIRSTPAGE_FAILOVER_LINE4 { get { @@ -12874,7 +13589,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Before You Start ähnelt. + /// Looks up a localized string similar to Before You Start. /// public static string DR_WIZARD_FIRSTPAGE_TEXT { get { @@ -12883,7 +13598,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Test failover prerequisites ähnelt. + /// Looks up a localized string similar to Test failover prerequisites. /// public static string DR_WIZARD_FIRSTPAGE_TITLE_DRYRUN { get { @@ -12892,7 +13607,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failback prerequisites ähnelt. + /// Looks up a localized string similar to Failback prerequisites. /// public static string DR_WIZARD_FIRSTPAGE_TITLE_FAILBACK { get { @@ -12901,7 +13616,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failover prerequisites ähnelt. + /// Looks up a localized string similar to Failover prerequisites. /// public static string DR_WIZARD_FIRSTPAGE_TITLE_FAILOVER { get { @@ -12910,7 +13625,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Click Fail Over to begin the test recovery of the selected vApps and VMs. ähnelt. + /// Looks up a localized string similar to Click Fail Over to begin the test recovery of the selected vApps and VMs.. /// public static string DR_WIZARD_PRECHECKPAGE_CONTINUE_DRYRUN { get { @@ -12919,7 +13634,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Click Fail Back to begin recovery of the selected vApps and VMs to your primary data site. ähnelt. + /// Looks up a localized string similar to Click Fail Back to begin recovery of the selected vApps and VMs to your primary data site.. /// public static string DR_WIZARD_PRECHECKPAGE_CONTINUE_FAILBACK { get { @@ -12928,7 +13643,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Click Fail Over to begin recovery of the selected vApps and VMs. ähnelt. + /// Looks up a localized string similar to Click Fail Over to begin recovery of the selected vApps and VMs.. /// public static string DR_WIZARD_PRECHECKPAGE_CONTINUE_FAILOVER { get { @@ -12937,7 +13652,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failover pre-checks are performed to ensure that the selected vApps and VMs can be failed back to the selected pool. Please take appropriate action to resolve any issues. ähnelt. + /// Looks up a localized string similar to Failover pre-checks are performed to ensure that the selected vApps and VMs can be failed back to the selected pool. Please take appropriate action to resolve any issues.. /// public static string DR_WIZARD_PRECHECKPAGE_DESCRIPTION_FAILBACK { get { @@ -12946,7 +13661,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pre-checks are performed to ensure that the selected vApps and VMs can be failed over. Please take appropriate action to resolve any issues. ähnelt. + /// Looks up a localized string similar to Pre-checks are performed to ensure that the selected vApps and VMs can be failed over. Please take appropriate action to resolve any issues.. /// public static string DR_WIZARD_PRECHECKPAGE_DESCRIPTION_FAILOVER { get { @@ -12955,7 +13670,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deselect ähnelt. + /// Looks up a localized string similar to Deselect. /// public static string DR_WIZARD_PRECHECKPAGE_DESELECT { get { @@ -12964,7 +13679,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} Failed ähnelt. + /// Looks up a localized string similar to {0} Failed. /// public static string DR_WIZARD_PRECHECKPAGE_FAILED { get { @@ -12973,7 +13688,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pre-check {0} of {1}: {2} ähnelt. + /// Looks up a localized string similar to Pre-check {0} of {1}: {2}. /// public static string DR_WIZARD_PRECHECKPAGE_HEADER { get { @@ -12982,7 +13697,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die F&ail Back ähnelt. + /// Looks up a localized string similar to F&ail Back. /// public static string DR_WIZARD_PRECHECKPAGE_NEXT_FAILBACK { get { @@ -12991,7 +13706,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die F&ail Over ähnelt. + /// Looks up a localized string similar to F&ail Over. /// public static string DR_WIZARD_PRECHECKPAGE_NEXT_FAILOVER { get { @@ -13000,7 +13715,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: OK ähnelt. + /// Looks up a localized string similar to {0}: OK. /// public static string DR_WIZARD_PRECHECKPAGE_OK { get { @@ -13009,7 +13724,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: {1} ähnelt. + /// Looks up a localized string similar to {0}: {1}. /// public static string DR_WIZARD_PRECHECKPAGE_PROBLEM { get { @@ -13018,7 +13733,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resolve ähnelt. + /// Looks up a localized string similar to Resolve. /// public static string DR_WIZARD_PRECHECKPAGE_RESOLVE { get { @@ -13027,7 +13742,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failover prechecks completed: {0} issues found ähnelt. + /// Looks up a localized string similar to Failover pre-checks completed: {0} issues found. /// public static string DR_WIZARD_PRECHECKPAGE_STATUS_FAILURE { get { @@ -13036,7 +13751,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Running failover pre-checks: ähnelt. + /// Looks up a localized string similar to Running failover pre-checks:. /// public static string DR_WIZARD_PRECHECKPAGE_STATUS_RUNNING { get { @@ -13045,7 +13760,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failover prechecks completed: No issues found ähnelt. + /// Looks up a localized string similar to Failover pre-checks completed: No issues found. /// public static string DR_WIZARD_PRECHECKPAGE_STATUS_SUCCESS { get { @@ -13054,7 +13769,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pre-checks ähnelt. + /// Looks up a localized string similar to Pre-checks. /// public static string DR_WIZARD_PRECHECKPAGE_TEXT { get { @@ -13063,7 +13778,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Check that the selected vApps and VMs can be failed back ähnelt. + /// Looks up a localized string similar to Check that the selected vApps and VMs can be failed back. /// public static string DR_WIZARD_PRECHECKPAGE_TITLE_FAILBACK { get { @@ -13072,7 +13787,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Check that the selected vApps and VMs can be failed over ähnelt. + /// Looks up a localized string similar to Check that the selected vApps and VMs can be failed over. /// public static string DR_WIZARD_PRECHECKPAGE_TITLE_FAILOVER { get { @@ -13081,7 +13796,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Newer versions of its VMs already exist on pool {0} ähnelt. + /// Looks up a localized string similar to Newer versions of its VMs already exist on pool {0}. /// public static string DR_WIZARD_PROBLEM_EXISTING_APPLIANCE { get { @@ -13090,7 +13805,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete VMs... ähnelt. + /// Looks up a localized string similar to Delete VMs.... /// public static string DR_WIZARD_PROBLEM_EXISTING_APPLIANCE_HELPMESSAGE { get { @@ -13099,7 +13814,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Newer version already exists on pool {0} ähnelt. + /// Looks up a localized string similar to Newer version already exists on pool {0}. /// public static string DR_WIZARD_PROBLEM_EXISTING_VM { get { @@ -13108,7 +13823,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete VM ähnelt. + /// Looks up a localized string similar to Delete VM. /// public static string DR_WIZARD_PROBLEM_EXISTING_VM_HELPMESSAGE { get { @@ -13117,7 +13832,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabled ähnelt. + /// Looks up a localized string similar to Enabled. /// public static string DR_WIZARD_PROBLEM_HA_ENABLED { get { @@ -13126,7 +13841,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uses local storage '{0}' ähnelt. + /// Looks up a localized string similar to Uses local storage '{0}'. /// public static string DR_WIZARD_PROBLEM_LOCAL_STORAGE { get { @@ -13135,7 +13850,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Local storage ähnelt. + /// Looks up a localized string similar to Local storage. /// public static string DR_WIZARD_PROBLEM_LOCAL_STORAGE_HELPMESSAGE { get { @@ -13144,7 +13859,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Missing {0} SRs ähnelt. + /// Looks up a localized string similar to Missing {0} SRs. /// public static string DR_WIZARD_PROBLEM_MISSING_MULTIPLE_SRS { get { @@ -13153,7 +13868,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attach SRs ähnelt. + /// Looks up a localized string similar to Attach SRs. /// public static string DR_WIZARD_PROBLEM_MISSING_MULTIPLE_SRS_HELPMESSAGE { get { @@ -13162,7 +13877,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Missing SRs information not found ähnelt. + /// Looks up a localized string similar to Missing SRs information not found. /// public static string DR_WIZARD_PROBLEM_MISSING_MULTIPLE_SRS_NO_INFO { get { @@ -13171,7 +13886,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Missing SR '{0}' ähnelt. + /// Looks up a localized string similar to Missing SR '{0}'. /// public static string DR_WIZARD_PROBLEM_MISSING_SR { get { @@ -13180,7 +13895,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attach SR ähnelt. + /// Looks up a localized string similar to Attach SR. /// public static string DR_WIZARD_PROBLEM_MISSING_SR_HELPMESSAGE { get { @@ -13189,7 +13904,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Is running on pool '{0}' ähnelt. + /// Looks up a localized string similar to Is running on pool '{0}'. /// public static string DR_WIZARD_PROBLEM_RUNNING_APPLIANCE { get { @@ -13198,7 +13913,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut down vApp ähnelt. + /// Looks up a localized string similar to Shut down vApp. /// public static string DR_WIZARD_PROBLEM_RUNNING_APPLIANCE_HELPMESSAGE { get { @@ -13207,7 +13922,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Is running on pool '{0}' ähnelt. + /// Looks up a localized string similar to Is running on pool '{0}'. /// public static string DR_WIZARD_PROBLEM_RUNNING_VM { get { @@ -13216,7 +13931,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut down VM ähnelt. + /// Looks up a localized string similar to Shut down VM. /// public static string DR_WIZARD_PROBLEM_RUNNING_VM_HELPMESSAGE { get { @@ -13225,7 +13940,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Test failover to pool '{0}' is complete. ähnelt. + /// Looks up a localized string similar to Test failover to pool '{0}' is complete.. /// public static string DR_WIZARD_RECOVERPAGE_COMPLETE_DRYRUN { get { @@ -13234,7 +13949,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failback to pool '{0}' is complete. ähnelt. + /// Looks up a localized string similar to Failback to pool '{0}' is complete.. /// public static string DR_WIZARD_RECOVERPAGE_COMPLETE_FAILBACK { get { @@ -13243,7 +13958,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] Disaster Recovery is complete. ähnelt. + /// Looks up a localized string similar to [XenServer] Disaster Recovery is complete.. /// public static string DR_WIZARD_RECOVERPAGE_COMPLETE_FAILOVER { get { @@ -13252,7 +13967,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Click Next to remove the vApps and VMs that were failed over and to see the summary report. ähnelt. + /// Looks up a localized string similar to Click Next to remove the vApps and VMs that were failed over and to see the summary report.. /// public static string DR_WIZARD_RECOVERPAGE_CONTINUE_DRYRUN { get { @@ -13261,7 +13976,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Click Next to see the summary report. ähnelt. + /// Looks up a localized string similar to Click Next to see the summary report.. /// public static string DR_WIZARD_RECOVERPAGE_CONTINUE_FAILBACK { get { @@ -13270,7 +13985,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Click Next to see the summary report. ähnelt. + /// Looks up a localized string similar to Click Next to see the summary report.. /// public static string DR_WIZARD_RECOVERPAGE_CONTINUE_FAILOVER { get { @@ -13279,7 +13994,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Test failover is in progress. This may take some time. ähnelt. + /// Looks up a localized string similar to Test failover is in progress. This may take some time.. /// public static string DR_WIZARD_RECOVERPAGE_IN_PROGRESS_DRYRUN { get { @@ -13288,7 +14003,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failback is in progress. This may take some time. ähnelt. + /// Looks up a localized string similar to Failback is in progress. This may take some time.. /// public static string DR_WIZARD_RECOVERPAGE_IN_PROGRESS_FAILBACK { get { @@ -13297,7 +14012,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] Disaster Recovery is in progress. This may take some time. ähnelt. + /// Looks up a localized string similar to [XenServer] Disaster Recovery is in progress. This may take some time.. /// public static string DR_WIZARD_RECOVERPAGE_IN_PROGRESS_FAILOVER { get { @@ -13306,7 +14021,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Overall progress: {0} of {1} tasks completed ähnelt. + /// Looks up a localized string similar to Overall progress: {0} of {1} tasks completed. /// public static string DR_WIZARD_RECOVERPAGE_OVERALL_PROGRESS { get { @@ -13315,7 +14030,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Recover from {0} ähnelt. + /// Looks up a localized string similar to Recover from {0}. /// public static string DR_WIZARD_RECOVERPAGE_RECOVER_FROM { get { @@ -13324,7 +14039,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Recovering from {0} ähnelt. + /// Looks up a localized string similar to Recovering from {0}. /// public static string DR_WIZARD_RECOVERPAGE_RECOVERING_FROM { get { @@ -13333,7 +14048,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Completed ähnelt. + /// Looks up a localized string similar to Completed. /// public static string DR_WIZARD_RECOVERPAGE_STATUS_COMPLETED { get { @@ -13342,7 +14057,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed ähnelt. + /// Looks up a localized string similar to Failed. /// public static string DR_WIZARD_RECOVERPAGE_STATUS_FAILED { get { @@ -13351,7 +14066,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pending ähnelt. + /// Looks up a localized string similar to Pending. /// public static string DR_WIZARD_RECOVERPAGE_STATUS_PENDING { get { @@ -13360,7 +14075,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Working ähnelt. + /// Looks up a localized string similar to Working. /// public static string DR_WIZARD_RECOVERPAGE_STATUS_WORKING { get { @@ -13369,7 +14084,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Progress ähnelt. + /// Looks up a localized string similar to Progress. /// public static string DR_WIZARD_RECOVERPAGE_TEXT { get { @@ -13378,7 +14093,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Progress of test failover to pool '{0}' ähnelt. + /// Looks up a localized string similar to Progress of test failover to pool '{0}'. /// public static string DR_WIZARD_RECOVERPAGE_TITLE_DRYRUN { get { @@ -13387,7 +14102,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Progress of failback to pool '{0}' ähnelt. + /// Looks up a localized string similar to Progress of failback to pool '{0}'. /// public static string DR_WIZARD_RECOVERPAGE_TITLE_FAILBACK { get { @@ -13396,7 +14111,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] Disaster Recovery progress ähnelt. + /// Looks up a localized string similar to [XenServer] Disaster Recovery progress. /// public static string DR_WIZARD_RECOVERPAGE_TITLE_FAILOVER { get { @@ -13405,7 +14120,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - Failed: {1} ähnelt. + /// Looks up a localized string similar to {0} - Failed: {1}. /// public static string DR_WIZARD_REPORT_ACTION_FAILED { get { @@ -13414,7 +14129,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - Succeeded ähnelt. + /// Looks up a localized string similar to {0} - Succeeded. /// public static string DR_WIZARD_REPORT_ACTION_SUCCEEDED { get { @@ -13423,7 +14138,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die DR cleanup ähnelt. + /// Looks up a localized string similar to DR cleanup. /// public static string DR_WIZARD_REPORT_DR_CLEANUP { get { @@ -13432,7 +14147,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Test Failover cleanup ähnelt. + /// Looks up a localized string similar to Test Failover cleanup. /// public static string DR_WIZARD_REPORT_DRYRUN_CLEANUP { get { @@ -13441,7 +14156,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SRs introduced during this wizard: {0} ähnelt. + /// Looks up a localized string similar to SRs introduced during this wizard: {0}. /// public static string DR_WIZARD_REPORT_INTRODUCED_SRS { get { @@ -13450,7 +14165,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SRs introduced during this wizard: None ähnelt. + /// Looks up a localized string similar to SRs introduced during this wizard: None. /// public static string DR_WIZARD_REPORT_INTRODUCED_SRS_NONE { get { @@ -13459,7 +14174,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Warnings: ähnelt. + /// Looks up a localized string similar to Warnings: . /// public static string DR_WIZARD_REPORT_PRECHECK_WARNINGS { get { @@ -13468,7 +14183,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Warnings: None ähnelt. + /// Looks up a localized string similar to Warnings: None. /// public static string DR_WIZARD_REPORT_PRECHECK_WARNINGS_NONE { get { @@ -13477,7 +14192,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Recovery process started ähnelt. + /// Looks up a localized string similar to Recovery process started. /// public static string DR_WIZARD_REPORT_RECOVERY_STARTED { get { @@ -13486,7 +14201,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Selected VMs and vApps, grouped by pool: ähnelt. + /// Looks up a localized string similar to Selected VMs and vApps, grouped by pool: . /// public static string DR_WIZARD_REPORT_SELECTED_METADATA { get { @@ -13495,7 +14210,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Power state after recovery: {0} ähnelt. + /// Looks up a localized string similar to Power state after recovery: {0}. /// public static string DR_WIZARD_REPORT_SELECTED_POWER_STATE { get { @@ -13504,7 +14219,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Selected SRs: ähnelt. + /// Looks up a localized string similar to Selected SRs: . /// public static string DR_WIZARD_REPORT_SELECTED_SRS { get { @@ -13513,7 +14228,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Summary ähnelt. + /// Looks up a localized string similar to Summary. /// public static string DR_WIZARD_REPORTPAGE_TEXT { get { @@ -13522,7 +14237,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Summary of test failover to pool '{0}' ähnelt. + /// Looks up a localized string similar to Summary of test failover to pool '{0}'. /// public static string DR_WIZARD_REPORTPAGE_TITLE_DRYRUN { get { @@ -13531,7 +14246,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Summary of failback to pool '{0}' ähnelt. + /// Looks up a localized string similar to Summary of failback to pool '{0}'. /// public static string DR_WIZARD_REPORTPAGE_TITLE_FAILBACK { get { @@ -13540,7 +14255,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Summary of failover to pool '{0}' ähnelt. + /// Looks up a localized string similar to Summary of failover to pool '{0}'. /// public static string DR_WIZARD_REPORTPAGE_TITLE_FAILOVER { get { @@ -13549,7 +14264,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the storage repositories (SRs) containing the configuration data for the VMs and vApps that you want to fail back. If you know which SRs contain your VMs' disks, you can also include them now. ähnelt. + /// Looks up a localized string similar to Select the storage repositories (SRs) containing the configuration data for the VMs and vApps that you want to fail back. If you know which SRs contain your VMs' disks, you can also include them now.. /// public static string DR_WIZARD_STORAGEPAGE_DESCRIPTION_FAILBACK { get { @@ -13558,7 +14273,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the storage repositories (SRs) containing the VM configuration data for the VMs and vApps that you want to fail over. If you know which SRs contain your VMs' disks, you can also include them now. ähnelt. + /// Looks up a localized string similar to Select the storage repositories (SRs) containing the VM configuration data for the VMs and vApps that you want to fail over. If you know which SRs contain your VMs' disks, you can also include them now.. /// public static string DR_WIZARD_STORAGEPAGE_DESCRIPTION_FAILOVER { get { @@ -13567,7 +14282,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No Storage Repositories were found ähnelt. + /// Looks up a localized string similar to No Storage Repositories were found. /// public static string DR_WIZARD_STORAGEPAGE_SCAN_RESULT_NONE { get { @@ -13576,8 +14291,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following Storage Repositories were found: - /// ähnelt. + /// Looks up a localized string similar to The following Storage Repositories were found: + ///. /// public static string DR_WIZARD_STORAGEPAGE_SCAN_RESULT_TITLE { get { @@ -13586,7 +14301,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Locate Mirrored SRs ähnelt. + /// Looks up a localized string similar to Locate Mirrored SRs. /// public static string DR_WIZARD_STORAGEPAGE_TEXT { get { @@ -13595,7 +14310,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Locate the storage repositories where your recovery data is stored ähnelt. + /// Looks up a localized string similar to Locate the storage repositories where your recovery data is stored. /// public static string DR_WIZARD_STORAGEPAGE_TITLE { get { @@ -13604,7 +14319,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM '{0}' ähnelt. + /// Looks up a localized string similar to VM '{0}'. /// public static string DR_WIZARD_VM_CHECK_DESCRIPTION { get { @@ -13613,7 +14328,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Already exists on pool {0}. It will be replaced. ähnelt. + /// Looks up a localized string similar to Already exists on pool {0}. It will be replaced.. /// public static string DR_WIZARD_WARNING_EXISTING_VM { get { @@ -13622,7 +14337,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Welcome ähnelt. + /// Looks up a localized string similar to Welcome. /// public static string DR_WIZARD_WELCOMEPAGE_TEXT { get { @@ -13631,7 +14346,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die What do you want to do? ähnelt. + /// Looks up a localized string similar to What do you want to do?. /// public static string DR_WIZARD_WELCOMEPAGE_TITLE { get { @@ -13640,7 +14355,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Dell supplemental pack is not installed. ähnelt. + /// Looks up a localized string similar to Dell supplemental pack is not installed.. /// public static string DRAC_NO_SUPP_PACK { get { @@ -13649,7 +14364,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die DRAC power on failed. Check your credentials and connectivity. ähnelt. + /// Looks up a localized string similar to DRAC power on failed. Check your credentials and connectivity.. /// public static string DRAC_POWERON_FAILED { get { @@ -13658,8 +14373,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot migrate this VM while a local CD is loaded. - ///Eject the CD and try again. ähnelt. + /// Looks up a localized string similar to Cannot migrate this VM while a local CD is loaded. + ///Eject the CD and try again.. /// public static string DRAG_DROP_LOCAL_CD_LOADED { get { @@ -13668,7 +14383,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot Migrate VM ähnelt. + /// Looks up a localized string similar to Cannot Migrate VM. /// public static string DRAG_DROP_LOCAL_CD_LOADED_TITLE { get { @@ -13677,7 +14392,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Duplex ähnelt. + /// Looks up a localized string similar to Duplex. /// public static string DUPLEX { get { @@ -13686,7 +14401,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die DVD drive ähnelt. + /// Looks up a localized string similar to DVD drive. /// public static string DVD_DRIVE { get { @@ -13695,7 +14410,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die DVD Drive {0}: ähnelt. + /// Looks up a localized string similar to DVD Drive {0}:. /// public static string DVD_DRIVE_LABEL_NUMBERED { get { @@ -13704,7 +14419,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maximum memory ähnelt. + /// Looks up a localized string similar to Maximum memory. /// public static string DYNAMIC_MAX { get { @@ -13713,7 +14428,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory ähnelt. + /// Looks up a localized string similar to Memory. /// public static string DYNAMIC_MEMORY_CONTROL { get { @@ -13722,7 +14437,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &{0} {1} ähnelt. + /// Looks up a localized string similar to &{0} {1}. /// public static string DYNAMIC_MENUITEM_WITH_ACCESS_KEY { get { @@ -13731,7 +14446,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} ähnelt. + /// Looks up a localized string similar to {0}. /// public static string DYNAMIC_MENUITEM_WITHOUT_ACCESS_KEY { get { @@ -13740,7 +14455,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Minimum memory ähnelt. + /// Looks up a localized string similar to Minimum memory. /// public static string DYNAMIC_MIN { get { @@ -13749,7 +14464,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Minimum memory: ähnelt. + /// Looks up a localized string similar to &Minimum memory:. /// public static string DYNAMIC_MIN_COLON { get { @@ -13758,7 +14473,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die P&roperties ähnelt. + /// Looks up a localized string similar to P&roperties. /// public static string EDIT { get { @@ -13767,7 +14482,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Edit Disk ähnelt. + /// Looks up a localized string similar to Edit Disk. /// public static string EDIT_DISK { get { @@ -13776,7 +14491,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die If you want this network to be automatically added to new VMs, check the box below. ähnelt. + /// Looks up a localized string similar to If you want this network to be automatically added to new VMs, check the box below.. /// public static string EDIT_NETWORK_BLURB_PHYSICAL { get { @@ -13785,7 +14500,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die If you want this network to be automatically added to new VMs, check the box below. You can also set whether you want the network to be internal only, or assign it a VLAN and NIC. ähnelt. + /// Looks up a localized string similar to If you want this network to be automatically added to new VMs, check the box below. You can also set whether you want the network to be internal only, or assign it a VLAN and NIC.. /// public static string EDIT_NETWORK_BLURB_VIRTUAL { get { @@ -13794,7 +14509,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will change the device position of one of this VM's system disks and may leave the VM unbootable. Are you sure you want to continue? ähnelt. + /// Looks up a localized string similar to This will change the device position of one of this VM's system disks and may leave the VM unbootable. Are you sure you want to continue?. /// public static string EDIT_SYS_DISK_WARNING { get { @@ -13803,7 +14518,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Edit Storage Settings ähnelt. + /// Looks up a localized string similar to Edit Storage Settings. /// public static string EDIT_SYS_DISK_WARNING_TITLE { get { @@ -13812,9 +14527,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die It may not be possible to start the selected VMs as they are using ISOs from an SR which is unavailable. + /// Looks up a localized string similar to It may not be possible to start the selected VMs as they are using ISOs from an SR which is unavailable. /// - ///Would you like to eject these ISOs before continuing? ähnelt. + ///Would you like to eject these ISOs before continuing?. /// public static string EJECT_BEFORE_VM_START_MESSAGE_BOX { get { @@ -13823,7 +14538,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Eject ähnelt. + /// Looks up a localized string similar to &Eject. /// public static string EJECT_BUTTON_LABEL { get { @@ -13832,7 +14547,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Eject CD ähnelt. + /// Looks up a localized string similar to Eject CD. /// public static string EJECT_CD { get { @@ -13841,7 +14556,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please eject your CD ähnelt. + /// Looks up a localized string similar to Please eject your CD. /// public static string EJECT_YOUR_CD { get { @@ -13850,7 +14565,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ... ähnelt. + /// Looks up a localized string similar to .... /// public static string ELLIPSIS { get { @@ -13859,7 +14574,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Email Alerts ähnelt. + /// Looks up a localized string similar to Email Alerts. /// public static string EMAIL_ALERTS { get { @@ -13868,7 +14583,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure email notification for policy alerts ähnelt. + /// Looks up a localized string similar to Configure email notification for policy alerts. /// public static string EMAIL_ALERTS_TITLE { get { @@ -13877,7 +14592,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Email Options ähnelt. + /// Looks up a localized string similar to Email Options. /// public static string EMAIL_OPTIONS { get { @@ -13886,7 +14601,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die <empty> ähnelt. + /// Looks up a localized string similar to <empty>. /// public static string EMPTY { get { @@ -13895,7 +14610,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There are no associated virtual disks or snapshots ähnelt. + /// Looks up a localized string similar to There are no associated virtual disks or snapshots. /// public static string EMPTY_LIST_DISK_SNAPSHOTS { get { @@ -13904,7 +14619,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ena&ble ähnelt. + /// Looks up a localized string similar to Ena&ble. /// public static string ENABLE { get { @@ -13913,7 +14628,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enable clustering. ähnelt. + /// Looks up a localized string similar to Enable clustering.. /// public static string ENABLE_CLUSTERING_ON_POOL { get { @@ -13922,7 +14637,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enable ähnelt. + /// Looks up a localized string similar to Enable. /// public static string ENABLE_PLAIN { get { @@ -13931,7 +14646,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die E&nable PVS-Accelerator... ähnelt. + /// Looks up a localized string similar to E&nable PVS-Accelerator.... /// public static string ENABLE_PVS_READ_CACHING_BUTTON { get { @@ -13940,7 +14655,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ena&ble PVS-Accelerator... ähnelt. + /// Looks up a localized string similar to Ena&ble PVS-Accelerator.... /// public static string ENABLE_PVS_READ_CACHING_MENU { get { @@ -13949,7 +14664,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose the PVS site from which the selected VMs are streamed. ähnelt. + /// Looks up a localized string similar to Choose the PVS site from which the selected VMs are streamed.. /// public static string ENABLE_PVS_READ_CACHING_RUBRIC_MULTIPLE { get { @@ -13958,7 +14673,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose the PVS site from which the selected VM is streamed. ähnelt. + /// Looks up a localized string similar to Choose the PVS site from which the selected VM is streamed.. /// public static string ENABLE_PVS_READ_CACHING_RUBRIC_SINGLE { get { @@ -13967,7 +14682,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Res&ume ähnelt. + /// Looks up a localized string similar to Res&ume. /// public static string ENABLE_WLB_ELLIPSIS { get { @@ -13976,7 +14691,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabled ähnelt. + /// Looks up a localized string similar to Enabled. /// public static string ENABLED { get { @@ -13985,7 +14700,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabled clustering on {0}. ähnelt. + /// Looks up a localized string similar to Enabled clustering on {0}.. /// public static string ENABLED_CLUSTERING_ON_POOL { get { @@ -13994,7 +14709,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot schedule '{0}' enabled. ähnelt. + /// Looks up a localized string similar to Snapshot schedule '{0}' enabled.. /// public static string ENABLED_VMSS { get { @@ -14003,7 +14718,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling ähnelt. + /// Looks up a localized string similar to Enabling. /// public static string ENABLING { get { @@ -14012,7 +14727,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling Active Directory Authentication ähnelt. + /// Looks up a localized string similar to Enabling Active Directory Authentication. /// public static string ENABLING_AD { get { @@ -14021,7 +14736,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling Active Directory Authentication on pool '{0}' ähnelt. + /// Looks up a localized string similar to Enabling Active Directory Authentication on pool '{0}'. /// public static string ENABLING_AD_ON { get { @@ -14030,7 +14745,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling clustering on {0}. ähnelt. + /// Looks up a localized string similar to Enabling clustering on {0}.. /// public static string ENABLING_CLUSTERING_ON_POOL { get { @@ -14039,7 +14754,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling HA ähnelt. + /// Looks up a localized string similar to Enabling HA. /// public static string ENABLING_HA { get { @@ -14048,7 +14763,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling HA on pool '{0}' ähnelt. + /// Looks up a localized string similar to Enabling HA on pool '{0}'. /// public static string ENABLING_HA_ON { get { @@ -14057,7 +14772,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabling snapshot schedule '{0}'... ähnelt. + /// Looks up a localized string similar to Enabling snapshot schedule '{0}'.... /// public static string ENABLING_VMSS { get { @@ -14066,7 +14781,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resuming Workload Balancing ähnelt. + /// Looks up a localized string similar to Resuming Workload Balancing . /// public static string ENABLING_WLB { get { @@ -14075,7 +14790,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resuming Workload Balancing on pool '{0}' ähnelt. + /// Looks up a localized string similar to Resuming Workload Balancing on pool '{0}'. /// public static string ENABLING_WLB_ON { get { @@ -14084,7 +14799,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Encrypting appliance files... ähnelt. + /// Looks up a localized string similar to Encrypting appliance files.... /// public static string ENCRYPTING_FILES { get { @@ -14093,7 +14808,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ends with ähnelt. + /// Looks up a localized string similar to ends with. /// public static string ENDS_WITH { get { @@ -14102,7 +14817,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter &Maintenance Mode... ähnelt. + /// Looks up a localized string similar to Enter &Maintenance Mode.... /// public static string ENTER_MAINTENANCE_MODE { get { @@ -14111,7 +14826,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Enter Maintenance Mode... ähnelt. + /// Looks up a localized string similar to &Enter Maintenance Mode.... /// public static string ENTER_MAINTENANCE_MODE_CONTEXT_MENU { get { @@ -14120,7 +14835,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die To access your saved session it is required that you enter the master password when starting [XenCenter] ähnelt. + /// Looks up a localized string similar to To access your saved session it is required that you enter the master password when starting [XenCenter]. /// public static string ENTER_MASTER_PASSWORD_TO_ACCESS_SETTINGS_TT { get { @@ -14129,7 +14844,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The QoS limit value should be an integer greater than zero ähnelt. + /// Looks up a localized string similar to The QoS limit value should be an integer greater than zero. /// public static string ENTER_VALID_QOS { get { @@ -14138,7 +14853,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Members ähnelt. + /// Looks up a localized string similar to Members. /// public static string EQUALLOGICS_MEMBERS { get { @@ -14147,7 +14862,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error importing server list. Check that the xml format in the file is correct. ähnelt. + /// Looks up a localized string similar to Error importing server list. Check that the xml format in the file is correct.. /// public static string ERRO_IMPORTING_SERVER_LIST { get { @@ -14156,7 +14871,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error ähnelt. + /// Looks up a localized string similar to Error. /// public static string ERROR { get { @@ -14165,7 +14880,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following virtual disks could not be activated: ähnelt. + /// Looks up a localized string similar to The following virtual disks could not be activated:. /// public static string ERROR_ACTIVATING_VDIS_MESSAGE { get { @@ -14174,7 +14889,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Activating Virtual Disks ähnelt. + /// Looks up a localized string similar to Error Activating Virtual Disks. /// public static string ERROR_ACTIVATING_VDIS_TITLE { get { @@ -14183,7 +14898,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die User name and password mismatch. ähnelt. + /// Looks up a localized string similar to User name and password mismatch.. /// public static string ERROR_AUTHENTICATION { get { @@ -14192,7 +14907,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] has encountered a problem connecting to this server. ähnelt. + /// Looks up a localized string similar to [XenCenter] has encountered a problem connecting to this server.. /// public static string ERROR_CONNECTING_BLURB { get { @@ -14201,7 +14916,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following virtual disks could not be deactivated: ähnelt. + /// Looks up a localized string similar to The following virtual disks could not be deactivated:. /// public static string ERROR_DEACTIVATING_MULTIPLE_VDIS_MESSAGE { get { @@ -14210,7 +14925,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Deactivating Virtual Disks ähnelt. + /// Looks up a localized string similar to Error Deactivating Virtual Disks. /// public static string ERROR_DEACTIVATING_MULTIPLE_VDIS_TITLE { get { @@ -14219,7 +14934,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following storage could not be destroyed: ähnelt. + /// Looks up a localized string similar to Destination directory does not exist.. + /// + public static string ERROR_DESTINATION_DIR_NON_EXIST { + get { + return ResourceManager.GetString("ERROR_DESTINATION_DIR_NON_EXIST", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The following storage could not be destroyed:. /// public static string ERROR_DESTROYING_STORAGE_ITEMS_MESSAGE { get { @@ -14228,7 +14952,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Destroying Storage Items ähnelt. + /// Looks up a localized string similar to Error Destroying Storage Items. /// public static string ERROR_DESTROYING_STORAGE_ITEMS_TITLE { get { @@ -14237,7 +14961,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following virtual disks could not be detached: ähnelt. + /// Looks up a localized string similar to The following virtual disks could not be detached:. /// public static string ERROR_DETACHING_VDIS_MESSAGE { get { @@ -14246,7 +14970,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Detaching Virtual Disks ähnelt. + /// Looks up a localized string similar to Error Detaching Virtual Disks. /// public static string ERROR_DETACHING_VDIS_TITLE { get { @@ -14255,7 +14979,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following servers could not be added to the pool '{0}': ähnelt. + /// Looks up a localized string similar to The following servers could not be added to the pool '{0}':. /// public static string ERROR_DIALOG_ADD_TO_POOL_TEXT { get { @@ -14264,7 +14988,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Adding Server to Pool ähnelt. + /// Looks up a localized string similar to Error Adding Server to Pool. /// public static string ERROR_DIALOG_ADD_TO_POOL_TITLE { get { @@ -14273,7 +14997,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following templates could not be deleted: ähnelt. + /// Looks up a localized string similar to The following templates could not be deleted:. /// public static string ERROR_DIALOG_DELETE_TEMPLATE_TEXT { get { @@ -14282,7 +15006,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Deleting Template ähnelt. + /// Looks up a localized string similar to Error Deleting Template. /// public static string ERROR_DIALOG_DELETE_TEMPLATE_TITLE { get { @@ -14291,7 +15015,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following items could not be deleted: ähnelt. + /// Looks up a localized string similar to The following items could not be deleted:. /// public static string ERROR_DIALOG_DELETE_VM_OR_TEMPLATE_TEXT { get { @@ -14300,7 +15024,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Deleting Items ähnelt. + /// Looks up a localized string similar to Error Deleting Items. /// public static string ERROR_DIALOG_DELETE_VM_OR_TEMPLATE_TITLE { get { @@ -14309,7 +15033,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following VMs could not be deleted: ähnelt. + /// Looks up a localized string similar to The following VMs could not be deleted:. /// public static string ERROR_DIALOG_DELETE_VM_TEXT { get { @@ -14318,7 +15042,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Deleting VM ähnelt. + /// Looks up a localized string similar to Error Deleting VM. /// public static string ERROR_DIALOG_DELETE_VM_TITLE { get { @@ -14327,7 +15051,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following storage repositories could not be destroyed: ähnelt. + /// Looks up a localized string similar to The following storage repositories could not be destroyed:. /// public static string ERROR_DIALOG_DESTROY_SR_TEXT { get { @@ -14336,7 +15060,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Destroying Storage Repository ähnelt. + /// Looks up a localized string similar to Error Destroying Storage Repository. /// public static string ERROR_DIALOG_DESTROY_SR_TITLE { get { @@ -14345,7 +15069,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following storage repositories could not be detached: ähnelt. + /// Looks up a localized string similar to The following storage repositories could not be detached:. /// public static string ERROR_DIALOG_DETACH_SR_TEXT { get { @@ -14354,7 +15078,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Detaching Storage Repository ähnelt. + /// Looks up a localized string similar to Error Detaching Storage Repository. /// public static string ERROR_DIALOG_DETACH_SR_TITLE { get { @@ -14363,7 +15087,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following VMs could not be forced to reboot: ähnelt. + /// Looks up a localized string similar to The following VMs could not be forced to reboot:. /// public static string ERROR_DIALOG_FORCE_REBOOT_VM_TEXT { get { @@ -14372,7 +15096,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Forcing VM Reboot ähnelt. + /// Looks up a localized string similar to Error Forcing VM Reboot. /// public static string ERROR_DIALOG_FORCE_REBOOT_VM_TITLE { get { @@ -14381,7 +15105,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following VMs could not be forced to shut down: ähnelt. + /// Looks up a localized string similar to The following VMs could not be forced to shut down:. /// public static string ERROR_DIALOG_FORCE_SHUTDOWN_VM_TEXT { get { @@ -14390,7 +15114,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Shutting Down VM ähnelt. + /// Looks up a localized string similar to Error Shutting Down VM. /// public static string ERROR_DIALOG_FORCE_SHUTDOWN_VM_TITLE { get { @@ -14399,7 +15123,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There were errors while forgetting the following storage repositories: ähnelt. + /// Looks up a localized string similar to There were errors while forgetting the following storage repositories:. /// public static string ERROR_DIALOG_FORGET_SR_TEXT { get { @@ -14408,7 +15132,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Forgetting Storage Repository ähnelt. + /// Looks up a localized string similar to Error Forgetting Storage Repository. /// public static string ERROR_DIALOG_FORGET_SR_TITLE { get { @@ -14417,7 +15141,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following VMs could not be migrated to the selected server: ähnelt. + /// Looks up a localized string similar to The following VMs could not be migrated to the selected server:. /// public static string ERROR_DIALOG_MIGRATE_TEXT { get { @@ -14426,7 +15150,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Migrating VM to Server ähnelt. + /// Looks up a localized string similar to Error Migrating VM to Server. /// public static string ERROR_DIALOG_MIGRATE_TITLE { get { @@ -14435,7 +15159,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following servers could not be powered on: ähnelt. + /// Looks up a localized string similar to The following servers could not be powered on:. /// public static string ERROR_DIALOG_POWER_ON_HOST_TEXT { get { @@ -14444,7 +15168,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Powering On Server ähnelt. + /// Looks up a localized string similar to Error Powering On Server. /// public static string ERROR_DIALOG_POWER_ON_HOST_TITLE { get { @@ -14453,7 +15177,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following servers could not be rebooted: ähnelt. + /// Looks up a localized string similar to The following servers could not be rebooted:. /// public static string ERROR_DIALOG_REBOOT_HOST_TEXT { get { @@ -14462,7 +15186,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Rebooting Server ähnelt. + /// Looks up a localized string similar to Error Rebooting Server. /// public static string ERROR_DIALOG_REBOOT_HOST_TITLE { get { @@ -14471,7 +15195,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following VMs could not be rebooted: ähnelt. + /// Looks up a localized string similar to The following VMs could not be rebooted:. /// public static string ERROR_DIALOG_REBOOT_VM_TEXT { get { @@ -14480,7 +15204,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Rebooting VM ähnelt. + /// Looks up a localized string similar to Error Rebooting VM. /// public static string ERROR_DIALOG_REBOOT_VM_TITLE { get { @@ -14489,7 +15213,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following VMs could not be resumed on the selected server: ähnelt. + /// Looks up a localized string similar to The following VMs could not be resumed on the selected server:. /// public static string ERROR_DIALOG_RESUME_ON_TEXT { get { @@ -14498,7 +15222,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Resuming VM on Server ähnelt. + /// Looks up a localized string similar to Error Resuming VM on Server. /// public static string ERROR_DIALOG_RESUME_ON_TITLE { get { @@ -14507,7 +15231,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following Vms could not be resumed: ähnelt. + /// Looks up a localized string similar to The following Vms could not be resumed:. /// public static string ERROR_DIALOG_RESUME_VM_TEXT { get { @@ -14516,7 +15240,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Resuming VM ähnelt. + /// Looks up a localized string similar to Error Resuming VM. /// public static string ERROR_DIALOG_RESUME_VM_TITLE { get { @@ -14525,7 +15249,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following servers could not be shut down: ähnelt. + /// Looks up a localized string similar to The following servers could not be shut down:. /// public static string ERROR_DIALOG_SHUTDOWN_HOST_TEXT { get { @@ -14534,7 +15258,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Shutting Down Server ähnelt. + /// Looks up a localized string similar to Error Shutting Down Server. /// public static string ERROR_DIALOG_SHUTDOWN_HOST_TITLE { get { @@ -14543,7 +15267,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Shutting Down VM ähnelt. + /// Looks up a localized string similar to Error Shutting Down VM. /// public static string ERROR_DIALOG_SHUTDOWN_VM_TITLE { get { @@ -14552,7 +15276,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following VMs could not be shut down: ähnelt. + /// Looks up a localized string similar to The following VMs could not be shut down:. /// public static string ERROR_DIALOG_SHUTDOWN_VMS_TITLE { get { @@ -14561,7 +15285,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following VMs could not be started on the selected server: ähnelt. + /// Looks up a localized string similar to The following VMs could not be started on the selected server:. /// public static string ERROR_DIALOG_START_ON_TEXT { get { @@ -14570,7 +15294,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Starting VM on Server ähnelt. + /// Looks up a localized string similar to Error Starting VM on Server. /// public static string ERROR_DIALOG_START_ON_TITLE { get { @@ -14579,7 +15303,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There were no servers available to start VM '{0}'. ähnelt. + /// Looks up a localized string similar to There were no servers available to start VM '{0}'.. /// public static string ERROR_DIALOG_START_VM_TEXT { get { @@ -14588,7 +15312,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Starting VM ähnelt. + /// Looks up a localized string similar to Error Starting VM. /// public static string ERROR_DIALOG_START_VM_TITLE { get { @@ -14597,7 +15321,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following VMs could not be suspended: ähnelt. + /// Looks up a localized string similar to The following VMs could not be suspended:. /// public static string ERROR_DIALOG_SUSPEND_VM_TEXT { get { @@ -14606,7 +15330,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error Suspending VM ähnelt. + /// Looks up a localized string similar to Error Suspending VM. /// public static string ERROR_DIALOG_SUSPEND_VM_TITLE { get { @@ -14615,7 +15339,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die File {0} not found ähnelt. + /// Looks up a localized string similar to File {0} not found. /// public static string ERROR_FILE_NOT_FOUND { get { @@ -14624,7 +15348,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server is still booting. ähnelt. + /// Looks up a localized string similar to Server is still booting.. /// public static string ERROR_HOST_STILL_BOOTING { get { @@ -14633,7 +15357,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Gateway is invalid. ähnelt. + /// Looks up a localized string similar to Gateway is invalid.. /// public static string ERROR_INVALID_GATEWAY { get { @@ -14642,7 +15366,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die IP address is invalid ähnelt. + /// Looks up a localized string similar to IP address is invalid. /// public static string ERROR_INVALID_IP { get { @@ -14651,7 +15375,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Subnet mask is invalid. ähnelt. + /// Looks up a localized string similar to Subnet mask is invalid.. /// public static string ERROR_INVALID_MASK { get { @@ -14660,7 +15384,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die '{0}' is not a valid URI ähnelt. + /// Looks up a localized string similar to '{0}' is not a valid URI. /// public static string ERROR_INVALID_URI { get { @@ -14669,7 +15393,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are not authorized to access this server. ähnelt. + /// Looks up a localized string similar to You are not authorized to access this server.. /// public static string ERROR_NO_PERMISSION { get { @@ -14678,7 +15402,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find a server on '{0}'. ähnelt. + /// Looks up a localized string similar to Could not find a server on '{0}'.. /// public static string ERROR_NO_XENSERVER { get { @@ -14687,7 +15411,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The server '{0}' could not be found. ähnelt. + /// Looks up a localized string similar to The server '{0}' could not be found.. /// public static string ERROR_NOT_FOUND { get { @@ -14696,7 +15420,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not authenticate to proxy server on '{0}'. ähnelt. + /// Looks up a localized string similar to Could not authenticate to proxy server on '{0}'.. /// public static string ERROR_PROXY_AUTHENTICATION { get { @@ -14705,7 +15429,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] has encountered a problem launching PuTTY. ähnelt. + /// Looks up a localized string similar to [XenCenter] has encountered a problem launching PuTTY.. /// public static string ERROR_PUTTY_LAUNCHING { get { @@ -14714,7 +15438,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not create SSL/TLS secure channel. ähnelt. + /// Looks up a localized string similar to Could not create SSL/TLS secure channel.. /// public static string ERROR_SECURE_CHANNEL_FAILURE { get { @@ -14723,7 +15447,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An unknown error occurred. ähnelt. + /// Looks up a localized string similar to An unknown error occurred.. /// public static string ERROR_UNKNOWN { get { @@ -14732,7 +15456,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unknown file type. ähnelt. + /// Looks up a localized string similar to Unknown file type.. /// public static string ERROR_UNSUPPORTED_FILE_TYPE { get { @@ -14741,7 +15465,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die EULA ähnelt. + /// Looks up a localized string similar to EULA. /// public static string EULA { get { @@ -14750,7 +15474,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die EULAs ähnelt. + /// Looks up a localized string similar to EULAs. /// public static string EULAS { get { @@ -14759,7 +15483,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter Maintenance Mode - {0} ähnelt. + /// Looks up a localized string similar to Enter Maintenance Mode - {0}. /// public static string EVACUATE_HOST_DIALOG_TITLE { get { @@ -14768,7 +15492,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} Eject the CD ähnelt. + /// Looks up a localized string similar to {0} Eject the CD. /// public static string EVACUATE_HOST_EJECT_CD_PROMPT { get { @@ -14777,7 +15501,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} Install Management Agent ähnelt. + /// Looks up a localized string similar to {0} Install Management Agent. /// public static string EVACUATE_HOST_INSTALL_MGMNT_PROMPT { get { @@ -14786,7 +15510,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} Install [Citrix VM Tools] ähnelt. + /// Looks up a localized string similar to {0} Install [Citrix VM Tools]. /// public static string EVACUATE_HOST_INSTALL_TOOLS_PROMPT { get { @@ -14795,7 +15519,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM uses a local CD. ähnelt. + /// Looks up a localized string similar to This VM uses a local CD.. /// public static string EVACUATE_HOST_LOCAL_CD { get { @@ -14804,7 +15528,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM uses local storage. ähnelt. + /// Looks up a localized string similar to This VM uses local storage.. /// public static string EVACUATE_HOST_LOCAL_STORAGE { get { @@ -14813,7 +15537,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There are no other servers available in the pool to migrate the running VMs to. Please suspend the VMs instead. ähnelt. + /// Looks up a localized string similar to There are no other servers available in the pool to migrate the running VMs to. Please suspend the VMs instead.. /// public static string EVACUATE_HOST_NO_OTHER_HOSTS { get { @@ -14822,7 +15546,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No servers available ähnelt. + /// Looks up a localized string similar to No servers available. /// public static string EVACUATE_HOST_NO_OTHER_HOSTS_TITLE { get { @@ -14831,7 +15555,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is not enough free memory available on the other servers in the pool to migrate all the running VMs off this server. Please suspend some of the VMs ähnelt. + /// Looks up a localized string similar to There is not enough free memory available on the other servers in the pool to migrate all the running VMs off this server. Please suspend some of the VMs. /// public static string EVACUATE_HOST_NOT_ENOUGH_MEMORY { get { @@ -14840,7 +15564,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not enough memory ähnelt. + /// Looks up a localized string similar to Not enough memory. /// public static string EVACUATE_HOST_NOT_ENOUGH_MEMORY_TITLE { get { @@ -14849,7 +15573,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} Shut down the VM ähnelt. + /// Looks up a localized string similar to {0} Shut down the VM. /// public static string EVACUATE_HOST_SHUTDOWN_VM_PROMPT { get { @@ -14858,7 +15582,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} Suspend the VM ähnelt. + /// Looks up a localized string similar to {0} Suspend the VM. /// public static string EVACUATE_HOST_SUSPEND_VM_PROMPT { get { @@ -14867,7 +15591,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Action in progress... ähnelt. + /// Looks up a localized string similar to Action in progress.... /// public static string EVACUATE_SOLUTION_IN_PROGRESS { get { @@ -14876,7 +15600,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die exactly matches ähnelt. + /// Looks up a localized string similar to exactly matches. /// public static string EXACT_MATCH { get { @@ -14885,7 +15609,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Example: {0} ähnelt. + /// Looks up a localized string similar to Example: {0}. /// public static string EXAMPLE { get { @@ -14894,7 +15618,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A general exception has occurred. ähnelt. + /// Looks up a localized string similar to A general exception has occurred.. /// public static string EXCEPTION_GENERAL { get { @@ -14903,7 +15627,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Canceled ähnelt. + /// Looks up a localized string similar to Canceled. /// public static string EXCEPTION_USER_CANCELLED { get { @@ -14912,7 +15636,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die User canceled. Master needs to be upgraded first. ähnelt. + /// Looks up a localized string similar to User canceled. Master needs to be upgraded first.. /// public static string EXCEPTION_USER_CANCELLED_MASTER { get { @@ -14921,9 +15645,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An existing {0} SR was found on the selected LUN. Click Reattach to use the existing SR, or click Format to destroy any data present on the disk and create a new {1} SR. + /// Looks up a localized string similar to An existing {0} SR was found on the selected LUN. Click Reattach to use the existing SR, or click Format to destroy any data present on the disk and create a new {1} SR. /// - ///Warning: to prevent data loss you must ensure that the LUN is not in use by any other system, including servers that are not connected to [XenCenter]. ähnelt. + ///Warning: to prevent data loss you must ensure that the LUN is not in use by any other system, including servers that are not connected to [XenCenter].. /// public static string EXISTING_SR_FOUND_ON_LUN { get { @@ -14932,7 +15656,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exit &Maintenance Mode ähnelt. + /// Looks up a localized string similar to Exit &Maintenance Mode. /// public static string EXIT_MAINTENANCE_MODE { get { @@ -14941,7 +15665,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Exit Maintenance Mode ähnelt. + /// Looks up a localized string similar to &Exit Maintenance Mode. /// public static string EXIT_MAINTENANCE_MODE_CONTEXT_MENU { get { @@ -14950,8 +15674,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to have the following VMs automatically migrated back to, resumed on or started on this server? - ///{0} ähnelt. + /// Looks up a localized string similar to Do you want to have the following VMs automatically migrated back to, resumed on or started on this server? + ///{0}. /// public static string EXIT_MAINTENANCE_MODE_PROMPT { get { @@ -14960,7 +15684,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die E&xpand All ähnelt. + /// Looks up a localized string similar to E&xpand All. /// public static string EXPAND_ALL { get { @@ -14969,7 +15693,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export All ähnelt. + /// Looks up a localized string similar to Export All. /// public static string EXPORT_ALL { get { @@ -14978,7 +15702,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export OVF/OVA Package ähnelt. + /// Looks up a localized string similar to Export &all. + /// + public static string EXPORT_ALL_BUTTON { + get { + return ResourceManager.GetString("EXPORT_ALL_BUTTON", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Export OVF/OVA Package. /// public static string EXPORT_APPLIANCE { get { @@ -14987,7 +15720,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Appliance already exists, please select a new destination. ähnelt. + /// Looks up a localized string similar to Appliance already exists, please select a new destination.. /// public static string EXPORT_APPLIANCE_PAGE_ERROR_APP_EXISTS { get { @@ -14996,7 +15729,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Appliance name is invalid. ähnelt. + /// Looks up a localized string similar to Appliance name is invalid.. /// public static string EXPORT_APPLIANCE_PAGE_ERROR_INALID_APP { get { @@ -15005,7 +15738,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destination directory is invalid. ähnelt. + /// Looks up a localized string similar to Destination directory is invalid.. /// public static string EXPORT_APPLIANCE_PAGE_ERROR_INVALID_DIR { get { @@ -15014,16 +15747,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destination directory does not exist. ähnelt. - /// - public static string EXPORT_APPLIANCE_PAGE_ERROR_NON_EXIST_DIR { - get { - return ResourceManager.GetString("EXPORT_APPLIANCE_PAGE_ERROR_NON_EXIST_DIR", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die You do not have write permission on the destination directory. ähnelt. + /// Looks up a localized string similar to You do not have write permission on the destination directory.. /// public static string EXPORT_APPLIANCE_PAGE_ERROR_PERMISSIONS { get { @@ -15032,7 +15756,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die OVF/OVA Package (*.ovf, *.ova) ähnelt. + /// Looks up a localized string similar to OVF/OVA Package (*.ovf, *.ova). /// public static string EXPORT_APPLIANCE_PAGE_FORMAT_OVFOVA { get { @@ -15041,7 +15765,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die XVA File (*.xva) ähnelt. + /// Looks up a localized string similar to XVA File (*.xva). /// public static string EXPORT_APPLIANCE_PAGE_FORMAT_XVA { get { @@ -15050,7 +15774,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export File Details ähnelt. + /// Looks up a localized string similar to Export File Details. /// public static string EXPORT_APPLIANCE_PAGE_TEXT { get { @@ -15059,7 +15783,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose the VM export format, location and filename. ähnelt. + /// Looks up a localized string similar to Choose the VM export format, location and filename.. /// public static string EXPORT_APPLIANCE_PAGE_TITLE { get { @@ -15068,7 +15792,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export to File... ähnelt. + /// Looks up a localized string similar to Export to File.... /// public static string EXPORT_AS_BACKUP { get { @@ -15077,7 +15801,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs with disks greater than {0} cannot be exported as an OVF/OVA package. ähnelt. + /// Looks up a localized string similar to VMs with disks greater than {0} cannot be exported as an OVF/OVA package.. /// public static string EXPORT_ERROR_EXCEEDS_MAX_SIZE_VDI_OVA_OVF { get { @@ -15086,7 +15810,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The maximum number of EULAs that can be included in the appliance is {0}. Selected EULA documents exceeding this number will not be added to the appliance. Click OK to proceed or Cancel to go back and change you selection. ähnelt. + /// Looks up a localized string similar to The maximum number of EULAs that can be included in the appliance is {0}. Selected EULA documents exceeding this number will not be added to the appliance. Click OK to proceed or Cancel to go back and change you selection.. /// public static string EXPORT_EULA_PAGE_FILE_LIMIT_WARNING { get { @@ -15095,7 +15819,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maximum number of EULAs exceeded ähnelt. + /// Looks up a localized string similar to Maximum number of EULAs exceeded. /// public static string EXPORT_EULA_PAGE_FILE_LIMIT_WARNING_CAPTION { get { @@ -15104,7 +15828,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Normal text file (*.txt)|*.txt|Rich text file (*.rtf)|*.rtf ähnelt. + /// Looks up a localized string similar to Normal text file (*.txt)|*.txt|Rich text file (*.rtf)|*.rtf. /// public static string EXPORT_EULA_PAGE_FILETYPES { get { @@ -15113,7 +15837,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} is not a valid EULA document. ähnelt. + /// Looks up a localized string similar to {0} is not a valid EULA document.. /// public static string EXPORT_EULA_PAGE_INVALID_FILE { get { @@ -15122,7 +15846,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Optionally, include EULAs in the OVF/OVA package ähnelt. + /// Looks up a localized string similar to Optionally, include EULAs in the OVF/OVA package. /// public static string EXPORT_EULA_PAGE_TITLE { get { @@ -15131,7 +15855,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maximum number of EULAs ({0}) has been reached. ähnelt. + /// Looks up a localized string similar to Maximum number of EULAs ({0}) has been reached.. /// public static string EXPORT_EULA_PAGE_TOOLTIP { get { @@ -15140,7 +15864,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Advanced Options ähnelt. + /// Looks up a localized string similar to Only export &visible. + /// + public static string EXPORT_FILTERED_BUTTON { + get { + return ResourceManager.GetString("EXPORT_FILTERED_BUTTON", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Advanced Options. /// public static string EXPORT_OPTIONS_PAGE_TEXT { get { @@ -15149,7 +15882,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the manifest, signing and output file format options you want ähnelt. + /// Looks up a localized string similar to Select the manifest, signing and output file format options you want. /// public static string EXPORT_OPTIONS_PAGE_TITLE { get { @@ -15158,7 +15891,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export OVA package '{0}' from '{1}' ähnelt. + /// Looks up a localized string similar to Export OVA package '{0}' from '{1}'. /// public static string EXPORT_OVA_PACKAGE { get { @@ -15167,7 +15900,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export OVF package '{0}' from '{1}' ähnelt. + /// Looks up a localized string similar to Export OVF package '{0}' from '{1}'. /// public static string EXPORT_OVF_PACKAGE { get { @@ -15176,7 +15909,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Certificate file does not exist. ähnelt. + /// Looks up a localized string similar to Certificate file does not exist.. /// public static string EXPORT_SECURITY_PAGE_ERROR_CERT_NON_EXIST { get { @@ -15185,7 +15918,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The certificate is invalid. ähnelt. + /// Looks up a localized string similar to The certificate is invalid.. /// public static string EXPORT_SECURITY_PAGE_ERROR_CERTIFICATE_INVALID { get { @@ -15194,7 +15927,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Certificate path is invalid. ähnelt. + /// Looks up a localized string similar to Certificate path is invalid.. /// public static string EXPORT_SECURITY_PAGE_ERROR_INVALID_CERT { get { @@ -15203,7 +15936,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The certificate is invalid or the private key's password is incorrect. ähnelt. + /// Looks up a localized string similar to The certificate is invalid or the private key's password is incorrect.. /// public static string EXPORT_SECURITY_PAGE_ERROR_SIGN_INVALID { get { @@ -15212,7 +15945,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Personal Certificate Files (*.pfx) |*.pfx ähnelt. + /// Looks up a localized string similar to Personal Certificate Files (*.pfx) |*.pfx. /// public static string EXPORT_SECURITY_PAGE_FILETYPES { get { @@ -15221,7 +15954,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Security ähnelt. + /// Looks up a localized string similar to Security. /// public static string EXPORT_SECURITY_PAGE_TEXT { get { @@ -15230,7 +15963,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select security options ähnelt. + /// Looks up a localized string similar to Select security options. /// public static string EXPORT_SECURITY_PAGE_TITLE { get { @@ -15239,7 +15972,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Target destination has only {0} of free space and you need at least {1} to export the selected VMs. ähnelt. + /// Looks up a localized string similar to Target destination has only {0} of free space and you need at least {1} to export the selected VMs.. /// public static string EXPORT_SELECTVMS_PAGE_ERROR_TARGET_SPACE_NOT_ENOUGH { get { @@ -15248,7 +15981,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Machines ähnelt. + /// Looks up a localized string similar to Virtual Machines. /// public static string EXPORT_SELECTVMS_PAGE_TEXT { get { @@ -15257,7 +15990,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Confirm which VMs to include in the OVF/OVA package ähnelt. + /// Looks up a localized string similar to Confirm which VMs to include in the OVF/OVA package. /// public static string EXPORT_SELECTVMS_PAGE_TITLE_OVF { get { @@ -15266,7 +15999,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Confirm which VM to export ähnelt. + /// Looks up a localized string similar to Confirm which VM to export. /// public static string EXPORT_SELECTVMS_PAGE_TITLE_XVA { get { @@ -15275,7 +16008,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Export Snapshot As Template... ähnelt. + /// Looks up a localized string similar to &Export Snapshot As Template.... /// public static string EXPORT_SNAPSHOT_AS_TEMPLATE_MENU_ITEM { get { @@ -15284,7 +16017,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export system alerts to {0} ähnelt. + /// Looks up a localized string similar to Export system alerts to {0}. /// public static string EXPORT_SYSTEM_ALERTS { get { @@ -15293,7 +16026,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exported updates to {0} ähnelt. + /// Looks up a localized string similar to Exported updates to {0}. /// public static string EXPORT_UPDATES { get { @@ -15302,7 +16035,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export VM '{0}' from '{1}' ähnelt. + /// Looks up a localized string similar to Export VM '{0}' from '{1}'. /// public static string EXPORT_VM_TITLE { get { @@ -15311,7 +16044,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Verify export on completion ähnelt. + /// Looks up a localized string similar to &Verify export on completion. /// public static string EXPORT_VM_VERIFY_POST_INSTALL { get { @@ -15320,7 +16053,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exported system alerts to {0} ähnelt. + /// Looks up a localized string similar to Exported system alerts to {0}. /// public static string EXPORTED_SYSTEM_ALERTS { get { @@ -15329,7 +16062,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exported updates to {0}. ähnelt. + /// Looks up a localized string similar to Exported updates to {0}.. /// public static string EXPORTED_UPDATES { get { @@ -15338,7 +16071,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exporting ähnelt. + /// Looks up a localized string similar to Exporting. /// public static string EXPORTING { get { @@ -15347,7 +16080,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exporting system alerts to {0}... ähnelt. + /// Looks up a localized string similar to Exporting system alerts to {0}.... /// public static string EXPORTING_SYSTEM_ALERTS { get { @@ -15356,7 +16089,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exporting updates to {0}... ähnelt. + /// Looks up a localized string similar to Exporting updates to {0}.... /// public static string EXPORTING_UPDATES { get { @@ -15365,7 +16098,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exporting VMs... ähnelt. + /// Looks up a localized string similar to Exporting VMs.... /// public static string EXPORTING_VMS { get { @@ -15374,7 +16107,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not show file open dialog - {0} ähnelt. + /// Looks up a localized string similar to Could not show file open dialog - {0}. /// public static string EXPORTVM_COULD_NOT_SHOW { get { @@ -15383,7 +16116,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Should not happen ähnelt. + /// Looks up a localized string similar to Should not happen. /// public static string EXPORTVM_NOT_HAPPEN { get { @@ -15392,7 +16125,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die External network ähnelt. + /// Looks up a localized string similar to External network. /// public static string EXTERNAL_NETWORK { get { @@ -15401,7 +16134,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die External command exited with Exit Code: {0} ähnelt. + /// Looks up a localized string similar to External command exited with Exit Code: {0}. /// public static string EXTERNAL_PLUGIN_BAD_EXIT { get { @@ -15410,7 +16143,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Plugin finished running ähnelt. + /// Looks up a localized string similar to Plug-in finished running. /// public static string EXTERNAL_PLUGIN_FINISHED { get { @@ -15419,7 +16152,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Running '{0}' ähnelt. + /// Looks up a localized string similar to Running '{0}'. /// public static string EXTERNAL_PLUGIN_RUNNING { get { @@ -15428,7 +16161,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Run '{0}' from plugin '{1}' ähnelt. + /// Looks up a localized string similar to Run '{0}' from plug-in '{1}'. /// public static string EXTERNAL_PLUGIN_TITLE { get { @@ -15437,7 +16170,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to run plugin executable. Please see the client log for details. ähnelt. + /// Looks up a localized string similar to Failed to run plug-in executable. Please see the client log for details.. /// public static string EXTERNAL_PLUGIN_WIN32 { get { @@ -15446,7 +16179,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed ähnelt. + /// Looks up a localized string similar to Failed. /// public static string FAILED { get { @@ -15455,7 +16188,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to add to access list ähnelt. + /// Looks up a localized string similar to Failed to add to access list. /// public static string FAILED_TO_ADD_TO_ACCESS_LIST { get { @@ -15464,7 +16197,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Max failover capacity: {0} ähnelt. + /// Looks up a localized string similar to Max failover capacity: {0}. /// public static string FAILOVER_MAX_CAPACITY { get { @@ -15473,7 +16206,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server failure limit: {0} ähnelt. + /// Looks up a localized string similar to Server failure limit: {0}. /// public static string FAILOVER_TOLERANCE { get { @@ -15482,7 +16215,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die False ähnelt. + /// Looks up a localized string similar to False. /// public static string FALSE { get { @@ -15491,7 +16224,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fast clone is not supported by this storage type ähnelt. + /// Looks up a localized string similar to Fast clone is not supported by this storage type. /// public static string FAST_CLONE_UNAVAILABLE { get { @@ -15500,7 +16233,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die '{0}' feature is disabled due to license restrictions on the server. ähnelt. + /// Looks up a localized string similar to '{0}' feature is disabled due to license restrictions on the server.. /// public static string FEATURE_DISABLED { get { @@ -15509,7 +16242,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Feature disabled in the registry ähnelt. + /// Looks up a localized string similar to Feature disabled in the registry. /// public static string FEATURE_DISABLED_IN_REGISTER { get { @@ -15518,7 +16251,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Feature '{0}' must be enabled on all hosts in the pool before use. See release notes. ähnelt. + /// Looks up a localized string similar to Feature '{0}' must be enabled on all hosts in the pool before use. See release notes.. /// public static string FEATURE_EXPERIMENTAL { get { @@ -15527,7 +16260,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Next Section ähnelt. + /// Looks up a localized string similar to &Next Section. /// public static string FETCH_EARLIER_DATA { get { @@ -15536,7 +16269,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fetch possible hosts of VM {0} ähnelt. + /// Looks up a localized string similar to Fetch possible hosts of VM {0}. /// public static string FETCH_POSSIBLE_HOSTS { get { @@ -15545,7 +16278,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fetched possible hosts of VM {0} ähnelt. + /// Looks up a localized string similar to Fetched possible hosts of VM {0}. /// public static string FETCHED_POSSIBLE_HOSTS { get { @@ -15554,7 +16287,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fetching possible hosts of VM {0} ähnelt. + /// Looks up a localized string similar to Fetching possible hosts of VM {0}. /// public static string FETCHING_POSSIBLE_HOSTS { get { @@ -15563,7 +16296,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No LUNs were found. Please verify your hardware configuration. ähnelt. + /// Looks up a localized string similar to No LUNs were found. Please verify your hardware configuration.. /// public static string FIBRECHANNEL_NO_RESULTS { get { @@ -15572,7 +16305,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The scan failed. ähnelt. + /// Looks up a localized string similar to The scan failed.. /// public static string FIBRECHANNEL_XML_ERROR { get { @@ -15581,7 +16314,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This feature is disabled due to license restrictions on the server. ähnelt. + /// Looks up a localized string similar to This feature is disabled due to license restrictions on the server.. /// public static string FIELD_DISABLED { get { @@ -15590,7 +16323,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die All files ähnelt. + /// Looks up a localized string similar to All files. /// public static string FILE_ALL { get { @@ -15599,7 +16332,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Acrobat (PDF) file ähnelt. + /// Looks up a localized string similar to Acrobat (PDF) file. /// public static string FILE_PDF { get { @@ -15608,7 +16341,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die File {0} already exists. Overwrite? ähnelt. + /// Looks up a localized string similar to File {0} already exists. Overwrite?. /// public static string FILE_X_EXISTS_OVERWRITE { get { @@ -15617,7 +16350,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Excel file ähnelt. + /// Looks up a localized string similar to Excel file. /// public static string FILE_XLS { get { @@ -15626,7 +16359,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You entered an invalid character in one of the filer parameters. ähnelt. + /// Looks up a localized string similar to You entered an invalid character in one of the filer parameters.. /// public static string FILER_PARAM_INVALID_CHAR { get { @@ -15635,7 +16368,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Show &All ähnelt. + /// Looks up a localized string similar to Show &All. /// public static string FILTER_SHOW_ALL { get { @@ -15644,7 +16377,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Filters are OFF ähnelt. + /// Looks up a localized string similar to Filters are OFF. /// public static string FILTERS_OFF { get { @@ -15653,7 +16386,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Filters are ON ähnelt. + /// Looks up a localized string similar to Filters are ON. /// public static string FILTERS_ON { get { @@ -15662,7 +16395,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Finish ähnelt. + /// Looks up a localized string similar to &Finish. /// public static string FINISH { get { @@ -15671,7 +16404,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Additional space: ähnelt. + /// Looks up a localized string similar to Additional space:. /// public static string FINISH_PAGE_ADDSPACE { get { @@ -15680,7 +16413,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Files will be compressed: ähnelt. + /// Looks up a localized string similar to Files will be compressed:. /// public static string FINISH_PAGE_COMPRESS { get { @@ -15689,7 +16422,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CPU count: ähnelt. + /// Looks up a localized string similar to CPU count:. /// public static string FINISH_PAGE_CPUCOUNT { get { @@ -15698,7 +16431,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A manifest will be created: ähnelt. + /// Looks up a localized string similar to A manifest will be created:. /// public static string FINISH_PAGE_CREATE_MANIFEST { get { @@ -15707,7 +16440,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An OVA package will be created: ähnelt. + /// Looks up a localized string similar to An OVA package will be created:. /// public static string FINISH_PAGE_CREATE_OVA { get { @@ -15716,7 +16449,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The package will be digitally signed: ähnelt. + /// Looks up a localized string similar to The package will be digitally signed:. /// public static string FINISH_PAGE_DIGITAL_SIGNATURE { get { @@ -15725,7 +16458,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Appliance files will be encrypted: {0} ähnelt. + /// Looks up a localized string similar to Appliance files will be encrypted: {0}. /// public static string FINISH_PAGE_ENCRYPT { get { @@ -15734,7 +16467,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Hard Disk image: ähnelt. + /// Looks up a localized string similar to Virtual Hard Disk image:. /// public static string FINISH_PAGE_IMAGEPATH { get { @@ -15743,7 +16476,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Selected ISO SR: ähnelt. + /// Looks up a localized string similar to Selected ISO SR:. /// public static string FINISH_PAGE_ISOSR { get { @@ -15752,7 +16485,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory: ähnelt. + /// Looks up a localized string similar to Memory:. /// public static string FINISH_PAGE_MEMORY { get { @@ -15761,7 +16494,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network: ähnelt. + /// Looks up a localized string similar to Network:. /// public static string FINISH_PAGE_NETWORK { get { @@ -15770,7 +16503,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} network: ähnelt. + /// Looks up a localized string similar to {0} network:. /// public static string FINISH_PAGE_NETWORK_FOR_VM { get { @@ -15779,7 +16512,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Package name: ähnelt. + /// Looks up a localized string similar to Package name:. /// public static string FINISH_PAGE_REVIEW_APPLIANCE { get { @@ -15788,7 +16521,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destination path: ähnelt. + /// Looks up a localized string similar to Destination path:. /// public static string FINISH_PAGE_REVIEW_DESTINATION { get { @@ -15797,7 +16530,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Selected EULA files: ähnelt. + /// Looks up a localized string similar to Selected EULA files:. /// public static string FINISH_PAGE_REVIEW_EULA { get { @@ -15806,7 +16539,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Selected VMs: ähnelt. + /// Looks up a localized string similar to Selected VMs:. /// public static string FINISH_PAGE_REVIEW_VMS { get { @@ -15815,7 +16548,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Use OS Fixup: ähnelt. + /// Looks up a localized string similar to Use OS Fixup:. /// public static string FINISH_PAGE_RUN_FIXUPS { get { @@ -15824,7 +16557,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage: ähnelt. + /// Looks up a localized string similar to Storage:. /// public static string FINISH_PAGE_STORAGE { get { @@ -15833,7 +16566,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} storage: ähnelt. + /// Looks up a localized string similar to {0} storage:. /// public static string FINISH_PAGE_STORAGE_FOR_VM { get { @@ -15842,7 +16575,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Target: ähnelt. + /// Looks up a localized string similar to Target:. /// public static string FINISH_PAGE_TARGET { get { @@ -15851,7 +16584,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} target: ähnelt. + /// Looks up a localized string similar to {0} target:. /// public static string FINISH_PAGE_TARGET_FOR_VM { get { @@ -15860,7 +16593,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Finish ähnelt. + /// Looks up a localized string similar to Finish. /// public static string FINISH_PAGE_TEXT { get { @@ -15869,7 +16602,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Review the export settings ähnelt. + /// Looks up a localized string similar to Review the export settings. /// public static string FINISH_PAGE_TITLE_EXPORT { get { @@ -15878,7 +16611,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Review the import settings ähnelt. + /// Looks up a localized string similar to Review the import settings. /// public static string FINISH_PAGE_TITLE_IMPORT { get { @@ -15887,7 +16620,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Obtain automatically through DHCP ähnelt. + /// Looks up a localized string similar to Obtain automatically through DHCP. /// public static string FINISH_PAGE_TVM_DHCP { get { @@ -15896,7 +16629,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Transfer VM gateway: ähnelt. + /// Looks up a localized string similar to Transfer VM gateway:. /// public static string FINISH_PAGE_TVM_GATEWAY { get { @@ -15905,7 +16638,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Transfer VM IP address: ähnelt. + /// Looks up a localized string similar to Transfer VM IP address:. /// public static string FINISH_PAGE_TVM_IP { get { @@ -15914,7 +16647,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Transfer VM subnet mask: ähnelt. + /// Looks up a localized string similar to Transfer VM subnet mask:. /// public static string FINISH_PAGE_TVM_MASK { get { @@ -15923,7 +16656,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Transfer VM network interface: ähnelt. + /// Looks up a localized string similar to Transfer VM network interface:. /// public static string FINISH_PAGE_TVM_NETWORK { get { @@ -15932,7 +16665,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Verify manifest content: ähnelt. + /// Looks up a localized string similar to Verify manifest content:. /// public static string FINISH_PAGE_VERIFY_MANIFEST { get { @@ -15941,7 +16674,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Verify digital signature: ähnelt. + /// Looks up a localized string similar to Verify digital signature:. /// public static string FINISH_PAGE_VERIFY_SIGNATURE { get { @@ -15950,7 +16683,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM name: ähnelt. + /// Looks up a localized string similar to VM name:. /// public static string FINISH_PAGE_VMNAME { get { @@ -15959,7 +16692,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Floppy Drive {0}: ähnelt. + /// Looks up a localized string similar to Floppy Drive {0}:. /// public static string FLOPPY_DRIVE_LABEL_NUMBERED { get { @@ -15968,7 +16701,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Folder ähnelt. + /// Looks up a localized string similar to Folder. /// public static string FOLDER { get { @@ -15977,7 +16710,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Folder with this name already exists ähnelt. + /// Looks up a localized string similar to Folder with this name already exists. /// public static string FOLDER_ALREADY_EXISTS { get { @@ -15986,7 +16719,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Specify the folder where your report will be saved. ähnelt. + /// Looks up a localized string similar to Specify the folder where your report will be saved.. /// public static string FOLDER_BROWSER_BUG_TOOL { get { @@ -15995,7 +16728,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Specify the folder where the files will be downloaded. ähnelt. + /// Looks up a localized string similar to Specify the folder where the files will be downloaded.. /// public static string FOLDER_BROWSER_DOWNLOAD_APPLIANCE { get { @@ -16004,7 +16737,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Specify the folder where the exported file(s) will be saved. ähnelt. + /// Looks up a localized string similar to Specify the folder where the exported file(s) will be saved.. /// public static string FOLDER_BROWSER_EXPORT_APPLIANCE { get { @@ -16013,7 +16746,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connect to a server to create your folder ähnelt. + /// Looks up a localized string similar to Connect to a server to create your folder. /// public static string FOLDER_NO_CONNECTION { get { @@ -16022,7 +16755,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Folders ähnelt. + /// Looks up a localized string similar to Folders. /// public static string FOLDERS { get { @@ -16031,7 +16764,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Force close ähnelt. + /// Looks up a localized string similar to &Force close. /// public static string FORCE_CLOSE { get { @@ -16040,7 +16773,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Plugin {0} has not yet responded to your cancel request. Would you like to force close the process or allow it to continue to run in the background? ähnelt. + /// Looks up a localized string similar to Plug-in {0} has not yet responded to your cancel request. Would you like to force close the process or allow it to continue to run in the background?. /// public static string FORCE_CLOSE_PLUGIN_PROMPT { get { @@ -16049,7 +16782,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Would you like to configure this VM to accept Remote Desktop connections, and then connect to it over Remote Desktop? ähnelt. + /// Looks up a localized string similar to Would you like to configure this VM to accept Remote Desktop connections, and then connect to it over Remote Desktop?. /// public static string FORCE_ENABLE_RDP { get { @@ -16058,7 +16791,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Force Reboot ähnelt. + /// Looks up a localized string similar to Force Reboot. /// public static string FORCE_REBOOT { get { @@ -16067,7 +16800,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Forget ähnelt. + /// Looks up a localized string similar to &Forget. /// public static string FORGET_SR { get { @@ -16076,7 +16809,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Forgetting SR {0} ähnelt. + /// Looks up a localized string similar to Forgetting SR {0}. /// public static string FORGETTING_SR_0 { get { @@ -16085,7 +16818,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Forgetting SRs ähnelt. + /// Looks up a localized string similar to Forgetting SRs. /// public static string FORGETTING_SRS { get { @@ -16094,7 +16827,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Free memory ähnelt. + /// Looks up a localized string similar to Free memory. /// public static string FREE_MEMORY { get { @@ -16103,7 +16836,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Free Space ähnelt. + /// Looks up a localized string similar to Free Space. /// public static string FREESPACE { get { @@ -16112,7 +16845,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Friday ähnelt. + /// Looks up a localized string similar to Friday. /// public static string FRIDAY_LONG { get { @@ -16121,7 +16854,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fri ähnelt. + /// Looks up a localized string similar to Fri. /// public static string FRIDAY_SHORT { get { @@ -16130,7 +16863,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fully applied ähnelt. + /// Looks up a localized string similar to Fully applied. /// public static string FULLY_APPLIED { get { @@ -16139,7 +16872,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} matches ähnelt. + /// Looks up a localized string similar to {0} matches. /// public static string GALLERYSEARCHBAR_MATCHES { get { @@ -16148,7 +16881,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Model: {0} ähnelt. + /// Looks up a localized string similar to Model: {0}. /// public static string GENERAL_CPU_MODEL { get { @@ -16157,7 +16890,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Speed: {0} MHz ähnelt. + /// Looks up a localized string similar to Speed: {0} MHz. /// public static string GENERAL_CPU_SPEED { get { @@ -16166,7 +16899,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Vendor: {0} ähnelt. + /// Looks up a localized string similar to Vendor: {0}. /// public static string GENERAL_CPU_VENDOR { get { @@ -16175,7 +16908,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CPU {0} ähnelt. + /// Looks up a localized string similar to CPU {0}. /// public static string GENERAL_DETAILS_CPU_NUMBER { get { @@ -16184,7 +16917,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please enter a valid IQN, e.g. iqn.2007-11.com.example.subdomain:optional-domain-specific-string ähnelt. + /// Looks up a localized string similar to Please enter a valid IQN, e.g. iqn.2007-11.com.example.subdomain:optional-domain-specific-string. /// public static string GENERAL_EDIT_INVALID_IQN { get { @@ -16193,7 +16926,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please enter a valid name. ähnelt. + /// Looks up a localized string similar to Please enter a valid name.. /// public static string GENERAL_EDIT_INVALID_NAME { get { @@ -16202,7 +16935,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please enter a valid IP address or server name. ähnelt. + /// Looks up a localized string similar to Please enter a valid IP address or server name.. /// public static string GENERAL_EDIT_INVALID_REMOTE { get { @@ -16211,7 +16944,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Boot Options ähnelt. + /// Looks up a localized string similar to Boot Options. /// public static string GENERAL_HEADING_BOOT_OPTIONS { get { @@ -16220,7 +16953,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CPUs ähnelt. + /// Looks up a localized string similar to CPUs. /// public static string GENERAL_HEADING_CPUS { get { @@ -16229,7 +16962,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die License Details ähnelt. + /// Looks up a localized string similar to License Details. /// public static string GENERAL_HEADING_LICENSE_DETAILS { get { @@ -16238,7 +16971,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory ähnelt. + /// Looks up a localized string similar to Memory. /// public static string GENERAL_HEADING_MEMORY { get { @@ -16247,7 +16980,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory and VCPUs ähnelt. + /// Looks up a localized string similar to Memory and VCPUs. /// public static string GENERAL_HEADING_MEMORY_VCPUS { get { @@ -16256,7 +16989,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Status ähnelt. + /// Looks up a localized string similar to Status. /// public static string GENERAL_HEADING_STATUS { get { @@ -16265,7 +16998,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updates ähnelt. + /// Looks up a localized string similar to Updates. /// public static string GENERAL_HEADING_UPDATES { get { @@ -16274,7 +17007,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Version Details ähnelt. + /// Looks up a localized string similar to Version Details. /// public static string GENERAL_HEADING_VERSION_DETAILS { get { @@ -16283,7 +17016,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Querying license status... ähnelt. + /// Looks up a localized string similar to Querying license status.... /// public static string GENERAL_LICENSE_QUERYING { get { @@ -16292,7 +17025,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory: ähnelt. + /// Looks up a localized string similar to Memory:. /// public static string GENERAL_MEMORY { get { @@ -16301,7 +17034,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server: ähnelt. + /// Looks up a localized string similar to Server:. /// public static string GENERAL_MEMORY_SERVER { get { @@ -16310,7 +17043,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} RAM available ({1} total) ähnelt. + /// Looks up a localized string similar to {0} RAM available ({1} total). /// public static string GENERAL_MEMORY_SERVER_FREE { get { @@ -16319,7 +17052,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs: ähnelt. + /// Looks up a localized string similar to VMs:. /// public static string GENERAL_MEMORY_VM { get { @@ -16328,7 +17061,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: using {1} ähnelt. + /// Looks up a localized string similar to {0}: using {1}. /// public static string GENERAL_MEMORY_VM_USED { get { @@ -16337,7 +17070,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: using {1} + {2} overhead ähnelt. + /// Looks up a localized string similar to {0}: using {1} + {2} overhead. /// public static string GENERAL_MEMORY_VM_USED_PLUS_OVERHEAD { get { @@ -16346,7 +17079,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Multipath Failure ähnelt. + /// Looks up a localized string similar to Multipath Failure. /// public static string GENERAL_MULTIPATH_FAILURE { get { @@ -16355,7 +17088,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die : ähnelt. + /// Looks up a localized string similar to : . /// public static string GENERAL_PAGE_KVP_SEPARATOR { get { @@ -16364,7 +17097,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter the vApp name and an optional description. ähnelt. + /// Looks up a localized string similar to Enter the vApp name and an optional description.. /// public static string GENERAL_PAGE_VM_APPLIANCE_SETTINGS { get { @@ -16373,7 +17106,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter the snapshot schedule name and an optional description. ähnelt. + /// Looks up a localized string similar to Enter the snapshot schedule name and an optional description.. /// public static string GENERAL_PAGE_VMSS_SETTINGS { get { @@ -16382,7 +17115,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} on {1} ähnelt. + /// Looks up a localized string similar to {0} on {1}. /// public static string GENERAL_PANEL_UPDATE_KEY { get { @@ -16391,7 +17124,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The server '{0}' needs to be rebooted for update '{1}' to take effect ähnelt. + /// Looks up a localized string similar to The server '{0}' needs to be rebooted for update '{1}' to take effect. /// public static string GENERAL_PANEL_UPDATE_REBOOT_WARNING { get { @@ -16400,7 +17133,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The toolstack on server '{0}' needs to be restarted for update '{1}' to take effect ähnelt. + /// Looks up a localized string similar to The toolstack on server '{0}' needs to be restarted for update '{1}' to take effect. /// public static string GENERAL_PANEL_UPDATE_RESTART_TOOLSTACK_WARNING { get { @@ -16409,7 +17142,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Repair ähnelt. + /// Looks up a localized string similar to Repair. /// public static string GENERAL_SR_CONTEXT_REPAIR { get { @@ -16418,7 +17151,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Broken ähnelt. + /// Looks up a localized string similar to Broken. /// public static string GENERAL_SR_STATE_BROKEN { get { @@ -16427,7 +17160,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die OK ähnelt. + /// Looks up a localized string similar to OK. /// public static string GENERAL_STATE_OK { get { @@ -16436,7 +17169,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not Found ähnelt. + /// Looks up a localized string similar to Not Found. /// public static string GENERAL_UNKNOWN { get { @@ -16445,7 +17178,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Get Password ähnelt. + /// Looks up a localized string similar to Get Password. /// public static string GETPASSWORD { get { @@ -16454,7 +17187,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You must disable HA before clustering can be enabled. ähnelt. + /// Looks up a localized string similar to You must disable HA before clustering can be enabled.. /// public static string GFS2_HA_ENABLED { get { @@ -16463,7 +17196,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Your pool license does not allow Thin Provisioning (GFS2). ähnelt. + /// Looks up a localized string similar to Your pool license does not allow Thin Provisioning (GFS2).. /// public static string GFS2_INCORRECT_POOL_LICENSE { get { @@ -16472,7 +17205,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Clustering cannot be enabled because there are no suitable networks. ähnelt. + /// Looks up a localized string similar to Clustering cannot be enabled because there are no suitable networks.. /// public static string GFS2_NO_NETWORK { get { @@ -16481,7 +17214,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Thin Provisioning (GFS2) requires clustering to be enabled on the pool. ähnelt. + /// Looks up a localized string similar to Thin Provisioning (GFS2) requires clustering to be enabled on the pool.. /// public static string GFS2_REQUIRES_CLUSTERING_ENABLED { get { @@ -16490,7 +17223,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Clustering cannot be disabled because there are thinly provisioned (GFS2) storage repositories attached to this pool. ähnelt. + /// Looks up a localized string similar to Clustering cannot be disabled because there are thinly provisioned (GFS2) storage repositories attached to this pool.. /// public static string GFS2_SR_ATTACHED { get { @@ -16499,7 +17232,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool {0} cannot have clustering enabled. ähnelt. + /// Looks up a localized string similar to Pool {0} cannot have clustering enabled.. /// public static string GFS2_UPDATE_UPGRADE_CLUSTER_ERROR { get { @@ -16508,7 +17241,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool {0} cannot have clustering enabled or a thinly provisioned (GFS2) SR present. ähnelt. + /// Looks up a localized string similar to Pool {0} cannot have clustering enabled or a thinly provisioned (GFS2) SR present.. /// public static string GFS2_UPDATE_UPGRADE_CLUSTER_SR_ERROR { get { @@ -16517,7 +17250,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool {0} cannot have a thinly provisioned (GFS2) SR present. ähnelt. + /// Looks up a localized string similar to Pool {0} cannot have a thinly provisioned (GFS2) SR present.. /// public static string GFS2_UPDATE_UPGRADE_SR_ERROR { get { @@ -16526,7 +17259,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die GPU ähnelt. + /// Looks up a localized string similar to GPU. /// public static string GPU { get { @@ -16535,7 +17268,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Edit Selected GPUs... ähnelt. + /// Looks up a localized string similar to &Edit Selected GPUs.... /// public static string GPU_EDIT_ALLOWED_TYPES_MULTIPLE { get { @@ -16544,7 +17277,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Edit... ähnelt. + /// Looks up a localized string similar to &Edit.... /// public static string GPU_EDIT_ALLOWED_TYPES_SINGLE { get { @@ -16553,7 +17286,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} ({1} GPUs) ähnelt. + /// Looks up a localized string similar to {0} ({1} GPUs). /// public static string GPU_GROUP_NAME_AND_NO_OF_GPUS { get { @@ -16562,7 +17295,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (1 GPU) ähnelt. + /// Looks up a localized string similar to {0} (1 GPU). /// public static string GPU_GROUP_NAME_AND_NO_OF_GPUS_ONE { get { @@ -16571,7 +17304,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die None ähnelt. + /// Looks up a localized string similar to None. /// public static string GPU_NONE { get { @@ -16580,7 +17313,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die On {0}: ähnelt. + /// Looks up a localized string similar to On {0}:. /// public static string GPU_ON_HOST_LABEL { get { @@ -16589,7 +17322,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Placement policy: {0} ähnelt. + /// Looks up a localized string similar to Placement policy: {0}. /// public static string GPU_PLACEMENT_POLICY_DESCRIPTION { get { @@ -16598,7 +17331,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maximum density ähnelt. + /// Looks up a localized string similar to Maximum density. /// public static string GPU_PLACEMENT_POLICY_MAX_DENSITY { get { @@ -16607,7 +17340,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maximum density: put as many VMs as possible on the same GPU ähnelt. + /// Looks up a localized string similar to Maximum density: put as many VMs as possible on the same GPU. /// public static string GPU_PLACEMENT_POLICY_MAX_DENSITY_DESCRIPTION { get { @@ -16616,7 +17349,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maximum performance ähnelt. + /// Looks up a localized string similar to Maximum performance. /// public static string GPU_PLACEMENT_POLICY_MAX_PERFORMANCE { get { @@ -16625,7 +17358,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maximum performance: put VMs on as many GPUs as possible ähnelt. + /// Looks up a localized string similar to Maximum performance: put VMs on as many GPUs as possible. /// public static string GPU_PLACEMENT_POLICY_MAX_PERFORMANCE_DESCRIPTION { get { @@ -16634,7 +17367,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Mixed ähnelt. + /// Looks up a localized string similar to Mixed. /// public static string GPU_PLACEMENT_POLICY_MIXED { get { @@ -16643,7 +17376,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Mixed: different settings for different GPU groups ähnelt. + /// Looks up a localized string similar to Mixed: different settings for different GPU groups. /// public static string GPU_PLACEMENT_POLICY_MIXED_DESCRIPTION { get { @@ -16652,7 +17385,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You can improve graphics performance by assigning a dedicated graphics processing unit (GPU) to a VM. However, no GPUs have been detected in this pool, so this option is not currently available. ähnelt. + /// Looks up a localized string similar to You can improve graphics performance by assigning a dedicated graphics processing unit (GPU) to a VM. However, no GPUs have been detected in this pool, so this option is not currently available.. /// public static string GPU_RUBRIC_NO_GPUS_POOL { get { @@ -16661,7 +17394,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You can improve graphics performance by assigning a dedicated graphics processing unit (GPU) to a VM. However, no GPUs have been detected in this server, so this option is not currently available. ähnelt. + /// Looks up a localized string similar to You can improve graphics performance by assigning a dedicated graphics processing unit (GPU) to a VM. However, no GPUs have been detected in this server, so this option is not currently available.. /// public static string GPU_RUBRIC_NO_GPUS_SERVER { get { @@ -16670,7 +17403,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select which virtual GPU types are allowed on these GPUs: ähnelt. + /// Looks up a localized string similar to Select which virtual GPU types are allowed on these GPUs.. /// public static string GPU_RUBRIC_PLEASE_SELECT_WHICH_GPU_MULTIPLE { get { @@ -16679,7 +17412,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select which virtual GPU types are allowed on this GPU: ähnelt. + /// Looks up a localized string similar to Select which virtual GPU types are allowed on this GPU.. /// public static string GPU_RUBRIC_PLEASE_SELECT_WHICH_GPU_ONE { get { @@ -16688,7 +17421,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Loading Data... ähnelt. + /// Looks up a localized string similar to Loading Data.... /// public static string GRAPH_LOADING { get { @@ -16697,7 +17430,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Performance Graph ähnelt. + /// Looks up a localized string similar to Performance Graph. /// public static string GRAPH_NAME { get { @@ -16706,7 +17439,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die To view memory data for this VM, you need to install [Citrix VM Tools] ähnelt. + /// Looks up a localized string similar to To view memory data for this VM, you need to install [Citrix VM Tools]. /// public static string GRAPH_NEEDS_TOOLS { get { @@ -16715,7 +17448,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die It is not possible to add new performance graphs on VM '{0}' because the VM is not running. ähnelt. + /// Looks up a localized string similar to It is not possible to add new performance graphs on VM '{0}' because the VM is not running.. /// public static string GRAPHS_CANNOT_ADD_VM_HALTED { get { @@ -16724,7 +17457,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die It is not possible to edit performance graphs on VM '{0}' because the VM is not running. ähnelt. + /// Looks up a localized string similar to It is not possible to edit performance graphs on VM '{0}' because the VM is not running.. /// public static string GRAPHS_CANNOT_EDIT_VM_HALTED { get { @@ -16733,7 +17466,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CPU Performance ähnelt. + /// Looks up a localized string similar to CPU Performance. /// public static string GRAPHS_DEFAULT_NAME_CPU { get { @@ -16742,7 +17475,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk Performance ähnelt. + /// Looks up a localized string similar to Disk Performance. /// public static string GRAPHS_DEFAULT_NAME_DISK { get { @@ -16751,7 +17484,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory Performance ähnelt. + /// Looks up a localized string similar to Memory Performance. /// public static string GRAPHS_DEFAULT_NAME_MEMORY { get { @@ -16760,7 +17493,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network Performance ähnelt. + /// Looks up a localized string similar to Network Performance. /// public static string GRAPHS_DEFAULT_NAME_NETWORK { get { @@ -16769,7 +17502,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die '{0}' Details ähnelt. + /// Looks up a localized string similar to '{0}' Details. /// public static string GRAPHS_DETAILS_TITLE { get { @@ -16778,7 +17511,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Edit Graph... ähnelt. + /// Looks up a localized string similar to Edit Graph.... /// public static string GRAPHS_EDIT { get { @@ -16787,7 +17520,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New Graph... ähnelt. + /// Looks up a localized string similar to New Graph.... /// public static string GRAPHS_NEW { get { @@ -16796,7 +17529,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New Graph ähnelt. + /// Looks up a localized string similar to New Graph. /// public static string GRAPHS_NEW_TITLE { get { @@ -16805,7 +17538,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die no data ähnelt. + /// Looks up a localized string similar to no data. /// public static string GRAPHS_NO_DATA { get { @@ -16814,9 +17547,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to restore the default graphs? This operation will delete existing graphs and cannot be undone. + /// Looks up a localized string similar to Are you sure you want to restore the default graphs? This operation will delete existing graphs and cannot be undone. /// - ///Note: Any custom color selections will remain unchanged ähnelt. + ///Note: Any custom color selections will remain unchanged. /// public static string GRAPHS_RESTORE_DEFAULT_MESSAGE { get { @@ -16825,7 +17558,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die > {0} ähnelt. + /// Looks up a localized string similar to > {0}. /// public static string GREATER_THAN { get { @@ -16834,7 +17567,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Group ähnelt. + /// Looks up a localized string similar to Group. /// public static string GROUP { get { @@ -16843,7 +17576,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Group Roles ähnelt. + /// Looks up a localized string similar to Group Roles. /// public static string GROUP_ROLES { get { @@ -16852,7 +17585,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &UEFI Boot (experimental) ähnelt. + /// Looks up a localized string similar to &UEFI Boot (experimental). /// public static string GUEFI_BOOT_MODE_EXPERIMENTAL_LABEL { get { @@ -16861,7 +17594,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Guest UEFI boot is an experimental feature. You can create UEFI-enabled VMs on hosts that are in a production environment. However, UEFI-enabled VMs must not be used for production purposes. You may have to re-create the VMs when you upgrade the host to a newer version of [XenServer]. ähnelt. + /// Looks up a localized string similar to Guest UEFI boot is an experimental feature. You can create UEFI-enabled VMs on hosts that are in a production environment. However, UEFI-enabled VMs must not be used for production purposes. You may have to re-create the VMs when you upgrade the host to a newer version of [XenServer].. /// public static string GUEFI_BOOT_MODE_EXPERIMENTAL_WARNING { get { @@ -16870,7 +17603,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &UEFI Boot ähnelt. + /// Looks up a localized string similar to &UEFI Boot. /// public static string GUEFI_BOOT_MODE_LABEL { get { @@ -16879,7 +17612,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The UEFI boot mode is not supported with the selected template. ähnelt. + /// Looks up a localized string similar to The UEFI boot mode is not supported with the selected template.. /// public static string GUEFI_BOOT_MODE_UNSUPPORTED_WARNING { get { @@ -16888,7 +17621,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Guest UEFI boot and guest UEFI secure boot are experimental features. You can create UEFI-enabled VMs on hosts that are in a production environment. However, UEFI-enabled VMs must not be used for production purposes. You may have to re-create the VMs when you upgrade the host to a newer version of [XenServer]. ähnelt. + /// Looks up a localized string similar to Guest UEFI boot and guest UEFI secure boot are experimental features. You can create UEFI-enabled VMs on hosts that are in a production environment. However, UEFI-enabled VMs must not be used for production purposes. You may have to re-create the VMs when you upgrade the host to a newer version of [XenServer].. /// public static string GUEFI_BOOT_MODES_EXPERIMENTAL_WARNING { get { @@ -16897,7 +17630,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The UEFI and UEFI secure boot modes are not supported with the selected template. ähnelt. + /// Looks up a localized string similar to The UEFI and UEFI secure boot modes are not supported with the selected template.. /// public static string GUEFI_BOOT_MODES_UNSUPPORTED_WARNING { get { @@ -16906,7 +17639,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die UEFI &Secure Boot (experimental) ähnelt. + /// Looks up a localized string similar to UEFI &Secure Boot (experimental). /// public static string GUEFI_SECURE_BOOT_MODE_EXPERIMENTAL_LABEL { get { @@ -16915,7 +17648,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die UEFI &Secure Boot ähnelt. + /// Looks up a localized string similar to UEFI &Secure Boot. /// public static string GUEFI_SECURE_BOOT_MODE_LABEL { get { @@ -16924,7 +17657,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Guest UEFI secure boot is an experimental feature. You can create VMs configured to use the UEFI secure boot mode on hosts that are in a production environment. However, these VMs must not be used for production purposes. You may have to re-create the VMs when you upgrade the host to a newer version of [XenServer]. ähnelt. + /// Looks up a localized string similar to Guest UEFI secure boot is an experimental feature. You can create VMs configured to use the UEFI secure boot mode on hosts that are in a production environment. However, these VMs must not be used for production purposes. You may have to re-create the VMs when you upgrade the host to a newer version of [XenServer].. /// public static string GUEFI_SECUREBOOT_MODE_EXPERIMENTAL_WARNING { get { @@ -16933,7 +17666,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The UEFI secure boot mode is not supported with the selected template. ähnelt. + /// Looks up a localized string similar to The UEFI secure boot mode is not supported with the selected template.. /// public static string GUEFI_SECUREBOOT_MODE_UNSUPPORTED_WARNING { get { @@ -16942,9 +17675,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This version of [XenCenter] is out of date and cannot connect to {0}. + /// Looks up a localized string similar to This version of [XenCenter] is out of date and cannot connect to {0}. /// - ///You can get a compatible version of [XenCenter] from the following location: ähnelt. + ///You can get a compatible version of [XenCenter] from the following location:. /// public static string GUI_OUT_OF_DATE { get { @@ -16953,7 +17686,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA ähnelt. + /// Looks up a localized string similar to HA. /// public static string HA { get { @@ -16962,7 +17695,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (Multiple values) ähnelt. + /// Looks up a localized string similar to (Multiple values). /// public static string HA_ASSIGN_PRIORITIES_MIXED_PROTECTION_LEVELS { get { @@ -16971,7 +17704,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No VMs selected. ähnelt. + /// Looks up a localized string similar to No VMs selected.. /// public static string HA_ASSIGN_PRIORITIES_NO_VMS_SELECTED { get { @@ -16980,7 +17713,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please wait while the HA wizard determines the agility of your VMs ähnelt. + /// Looks up a localized string similar to Please wait while the HA wizard determines the agility of your VMs. /// public static string HA_BUTTON_TOOLTIP_STILL_CALCULATING { get { @@ -16989,7 +17722,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Calculating... ähnelt. + /// Looks up a localized string similar to Calculating.... /// public static string HA_CALCULATING_AGILITY { get { @@ -16998,9 +17731,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die In order to edit the HA restart priorities of your virtual machines, all servers in the pool must be live. The following servers are not currently live: + /// Looks up a localized string similar to In order to edit the HA restart priorities of your virtual machines, all servers in the pool must be live. The following servers are not currently live: /// - ///{0} ähnelt. + ///{0}. /// public static string HA_CANNOT_EDIT_WITH_DEAD_HOSTS { get { @@ -17009,7 +17742,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA is currently enabled for pool {0}. To edit VM restart priorities, all servers in the pool must be reachable. ähnelt. + /// Looks up a localized string similar to HA is currently enabled for pool {0}. To edit VM restart priorities, all servers in the pool must be reachable.. /// public static string HA_CANNOT_EDIT_WITH_DEAD_HOSTS_SHORT { get { @@ -17018,11 +17751,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die In order to edit the HA restart priorities of your virtual machine, + /// Looks up a localized string similar to In order to edit the HA restart priorities of your virtual machine, ///all servers in the pool must be live. The following servers are ///not currently live: /// - ///{0} ähnelt. + ///{0}. /// public static string HA_CANNOT_EDIT_WITH_DEAD_HOSTS_WRAPPED { get { @@ -17031,7 +17764,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' cannot be placed in Maintenance Mode because it is the master of an HA-enabled pool. ähnelt. + /// Looks up a localized string similar to Server '{0}' cannot be placed in Maintenance Mode because it is the master of an HA-enabled pool.. /// public static string HA_CANNOT_EVACUATE_MASTER { get { @@ -17040,7 +17773,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA and WLB check ähnelt. + /// Looks up a localized string similar to HA and WLB check. /// public static string HA_CHECK_DESCRIPTION { get { @@ -17049,7 +17782,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose a heartbeat SR ähnelt. + /// Looks up a localized string similar to Choose a heartbeat SR. /// public static string HA_CHOOSESR_PAGE_PAGETITLE { get { @@ -17058,7 +17791,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Heartbeat SR ähnelt. + /// Looks up a localized string similar to Heartbeat SR. /// public static string HA_CHOOSESR_PAGE_TEXT { get { @@ -17067,7 +17800,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuration ähnelt. + /// Looks up a localized string similar to Configuration. /// public static string HA_CONFIGURATION_TITLE { get { @@ -17076,7 +17809,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure HA now... ähnelt. + /// Looks up a localized string similar to Cannot configure HA for pool '{0}' because an HA Statefile VDI could not be found in the pool.. + /// + public static string HA_CONFIGURE_NO_STATEFILE { + get { + return ResourceManager.GetString("HA_CONFIGURE_NO_STATEFILE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Configure HA now.... /// public static string HA_CONFIGURE_NOW { get { @@ -17085,7 +17827,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA is currently configured on pool '{0}' with these settings: ähnelt. + /// Looks up a localized string similar to HA is currently configured on pool '{0}' with these settings:. /// public static string HA_CONFIGURED { get { @@ -17094,7 +17836,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configured failure capacity: ähnelt. + /// Looks up a localized string similar to Configured failure capacity:. /// public static string HA_CONFIGURED_CAPACITY { get { @@ -17103,7 +17845,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected VM is currently protected by HA. Are you sure you want to force the shut down of this VM? This operation will cancel all running tasks for the VM and can result in data loss. ähnelt. + /// Looks up a localized string similar to The selected VM is currently protected by HA. Are you sure you want to force the shut down of this VM? This operation will cancel all running tasks for the VM and can result in data loss.. /// public static string HA_CONFIRM_FORCESHUTDOWN_VM { get { @@ -17112,7 +17854,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected VM is currently protected by HA. Are you sure you want to force the shut down of this VM? This operation can result in data loss. ähnelt. + /// Looks up a localized string similar to The selected VM is currently protected by HA. Are you sure you want to force the shut down of this VM? This operation can result in data loss.. /// public static string HA_CONFIRM_FORCESHUTDOWN_VM_NO_CANCEL_TASKS { get { @@ -17121,7 +17863,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die At least one of the selected VMs is currently protected by HA. Are you sure you want to forcibly shut down the selected VMs? This operation will cancel all running tasks for each of the selected VMs and can result in data loss. ähnelt. + /// Looks up a localized string similar to At least one of the selected VMs is currently protected by HA. Are you sure you want to forcibly shut down the selected VMs? This operation will cancel all running tasks for each of the selected VMs and can result in data loss.. /// public static string HA_CONFIRM_FORCESHUTDOWN_VMS { get { @@ -17130,7 +17872,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die At least one of the selected VMs is currently protected by HA. Are you sure you want to forcibly shut down the selected VMs? This operation can result in data loss. ähnelt. + /// Looks up a localized string similar to At least one of the selected VMs is currently protected by HA. Are you sure you want to forcibly shut down the selected VMs? This operation can result in data loss.. /// public static string HA_CONFIRM_FORCESHUTDOWN_VMS_NO_CANCEL_TASKS { get { @@ -17139,16 +17881,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Confirm HA Pause VM ähnelt. - /// - public static string HA_CONFIRM_PAUSE_VM { - get { - return ResourceManager.GetString("HA_CONFIRM_PAUSE_VM", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected VM is currently protected by HA. Are you sure you want to shut it down? ähnelt. + /// Looks up a localized string similar to The selected VM is currently protected by HA. Are you sure you want to shut it down?. /// public static string HA_CONFIRM_SHUTDOWN_VM { get { @@ -17157,7 +17890,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected VM is currently protected by HA. Are you sure you want to suspend it? ähnelt. + /// Looks up a localized string similar to The selected VM is currently protected by HA. Are you sure you want to suspend it?. /// public static string HA_CONFIRM_SUSPEND_VM { get { @@ -17166,7 +17899,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Current failure capacity: ähnelt. + /// Looks up a localized string similar to Current failure capacity:. /// public static string HA_CURRENT_CAPACITY { get { @@ -17175,7 +17908,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to disable HA for pool '{0}'? ähnelt. + /// Looks up a localized string similar to Cannot disable HA for pool '{0}' because an HA Statefile VDI could not be found in the pool.. + /// + public static string HA_DISABLE_NO_STATEFILE { + get { + return ResourceManager.GetString("HA_DISABLE_NO_STATEFILE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Are you sure you want to disable HA for pool '{0}'?. /// public static string HA_DISABLE_QUERY { get { @@ -17184,7 +17926,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] High Availability (HA) allows virtual machines to automatically be restarted in the event of an underlying hardware failure or loss of an individual server. HA is enabled for '{0}'. ähnelt. + /// Looks up a localized string similar to [XenServer] High Availability (HA) allows virtual machines to automatically be restarted in the event of an underlying hardware failure or loss of an individual server. HA is enabled for '{0}'.. /// public static string HA_EDIT_DIALOG_BLURB { get { @@ -17193,7 +17935,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change these HA settings now... ähnelt. + /// Looks up a localized string similar to Change these HA settings now.... /// public static string HA_EDIT_NOW { get { @@ -17202,7 +17944,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA is guaranteed. The maximum number of server failures that HA can protect against is {0}. ähnelt. + /// Looks up a localized string similar to HA is guaranteed. The maximum number of server failures that HA can protect against is {0}.. /// public static string HA_GUARANTEED_MESSAGE { get { @@ -17211,7 +17953,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Healthy ähnelt. + /// Looks up a localized string similar to Healthy. /// public static string HA_HEARTBEAT_HEALTHY { get { @@ -17220,7 +17962,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} out of {1} servers ähnelt. + /// Looks up a localized string similar to {0} out of {1} servers. /// public static string HA_HEARTBEAT_SERVERS { get { @@ -17229,7 +17971,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Initializing... ähnelt. + /// Looks up a localized string similar to Initializing.... /// public static string HA_HEARTBEAT_SERVERS_INITIALISING { get { @@ -17238,7 +17980,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA Heartbeat SR ähnelt. + /// Looks up a localized string similar to HA Heartbeat SR. /// public static string HA_HEARTBEAT_SR { get { @@ -17247,7 +17989,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error ähnelt. + /// Looks up a localized string similar to Error. /// public static string HA_HEARTBEAT_UNHEALTHY { get { @@ -17256,8 +17998,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled, and failover tolerance is currently {1}. You cannot put server '{2}' into maintenance mode - ///and keep this configuration. Do you want to reduce the failover tolerance to {3} and continue? ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled, and failover tolerance is currently {1}. You cannot put server '{2}' into maintenance mode + ///and keep this configuration. Do you want to reduce the failover tolerance to {3} and continue?. /// public static string HA_HOST_DISABLE_NTOL_DROP { get { @@ -17266,8 +18008,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled. If you put server '{1}' into maintenance mode, HA would no longer be guaranteed for this pool. - ///Are you sure you want to continue? ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled. If you put server '{1}' into maintenance mode, HA would no longer be guaranteed for this pool. + ///Are you sure you want to continue?. /// public static string HA_HOST_DISABLE_NTOL_ZERO { get { @@ -17276,7 +18018,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled. You have just taken server '{1}' out of maintenance mode, and may now increase the pool's failover tolerance from {2} to {3}. Would you like to do this? ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled. You have just taken server '{1}' out of maintenance mode, and may now increase the pool's failover tolerance from {2} to {3}. Would you like to do this?. /// public static string HA_HOST_ENABLE_NTOL_RAISE_QUERY { get { @@ -17285,8 +18027,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled, and failover tolerance is currently {1}. You cannot reboot server '{2}' and keep this configuration. - ///Do you want to reduce the failover tolerance to {3} and continue? ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled, and failover tolerance is currently {1}. You cannot reboot server '{2}' and keep this configuration. + ///Do you want to reduce the failover tolerance to {3} and continue?. /// public static string HA_HOST_REBOOT_NTOL_DROP { get { @@ -17295,8 +18037,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled. If you reboot server '{1}', HA will no longer be guaranteed. - ///Are you sure you want to continue? ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled. If you reboot server '{1}', HA will no longer be guaranteed. + ///Are you sure you want to continue?. /// public static string HA_HOST_REBOOT_NTOL_ZERO { get { @@ -17305,8 +18047,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled, and failover tolerance is currently {1}. You cannot shut down server '{2}' and keep this configuration. - ///Do you want to reduce the failover tolerance to {3} and continue? ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled, and failover tolerance is currently {1}. You cannot shut down server '{2}' and keep this configuration. + ///Do you want to reduce the failover tolerance to {3} and continue?. /// public static string HA_HOST_SHUTDOWN_NTOL_DROP { get { @@ -17315,8 +18057,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled. If you shut down server '{1}', HA will no longer be guaranteed. - ///Are you sure you want to continue? ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled. If you shut down server '{1}', HA will no longer be guaranteed. + ///Are you sure you want to continue?. /// public static string HA_HOST_SHUTDOWN_NTOL_ZERO { get { @@ -17325,9 +18067,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following servers do not have a license that permits HA: + /// Looks up a localized string similar to The following servers do not have a license that permits HA: /// - ///{0} ähnelt. + ///{0}. /// public static string HA_HOSTS_LACK_LICENSE { get { @@ -17336,7 +18078,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA configuration prerequisites ähnelt. + /// Looks up a localized string similar to HA configuration prerequisites. /// public static string HA_INTRO_PAGE_TITLE { get { @@ -17345,7 +18087,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Prerequisites ähnelt. + /// Looks up a localized string similar to Prerequisites. /// public static string HA_INTRO_TEXT { get { @@ -17354,9 +18096,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM '{0}' has an invalid HA configuration that prevents it from being resumed. It is necessary to clear the VM's HA configuration to proceed. + /// Looks up a localized string similar to VM '{0}' has an invalid HA configuration that prevents it from being resumed. It is necessary to clear the VM's HA configuration to proceed. /// - ///Would you like to clear the VM's HA restart priority? ähnelt. + ///Would you like to clear the VM's HA restart priority?. /// public static string HA_INVALID_CONFIG_RESUME { get { @@ -17365,9 +18107,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM '{0}' has an invalid HA configuration that prevents it from starting. It is necessary to clear the VM's HA configuration to proceed. + /// Looks up a localized string similar to VM '{0}' has an invalid HA configuration that prevents it from starting. It is necessary to clear the VM's HA configuration to proceed. /// - ///Would you like to clear the VM's HA restart priority? ähnelt. + ///Would you like to clear the VM's HA restart priority?. /// public static string HA_INVALID_CONFIG_START { get { @@ -17376,7 +18118,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The server does not have a license permitting HA. ähnelt. + /// Looks up a localized string similar to The server does not have a license permitting HA.. /// public static string HA_LICENSE_DISABLED { get { @@ -17385,7 +18127,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Lowering failover tolerance and retrying ähnelt. + /// Looks up a localized string similar to Lowering failover tolerance and retrying. /// public static string HA_LOWERING_NTOL { get { @@ -17394,7 +18136,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You have no shared SRs. ähnelt. + /// Looks up a localized string similar to You have no shared SRs.. /// public static string HA_NO_SHARED_SRS { get { @@ -17403,7 +18145,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA is not currently configured on pool '{0}'. ähnelt. + /// Looks up a localized string similar to HA is not currently configured on pool '{0}'.. /// public static string HA_NOT_CONFIGURED { get { @@ -17412,9 +18154,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The number of server failures that could be tolerated in this pool given these HA restart priorities is {0}. + /// Looks up a localized string similar to The number of server failures that could be tolerated in this pool given these HA restart priorities is {0}. /// - ///Increasing the slack allows other users to start or reconfigure VMs without affecting the plan. ähnelt. + ///Increasing the slack allows other users to start or reconfigure VMs without affecting the plan.. /// public static string HA_NTOL_BLURB { get { @@ -17423,7 +18165,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The number of server failures that can be tolerated could not be determined. Check the logs for more information. ähnelt. + /// Looks up a localized string similar to The number of server failures that can be tolerated could not be determined. Check the logs for more information.. /// public static string HA_NTOL_UNKNOWN { get { @@ -17432,7 +18174,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This pool cannot support the specified HA restart priorities and tolerate any server failures. ähnelt. + /// Looks up a localized string similar to This pool cannot support the specified HA restart priorities and tolerate any server failures.. /// public static string HA_NTOL_ZERO { get { @@ -17441,7 +18183,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die 0 - HA cannot guarantee to restart your protected VMs after server failure ähnelt. + /// Looks up a localized string similar to 0 - HA cannot guarantee to restart your protected VMs after server failure. /// public static string HA_NTOL_ZERO_HAPAGE { get { @@ -17450,9 +18192,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Under this HA configuration, the failover tolerance of your pool would be 0 (zero) and it may not be possible to restart your virtual machines in the event of a server failure. + /// Looks up a localized string similar to Under this HA configuration, the failover tolerance of your pool would be 0 (zero) and it may not be possible to restart your virtual machines in the event of a server failure. /// - ///Do you want to apply this HA configuration anyway? ähnelt. + ///Do you want to apply this HA configuration anyway?. /// public static string HA_NTOL_ZERO_QUERY { get { @@ -17461,7 +18203,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled, and is currently configured to tolerate {1} server failures. You cannot relocate VM '{2}' and still tolerate this number of failures. Do you want to reduce the number of tolerable failures to {3} and try again? ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled, and is currently configured to tolerate {1} server failures. You cannot relocate VM '{2}' and still tolerate this number of failures. Do you want to reduce the number of tolerable failures to {3} and try again?. /// public static string HA_OPT_DISABLE_NTOL_DROP { get { @@ -17470,7 +18212,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled. The pool optimization has been stopped. You may now increase the pool's failover tolerance from {1} to {2}. Would you like to do this? ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled. The pool optimization has been stopped. You may now increase the pool's failover tolerance from {1} to {2}. Would you like to do this?. /// public static string HA_OPT_ENABLE_NTOL_RAISE_QUERY { get { @@ -17479,7 +18221,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled. If you relocate VM '{1}', the pool will not be able to tolerate any further server failures, and your HA configuration would no longer be able to restart your protected VMs. To perform the action anyway, turn off HA. ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled. If you relocate VM '{1}', the pool will not be able to tolerate any further server failures, and your HA configuration would no longer be able to restart your protected VMs. To perform the action anyway, turn off HA.. /// public static string HA_OPT_VM_RELOCATE_NTOL_ZERO { get { @@ -17488,7 +18230,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do not restart ähnelt. + /// Looks up a localized string similar to Do not restart. /// public static string HA_OPTION_DO_NOT_RESTART { get { @@ -17497,7 +18239,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restart if possible ähnelt. + /// Looks up a localized string similar to Restart if possible. /// public static string HA_OPTION_RESTART_IF_POSS { get { @@ -17506,9 +18248,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die When overcommited the pool cannot guarantee to tolerate the number of server failures specified. + /// Looks up a localized string similar to When overcommitted the pool cannot guarantee to tolerate the number of server failures specified. /// - ///Reduce protection levels, or bring more servers online to increase the maximum supported capacity. ähnelt. + ///Reduce protection levels, or bring more servers online to increase the maximum supported capacity.. /// public static string HA_OVERCOMMIT_BLURB { get { @@ -17517,7 +18259,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA cannot be guaranteed with the specified settings and the current pool resources. ähnelt. + /// Looks up a localized string similar to HA cannot be guaranteed with the specified settings and the current pool resources.. /// public static string HA_OVERCOMMIT_MESSAGE { get { @@ -17526,7 +18268,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The number of servers you specified is greater than the maximum failover capacity ({0}). HA cannot be guaranteed if you allow this many server failures, given the specified VM restart priorities and the current pool configuration (number of servers and their CPU and memory capacity). ähnelt. + /// Looks up a localized string similar to The number of servers you specified is greater than the maximum failover capacity ({0}). HA cannot be guaranteed if you allow this many server failures, given the specified VM restart priorities and the current pool configuration (number of servers and their CPU and memory capacity).. /// public static string HA_OVERCOMMIT_WARNING { get { @@ -17535,7 +18277,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maximum failover capacity is 0: HA cannot be guaranteed with the specified VM restart priorities and the current pool configuration (number of servers and their CPU and memory capacity). ähnelt. + /// Looks up a localized string similar to Maximum failover capacity is 0: HA cannot be guaranteed with the specified VM restart priorities and the current pool configuration (number of servers and their CPU and memory capacity).. /// public static string HA_OVERCOMMIT_WARNING_NONE { get { @@ -17544,7 +18286,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - pool is overcommitted ähnelt. + /// Looks up a localized string similar to {0} - pool is overcommitted. /// public static string HA_OVERCOMMITTED_NTOL { get { @@ -17553,7 +18295,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA is currently being disabled for '{0}'. ähnelt. + /// Looks up a localized string similar to HA is currently being disabled for '{0}'.. /// public static string HA_PAGE_DISABLING { get { @@ -17562,7 +18304,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA is currently being enabled for '{0}'. ähnelt. + /// Looks up a localized string similar to HA is currently being enabled for '{0}'.. /// public static string HA_PAGE_ENABLING { get { @@ -17571,7 +18313,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA restart priority ähnelt. + /// Looks up a localized string similar to HA restart priority. /// public static string HA_RESTART_PRIORITY { get { @@ -17580,7 +18322,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Your changes to HA settings for pool '{0}' may not take effect because not all servers in the pool are reachable. Ensure that all servers in the pool are reachable and then apply the changes again. ähnelt. + /// Looks up a localized string similar to Your changes to HA settings for pool '{0}' may not take effect because not all servers in the pool are reachable. Ensure that all servers in the pool are reachable and then apply the changes again.. /// public static string HA_SAVE_SETTINGS_FAILED_DEAD_HOSTS { get { @@ -17589,7 +18331,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning for HA heartbeat SRs on {0} ähnelt. + /// Looks up a localized string similar to Scanning for HA heartbeat SRs on {0}. /// public static string HA_SCANNING_SRS { get { @@ -17598,7 +18340,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting HA protection levels ähnelt. + /// Looks up a localized string similar to Setting HA protection levels. /// public static string HA_SETTING_PRIORITIES { get { @@ -17607,7 +18349,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting HA restart priority on {0} ähnelt. + /// Looks up a localized string similar to Setting HA restart priority on {0}. /// public static string HA_SETTING_PRIORITY_ON_X { get { @@ -17616,9 +18358,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following SRs are broken. It is recommended you fix them before enabling HA. + /// Looks up a localized string similar to The following SRs are broken. It is recommended you fix them before enabling HA. /// - ///{0} ähnelt. + ///{0}. /// public static string HA_SRS_BROKEN_WARNING { get { @@ -17627,7 +18369,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA is not available on standalone servers. ähnelt. + /// Looks up a localized string similar to HA is not available on standalone servers.. /// public static string HA_STANDALONE_SERVER { get { @@ -17636,9 +18378,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA is currently enabled for pool '{0}'. + /// Looks up a localized string similar to HA is currently enabled for pool '{0}'. /// - ///Click Configure HA to alter the settings displayed below. ähnelt. + ///Click Configure HA to alter the settings displayed below.. /// public static string HA_TAB_CONFIGURED_BLURB { get { @@ -17647,7 +18389,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA is currently enabled for pool '{0}'. ähnelt. + /// Looks up a localized string similar to HA is currently enabled for pool '{0}'.. /// public static string HA_TAB_CONFIGURED_UNLICENSED { get { @@ -17656,7 +18398,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to calculate maximum pool failure capacity. ähnelt. + /// Looks up a localized string similar to Unable to calculate maximum pool failure capacity.. /// public static string HA_UNABLE_TO_CALCULATE_MESSAGE { get { @@ -17665,7 +18407,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled, and is currently configured to tolerate {1} server failures. You cannot resume VM '{2}' and still tolerate this number of failures. Do you want to reduce the number of tolerable failures to {3} and try again? ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled, and is currently configured to tolerate {1} server failures. You cannot resume VM '{2}' and still tolerate this number of failures. Do you want to reduce the number of tolerable failures to {3} and try again?. /// public static string HA_VM_RESUME_NTOL_DROP { get { @@ -17674,7 +18416,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled. If you resume VM '{1}', the pool will not be able to tolerate any further server failures, and your HA configuration would no longer be able to restart your protected VMs. To perform the action anyway, turn off HA. ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled. If you resume VM '{1}', the pool will not be able to tolerate any further server failures, and your HA configuration would no longer be able to restart your protected VMs. To perform the action anyway, turn off HA.. /// public static string HA_VM_RESUME_NTOL_ZERO { get { @@ -17683,7 +18425,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled, and is currently configured to tolerate {1} server failures. You cannot start VM '{2}' and still tolerate this number of failures. Do you want to reduce the number of tolerable failures to {3} and try again? ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled, and is currently configured to tolerate {1} server failures. You cannot start VM '{2}' and still tolerate this number of failures. Do you want to reduce the number of tolerable failures to {3} and try again?. /// public static string HA_VM_START_NTOL_DROP { get { @@ -17692,7 +18434,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled. If you start VM '{1}', the pool will not be able to tolerate any further server failures, and your HA configuration would no longer be able to restart your protected VMs. To perform the action anyway, turn off HA. ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled. If you start VM '{1}', the pool will not be able to tolerate any further server failures, and your HA configuration would no longer be able to restart your protected VMs. To perform the action anyway, turn off HA.. /// public static string HA_VM_START_NTOL_ZERO { get { @@ -17701,7 +18443,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA has been disabled on pool '{0}'. ähnelt. + /// Looks up a localized string similar to HA has been disabled on pool '{0}'.. /// public static string HA_WAS_DISABLED { get { @@ -17710,7 +18452,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Review configuration and activate HA ähnelt. + /// Looks up a localized string similar to Review configuration and activate HA. /// public static string HA_WIZARD_FINISH_PAGE_TITLE { get { @@ -17719,9 +18461,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA is not currently enabled for pool '{0}'. + /// Looks up a localized string similar to HA is not currently enabled for pool '{0}'. /// - ///Click Configure HA to enable HA for this pool and allow your virtual machines to be automatically restarted in the event of unexpected server failure. ähnelt. + ///Click Configure HA to enable HA for this pool and allow your virtual machines to be automatically restarted in the event of unexpected server failure.. /// public static string HAPANEL_BLURB { get { @@ -17730,7 +18472,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Has any custom field ähnelt. + /// Looks up a localized string similar to Has any custom field. /// public static string HAS_CUSTOM_FIELDS { get { @@ -17739,7 +18481,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA Plan ähnelt. + /// Looks up a localized string similar to HA Plan. /// public static string HAWIZARD_ASSIGNPRIORITIESPAGE_TEXT { get { @@ -17748,7 +18490,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure the HA restart priority, restart order and delay interval for the VMs in this pool ähnelt. + /// Looks up a localized string similar to Configure the HA restart priority, restart order and delay interval for the VMs in this pool. /// public static string HAWIZARD_ASSIGNPRIORITIESPAGE_TITLE { get { @@ -17757,7 +18499,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HealthCheck ähnelt. + /// Looks up a localized string similar to HealthCheck. /// public static string HEALTH_CHECK { get { @@ -17766,7 +18508,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Authentication with [Citrix] Insight Services failed. See the application log files for more information. ähnelt. + /// Looks up a localized string similar to Authentication with [Citrix] Insight Services failed. See the application log files for more information.. /// public static string HEALTH_CHECK_AUTHENTICATION_FAILED { get { @@ -17775,7 +18517,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Invalid user name or password. Please try again. ähnelt. + /// Looks up a localized string similar to Invalid user name or password. Please try again.. /// public static string HEALTH_CHECK_AUTHENTICATION_INVALID_CREDENTIALS { get { @@ -17784,7 +18526,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die https://cis.citrix.com/legal/ ähnelt. + /// Looks up a localized string similar to https://cis.citrix.com/legal/. /// public static string HEALTH_CHECK_CIS_POLICY_URL { get { @@ -17793,7 +18535,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die http://www.citrix.com/about/legal/privacy.html ähnelt. + /// Looks up a localized string similar to http://www.citrix.com/about/legal/privacy.html. /// public static string HEALTH_CHECK_CITRIX_POLICY_URL { get { @@ -17802,7 +18544,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The information that Health Check uploads to [Citrix] Insight Services will be used for troubleshooting and diagnostics support purposes, as well as to improve the quality, reliability, and performance of our products subject to the [Citrix] Insight Services Policy at {0} and [Citrix] Privacy Policy at {1}. ähnelt. + /// Looks up a localized string similar to The information that Health Check uploads to [Citrix] Insight Services will be used for troubleshooting and diagnostics support purposes, as well as to improve the quality, reliability, and performance of our products subject to the [Citrix] Insight Services Policy at {0} and [Citrix] Privacy Policy at {1}.. /// public static string HEALTH_CHECK_PRIVACY_POLICY { get { @@ -17811,7 +18553,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This user is not authorized to access this server. ähnelt. + /// Looks up a localized string similar to This user is not authorized to access this server.. /// public static string HEALTH_CHECK_USER_HAS_NO_PERMISSION_TO_CONNECT { get { @@ -17820,7 +18562,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This user is not authorized to perform Health Check operations. ähnelt. + /// Looks up a localized string similar to This user is not authorized to perform Health Check operations.. /// public static string HEALTH_CHECK_USER_NOT_AUTHORIZED { get { @@ -17829,7 +18571,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Authentication with [Citrix] Insight Services is required in order to enable this feature. [XenCenter] detected a previous successful authentication for one of other connected pools. You can choose to re-use it or authenticate again. ähnelt. + /// Looks up a localized string similar to Authentication with [Citrix] Insight Services is required in order to enable this feature. [XenCenter] detected a previous successful authentication for one of other connected pools. You can choose to re-use it or authenticate again.. /// public static string HEALTHCHECK_AUTHENTICATION_RUBRIC_EXISTING_TOKEN { get { @@ -17838,7 +18580,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Authentication with [Citrix] Insight Services is required in order to enable this feature. Please register by providing MyCitrix credentials (see {0}). These credentials will only be used to obtain an upload token and will not be stored on this machine or on your server. ähnelt. + /// Looks up a localized string similar to Authentication with [Citrix] Insight Services is required in order to enable this feature. Please register by providing MyCitrix credentials (see {0}). These credentials will only be used to obtain an upload token and will not be stored on this machine or on your server.. /// public static string HEALTHCHECK_AUTHENTICATION_RUBRIC_NO_TOKEN { get { @@ -17847,7 +18589,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die OK, Enable Health Check ähnelt. + /// Looks up a localized string similar to OK, Enable Health Check. /// public static string HEALTHCHECK_ENROLLMENT_CONFIRMATION_BUTTON_LABEL { get { @@ -17856,7 +18598,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Health Check Enrollment - {0} ähnelt. + /// Looks up a localized string similar to Health Check Enrollment - {0}. /// public static string HEALTHCHECK_ENROLLMENT_TITLE { get { @@ -17865,7 +18607,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Request an additional upload now ähnelt. + /// Looks up a localized string similar to Request an additional upload now. /// public static string HEALTHCHECK_ON_DEMAND_REQUEST { get { @@ -17874,7 +18616,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Additional upload requested at {0} ähnelt. + /// Looks up a localized string similar to Additional upload requested at {0}. /// public static string HEALTHCHECK_ON_DEMAND_REQUESTED_AT { get { @@ -17883,7 +18625,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upload a Health Check report every {0} weeks on {1} starting at {2} ähnelt. + /// Looks up a localized string similar to Upload a Health Check report every {0} weeks on {1} starting at {2}. /// public static string HEALTHCHECK_SCHEDULE_DESCRIPTION { get { @@ -17892,7 +18634,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} issues detected ähnelt. + /// Looks up a localized string similar to {0} issues detected. /// public static string HEALTHCHECK_STATUS_ISSUES_FOUND { get { @@ -17901,7 +18643,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No issues detected ähnelt. + /// Looks up a localized string similar to No issues detected. /// public static string HEALTHCHECK_STATUS_NO_ISSUES_FOUND { get { @@ -17910,7 +18652,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No report uploaded yet ähnelt. + /// Looks up a localized string similar to No report uploaded yet. /// public static string HEALTHCHECK_STATUS_NO_UPLOAD_YET { get { @@ -17919,7 +18661,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Analysis not yet available ähnelt. + /// Looks up a localized string similar to Analysis not yet available. /// public static string HEALTHCHECK_STATUS_NOT_AVAILABLE_YET { get { @@ -17928,7 +18670,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Health Check not enabled ähnelt. + /// Looks up a localized string similar to Health Check not enabled. /// public static string HEALTHCHECK_STATUS_NOT_ENROLLED { get { @@ -17937,7 +18679,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die 1 issue detected ähnelt. + /// Looks up a localized string similar to 1 issue detected. /// public static string HEALTHCHECK_STATUS_ONE_ISSUE_FOUND { get { @@ -17946,7 +18688,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Heartbeating status ähnelt. + /// Looks up a localized string similar to Heartbeating status. /// public static string HEARTBEATING_STATUS { get { @@ -17955,7 +18697,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Help ähnelt. + /// Looks up a localized string similar to Help. /// public static string HELP { get { @@ -17964,7 +18706,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pause WLB ähnelt. + /// Looks up a localized string similar to Pause WLB. /// public static string HELP_MESSAGE_DISABLE_WLB { get { @@ -17973,7 +18715,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Hide Details ähnelt. + /// Looks up a localized string similar to Hide Details. /// public static string HIDE_DETAILS { get { @@ -17982,7 +18724,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Hide Run History ähnelt. + /// Looks up a localized string similar to Hide Run History. /// public static string HIDE_RUN_HISTORY { get { @@ -17991,7 +18733,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die High Availability ähnelt. + /// Looks up a localized string similar to High Availability. /// public static string HIGH_AVAILABILITY { get { @@ -18000,7 +18742,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Run history for policy '{0}': ähnelt. + /// Looks up a localized string similar to Run history for policy '{0}':. /// public static string HISTORY_FOR_POLICY { get { @@ -18009,7 +18751,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Go to... ähnelt. + /// Looks up a localized string similar to Go to.... /// public static string HISTORYPAGE_GOTO { get { @@ -18018,7 +18760,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {3} {0}: {1} - {2} ähnelt. + /// Looks up a localized string similar to {3} {0}: {1} - {2}. /// public static string HISTORYPANEL_COPY_FORMAT { get { @@ -18027,7 +18769,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Details: ähnelt. + /// Looks up a localized string similar to Details: . /// public static string HISTORYROW_DETAILS { get { @@ -18036,7 +18778,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error: ähnelt. + /// Looks up a localized string similar to Error: . /// public static string HISTORYROW_ERROR { get { @@ -18045,7 +18787,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die On {0}, {1} ähnelt. + /// Looks up a localized string similar to On {0}, {1}. /// public static string HISTORYROW_ON { get { @@ -18054,7 +18796,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die On {0}, with {1}, {2} ähnelt. + /// Looks up a localized string similar to On {0}, with {1}, {2}. /// public static string HISTORYROW_ON_WITH { get { @@ -18063,7 +18805,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Progress: ähnelt. + /// Looks up a localized string similar to Progress:. /// public static string HISTORYROW_PROGRESS { get { @@ -18072,7 +18814,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Time: ähnelt. + /// Looks up a localized string similar to Time:. /// public static string HISTORYROW_TIME { get { @@ -18081,7 +18823,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die With {0}, {1} ähnelt. + /// Looks up a localized string similar to With {0}, {1}. /// public static string HISTORYROW_WITH { get { @@ -18090,7 +18832,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Home Server ähnelt. + /// Looks up a localized string similar to Home Server. /// public static string HOME_SERVER { get { @@ -18099,7 +18841,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Home Server ähnelt. + /// Looks up a localized string similar to &Home Server. /// public static string HOME_SERVER_MENU_ITEM { get { @@ -18108,7 +18850,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The default web browser could not be started. ähnelt. + /// Looks up a localized string similar to The default web browser could not be started.. /// public static string HOMEPAGE_ERROR_MESSAGE { get { @@ -18117,7 +18859,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server cannot be contacted ähnelt. + /// Looks up a localized string similar to This server cannot be contacted. /// public static string HOMESERVER_PICKER_HOST_NOT_LIVE { get { @@ -18126,7 +18868,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server has an operation in progress. ähnelt. + /// Looks up a localized string similar to This server has an operation in progress.. /// public static string HOST_ACTION_IN_PROGRESS { get { @@ -18135,7 +18877,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot add server {0} to pool {1}: server is already in pool {2}. ähnelt. + /// Looks up a localized string similar to Cannot add server {0} to pool {1}: server is already in pool {2}.. /// public static string HOST_ALREADY_IN_POOL { get { @@ -18144,7 +18886,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server is already powered on. ähnelt. + /// Looks up a localized string similar to This server is already powered on.. /// public static string HOST_ALREADY_POWERED_ON { get { @@ -18153,7 +18895,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server is already shut down. ähnelt. + /// Looks up a localized string similar to This server is already shut down.. /// public static string HOST_ALREADY_SHUT_DOWN { get { @@ -18162,7 +18904,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' backed up. ähnelt. + /// Looks up a localized string similar to Server '{0}' backed up.. /// public static string HOST_BACKEDUP { get { @@ -18171,7 +18913,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server entering maintenance mode ähnelt. + /// Looks up a localized string similar to Server entering maintenance mode. /// public static string HOST_DISABLE { get { @@ -18180,7 +18922,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server exiting maintenance mode ähnelt. + /// Looks up a localized string similar to Server exiting maintenance mode. /// public static string HOST_ENABLE { get { @@ -18189,7 +18931,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server entering maintenance mode ähnelt. + /// Looks up a localized string similar to Server entering maintenance mode. /// public static string HOST_EVACUATE { get { @@ -18198,7 +18940,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server General Properties ähnelt. + /// Looks up a localized string similar to Server General Properties. /// public static string HOST_GENERAL_TAB_TITLE { get { @@ -18207,7 +18949,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find host in [XenCenter]'s cache. ähnelt. + /// Looks up a localized string similar to Could not find host in [XenCenter]'s cache.. /// public static string HOST_GONE { get { @@ -18216,7 +18958,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die In maintenance mode ähnelt. + /// Looks up a localized string similar to In maintenance mode. /// public static string HOST_IN_MAINTENANCE_MODE { get { @@ -18225,7 +18967,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Host internal management network ähnelt. + /// Looks up a localized string similar to Host internal management network. /// public static string HOST_INTERNAL_MANAGEMENT_NETWORK { get { @@ -18234,7 +18976,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Host liveness check ähnelt. + /// Looks up a localized string similar to Host liveness check. /// public static string HOST_LIVENESS_CHECK_DESCRIPTION { get { @@ -18243,7 +18985,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Local ähnelt. + /// Looks up a localized string similar to Local. /// public static string HOST_LOG_DESTINATION_LOCAL { get { @@ -18252,7 +18994,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Local and Remote ({0}) ähnelt. + /// Looks up a localized string similar to Local and Remote ({0}). /// public static string HOST_LOG_DESTINATION_LOCAL_AND_REMOTE { get { @@ -18261,9 +19003,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die If you are upgrading to [XenServer] [BRANDING_VERSION_8_0] and above, the Control Domain memory on {0} will be increased. + /// Looks up a localized string similar to If you are upgrading to [XenServer] [BRANDING_VERSION_8_0] and above, the Control Domain memory on {0} will be increased. /// - ///This might result in failure to migrate VMs to this server during the RPU or to accommodate after the upgrade all the VMs that are currently residing on this server. ähnelt. + ///This might result in failure to migrate VMs to this server during the RPU or to accommodate after the upgrade all the VMs that are currently residing on this server.. /// public static string HOST_MEMORY_POST_UPGRADE_DEFAULT_WARNING_LONG { get { @@ -18272,7 +19014,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: This server might not be able to accommodate all its VMs after the upgrade, due to a possible increase in Control Domain memory. ähnelt. + /// Looks up a localized string similar to {0}: This server might not be able to accommodate all its VMs after the upgrade, due to a possible increase in Control Domain memory. . /// public static string HOST_MEMORY_POST_UPGRADE_DEFAULT_WARNING_SHORT { get { @@ -18281,9 +19023,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The Control Domain memory on {0} will be increased to {1} during the upgrade. + /// Looks up a localized string similar to The Control Domain memory on {0} will be increased to {1} during the upgrade. /// - ///This might result in failure to migrate VMs to this server during the RPU or to accommodate after the upgrade all the VMs that are currently residing on this server. ähnelt. + ///This might result in failure to migrate VMs to this server during the RPU or to accommodate after the upgrade all the VMs that are currently residing on this server.. /// public static string HOST_MEMORY_POST_UPGRADE_DOM0_MEMORY_WARNING_LONG { get { @@ -18292,7 +19034,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: This server might not be able to accommodate all its VMs after the upgrade, due to an increase in Control Domain memory. ähnelt. + /// Looks up a localized string similar to {0}: This server might not be able to accommodate all its VMs after the upgrade, due to an increase in Control Domain memory.. /// public static string HOST_MEMORY_POST_UPGRADE_DOM0_MEMORY_WARNING_SHORT { get { @@ -18301,9 +19043,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The Control Domain memory on {0} will be increased when upgrading to [XenServer] {1}. + /// Looks up a localized string similar to The Control Domain memory on {0} will be increased when upgrading to [XenServer] {1}. /// - ///This might result in failure to migrate VMs to this server during the RPU or to accommodate after the upgrade all the VMs that are currently residing on this server. ähnelt. + ///This might result in failure to migrate VMs to this server during the RPU or to accommodate after the upgrade all the VMs that are currently residing on this server.. /// public static string HOST_MEMORY_POST_UPGRADE_VERSION_WARNING_LONG { get { @@ -18312,7 +19054,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: This server might not be able to accommodate all its VMs after the upgrade, due to an increase in Control Domain memory. ähnelt. + /// Looks up a localized string similar to {0}: This server might not be able to accommodate all its VMs after the upgrade, due to an increase in Control Domain memory.. /// public static string HOST_MEMORY_POST_UPGRADE_VERSION_WARNING_SHORT { get { @@ -18321,7 +19063,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (License restriction) ähnelt. + /// Looks up a localized string similar to {0} (License restriction). /// public static string HOST_MENU_ADD_SERVER { get { @@ -18330,7 +19072,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Add to &Pool ähnelt. + /// Looks up a localized string similar to Add to &Pool. /// public static string HOST_MENU_ADD_TO_POOL { get { @@ -18339,7 +19081,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Add to P&ool ähnelt. + /// Looks up a localized string similar to Add to P&ool. /// public static string HOST_MENU_ADD_TO_POOL_CONTEXT_MENU { get { @@ -18348,7 +19090,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Add to &Pool (License restriction) ähnelt. + /// Looks up a localized string similar to Add to &Pool (License restriction). /// public static string HOST_MENU_ADD_TO_POOL_LICENSE_RESTRICTION { get { @@ -18357,7 +19099,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (Error generating menu) ähnelt. + /// Looks up a localized string similar to (Error generating menu). /// public static string HOST_MENU_COMPLETE_FAILURE { get { @@ -18366,7 +19108,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Control &Domain Memory... ähnelt. + /// Looks up a localized string similar to Control &Domain Memory.... /// public static string HOST_MENU_CONTROL_DOMAIN_MEMORY { get { @@ -18375,7 +19117,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Migrate VM wizard... ähnelt. + /// Looks up a localized string similar to &Migrate VM wizard.... /// public static string HOST_MENU_CPM_TEXT { get { @@ -18384,7 +19126,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Current server ähnelt. + /// Looks up a localized string similar to Current server. /// public static string HOST_MENU_CURRENT_SERVER { get { @@ -18393,7 +19135,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (empty) ähnelt. + /// Looks up a localized string similar to (empty). /// public static string HOST_MENU_EMPTY { get { @@ -18402,7 +19144,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Import... ähnelt. + /// Looks up a localized string similar to &Import.... /// public static string HOST_MENU_IMPORT_VM_TEXT { get { @@ -18411,7 +19153,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unknown error ähnelt. + /// Looks up a localized string similar to Unknown error. /// public static string HOST_MENU_UNKNOWN_ERROR { get { @@ -18420,7 +19162,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Live patching status ähnelt. + /// Looks up a localized string similar to Live patching status. /// public static string HOST_NEEDS_REBOOT_CHECK_DESCRIPTION { get { @@ -18429,7 +19171,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Yes (Host needs reboot) ähnelt. + /// Looks up a localized string similar to Yes (Host needs reboot). /// public static string HOST_NEEDS_REBOOT_ENABLE_SRIOV { get { @@ -18438,7 +19180,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Add Network... ähnelt. + /// Looks up a localized string similar to &Add Network.... /// public static string HOST_NETWORK_TAB_ADD_BUTTON_LABEL { get { @@ -18447,7 +19189,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die P&roperties ähnelt. + /// Looks up a localized string similar to P&roperties. /// public static string HOST_NETWORK_TAB_EDIT_BUTTON_LABEL { get { @@ -18456,7 +19198,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die R&emove Network ähnelt. + /// Looks up a localized string similar to R&emove Network. /// public static string HOST_NETWORK_TAB_REMOVE_BUTTON_LABEL { get { @@ -18465,7 +19207,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server Networks ähnelt. + /// Looks up a localized string similar to Server Networks. /// public static string HOST_NETWORK_TAB_TITLE { get { @@ -18474,7 +19216,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No crashdumps to remove ähnelt. + /// Looks up a localized string similar to No crash dumps to remove. /// public static string HOST_NO_CRASHDUMPS { get { @@ -18483,7 +19225,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server is not reachable ähnelt. + /// Looks up a localized string similar to Server is not reachable. /// public static string HOST_NOT_LIVE { get { @@ -18492,7 +19234,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server power on ähnelt. + /// Looks up a localized string similar to Server power on. /// public static string HOST_POWER_ON { get { @@ -18501,7 +19243,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This host does not have its Power On mode set. ähnelt. + /// Looks up a localized string similar to This host does not have its Power On mode set.. /// public static string HOST_POWER_ON_MODE_NOT_SET { get { @@ -18510,7 +19252,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You must reboot your server '{0}' to complete the restore process. ähnelt. + /// Looks up a localized string similar to You must reboot your server '{0}' to complete the restore process.. /// public static string HOST_REBOOT_REQUIRED { get { @@ -18519,7 +19261,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade failed. The server rebooted with the same version. ähnelt. + /// Looks up a localized string similar to Upgrade failed. The server rebooted with the same version.. /// public static string HOST_REBOOTED_SAME_VERSION { get { @@ -18528,7 +19270,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooting server ähnelt. + /// Looks up a localized string similar to Rebooting server. /// public static string HOST_REBOOTING { get { @@ -18537,7 +19279,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removed {0} crashdumps from {1} ähnelt. + /// Looks up a localized string similar to Removed {0} crash dumps from {1}. /// public static string HOST_REMOVED_MANY_CRASHDUMPS { get { @@ -18546,7 +19288,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removed 1 crashdump from {0} ähnelt. + /// Looks up a localized string similar to Removed 1 crash dump from {0}. /// public static string HOST_REMOVED_ONE_CRASHDUMP { get { @@ -18555,7 +19297,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing crashdump {0} of {1} from {2} ähnelt. + /// Looks up a localized string similar to Removing crash dump {0} of {1} from {2}. /// public static string HOST_REMOVING_CRASHDUMP { get { @@ -18564,7 +19306,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing crashdumps from {0} ähnelt. + /// Looks up a localized string similar to Removing crash dumps from {0}. /// public static string HOST_REMOVING_CRASHDUMPS_TITLE { get { @@ -18573,7 +19315,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' restored. ähnelt. + /// Looks up a localized string similar to Server '{0}' restored.. /// public static string HOST_RESTORED { get { @@ -18582,7 +19324,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server cannot see any storage ähnelt. + /// Looks up a localized string similar to This server cannot see any storage. /// public static string HOST_SEES_NO_STORAGE { get { @@ -18591,7 +19333,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut down server ähnelt. + /// Looks up a localized string similar to Shut down server. /// public static string HOST_SHUTDOWN { get { @@ -18600,7 +19342,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: One or more servers in the pool are not licensed for automated updates ähnelt. + /// Looks up a localized string similar to {0}: One or more servers in the pool are not licensed for automated updates. /// public static string HOST_UNLICENSED_FOR_AUTOMATED_UPDATES_WARNING { get { @@ -18609,7 +19351,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Host '{0}': ähnelt. + /// Looks up a localized string similar to Host '{0}':. /// public static string HOST_X { get { @@ -18618,7 +19360,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' entered maintenance mode ähnelt. + /// Looks up a localized string similar to Server '{0}' entered maintenance mode. /// public static string HOSTACTION_EVACUATED { get { @@ -18627,7 +19369,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' entering maintenance mode... ähnelt. + /// Looks up a localized string similar to Server '{0}' entering maintenance mode.... /// public static string HOSTACTION_EVACUATING { get { @@ -18636,7 +19378,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' exited maintenance mode ähnelt. + /// Looks up a localized string similar to Server '{0}' exited maintenance mode. /// public static string HOSTACTION_EXITED_MAINTENANCE_MODE { get { @@ -18645,7 +19387,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' exiting maintenance mode... ähnelt. + /// Looks up a localized string similar to Server '{0}' exiting maintenance mode.... /// public static string HOSTACTION_EXITING_MAINTENANCE_MODE { get { @@ -18654,7 +19396,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Preparing to reboot server: shutting down {0} ({1} of {2}) ähnelt. + /// Looks up a localized string similar to Preparing to reboot server: shutting down {0} ({1} of {2}). /// public static string HOSTACTION_REBOOT_VM_SHUTDOWN { get { @@ -18663,7 +19405,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Preparing to shut down server: shutting down {0} ({1} of {2}) ähnelt. + /// Looks up a localized string similar to Preparing to shut down server: shutting down {0} ({1} of {2}). /// public static string HOSTACTION_SHUTDOWN_VM_SHUTDOWN { get { @@ -18672,7 +19414,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Nominated server {0} as new master ähnelt. + /// Looks up a localized string similar to Nominated server {0} as new master. /// public static string HOSTACTION_TRANSITIONED_NEW_MASTER { get { @@ -18681,7 +19423,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Nominating server {0} as new master... ähnelt. + /// Looks up a localized string similar to Nominating server {0} as new master.... /// public static string HOSTACTION_TRANSITIONING_NEW_MASTER { get { @@ -18690,7 +19432,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not locate an appropriate SR to upload the update. Your SRs may be detached or have insufficient space. ähnelt. + /// Looks up a localized string similar to Could not locate an appropriate SR to upload the update. Your SRs may be detached or have insufficient space.. /// public static string HOTFIX_APPLY_ERROR_NO_SR { get { @@ -18699,7 +19441,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Hotfix check ähnelt. + /// Looks up a localized string similar to Hotfix check. /// public static string HOTFIX_CHECK { get { @@ -18708,7 +19450,169 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Hourly; at {0} minutes past each hour ähnelt. + /// Looks up a localized string similar to {0} will reach End of Life on {1}. After this date {2} will be no longer eligible for support and there will be no further hotfixes released for this version. Please upgrade to latest supported version.. + /// + public static string HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_APPROACHING_EOL { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_APPROACHING_EOL", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} will reach End of Life on {1}. There will be no further hotfixes released after this date. Please upgrade to the latest CR.. + /// + public static string HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_APPROACHING_EOL_FREE { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_APPROACHING_EOL_FREE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to A new Cumulative Update is available for {0}. After {1} there will be no further hotfixes released for {2}. Please update to the latest Cumulative Update.. + /// + public static string HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_CU { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_CU", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} reached End of Life on {1} and is no longer eligible for support. There will be no further hotfixes released after this date. Please upgrade to the latest supported version.. + /// + public static string HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_EOL { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_EOL", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} reached End of Life on {1}. There will be no further hotfixes released after this date. Please upgrade to the latest CR.. + /// + public static string HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_EOL_FREE { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_EOL_FREE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} reached End of Life for express customers on {1}. You are no longer eligible for hotfixes released after this date. Please upgrade to the latest CR.. + /// + public static string HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_FREE { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_ALERT_DESCRIPTION_FREE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} will reach End of Life on {1}. + /// + public static string HOTFIX_ELIGIBILITY_ALERT_TITLE_APPROACHING_EOL { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_ALERT_TITLE_APPROACHING_EOL", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to A new Cumulative Update is available. + /// + public static string HOTFIX_ELIGIBILITY_ALERT_TITLE_CU { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_ALERT_TITLE_CU", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} has reached End of Life. + /// + public static string HOTFIX_ELIGIBILITY_ALERT_TITLE_EOL { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_ALERT_TITLE_EOL", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} has reached End of Life for express customers. + /// + public static string HOTFIX_ELIGIBILITY_ALERT_TITLE_FREE { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_ALERT_TITLE_FREE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No further hotfixes released after {0}. + /// + public static string HOTFIX_ELIGIBILITY_WARNING_CU { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_WARNING_CU", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to A new Cumulative Update is available. + /// + public static string HOTFIX_ELIGIBILITY_WARNING_CU_NO_DATE { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_WARNING_CU_NO_DATE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to End of Life on {0}. No longer eligible for support. + /// + public static string HOTFIX_ELIGIBILITY_WARNING_EOL { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_WARNING_EOL", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to End of Life on {0}. + /// + public static string HOTFIX_ELIGIBILITY_WARNING_EOL_FREE { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_WARNING_EOL_FREE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to End of Life. + /// + public static string HOTFIX_ELIGIBILITY_WARNING_EOL_FREE_NO_DATE { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_WARNING_EOL_FREE_NO_DATE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to End of Life. No longer eligible for support. + /// + public static string HOTFIX_ELIGIBILITY_WARNING_EOL_NO_DATE { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_WARNING_EOL_NO_DATE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Not eligible for hotfixes released after {0}. + /// + public static string HOTFIX_ELIGIBILITY_WARNING_FREE { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_WARNING_FREE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to End of Life for express customers. + /// + public static string HOTFIX_ELIGIBILITY_WARNING_FREE_NO_DATE { + get { + return ResourceManager.GetString("HOTFIX_ELIGIBILITY_WARNING_FREE_NO_DATE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hourly; at {0} minutes past each hour. /// public static string HOURLY_SCHEDULE_FORMAT { get { @@ -18717,7 +19621,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die - ähnelt. + /// Looks up a localized string similar to -. /// public static string HYPHEN { get { @@ -18726,7 +19630,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ID ähnelt. + /// Looks up a localized string similar to ID. /// public static string ID { get { @@ -18735,7 +19639,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Ignore ähnelt. + /// Looks up a localized string similar to &Ignore. /// public static string IGNORE_BUTTON_LABEL { get { @@ -18744,7 +19648,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die It is not possible to connect to the iLO service. Please review your configuration. ähnelt. + /// Looks up a localized string similar to It is not possible to connect to the iLO service. Please review your configuration.. /// public static string ILO_CONNECTION_ERROR { get { @@ -18753,7 +19657,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The iLO power-on request failed ähnelt. + /// Looks up a localized string similar to The iLO power-on request failed. /// public static string ILO_POWERON_FAILED { get { @@ -18762,7 +19666,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM Definition ähnelt. + /// Looks up a localized string similar to VM Definition. /// public static string IMAGE_DEFINITION_PAGE_TEXT { get { @@ -18771,7 +19675,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Define Virtual Machine ähnelt. + /// Looks up a localized string similar to Define Virtual Machine. /// public static string IMAGE_DEFINITION_PAGE_TITLE { get { @@ -18780,7 +19684,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected virtual hard disk image file is corrupt. ähnelt. + /// Looks up a localized string similar to The selected virtual hard disk image file is corrupt.. /// public static string IMAGE_SELECTION_PAGE_ERROR_CORRUPT_FILE { get { @@ -18789,7 +19693,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected file is not a valid virtual hard disk image file. ähnelt. + /// Looks up a localized string similar to The selected file is not a valid virtual hard disk image file.. /// public static string IMAGE_SELECTION_PAGE_ERROR_INVALID_FILE_TYPE { get { @@ -18798,7 +19702,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected file is a VMDK data file. Please select a VMDK descriptor file instead. ähnelt. + /// Looks up a localized string similar to The selected file is a VMDK data file. Please select a VMDK descriptor file instead.. /// public static string IMAGE_SELECTION_PAGE_ERROR_INVALID_VMDK_DESCRIPTOR { get { @@ -18807,7 +19711,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import Appliance '{0}' to '{1}' ähnelt. + /// Looks up a localized string similar to Import Appliance '{0}' to '{1}'. /// public static string IMPORT_APPLIANCE { get { @@ -18816,7 +19720,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import VM '{0}' from Disk Image to '{1}' ähnelt. + /// Looks up a localized string similar to Import VM '{0}' from Disk Image to '{1}'. /// public static string IMPORT_DISK_IMAGE { get { @@ -18825,7 +19729,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Too many EULAs to display, cannot continue. ähnelt. + /// Looks up a localized string similar to Too many EULAs to display, cannot continue.. /// public static string IMPORT_EULA_PAGE_MAX_TABS { get { @@ -18834,7 +19738,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Review End User License Agreement (EULA) ähnelt. + /// Looks up a localized string similar to Review End User License Agreement (EULA). /// public static string IMPORT_EULA_PAGE_TITLE { get { @@ -18843,7 +19747,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The server could not complete the import due to an unkown error. ähnelt. + /// Looks up a localized string similar to The server could not complete the import due to an unkown error.. /// public static string IMPORT_GENERIC_FAIL { get { @@ -18852,7 +19756,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The exported files are incomplete or in an unrecognised format. ähnelt. + /// Looks up a localized string similar to The exported files are incomplete or in an unrecognised format.. /// public static string IMPORT_INCOMPLETE_FILES { get { @@ -18861,7 +19765,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Choose an ISO SR] ähnelt. + /// Looks up a localized string similar to The Fixup ISO cannot be copied to the selected SR. + /// + public static string IMPORT_OPTIONS_PAGE_CANNOT_USE_SELECTED_ISO_LIBRARY { + get { + return ResourceManager.GetString("IMPORT_OPTIONS_PAGE_CANNOT_USE_SELECTED_ISO_LIBRARY", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to [Choose an ISO SR]. /// public static string IMPORT_OPTIONS_PAGE_CHOOSE_ISO_SR { get { @@ -18870,7 +19783,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not locate the Fixup ISO ähnelt. + /// Looks up a localized string similar to Could not locate the Fixup ISO. /// public static string IMPORT_OPTIONS_PAGE_ERROR_NO_FIXUP_ISO_INSTALLED { get { @@ -18879,7 +19792,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not locate an appropriate ISO SR. Please review the configuration requirements for performing fix-up and try again. ähnelt. + /// Looks up a localized string similar to Could not locate an appropriate ISO SR. Please review the configuration requirements for performing fix-up and try again.. /// public static string IMPORT_OPTIONS_PAGE_ERROR_NO_ISO_SR_AVAILABLE { get { @@ -18888,7 +19801,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The Fixup ISO in the SR above will be used to perform fixups ähnelt. + /// Looks up a localized string similar to The Fixup ISO in the SR above will be used to perform fixups. /// public static string IMPORT_OPTIONS_PAGE_FOUND_EXISTING_ISO { get { @@ -18897,7 +19810,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New ISO library... ähnelt. + /// Looks up a localized string similar to New ISO library.... /// public static string IMPORT_OPTIONS_PAGE_NEW_ISO_LIBRARY { get { @@ -18906,7 +19819,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die OS Fixup Settings ähnelt. + /// Looks up a localized string similar to OS Fixup Settings. /// public static string IMPORT_OPTIONS_PAGE_TEXT { get { @@ -18915,7 +19828,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Use Operating System Fixup to ensure hypervisor interoperability ähnelt. + /// Looks up a localized string similar to Use Operating System Fixup to ensure hypervisor interoperability. /// public static string IMPORT_OPTIONS_PAGE_TITLE { get { @@ -18924,7 +19837,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The Fixup ISO will be automatically copied to the selected SR ähnelt. + /// Looks up a localized string similar to The Fixup ISO will be automatically copied to the selected SR. /// public static string IMPORT_OPTIONS_PAGE_USE_SELECTED_ISO_LIBRARY { get { @@ -18933,7 +19846,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find the appliance certificate. The file is missing. ähnelt. + /// Looks up a localized string similar to Could not find the appliance certificate. The file is missing.. /// public static string IMPORT_SECURITY_PAGE_ERROR_MISSING_CERTIFICATE { get { @@ -18942,7 +19855,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find the appliance manifest. The file is missing. ähnelt. + /// Looks up a localized string similar to Could not find the appliance manifest. The file is missing.. /// public static string IMPORT_SECURITY_PAGE_ERROR_MISSING_MANIFEST { get { @@ -18951,7 +19864,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Security ähnelt. + /// Looks up a localized string similar to Security. /// public static string IMPORT_SECURITY_PAGE_TEXT { get { @@ -18960,7 +19873,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select your import security settings ähnelt. + /// Looks up a localized string similar to Select your import security settings. /// public static string IMPORT_SECURITY_PAGE_TITLE { get { @@ -18969,7 +19882,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Verify manifest content ähnelt. + /// Looks up a localized string similar to &Verify manifest content. /// public static string IMPORT_SECURITY_PAGE_VERIFY_CONTENT { get { @@ -18978,7 +19891,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Verify the manifest matches the appliance files. This option will only activate if the appliance has a manifest file. ähnelt. + /// Looks up a localized string similar to The appliance has a manifest file. You can choose to verify the manifest matches the appliance files.. /// public static string IMPORT_SECURITY_PAGE_VERIFY_CONTENT_DESCRIPTION { get { @@ -18987,7 +19900,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Verify digital signature ähnelt. + /// Looks up a localized string similar to &Verify digital signature. /// public static string IMPORT_SECURITY_PAGE_VERIFY_PRODUCER { get { @@ -18996,7 +19909,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Verify the digital signature of the appliance is valid. This option will activate only if the appliance has been digitally signed. ähnelt. + /// Looks up a localized string similar to The appliance has been digitally signed. You can choose to verify the digital signature of the appliance is valid.. /// public static string IMPORT_SECURITY_PAGE_VERIFY_PRODUCER_DESCRIPTION { get { @@ -19005,16 +19918,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die OVA file is corrupt or contains invalid data. ähnelt. - /// - public static string IMPORT_SELECT_APPLIANCE_PAGE_ERROR_CORRUPT_OVA { - get { - return ResourceManager.GetString("IMPORT_SELECT_APPLIANCE_PAGE_ERROR_CORRUPT_OVA", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Path contains invalid characters. ähnelt. + /// Looks up a localized string similar to Path contains invalid characters.. /// public static string IMPORT_SELECT_APPLIANCE_PAGE_ERROR_INVALID_PATH { get { @@ -19023,7 +19927,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please specify a valid URI. ähnelt. + /// Looks up a localized string similar to Please specify a valid URI.. /// public static string IMPORT_SELECT_APPLIANCE_PAGE_ERROR_INVALID_URI { get { @@ -19032,7 +19936,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Path does not exist. ähnelt. + /// Looks up a localized string similar to Path does not exist.. /// public static string IMPORT_SELECT_APPLIANCE_PAGE_ERROR_NONE_EXIST_PATH { get { @@ -19041,7 +19945,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected file is not a valid appliance file. ähnelt. + /// Looks up a localized string similar to The selected file is not a valid appliance file.. /// public static string IMPORT_SELECT_APPLIANCE_PAGE_ERROR_NOT_SUPPORTED { get { @@ -19050,7 +19954,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You do not have write permission on the location provided. Read-write access is required to import this type of file. ähnelt. + /// Looks up a localized string similar to You do not have write permission on the location provided. Read-write access is required to import this type of file.. /// public static string IMPORT_SELECT_APPLIANCE_PAGE_ERROR_SOURCE_IS_READONLY { get { @@ -19059,7 +19963,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Boot options ähnelt. + /// Looks up a localized string similar to Boot options. /// public static string IMPORT_SELECT_BOOT_OPTIONS_PAGE_TEXT { get { @@ -19068,7 +19972,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the boot mode for the new virtual machine ähnelt. + /// Looks up a localized string similar to Select the boot mode for the new virtual machine. /// public static string IMPORT_SELECT_BOOT_OPTIONS_PAGE_TITLE { get { @@ -19077,7 +19981,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the location where the imported VM will be placed ähnelt. + /// Looks up a localized string similar to Select the location where the imported VM will be placed. /// public static string IMPORT_SELECT_HOST_PAGE_TITLE { get { @@ -19086,10 +19990,10 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die <?xml version="1.0" encoding="utf-16"?> + /// Looks up a localized string similar to <?xml version="1.0" encoding="utf-16"?> ///<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> /// <string>Guest installer network</string> - ///</ArrayOfString> ähnelt. + ///</ArrayOfString>. /// public static string IMPORT_SELECT_NETWORK_PAGE_NETWORK_FILTER { get { @@ -19098,7 +20002,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No available networks to connect. ähnelt. + /// Looks up a localized string similar to No available networks to connect.. /// public static string IMPORT_SELECT_NETWORK_PAGE_NO_AVAIL_NETWORKS { get { @@ -19107,7 +20011,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Networking ähnelt. + /// Looks up a localized string similar to Networking. /// public static string IMPORT_SELECT_NETWORK_PAGE_TEXT { get { @@ -19116,7 +20020,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select network to connect VM ähnelt. + /// Looks up a localized string similar to Select network to connect VM. /// public static string IMPORT_SELECT_NETWORK_PAGE_TITLE { get { @@ -19125,7 +20029,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No SR available with enough free space for all VMs. ähnelt. + /// Looks up a localized string similar to No SR available with enough free space for all VMs.. /// public static string IMPORT_SELECT_STORAGE_PAGE_ERROR_NO_COMMON_SR_AVAILABLE { get { @@ -19134,7 +20038,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No SR available with enough free space. ähnelt. + /// Looks up a localized string similar to No SR available with enough free space.. /// public static string IMPORT_SELECT_STORAGE_PAGE_ERROR_NO_SR_AVAILABLE { get { @@ -19143,7 +20047,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is not enough available space on SR {0}. Please review your SR selections. ähnelt. + /// Looks up a localized string similar to There is not enough available space on SR {0}. Please review your SR selections.. /// public static string IMPORT_SELECT_STORAGE_PAGE_ERROR_SPACE_LIMITATION { get { @@ -19152,7 +20056,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is not enough available space on SR {0} for all the VMs. Please consider importing the VMs on different target SRs. ähnelt. + /// Looks up a localized string similar to There is not enough available space on SR {0} for all the VMs. Please consider importing the VMs on different target SRs.. /// public static string IMPORT_SELECT_STORAGE_PAGE_ERROR_SPACE_LIMITATION_COMMON { get { @@ -19161,7 +20065,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage ähnelt. + /// Looks up a localized string similar to Storage. /// public static string IMPORT_SELECT_STORAGE_PAGE_TEXT { get { @@ -19170,7 +20074,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select target storage ähnelt. + /// Looks up a localized string similar to Select target storage. /// public static string IMPORT_SELECT_STORAGE_PAGE_TITLE { get { @@ -19179,7 +20083,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Only OVF/OVA packages can be imported as vApps. ähnelt. + /// Looks up a localized string similar to Only OVF/OVA packages can be imported as vApps.. /// public static string IMPORT_SOURCE_PAGE_ERROR_OVF_ONLY { get { @@ -19188,7 +20092,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die All import options (*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;ova.xml)|*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;ova.xml|OVF/OVA Package files (*.ovf;*.ova;*.ova.gz)|*.ovf;*.ova*;*.ova.gz|Virtual Hard Disk images (*.vhd;*.vmdk;)|*.vhd;*.vmdk;|XVA files (*.xva)|*.xva|XVA Version 1|ova.xml ähnelt. + /// Looks up a localized string similar to All import options (*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;*.xva.gz;ova.xml)|*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;*.xva.gz;ova.xml|OVF/OVA Package files (*.ovf;*.ova;*.ova.gz)|*.ovf;*.ova*;*.ova.gz|Virtual Hard Disk images (*.vhd;*.vmdk;)|*.vhd;*.vmdk;|XVA files (*.xva;*.xva.gz)|*.xva;*.xva.gz|XVA Version 1|ova.xml. /// public static string IMPORT_SOURCE_PAGE_FILETYPES { get { @@ -19197,7 +20101,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die OVF/OVA Package files (*.ovf;*.ova;*.ova.gz)|*.ovf;*.ova*;*.ova.gz ähnelt. + /// Looks up a localized string similar to OVF/OVA Package files (*.ovf;*.ova;*.ova.gz)|*.ovf;*.ova*;*.ova.gz. /// public static string IMPORT_SOURCE_PAGE_FILETYPES_OVF_ONLY { get { @@ -19206,7 +20110,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter the pathname of an exported VM or template, an OVF/OVA package or a virtual hard disk image file or click Browse to find the file you want. ähnelt. + /// Looks up a localized string similar to Enter the pathname of an exported VM or template, an OVF/OVA package or a virtual hard disk image file or click Browse to find the file you want.. /// public static string IMPORT_SOURCE_PAGE_INTRO { get { @@ -19215,7 +20119,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter the pathname of an OVF/OVA package or click Browse to find the file you want. ähnelt. + /// Looks up a localized string similar to Enter the pathname of an OVF/OVA package or click Browse to find the file you want.. /// public static string IMPORT_SOURCE_PAGE_INTRO_OVF_ONLY { get { @@ -19224,7 +20128,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import Source ähnelt. + /// Looks up a localized string similar to Import Source. /// public static string IMPORT_SOURCE_PAGE_TEXT { get { @@ -19233,7 +20137,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Locate the file you want to import ähnelt. + /// Looks up a localized string similar to Locate the file you want to import. /// public static string IMPORT_SOURCE_PAGE_TITLE { get { @@ -19242,7 +20146,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The [Xenserver] Template that you are attempting to import already exists in the selected pool. ähnelt. + /// Looks up a localized string similar to The [Xenserver] Template that you are attempting to import already exists in the selected pool.. /// public static string IMPORT_TEMPLATE_ALREADY_EXISTS { get { @@ -19251,7 +20155,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure storage for the new template ähnelt. + /// Looks up a localized string similar to Configure storage for the new template. /// public static string IMPORT_TEMPLATE_CONFIGURE_STORAGE { get { @@ -19260,7 +20164,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Importing Template from backup file. ähnelt. + /// Looks up a localized string similar to Importing Template from backup file.. /// public static string IMPORT_TEMPLATE_DESCRIP { get { @@ -19269,7 +20173,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import template from... ähnelt. + /// Looks up a localized string similar to Import template from.... /// public static string IMPORT_TEMPLATE_FROM { get { @@ -19278,7 +20182,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a home server for the new template ähnelt. + /// Looks up a localized string similar to Select a home server for the new template. /// public static string IMPORT_TEMPLATE_HOME_SERVER { get { @@ -19287,7 +20191,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import Template complete. ähnelt. + /// Looks up a localized string similar to Import Template complete.. /// public static string IMPORT_TEMPLATE_IMPORTCOMPLETE { get { @@ -19296,7 +20200,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Importing Template... ähnelt. + /// Looks up a localized string similar to Importing Template.... /// public static string IMPORT_TEMPLATE_IMPORTING { get { @@ -19305,7 +20209,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The virtual network interfaces configured for the imported template are listed below. You can add, modify or remove virtual network interfaces as required. ähnelt. + /// Looks up a localized string similar to The virtual network interfaces configured for the imported template are listed below. You can add, modify or remove virtual network interfaces as required.. /// public static string IMPORT_TEMPLATE_NETWORK_BLURB { get { @@ -19314,7 +20218,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a storage repository where virtual disks for the new template will be stored ähnelt. + /// Looks up a localized string similar to Select a storage repository where virtual disks for the new template will be stored. /// public static string IMPORT_TEMPLATE_SELECT_SR { get { @@ -19323,7 +20227,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updating Template networking... ähnelt. + /// Looks up a localized string similar to Updating Template networking.... /// public static string IMPORT_TEMPLATE_UPDATING_NETWORKS { get { @@ -19332,7 +20236,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updating Template... ähnelt. + /// Looks up a localized string similar to Updating Template.... /// public static string IMPORT_TEMPLATE_UPDATING_TEMPLATE { get { @@ -19341,7 +20245,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure virtual network interfaces for the new template ähnelt. + /// Looks up a localized string similar to Configure virtual network interfaces for the new template. /// public static string IMPORT_TEMPLATE_VIFS { get { @@ -19350,7 +20254,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Waiting for Import Template wizard to complete... ähnelt. + /// Looks up a localized string similar to Waiting for Import Template wizard to complete.... /// public static string IMPORT_TEMPLATE_WAITING_FOR_WIZARD { get { @@ -19359,7 +20263,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die XenAppliance.Import.Thread ähnelt. + /// Looks up a localized string similar to XenAppliance.Import.Thread. /// public static string IMPORT_THREAD_NAME { get { @@ -19368,7 +20272,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import is a URI but no destination path defined. ähnelt. + /// Looks up a localized string similar to Import is a URI but no destination path defined.. /// public static string IMPORT_URI_NO_DESTINATION { get { @@ -19377,7 +20281,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure storage for the new VM ähnelt. + /// Looks up a localized string similar to Configure storage for the new VM. /// public static string IMPORT_VM_CONFIGURE_STORAGE { get { @@ -19386,7 +20290,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import VM from... ähnelt. + /// Looks up a localized string similar to Import VM from.... /// public static string IMPORT_VM_FROM { get { @@ -19395,7 +20299,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Import > ähnelt. + /// Looks up a localized string similar to &Import >. /// public static string IMPORT_VM_IMPORT { get { @@ -19404,7 +20308,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The virtual network interfaces configured for the imported VM are listed below. You can add, modify or remove virtual network interfaces as required. ähnelt. + /// Looks up a localized string similar to The virtual network interfaces configured for the imported VM are listed below. You can add, modify or remove virtual network interfaces as required.. /// public static string IMPORT_VM_NETWORK_BLURB { get { @@ -19413,7 +20317,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a home server for the new VM ähnelt. + /// Looks up a localized string similar to Select a home server for the new VM. /// public static string IMPORT_VM_SELECT_HOME_SERVER { get { @@ -19422,16 +20326,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a storage repository where virtual disks for the new VM will be stored ähnelt. - /// - public static string IMPORT_VM_SELECT_SR { - get { - return ResourceManager.GetString("IMPORT_VM_SELECT_SR", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure virtual network interfaces for the new VM ähnelt. + /// Looks up a localized string similar to Configure virtual network interfaces for the new VM. /// public static string IMPORT_VM_VIFS { get { @@ -19440,7 +20335,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Some or all of the VMs you are importing are able to receive updates from Windows Update. The selected location does not support this virtualization state. If you continue with the import, your VMs may not be fully, if at all, functional. ähnelt. + /// Looks up a localized string similar to Some or all of the VMs you are importing are able to receive updates from Windows Update. The selected location does not support this virtualization state. If you continue with the import, your VMs may not be fully, if at all, functional.. /// public static string IMPORT_VM_WITH_VENDOR_DEVICE_WARNING_MANY { get { @@ -19449,7 +20344,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The VM you are importing is able to receive updates from Windows Update. The selected location does not support this virtualization state. If you continue with the import, your VM may not be fully, if at all, functional. ähnelt. + /// Looks up a localized string similar to The VM you are importing is able to receive updates from Windows Update. The selected location does not support this virtualization state. If you continue with the import, your VM may not be fully, if at all, functional.. /// public static string IMPORT_VM_WITH_VENDOR_DEVICE_WARNING_ONE { get { @@ -19458,7 +20353,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Some or all of the VMs you are importing have virtual GPUs assigned to them. The selected location does not have the right type of GPU for all of them. If you continue with the import, their virtual GPU settings will be lost. ähnelt. + /// Looks up a localized string similar to Some or all of the VMs you are importing have virtual GPUs assigned to them. The selected location does not have the right type of GPU for all of them. If you continue with the import, their virtual GPU settings will be lost.. /// public static string IMPORT_VM_WITH_VGPU_WARNING_MANY { get { @@ -19467,7 +20362,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The VM you are importing has a virtual GPU assigned to it. The selected location does not have the right type of GPU. If you continue with the import, the virtual GPU settings will be lost. ähnelt. + /// Looks up a localized string similar to The VM you are importing has a virtual GPU assigned to it. The selected location does not have the right type of GPU. If you continue with the import, the virtual GPU settings will be lost.. /// public static string IMPORT_VM_WITH_VGPU_WARNING_ONE { get { @@ -19476,7 +20371,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Place &all imported virtual disks on this target SR: ähnelt. + /// Looks up a localized string similar to Place &all imported virtual disks on this target SR:. /// public static string IMPORT_WIZARD_ALL_ON_SAME_SR_RADIO { get { @@ -19485,7 +20380,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Import VM(s) to: ähnelt. + /// Looks up a localized string similar to &Import VM(s) to:. /// public static string IMPORT_WIZARD_DESTINATION_DESTINATION { get { @@ -19494,7 +20389,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose the pool or standalone server where you want to place the VM(s). If required, you can also specify a Home Server within the selected pool for each imported VM. ähnelt. + /// Looks up a localized string similar to Choose the pool or standalone server where you want to place the VM(s). If required, you can also specify a Home Server within the selected pool for each imported VM.. /// public static string IMPORT_WIZARD_DESTINATION_INSTRUCTIONS { get { @@ -19503,7 +20398,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Assign imported VM(s) to a home server: ähnelt. + /// Looks up a localized string similar to &Assign imported VM(s) to a home server:. /// public static string IMPORT_WIZARD_DESTINATION_TABLE_INTRO { get { @@ -19512,7 +20407,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Downloading file {0}, please wait... ähnelt. + /// Looks up a localized string similar to Downloading file {0}, please wait.... /// public static string IMPORT_WIZARD_DOWNLOADING { get { @@ -19521,7 +20416,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to download file {0}. Please see the logs for more information. ähnelt. + /// Looks up a localized string similar to Failed to download file {0}. Please see the logs for more information.. /// public static string IMPORT_WIZARD_FAILED_DOWNLOAD { get { @@ -19530,7 +20425,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to uncompress file {0}. Please see the logs for more information. ähnelt. + /// Looks up a localized string similar to Failed to uncompress file {0}. Please see the logs for more information.. /// public static string IMPORT_WIZARD_FAILED_UNCOMPRESS { get { @@ -19539,7 +20434,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Map the virtual network interfaces in the VMs you are importing to networks in the destination pool or standalone server. ähnelt. + /// Looks up a localized string similar to Map the virtual network interfaces in the VMs you are importing to networks in the destination pool or standalone server.. /// public static string IMPORT_WIZARD_NETWORKING_INTRO { get { @@ -19548,7 +20443,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Place imported virtual disks onto &specified target SRs: ähnelt. + /// Looks up a localized string similar to Place imported virtual disks onto &specified target SRs:. /// public static string IMPORT_WIZARD_SPECIFIC_SR_RADIO { get { @@ -19557,7 +20452,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Place the virtual disks in the VMs you are importing onto storage repositories (SRs) in the destination pool or standalone server. ähnelt. + /// Looks up a localized string similar to Place the virtual disks in the VMs you are importing onto storage repositories (SRs) in the destination pool or standalone server.. /// public static string IMPORT_WIZARD_STORAGE_INSTRUCTIONS { get { @@ -19566,7 +20461,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the storage repository for the imported template. ähnelt. + /// Looks up a localized string similar to Select the storage repository for the imported template.. /// public static string IMPORT_WIZARD_TEMPLATE_SR_HINT_TEXT { get { @@ -19575,7 +20470,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uncompressing file {0}, please wait... ähnelt. + /// Looks up a localized string similar to Uncompressing file {0}, please wait.... /// public static string IMPORT_WIZARD_UNCOMPRESSING { get { @@ -19584,7 +20479,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Virtual network interfaces in imported VMs: ähnelt. + /// Looks up a localized string similar to &Virtual network interfaces in imported VMs:. /// public static string IMPORT_WIZARD_VM_SELECTION_INTRODUCTION { get { @@ -19593,7 +20488,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the storage repository for the imported virtual machine. ähnelt. + /// Looks up a localized string similar to Select the storage repository for the imported virtual machine.. /// public static string IMPORT_WIZARD_VM_SR_HINT_TEXT { get { @@ -19602,7 +20497,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Importing ähnelt. + /// Looks up a localized string similar to Importing. /// public static string IMPORTING { get { @@ -19611,7 +20506,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Importing Disk Image... ähnelt. + /// Looks up a localized string similar to Importing Disk Image.... /// public static string IMPORTING_DISK_IMAGE { get { @@ -19620,7 +20515,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Importing VMs... ähnelt. + /// Looks up a localized string similar to Importing VMs.... /// public static string IMPORTING_VMS { get { @@ -19629,7 +20524,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Importing VM from backup file ähnelt. + /// Looks up a localized string similar to Importing VM from backup file. /// public static string IMPORTVM_DESCRIP { get { @@ -19638,7 +20533,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import VM complete ähnelt. + /// Looks up a localized string similar to Import VM complete. /// public static string IMPORTVM_IMPORTCOMPLETE { get { @@ -19647,7 +20542,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Importing VM... ähnelt. + /// Looks up a localized string similar to Importing VM.... /// public static string IMPORTVM_IMPORTING { get { @@ -19656,7 +20551,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Preparing to Import VM ähnelt. + /// Looks up a localized string similar to Preparing to Import VM. /// public static string IMPORTVM_PREP { get { @@ -19665,7 +20560,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting VM... ähnelt. + /// Looks up a localized string similar to Starting VM.... /// public static string IMPORTVM_STARTING { get { @@ -19674,7 +20569,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import VM from '{0}' to '{1}' ähnelt. + /// Looks up a localized string similar to Import VM from '{0}' to '{1}'. /// public static string IMPORTVM_TITLE { get { @@ -19683,7 +20578,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updating VM networking... ähnelt. + /// Looks up a localized string similar to Updating VM networking.... /// public static string IMPORTVM_UPDATING_NETWORKS { get { @@ -19692,7 +20587,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updating VM... ähnelt. + /// Looks up a localized string similar to Updating VM.... /// public static string IMPORTVM_UPDATING_VM { get { @@ -19701,7 +20596,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Waiting for Import VM wizard to complete... ähnelt. + /// Looks up a localized string similar to Waiting for Import VM wizard to complete.... /// public static string IMPORTVM_WAITING_FOR_WIZARD { get { @@ -19710,7 +20605,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Is in a vApp ähnelt. + /// Looks up a localized string similar to Is in a vApp. /// public static string IN_ANY_APPLIANCE { get { @@ -19719,7 +20614,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die in '{0}' ähnelt. + /// Looks up a localized string similar to in '{0}'. /// public static string IN_POOL { get { @@ -19728,7 +20623,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die In progress ähnelt. + /// Looks up a localized string similar to In progress. /// public static string IN_PROGRESS { get { @@ -19737,7 +20632,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die In rolling upgrade ähnelt. + /// Looks up a localized string similar to In rolling upgrade. /// public static string IN_ROLLING_UPGRADE { get { @@ -19746,7 +20641,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server version is incompatible with [XenCenter]. ähnelt. + /// Looks up a localized string similar to This server version is incompatible with [XenCenter].. /// public static string INCOMPATIBLE_PRODUCTS { get { @@ -19755,7 +20650,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Incompatible protocol version ähnelt. + /// Looks up a localized string similar to Incompatible protocol version. /// public static string INCOMPATIBLE_PROTOCOL_VERSION { get { @@ -19764,7 +20659,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Incompatible write cache mode ähnelt. + /// Looks up a localized string similar to Incompatible write cache mode. /// public static string INCOMPATIBLE_WRITE_CACHE_MODE { get { @@ -19773,7 +20668,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Incorrect file size ähnelt. + /// Looks up a localized string similar to Incorrect file size. /// public static string INCORRECT_FILE_SIZE { get { @@ -19782,7 +20677,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This LUN does not contain the Storage Repository '{0}'. Please select the correct LUN. ähnelt. + /// Looks up a localized string similar to This LUN does not contain the Storage Repository '{0}'. Please select the correct LUN.. /// public static string INCORRECT_LUN_FOR_SR { get { @@ -19791,7 +20686,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Incorrect old password ähnelt. + /// Looks up a localized string similar to Incorrect old password. /// public static string INCORRECT_OLD_PASSWORD { get { @@ -19800,7 +20695,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk snapshots are not currently available for this VM ähnelt. + /// Looks up a localized string similar to Disk snapshots are not currently available for this VM. /// public static string INFO_DISK_MODE { get { @@ -19809,7 +20704,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk and memory snapshots are not currently available for this VM ähnelt. + /// Looks up a localized string similar to Disk and memory snapshots are not currently available for this VM. /// public static string INFO_DISKMEMORY_MODE_MISC { get { @@ -19818,7 +20713,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk and memory snapshots need I/O drivers to be installed ähnelt. + /// Looks up a localized string similar to Disk and memory snapshots need I/O drivers to be installed. /// public static string INFO_DISKMEMORY_MODE_NO_IO_DRIVERS { get { @@ -19827,7 +20722,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk and memory snapshots need [Citrix VM Tools] to be installed ähnelt. + /// Looks up a localized string similar to Disk and memory snapshots need [Citrix VM Tools] to be installed. /// public static string INFO_DISKMEMORY_MODE_NO_TOOLS { get { @@ -19836,7 +20731,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk and memory snapshots need the VM to be running ähnelt. + /// Looks up a localized string similar to Disk and memory snapshots need the VM to be running. /// public static string INFO_DISKMEMORY_MODE_POWER_STATE { get { @@ -19845,7 +20740,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Quiesced snapshots need the VSS service to be enabled on the VM ähnelt. + /// Looks up a localized string similar to Quiesced snapshots need the VSS service to be enabled on the VM. /// public static string INFO_QUIESCE_MODE { get { @@ -19854,7 +20749,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Quiesced snapshots need Management Agent to be installed ähnelt. + /// Looks up a localized string similar to Quiesced snapshots need Management Agent to be installed. /// public static string INFO_QUIESCE_MODE_NO_MGMNT { get { @@ -19863,7 +20758,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Quiesced snapshots need [Citrix VM Tools] to be installed ähnelt. + /// Looks up a localized string similar to Quiesced snapshots need [Citrix VM Tools] to be installed. /// public static string INFO_QUIESCE_MODE_NO_TOOLS { get { @@ -19872,7 +20767,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Quiesced snapshots need the VM to be running ähnelt. + /// Looks up a localized string similar to Quiesced snapshots need the VM to be running. /// public static string INFO_QUIESCE_MODE_POWER_STATE { get { @@ -19881,7 +20776,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Information ähnelt. + /// Looks up a localized string similar to Information. /// public static string INFORMATION { get { @@ -19890,7 +20785,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Initialize WLB... ähnelt. + /// Looks up a localized string similar to Initialize WLB.... /// public static string INITIALIZE_WLB { get { @@ -19899,7 +20794,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Initialized ähnelt. + /// Looks up a localized string similar to Initialized. /// public static string INITIALIZED { get { @@ -19908,7 +20803,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connecting to Workload Balancing server ähnelt. + /// Looks up a localized string similar to Connecting to Workload Balancing server. /// public static string INITIALIZING_WLB { get { @@ -19917,7 +20812,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connecting pool {0} to Workload Balancing server. ähnelt. + /// Looks up a localized string similar to Connecting pool {0} to Workload Balancing server.. /// public static string INITIALIZING_WLB_ON { get { @@ -19926,7 +20821,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Could not find install files at the specified network location ähnelt. + /// Looks up a localized string similar to {0}: Could not find install files at the specified network location. /// public static string INSTALL_FILES_CANNOT_BE_FOUND { get { @@ -19935,7 +20830,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Install License Key ähnelt. + /// Looks up a localized string similar to Install License Key. /// public static string INSTALL_LICENSE_KEY { get { @@ -19944,7 +20839,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Install pending &updates... ähnelt. + /// Looks up a localized string similar to Install pending &updates.... /// public static string INSTALL_PENDING_UPDATES { get { @@ -19953,7 +20848,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Install [Citrix VM Tools] ähnelt. + /// Looks up a localized string similar to Install [Citrix VM Tools]. /// public static string INSTALL_XENSERVER_TOOLS { get { @@ -19962,7 +20857,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Install [Citrix VM Tools]... ähnelt. + /// Looks up a localized string similar to Install [Citrix VM Tools].... /// public static string INSTALL_XENSERVER_TOOLS_DOTS { get { @@ -19971,7 +20866,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Install [Citrix VM Tools] ähnelt. + /// Looks up a localized string similar to Install [Citrix VM Tools]. /// public static string INSTALL_XS_TOOLS { get { @@ -19980,7 +20875,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Installed Updates ähnelt. + /// Looks up a localized string similar to Installed Updates. /// public static string INSTALLED_UPDATES { get { @@ -19989,7 +20884,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find a CD drive on the selected VM. ähnelt. + /// Looks up a localized string similar to Could not find a CD drive on the selected VM.. /// public static string INSTALLTOOLS_COULDNOTFIND_CD { get { @@ -19998,7 +20893,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find the [Citrix VM Tools] install disc. ähnelt. + /// Looks up a localized string similar to Could not find the [Citrix VM Tools] install disc.. /// public static string INSTALLTOOLS_COULDNOTFIND_WIN { get { @@ -20007,7 +20902,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix VM Tools] installation launched. ähnelt. + /// Looks up a localized string similar to [Citrix VM Tools] installation launched.. /// public static string INSTALLTOOLS_DONE { get { @@ -20016,7 +20911,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix VM Tools] are already installed on this VM. ähnelt. + /// Looks up a localized string similar to [Citrix VM Tools] are already installed on this VM.. /// public static string INSTALLTOOLS_EXIST { get { @@ -20025,7 +20920,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Launching [Citrix VM Tools] installation. ähnelt. + /// Looks up a localized string similar to Launching [Citrix VM Tools] installation.. /// public static string INSTALLTOOLS_STARTING { get { @@ -20034,7 +20929,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Installing [Citrix VM Tools] on VM {0} ähnelt. + /// Looks up a localized string similar to Installing [Citrix VM Tools] on VM {0}. /// public static string INSTALLTOOLS_TITLE { get { @@ -20043,7 +20938,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating VM '{0}' from template '{1}' ähnelt. + /// Looks up a localized string similar to Creating VM '{0}' from template '{1}'. /// public static string INSTANT_VM_CREATE_DESCRIPTION { get { @@ -20052,7 +20947,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Instant VM create ähnelt. + /// Looks up a localized string similar to Instant VM create. /// public static string INSTANT_VM_CREATE_TITLE { get { @@ -20061,7 +20956,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server is currently not using the integrated GPU. ähnelt. + /// Looks up a localized string similar to This server is currently not using the integrated GPU.. /// public static string INTEGRATED_GPU_PASSTHROUGH_DISABLED { get { @@ -20070,7 +20965,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not using the integrated GPU ähnelt. + /// Looks up a localized string similar to Not using the integrated GPU. /// public static string INTEGRATED_GPU_PASSTHROUGH_DISABLED_SHORT { get { @@ -20079,7 +20974,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server is currently using the integrated GPU. ähnelt. + /// Looks up a localized string similar to This server is currently using the integrated GPU.. /// public static string INTEGRATED_GPU_PASSTHROUGH_ENABLED { get { @@ -20088,7 +20983,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Using the integrated GPU ähnelt. + /// Looks up a localized string similar to Using the integrated GPU. /// public static string INTEGRATED_GPU_PASSTHROUGH_ENABLED_SHORT { get { @@ -20097,7 +20992,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Interfaces: {0} ähnelt. + /// Looks up a localized string similar to Interfaces: {0}. /// public static string INTERFACES_COUNT { get { @@ -20106,7 +21001,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Invalid hostname ähnelt. + /// Looks up a localized string similar to Invalid hostname. /// public static string INVALID_HOST { get { @@ -20115,7 +21010,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Invalid number ähnelt. + /// Looks up a localized string similar to Invalid disk size. /// public static string INVALID_NUMBER { get { @@ -20124,16 +21019,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This does not appear to be a valid OVF file. ähnelt. - /// - public static string INVALID_OVF { - get { - return ResourceManager.GetString("INVALID_OVF", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Invalid parameter ähnelt. + /// Looks up a localized string similar to Invalid parameter. /// public static string INVALID_PARAMETER { get { @@ -20142,7 +21028,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Invalid session ähnelt. + /// Looks up a localized string similar to Invalid session. /// public static string INVALID_SESSION { get { @@ -20151,7 +21037,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die IP Address ähnelt. + /// Looks up a localized string similar to IP Address. /// public static string IP_ADDRESS { get { @@ -20160,7 +21046,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die I&P address: ähnelt. + /// Looks up a localized string similar to I&P address:. /// public static string IP_ADDRESS_LABEL { get { @@ -20169,7 +21055,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die to {0}.{1}.{2}.{3} ähnelt. + /// Looks up a localized string similar to to {0}.{1}.{2}.{3}. /// public static string IP_ADDRESS_RANGE_END { get { @@ -20178,7 +21064,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die I&P address range: ähnelt. + /// Looks up a localized string similar to I&P address range:. /// public static string IP_ADDRESS_RANGE_LABEL { get { @@ -20187,7 +21073,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unknown ähnelt. + /// Looks up a localized string similar to Unknown. /// public static string IP_ADDRESS_UNKNOWN { get { @@ -20196,7 +21082,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Edit IQN ähnelt. + /// Looks up a localized string similar to Edit IQN. /// public static string IQN_CHECK_EDIT { get { @@ -20205,7 +21091,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} has an iSCSI-IQN ({1}) which already exists on {2}. This could cause problems with iSCSI storage on this network. ähnelt. + /// Looks up a localized string similar to {0} has an iSCSI-IQN ({1}) which already exists on {2}. This could cause problems with iSCSI storage on this network.. /// public static string IQN_CHECK_EXISTS_TEXT { get { @@ -20214,7 +21100,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die iSCSI-IQN Exists ähnelt. + /// Looks up a localized string similar to iSCSI-IQN Exists. /// public static string IQN_CHECK_EXISTS_TITLE { get { @@ -20223,7 +21109,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} has no iSCSI-IQN. This could cause problems with iSCSI storage on this network. ähnelt. + /// Looks up a localized string similar to {0} has no iSCSI-IQN. This could cause problems with iSCSI storage on this network.. /// public static string IQN_CHECK_MISSING_TEXT { get { @@ -20232,7 +21118,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die iSCSI-IQN Missing ähnelt. + /// Looks up a localized string similar to iSCSI-IQN Missing. /// public static string IQN_CHECK_MISSING_TITLE { get { @@ -20241,7 +21127,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die is ähnelt. + /// Looks up a localized string similar to is. /// public static string IS { get { @@ -20250,7 +21136,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die is exactly ähnelt. + /// Looks up a localized string similar to is exactly. /// public static string IS_EXACTLY { get { @@ -20259,7 +21145,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Is in a pool ähnelt. + /// Looks up a localized string similar to Is in a pool. /// public static string IS_IN_A_POOL { get { @@ -20268,7 +21154,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs on StorageLink Gateway SR ähnelt. + /// Looks up a localized string similar to VMs on StorageLink Gateway SR. /// public static string IS_IN_STORAGELINK_SR { get { @@ -20277,7 +21163,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die is not ähnelt. + /// Looks up a localized string similar to is not. /// public static string IS_NOT { get { @@ -20286,7 +21172,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Is standalone ähnelt. + /// Looks up a localized string similar to Is standalone. /// public static string IS_STANDALONE { get { @@ -20295,8 +21181,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SR size: {0} - ///SR UUID: {1} ähnelt. + /// Looks up a localized string similar to SR size: {0} + ///SR UUID: {1}. /// public static string ISCSI_DIALOG_SR_DETAILS { get { @@ -20305,10 +21191,10 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Vendor: {0} + /// Looks up a localized string similar to Vendor: {0} ///Serial Number: {1} ///SCSI ID: {2} - ///Size: {3} ähnelt. + ///Size: {3}. /// public static string ISCSI_DIALOG_SR_DETAILS_FOR_FIBRECHANNEL { get { @@ -20317,7 +21203,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Interrogation failed -- call succeeded! ähnelt. + /// Looks up a localized string similar to Interrogation failed -- call succeeded!. /// public static string ISCSI_FAIL { get { @@ -20326,7 +21212,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SHOULD NEVER BE CREATED ähnelt. + /// Looks up a localized string similar to SHOULD NEVER BE CREATED. /// public static string ISCSI_SHOULD_NO_BE_CREATED { get { @@ -20335,7 +21221,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die StorageLink technology ähnelt. + /// Looks up a localized string similar to StorageLink technology. /// public static string ISL_SR { get { @@ -20344,7 +21230,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Loaded ISO '{0}' into the DVD Drive on VM {1} ähnelt. + /// Looks up a localized string similar to Loaded ISO '{0}' into the DVD Drive on VM {1}. /// public static string ISO_LOADED { get { @@ -20353,7 +21239,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Loading ISO '{0}' into the DVD Drive on VM {1} ähnelt. + /// Looks up a localized string similar to Loading ISO '{0}' into the DVD Drive on VM {1}. /// public static string ISO_LOADING { get { @@ -20362,7 +21248,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Set DVD Drive on {0} as empty. ähnelt. + /// Looks up a localized string similar to Set DVD Drive on {0} as empty.. /// public static string ISO_UNLOADED { get { @@ -20371,7 +21257,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting DVD Drive on {0} as empty. ähnelt. + /// Looks up a localized string similar to Setting DVD Drive on {0} as empty.. /// public static string ISO_UNLOADING { get { @@ -20380,7 +21266,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die DVD drive {0} on {1} ähnelt. + /// Looks up a localized string similar to DVD drive {0} on {1}. /// public static string ISOCOMBOBOX_CD_DRIVE { get { @@ -20389,7 +21275,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please enter a user name and password with sufficient privileges to add servers to domain '{0}'. ähnelt. + /// Looks up a localized string similar to Please enter a user name and password with sufficient privileges to add servers to domain '{0}'.. /// public static string JOINING_AD { get { @@ -20398,16 +21284,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Keep waiting ähnelt. - /// - public static string KEEP_WAITING_BUTTON_LABEL { - get { - return ResourceManager.GetString("KEEP_WAITING_BUTTON_LABEL", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Attempting to connect to {0}... ähnelt. + /// Looks up a localized string similar to Attempting to connect to {0}.... /// public static string LABEL_ATTEMPT { get { @@ -20416,7 +21293,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Canceling connection to {0}... ähnelt. + /// Looks up a localized string similar to Canceling connection to {0}.... /// public static string LABEL_FAILED { get { @@ -20425,7 +21302,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Synchronizing with {0}... ähnelt. + /// Looks up a localized string similar to Synchronizing with {0}.... /// public static string LABEL_SYNC { get { @@ -20434,7 +21311,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The information is not available. ähnelt. + /// Looks up a localized string similar to The information is not available.. /// public static string LAST_REFRESH_FAIL { get { @@ -20443,7 +21320,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Loading... ähnelt. + /// Looks up a localized string similar to Loading.... /// public static string LAST_REFRESH_IN_PROGRESS { get { @@ -20452,7 +21329,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Last refresh: {0} ähnelt. + /// Looks up a localized string similar to Last refresh: {0}. /// public static string LAST_REFRESH_SUCCESS { get { @@ -20461,7 +21338,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die was last week ähnelt. + /// Looks up a localized string similar to was last week. /// public static string LAST_WEEK { get { @@ -20470,7 +21347,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die License Manager ähnelt. + /// Looks up a localized string similar to License Manager. /// public static string LAUNCH_LICENSE_MANAGER { get { @@ -20479,7 +21356,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter a user name and password with sufficient privileges to remove your machine account from AD. Authentication will be disabled even if the machine account cannot be removed. ähnelt. + /// Looks up a localized string similar to Learn more. + /// + public static string LEARN_MORE { + get { + return ResourceManager.GetString("LEARN_MORE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Enter a user name and password with sufficient privileges to remove your machine account from AD. Authentication will be disabled even if the machine account cannot be removed.. /// public static string LEAVING_AD { get { @@ -20488,7 +21374,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Left Alt ähnelt. + /// Looks up a localized string similar to Left Alt. /// public static string LEFT_ALT { get { @@ -20497,7 +21383,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die < {0} ähnelt. + /// Looks up a localized string similar to < {0}. /// public static string LESS_THAN { get { @@ -20506,7 +21392,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Activated ähnelt. + /// Looks up a localized string similar to Activated. /// public static string LICENSE_ACTIVATED { get { @@ -20515,7 +21401,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix] Virtual &Apps and Desktops ähnelt. + /// Looks up a localized string similar to [Citrix] Virtual &Apps and Desktops. /// public static string LICENSE_EDITION_DESKTOP { get { @@ -20524,7 +21410,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix] Virtual Apps and Desktops [Citrix] &Cloud ähnelt. + /// Looks up a localized string similar to [Citrix] Virtual Apps and Desktops [Citrix] &Cloud. /// public static string LICENSE_EDITION_DESKTOP_CLOUD { get { @@ -20533,7 +21419,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die XenApp/XenDesktop [Citrix] &Cloud ähnelt. + /// Looks up a localized string similar to XenApp/XenDesktop [Citrix] &Cloud. /// public static string LICENSE_EDITION_DESKTOP_CLOUD_LEGACY { get { @@ -20542,7 +21428,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die XenApp/Xen&Desktop ähnelt. + /// Looks up a localized string similar to XenApp/Xen&Desktop. /// public static string LICENSE_EDITION_DESKTOP_LEGACY { get { @@ -20551,7 +21437,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix] Virtual Apps and Desktops &Premium ähnelt. + /// Looks up a localized string similar to [Citrix] Virtual Apps and Desktops &Premium. /// public static string LICENSE_EDITION_DESKTOP_PLUS { get { @@ -20560,7 +21446,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die XenApp/XenDesktop &Platinum ähnelt. + /// Looks up a localized string similar to XenApp/XenDesktop &Platinum. /// public static string LICENSE_EDITION_DESKTOP_PLUS_LEGACY { get { @@ -20569,7 +21455,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer product] P&remium Per-Socket ({0} required) ähnelt. + /// Looks up a localized string similar to [XenServer product] P&remium Per-Socket ({0} required). /// public static string LICENSE_EDITION_ENTERPRISE_PERSOCKET { get { @@ -20578,7 +21464,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Legacy XenServer product] E&nterprise Per-Socket ({0} required) ähnelt. + /// Looks up a localized string similar to [Legacy XenServer product] E&nterprise Per-Socket ({0} required). /// public static string LICENSE_EDITION_ENTERPRISE_PERSOCKET_LEGACY { get { @@ -20587,7 +21473,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer product] Pr&emium Per-User ähnelt. + /// Looks up a localized string similar to [XenServer product] Pr&emium Per-User. /// public static string LICENSE_EDITION_ENTERPRISE_PERUSER { get { @@ -20596,7 +21482,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Legacy XenServer product] &Enterprise Per-User ähnelt. + /// Looks up a localized string similar to [Legacy XenServer product] &Enterprise Per-User. /// public static string LICENSE_EDITION_ENTERPRISE_PERUSER_LEGACY { get { @@ -20605,7 +21491,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer product] Per-&Socket ({0} required) ähnelt. + /// Looks up a localized string similar to [XenServer product] Per-&Socket ({0} required). /// public static string LICENSE_EDITION_PERSOCKET { get { @@ -20614,7 +21500,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Legacy XenServer product] Per-&Socket ({0} required) ähnelt. + /// Looks up a localized string similar to [Legacy XenServer product] Per-&Socket ({0} required). /// public static string LICENSE_EDITION_PERSOCKET_LEGACY { get { @@ -20623,7 +21509,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer product] &Standard Per-Socket ({0} required) ähnelt. + /// Looks up a localized string similar to [XenServer product] &Standard Per-Socket ({0} required). /// public static string LICENSE_EDITION_STANDARD_PERSOCKET { get { @@ -20632,7 +21518,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Legacy XenServer product] &Standard Per-Socket ({0} required) ähnelt. + /// Looks up a localized string similar to [Legacy XenServer product] &Standard Per-Socket ({0} required). /// public static string LICENSE_EDITION_STANDARD_PERSOCKET_LEGACY { get { @@ -20641,7 +21527,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer product] for [Citrix] Virtual &Desktops ähnelt. + /// Looks up a localized string similar to [XenServer product] for [Citrix] Virtual &Desktops. /// public static string LICENSE_EDITION_XENDESKTOP { get { @@ -20650,7 +21536,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Legacy XenServer product] for &XenDesktop ähnelt. + /// Looks up a localized string similar to [Legacy XenServer product] for &XenDesktop. /// public static string LICENSE_EDITION_XENDESKTOP_LEGACY { get { @@ -20659,7 +21545,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The licensing action for {0} failed. ähnelt. + /// Looks up a localized string similar to The licensing action for {0} failed.. /// public static string LICENSE_ERROR_1 { get { @@ -20668,7 +21554,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The licensing action failed for {0} out of {1} of the selected servers. ähnelt. + /// Looks up a localized string similar to The licensing action failed for {0} out of {1} of the selected servers.. /// public static string LICENSE_ERROR_MANY { get { @@ -20677,7 +21563,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Licensing Error ähnelt. + /// Looks up a localized string similar to Licensing Error. /// public static string LICENSE_ERROR_TITLE { get { @@ -20686,7 +21572,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die License expired ähnelt. + /// Looks up a localized string similar to License expired. /// public static string LICENSE_EXPIRED { get { @@ -20695,7 +21581,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No licenses available ähnelt. + /// Looks up a localized string similar to No licenses available. /// public static string LICENSE_EXPIRED_NO_LICENSES_AVAILABLE { get { @@ -20704,7 +21590,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A server license has expired or is in need of activation. ähnelt. + /// Looks up a localized string similar to A server license has expired or is in need of activation.. /// public static string LICENSE_EXPIRED_OR_NEEDS_ACTIVATION { get { @@ -20713,7 +21599,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Expires in {0} days ähnelt. + /// Looks up a localized string similar to Expires in {0} days. /// public static string LICENSE_EXPIRES_DAYS { get { @@ -20722,7 +21608,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Expires in {0} hours ähnelt. + /// Looks up a localized string similar to Expires in {0} hours. /// public static string LICENSE_EXPIRES_HOURS { get { @@ -20731,7 +21617,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Expires in {0} minutes ähnelt. + /// Looks up a localized string similar to Expires in {0} minutes. /// public static string LICENSE_EXPIRES_MINUTES { get { @@ -20740,7 +21626,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Expires in 1 minute ähnelt. + /// Looks up a localized string similar to Expires in 1 minute. /// public static string LICENSE_EXPIRES_ONE_MIN { get { @@ -20749,7 +21635,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] Online ähnelt. + /// Looks up a localized string similar to [XenServer] Online. /// public static string LICENSE_EXPIRY_PURCHACE { get { @@ -20758,7 +21644,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This field is disabled due to license restrictions on the server. ähnelt. + /// Looks up a localized string similar to This field is disabled due to license restrictions on the server.. /// public static string LICENSE_FIELD_DISABLED { get { @@ -20767,7 +21653,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected license file does not exist ähnelt. + /// Looks up a localized string similar to The selected license file does not exist. /// public static string LICENSE_FILE_DOES_NOT_EXIST { get { @@ -20776,7 +21662,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected file is too large to be a license ähnelt. + /// Looks up a localized string similar to The selected file is too large to be a license. /// public static string LICENSE_FILE_TOO_LARGE { get { @@ -20785,7 +21671,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Free ähnelt. + /// Looks up a localized string similar to Free. /// public static string LICENSE_FREE { get { @@ -20794,7 +21680,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A selected host is no longer active ähnelt. + /// Looks up a localized string similar to A selected host is no longer active. /// public static string LICENSE_HOST_NOT_LIVE { get { @@ -20803,7 +21689,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Licensed ähnelt. + /// Looks up a localized string similar to Licensed. /// public static string LICENSE_LICENSED { get { @@ -20812,7 +21698,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Buy Licenses... ähnelt. + /// Looks up a localized string similar to Buy Licenses.... /// public static string LICENSE_MANAGER_BUY_LICENSE_LINK_TEXT { get { @@ -20821,7 +21707,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die License Expires: ähnelt. + /// Looks up a localized string similar to License Expires:. /// public static string LICENSE_MANAGER_SUMMARY_LICENSE_EXPIRES { get { @@ -20830,7 +21716,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die License Server: ähnelt. + /// Looks up a localized string similar to License Server:. /// public static string LICENSE_MANAGER_SUMMARY_LICENSE_SERVER { get { @@ -20839,7 +21725,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sockets: ähnelt. + /// Looks up a localized string similar to Sockets:. /// public static string LICENSE_MANAGER_SUMMARY_LICENSE_SOCKETS { get { @@ -20848,7 +21734,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die License Type: ähnelt. + /// Looks up a localized string similar to License Type:. /// public static string LICENSE_MANAGER_SUMMARY_LICENSE_TYPE { get { @@ -20857,7 +21743,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Never ähnelt. + /// Looks up a localized string similar to Never. /// public static string LICENSE_NEVER { get { @@ -20866,7 +21752,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The license for a host cannot be changed when HA is on ähnelt. + /// Looks up a localized string similar to The license for a host cannot be changed when HA is on. /// public static string LICENSE_NO_HA { get { @@ -20875,7 +21761,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Servers must be selected one at a time when activating Express [XenServer]. ähnelt. + /// Looks up a localized string similar to Servers must be selected one at a time when activating Express [XenServer].. /// public static string LICENSE_NO_MULTISELECT_ACTIVATE { get { @@ -20884,7 +21770,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Servers must be selected one at a time when licensing servers which have a version lower than [BRANDING_VERSION_5_6]. ähnelt. + /// Looks up a localized string similar to Servers must be selected one at a time when licensing servers which have a version lower than [BRANDING_VERSION_5_6].. /// public static string LICENSE_NO_MULTISELECT_LICENSE { get { @@ -20893,7 +21779,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not eligible for support ähnelt. + /// Looks up a localized string similar to Not eligible for support. /// public static string LICENSE_NOT_ELIGIBLE_FOR_SUPPORT { get { @@ -20902,7 +21788,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The license server {0} could not be reached. You have until {1} to reconnect to the license server. ähnelt. + /// Looks up a localized string similar to The license server {0} could not be reached. You have until {1} to reconnect to the license server.. /// public static string LICENSE_REGULAR_GRACE_TOOLTIP { get { @@ -20911,7 +21797,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die License Restriction: Could not connect to {0}, a server with an XE Express License already exists ({1}) ähnelt. + /// Looks up a localized string similar to License Restriction: Could not connect to {0}, a server with an XE Express License already exists ({1}). /// public static string LICENSE_RESTRICTION_MESSAGE { get { @@ -20920,7 +21806,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Your support and maintenance has expired ähnelt. + /// Looks up a localized string similar to Your support and maintenance has expired. /// public static string LICENSE_SA_EXPIRED { get { @@ -20929,7 +21815,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Your support and maintenance expires in {0} ähnelt. + /// Looks up a localized string similar to Your support and maintenance expires in {0}. /// public static string LICENSE_SA_EXPIRES_IN { get { @@ -20938,7 +21824,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not open {0} ähnelt. + /// Looks up a localized string similar to Could not open {0}. /// public static string LICENSE_SERVER_COULD_NOT_OPEN_LINK { get { @@ -20947,7 +21833,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}:{1} ähnelt. + /// Looks up a localized string similar to {0}:{1}. /// public static string LICENSE_SERVER_PORT_FORMAT { get { @@ -20956,7 +21842,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die http://{0}:{1} ähnelt. + /// Looks up a localized string similar to http://{0}:{1}. /// public static string LICENSE_SERVER_WEB_CONSOLE_FORMAT { get { @@ -20965,7 +21851,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Go to... ähnelt. + /// Looks up a localized string similar to Go to.... /// public static string LICENSE_SERVER_WEB_CONSOLE_GOTO { get { @@ -20974,7 +21860,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Status ähnelt. + /// Looks up a localized string similar to Status. /// public static string LICENSE_STATUS { get { @@ -20983,8 +21869,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Eligible for support - ///[Citrix] Virtual Apps and Desktops [Citrix] Cloud features enabled ähnelt. + /// Looks up a localized string similar to Eligible for support + ///[Citrix] Virtual Apps and Desktops [Citrix] Cloud features enabled. /// public static string LICENSE_SUPPORT_AND_DESKTOP_CLOUD_FEATURES_ENABLED { get { @@ -20993,8 +21879,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Eligible for support - ///[Citrix] Virtual Apps and Desktops features enabled ähnelt. + /// Looks up a localized string similar to Eligible for support + ///[Citrix] Virtual Apps and Desktops features enabled. /// public static string LICENSE_SUPPORT_AND_DESKTOP_FEATURES_ENABLED { get { @@ -21003,8 +21889,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Eligible for support - ///[Citrix] Virtual Apps and Desktops Premium features enabled ähnelt. + /// Looks up a localized string similar to Eligible for support + ///[Citrix] Virtual Apps and Desktops Premium features enabled. /// public static string LICENSE_SUPPORT_AND_DESKTOP_PLUS_FEATURES_ENABLED { get { @@ -21013,8 +21899,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Eligible for support - ///Premium features enabled ähnelt. + /// Looks up a localized string similar to Eligible for support + ///Premium features enabled. /// public static string LICENSE_SUPPORT_AND_ENTERPRISE_FEATURES_ENABLED { get { @@ -21023,8 +21909,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Eligible for support - ///Premium features enabled ähnelt. + /// Looks up a localized string similar to Eligible for support + ///Premium features enabled. /// public static string LICENSE_SUPPORT_AND_PREMIUM_FEATURES_ENABLED { get { @@ -21033,8 +21919,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Eligible for support - ///Standard features only ähnelt. + /// Looks up a localized string similar to Eligible for support + ///Standard features only. /// public static string LICENSE_SUPPORT_AND_STANDARD_FEATURES_ENABLED { get { @@ -21043,7 +21929,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Activation keys can only be applied to one Express [XenServer] product at a time. ähnelt. + /// Looks up a localized string similar to Activation keys can only be applied to one Express [XenServer] product at a time.. /// public static string LICENSE_TOO_MANY_SERVERS_SELECTED_CAPTION { get { @@ -21052,7 +21938,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unlicensed ähnelt. + /// Looks up a localized string similar to Unlicensed. /// public static string LICENSE_UNLICENSED { get { @@ -21061,7 +21947,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unsupported ähnelt. + /// Looks up a localized string similar to Unsupported. /// public static string LICENSE_UNSUPPORTED { get { @@ -21070,7 +21956,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updating... ähnelt. + /// Looks up a localized string similar to Updating.... /// public static string LICENSE_UPDATING { get { @@ -21079,7 +21965,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updating Licenses ähnelt. + /// Looks up a localized string similar to Updating Licenses. /// public static string LICENSE_UPDATING_LICENSES { get { @@ -21088,7 +21974,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This host has been upgraded. You have until {0} to license this server. ähnelt. + /// Looks up a localized string similar to This host has been upgraded. You have until {0} to license this server.. /// public static string LICENSE_UPGRADE_GRACE_TOOLTIP { get { @@ -21097,7 +21983,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A server license will expire or need activation within 30 days. ähnelt. + /// Looks up a localized string similar to A server license will expire or need activation within 30 days.. /// public static string LICENSE_WILL_EXPIRE { get { @@ -21106,7 +21992,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Your license expires in {0} ähnelt. + /// Looks up a localized string similar to Your license expires in {0}. /// public static string LICENSE_YOUR_LICENCE_EXPIRES_IN { get { @@ -21115,7 +22001,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Your license has expired ähnelt. + /// Looks up a localized string similar to Your license has expired. /// public static string LICENSE_YOUR_LICENCE_HAS_EXPIRED { get { @@ -21124,7 +22010,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die One or more managed servers have expired. Either assign [XenServer] licenses, or activate Express [XenServer] products. ähnelt. + /// Looks up a localized string similar to One or more managed servers have expired. Either assign [XenServer] licenses, or activate Express [XenServer] products.. /// public static string LICENSING_DIALOG_EXPIRED_TEXT { get { @@ -21133,7 +22019,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die One or more managed servers will expire soon. Either assign [XenServer] licenses, or activate Express [XenServer] products. ähnelt. + /// Looks up a localized string similar to One or more managed servers will expire soon. Either assign [XenServer] licenses, or activate Express [XenServer] products.. /// public static string LICENSING_DIALOG_EXPIRING_SOON_TEXT { get { @@ -21142,7 +22028,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Link Status ähnelt. + /// Looks up a localized string similar to Link Status. /// public static string LINK_STATUS { get { @@ -21151,7 +22037,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Live Patching ähnelt. + /// Looks up a localized string similar to Live Patching. /// public static string LIVE_PATCHING { get { @@ -21160,11 +22046,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Live patching failed for the following servers: + /// Looks up a localized string similar to Live patching failed for the following servers: /// ///{0} /// - ///To complete the patch installation, please put the servers into maintenance mode and reboot them. ähnelt. + ///To complete the patch installation, please put the servers into maintenance mode and reboot them.. /// public static string LIVE_PATCHING_FAILED_MULTI_HOST { get { @@ -21173,7 +22059,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Live patching failed for server ‘{0}’. To complete the patch installation, please put the server into maintenance mode and reboot it. ähnelt. + /// Looks up a localized string similar to Live patching failed for server ‘{0}’. To complete the patch installation, please put the server into maintenance mode and reboot it.. /// public static string LIVE_PATCHING_FAILED_ONE_HOST { get { @@ -21182,7 +22068,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Local Storage Repositories ähnelt. + /// Looks up a localized string similar to Local Storage Repositories. /// public static string LOCAL_SRS { get { @@ -21191,7 +22077,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You have selected storage local to {0} that cannot be seen from this server ähnelt. + /// Looks up a localized string similar to You have selected storage local to {0} that cannot be seen from this server. /// public static string LOCAL_STORAGE_CANNOT_BE_SEEN { get { @@ -21200,16 +22086,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot move virtual disks between local SRs ähnelt. - /// - public static string LOCAL_TO_LOCAL_MOVE { - get { - return ResourceManager.GetString("LOCAL_TO_LOCAL_MOVE", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Location: ähnelt. + /// Looks up a localized string similar to Location:. /// public static string LOCATION_LABEL { get { @@ -21218,7 +22095,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Log Destination ähnelt. + /// Looks up a localized string similar to Log Destination. /// public static string LOG_DESTINATION { get { @@ -21227,7 +22104,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Logged in as: {0} ähnelt. + /// Looks up a localized string similar to Logged in as: {0}. /// public static string LOGGED_IN_AS { get { @@ -21236,7 +22113,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Logging in to the iSCSI target failed. ähnelt. + /// Looks up a localized string similar to Logging in to the iSCSI target failed.. /// public static string LOGGING_IN_TO_THE_ISCSI_TARGET_FAILED { get { @@ -21245,7 +22122,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die LUN-per-VDI Mapping ähnelt. + /// Looks up a localized string similar to LUN-per-VDI Mapping. /// public static string LUNPERVDI_PAGE_NAME { get { @@ -21254,7 +22131,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Map virtual disks (VDIs) to individual LUNs on the target SR ähnelt. + /// Looks up a localized string similar to Map virtual disks (VDIs) to individual LUNs on the target SR. /// public static string LUNPERVDI_PAGE_TITLE { get { @@ -21263,7 +22140,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM - VDI (Virtual Disks) ähnelt. + /// Looks up a localized string similar to VM - VDI (Virtual Disks). /// public static string LUNPERVDIPICKER_IMPORT_VDI_COLUMN_TITLE { get { @@ -21272,7 +22149,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VDI (Virtual Disks) ähnelt. + /// Looks up a localized string similar to VDI (Virtual Disks). /// public static string LUNPERVDIPICKER_VDI_COLUMN_TITLE { get { @@ -21281,7 +22158,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destroy any data present on the disk and create a new {0} SR ähnelt. + /// Looks up a localized string similar to Destroy any data present on the disk and create a new {0} SR. /// public static string LVMOHBA_WARNING_DIALOG_FORMAT_INFO { get { @@ -21290,7 +22167,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An existing {0} SR was found on the selected LUN ähnelt. + /// Looks up a localized string similar to An existing {0} SR was found on the selected LUN. /// public static string LVMOHBA_WARNING_DIALOG_HEADER_FOUND_EXISTING_SR { get { @@ -21299,7 +22176,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No existing SRs were found on the selected LUN ähnelt. + /// Looks up a localized string similar to No existing SRs were found on the selected LUN. /// public static string LVMOHBA_WARNING_DIALOG_HEADER_NO_EXISTING_SRS { get { @@ -21308,10 +22185,10 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Vendor: {0} + /// Looks up a localized string similar to Vendor: {0} ///Serial Number: {1} ///SCSI ID: {2} - ///Size: {3} ähnelt. + ///Size: {3}. /// public static string LVMOHBA_WARNING_DIALOG_LUN_DETAILS { get { @@ -21320,7 +22197,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Use the existing {0} SR ähnelt. + /// Looks up a localized string similar to Use the existing {0} SR. /// public static string LVMOHBA_WARNING_DIALOG_REATTACH_INFO { get { @@ -21329,7 +22206,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is no existing SR to reattach ähnelt. + /// Looks up a localized string similar to There is no existing SR to reattach. /// public static string LVMOHBA_WARNING_DIALOG_REATTACH_LABEL_TEXT { get { @@ -21338,7 +22215,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Do this for all remaining LUNs without existing SRs ähnelt. + /// Looks up a localized string similar to &Do this for all remaining LUNs without existing SRs. /// public static string LVMOHBA_WARNING_DIALOG_REPEAT_FOR_REMAINING_NO_SR { get { @@ -21347,7 +22224,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Do this for all remaining LUNs ähnelt. + /// Looks up a localized string similar to &Do this for all remaining LUNs. /// public static string LVMOHBA_WARNING_DIALOG_REPEAT_FOR_REMAINING_WITH_SR { get { @@ -21356,7 +22233,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die MAC ähnelt. + /// Looks up a localized string similar to MAC. /// public static string MAC { get { @@ -21365,7 +22242,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die auto-generate ähnelt. + /// Looks up a localized string similar to auto-generate. /// public static string MAC_AUTOGENERATE { get { @@ -21374,7 +22251,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Invalid MAC address. ähnelt. + /// Looks up a localized string similar to Invalid MAC address.. /// public static string MAC_INVALID { get { @@ -21383,7 +22260,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die zh-CN ähnelt. + /// Looks up a localized string similar to zh-CN. /// public static string MAIL_LANGUAGE_CHINESE_CODE { get { @@ -21392,7 +22269,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Chinese (Simplified) ähnelt. + /// Looks up a localized string similar to Chinese (Simplified). /// public static string MAIL_LANGUAGE_CHINESE_NAME { get { @@ -21401,7 +22278,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die en-US ähnelt. + /// Looks up a localized string similar to en-US. /// public static string MAIL_LANGUAGE_ENGLISH_CODE { get { @@ -21410,7 +22287,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die English (United States) ähnelt. + /// Looks up a localized string similar to English (United States). /// public static string MAIL_LANGUAGE_ENGLISH_NAME { get { @@ -21419,7 +22296,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ja-JP ähnelt. + /// Looks up a localized string similar to ja-JP. /// public static string MAIL_LANGUAGE_JAPANESE_CODE { get { @@ -21428,7 +22305,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Japanese (Japan) ähnelt. + /// Looks up a localized string similar to Japanese (Japan). /// public static string MAIL_LANGUAGE_JAPANESE_NAME { get { @@ -21437,7 +22314,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maintenance Mode ähnelt. + /// Looks up a localized string similar to Maintenance Mode. /// public static string MAINTENANCE_MODE { get { @@ -21446,7 +22323,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Add... ähnelt. + /// Looks up a localized string similar to &Add.... /// public static string MAINWINDOW_ADD_HOST { get { @@ -21455,7 +22332,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to migrate the VM {0} to the server {1}? ähnelt. + /// Looks up a localized string similar to Do you want to migrate the VM {0} to the server {1}?. /// public static string MAINWINDOW_CONFIRM_MIGRATE { get { @@ -21464,7 +22341,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to migrate the selected VMs to the server {0}? ähnelt. + /// Looks up a localized string similar to Do you want to migrate the selected VMs to the server {0}?. /// public static string MAINWINDOW_CONFIRM_MIGRATE_MULTIPLE { get { @@ -21473,7 +22350,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to move the server {0} into the pool {1}? ähnelt. + /// Looks up a localized string similar to Do you want to move the server {0} into the pool {1}?. /// public static string MAINWINDOW_CONFIRM_MOVE_TO_POOL { get { @@ -21482,7 +22359,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to move the selected servers into the pool {0}? ähnelt. + /// Looks up a localized string similar to Do you want to move the selected servers into the pool {0}?. /// public static string MAINWINDOW_CONFIRM_MOVE_TO_POOL_MULTIPLE { get { @@ -21491,9 +22368,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to remove '{0}' from pool '{1}'? + /// Looks up a localized string similar to Do you want to remove '{0}' from pool '{1}'? /// - ///This will permanently delete and reinitialize all local storage on '{2}'. Your data will be lost, and the server will be rebooted. ähnelt. + ///This will permanently delete and reinitialize all local storage on '{2}'. Your data will be lost, and the server will be rebooted.. /// public static string MAINWINDOW_CONFIRM_REMOVE_FROM_POOL { get { @@ -21502,9 +22379,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to remove the selected servers from pool '{0}'? + /// Looks up a localized string similar to Do you want to remove the selected servers from pool '{0}'? /// - ///This will permanently delete and reinitialize all local storage on the servers. Your data will be lost, and the servers will be rebooted. ähnelt. + ///This will permanently delete and reinitialize all local storage on the servers. Your data will be lost, and the servers will be rebooted.. /// public static string MAINWINDOW_CONFIRM_REMOVE_FROM_POOL_MULTIPLE { get { @@ -21513,7 +22390,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove From Pool ähnelt. + /// Looks up a localized string similar to Remove From Pool. /// public static string MAINWINDOW_CONFIRM_REMOVE_FROM_POOL_TITLE { get { @@ -21522,7 +22399,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Yes, Remove ähnelt. + /// Looks up a localized string similar to &Yes, Remove. /// public static string MAINWINDOW_CONFIRM_REMOVE_FROM_POOL_YES_BUTTON_LABEL { get { @@ -21531,7 +22408,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die C&onnect All ähnelt. + /// Looks up a localized string similar to C&onnect All. /// public static string MAINWINDOW_CONNECT_ALL_HOSTS { get { @@ -21540,7 +22417,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Connect ähnelt. + /// Looks up a localized string similar to &Connect. /// public static string MAINWINDOW_CONNECTHOST { get { @@ -21549,7 +22426,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} ({1}) ähnelt. + /// Looks up a localized string similar to {0} ({1}). /// public static string MAINWINDOW_CONTEXT_REASON { get { @@ -21558,7 +22435,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (Updating...) ähnelt. + /// Looks up a localized string similar to {0} (Updating...). /// public static string MAINWINDOW_CONTEXT_UPDATING { get { @@ -21567,7 +22444,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Add Server ähnelt. + /// Looks up a localized string similar to &Add Server. /// public static string MAINWINDOW_CONTEXTMENU_ADD_SERVER { get { @@ -21576,7 +22453,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Convert to &Template... ähnelt. + /// Looks up a localized string similar to Conv&ersion Manager.... + /// + public static string MAINWINDOW_CONVERSION_MANAGER_MENU_ITEM { + get { + return ResourceManager.GetString("MAINWINDOW_CONVERSION_MANAGER_MENU_ITEM", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Convert to &Template.... /// public static string MAINWINDOW_CONVERT_VM_TO_TEMPLATE { get { @@ -21585,7 +22471,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Co&nvert to Template... ähnelt. + /// Looks up a localized string similar to Co&nvert to Template.... /// public static string MAINWINDOW_CONVERT_VM_TO_TEMPLATE_CONTEXT_MENU { get { @@ -21594,7 +22480,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Copy... ähnelt. + /// Looks up a localized string similar to &Copy.... /// public static string MAINWINDOW_COPY_TEMPLATE { get { @@ -21603,7 +22489,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Copy VM... ähnelt. + /// Looks up a localized string similar to &Copy VM.... /// public static string MAINWINDOW_COPY_VM { get { @@ -21612,7 +22498,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ctrl+B ähnelt. + /// Looks up a localized string similar to Ctrl+B. /// public static string MAINWINDOW_CTRL_B { get { @@ -21621,7 +22507,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ctrl+E ähnelt. + /// Looks up a localized string similar to Ctrl+E. /// public static string MAINWINDOW_CTRL_E { get { @@ -21630,7 +22516,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ctrl+N ähnelt. + /// Looks up a localized string similar to Ctrl+N. /// public static string MAINWINDOW_CTRL_N { get { @@ -21639,7 +22525,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ctrl+R ähnelt. + /// Looks up a localized string similar to Ctrl+R. /// public static string MAINWINDOW_CTRL_R { get { @@ -21648,7 +22534,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ctrl+S ähnelt. + /// Looks up a localized string similar to Ctrl+S. /// public static string MAINWINDOW_CTRL_S { get { @@ -21657,7 +22543,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ctrl+Y ähnelt. + /// Looks up a localized string similar to Ctrl+Y. /// public static string MAINWINDOW_CTRL_Y { get { @@ -21666,7 +22552,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die De&lete... ähnelt. + /// Looks up a localized string similar to &Delete.... /// public static string MAINWINDOW_DELETE_OBJECTS { get { @@ -21675,7 +22561,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Mak&e into standalone server ähnelt. + /// Looks up a localized string similar to Mak&e into standalone server. /// public static string MAINWINDOW_DELETE_POOL { get { @@ -21684,7 +22570,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Delete Tag... ähnelt. + /// Looks up a localized string similar to &Delete Tag.... /// public static string MAINWINDOW_DELETE_TAG { get { @@ -21693,7 +22579,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Delete Tags... ähnelt. + /// Looks up a localized string similar to &Delete Tags.... /// public static string MAINWINDOW_DELETE_TAGS { get { @@ -21702,7 +22588,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Delete Template... ähnelt. + /// Looks up a localized string similar to &Delete Template.... /// public static string MAINWINDOW_DELETE_TEMPLATE { get { @@ -21711,16 +22597,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Delete VM... ähnelt. - /// - public static string MAINWINDOW_DELETE_VM { - get { - return ResourceManager.GetString("MAINWINDOW_DELETE_VM", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Destr&oy... ähnelt. + /// Looks up a localized string similar to Destr&oy.... /// public static string MAINWINDOW_DESTROY_SR { get { @@ -21729,7 +22606,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Detach... ähnelt. + /// Looks up a localized string similar to &Detach.... /// public static string MAINWINDOW_DETACH_SR { get { @@ -21738,7 +22615,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die D&isable Changed Block Tracking ähnelt. + /// Looks up a localized string similar to D&isable Changed Block Tracking. /// public static string MAINWINDOW_DISABLE_CHANGED_BLOCK_TRACKING { get { @@ -21747,7 +22624,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Dis&connect ähnelt. + /// Looks up a localized string similar to Dis&connect. /// public static string MAINWINDOW_DISCONNECT { get { @@ -21756,7 +22633,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Di&sconnect All ähnelt. + /// Looks up a localized string similar to Di&sconnect All. /// public static string MAINWINDOW_DISCONNECT_ALL_HOSTS { get { @@ -21765,7 +22642,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Disconnect ähnelt. + /// Looks up a localized string similar to &Disconnect. /// public static string MAINWINDOW_DISCONNECT_CONTEXT_MENU { get { @@ -21774,7 +22651,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Disconnect ähnelt. + /// Looks up a localized string similar to &Disconnect. /// public static string MAINWINDOW_DISCONNECT_CONTEXT_MENU_POOL { get { @@ -21783,7 +22660,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Edit Ta&gs... ähnelt. + /// Looks up a localized string similar to Edit Ta&gs.... /// public static string MAINWINDOW_EDIT_TAGS { get { @@ -21792,7 +22669,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The [XenServer] license on '{0}' will expire in {1}. ähnelt. + /// Looks up a localized string similar to The [XenServer] license on '{0}' will expire in {1}.. /// public static string MAINWINDOW_EXPIRE_MESSAGE { get { @@ -21801,7 +22678,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The [XenServer] license on '{0}' has expired. ähnelt. + /// Looks up a localized string similar to The [XenServer] license on '{0}' has expired.. /// public static string MAINWINDOW_EXPIRE_MESSAGE_TOO_LATE { get { @@ -21810,7 +22687,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die E&xport Resource Data... ähnelt. + /// Looks up a localized string similar to E&xport Resource Data.... /// public static string MAINWINDOW_EXPORT_POOL_RESOURCE_DATA { get { @@ -21819,7 +22696,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Export to File... ähnelt. + /// Looks up a localized string similar to &Export to File.... /// public static string MAINWINDOW_EXPORT_TEMPLATE { get { @@ -21828,7 +22705,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export to Fi&le... ähnelt. + /// Looks up a localized string similar to Export to Fi&le.... /// public static string MAINWINDOW_EXPORT_VM_AS_BACKUP { get { @@ -21837,7 +22714,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The VM must be shut down before it can be exported. ähnelt. + /// Looks up a localized string similar to The VM must be shut down before it can be exported.. /// public static string MAINWINDOW_EXPORT_VM_AS_BACKUP_TOOLTIP { get { @@ -21846,7 +22723,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Force Re&boot ähnelt. + /// Looks up a localized string similar to Force Re&boot. /// public static string MAINWINDOW_FORCE_REBOOT { get { @@ -21855,7 +22732,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Force Shut &Down ähnelt. + /// Looks up a localized string similar to Force Shut &Down. /// public static string MAINWINDOW_FORCE_SHUTDOWN { get { @@ -21864,7 +22741,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Force Shut Do&wn ähnelt. + /// Looks up a localized string similar to Force Shut Do&wn. /// public static string MAINWINDOW_FORCE_SHUTDOWN_CONTEXT_MENU { get { @@ -21873,7 +22750,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Forget Password ähnelt. + /// Looks up a localized string similar to &Forget Password. /// public static string MAINWINDOW_FORGET_SAVED_PASSWORD { get { @@ -21882,7 +22759,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Forget ähnelt. + /// Looks up a localized string similar to &Forget. /// public static string MAINWINDOW_FORGET_SR { get { @@ -21891,7 +22768,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (Licensed with {0}) ähnelt. + /// Looks up a localized string similar to (Licensed with {0}). /// public static string MAINWINDOW_HEADER_LICENSED_WITH { get { @@ -21900,7 +22777,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (Unlicensed) ähnelt. + /// Looks up a localized string similar to (Unlicensed). /// public static string MAINWINDOW_HEADER_UNLICENSED { get { @@ -21909,7 +22786,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &High Availability... ähnelt. + /// Looks up a localized string similar to &High Availability.... /// public static string MAINWINDOW_HIGH_AVAILABILITY { get { @@ -21918,7 +22795,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Inst&all [Citrix VM Tools]... ähnelt. + /// Looks up a localized string similar to Inst&all [Citrix VM Tools].... /// public static string MAINWINDOW_INSTALL_TOOLS { get { @@ -21927,7 +22804,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Quick Create ähnelt. + /// Looks up a localized string similar to &Quick Create. /// public static string MAINWINDOW_INSTANT_VM_FROM_TEMPLATE { get { @@ -21936,7 +22813,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removed connection to {0} ähnelt. + /// Looks up a localized string similar to Removed connection to {0}. /// public static string MAINWINDOW_LOG_REMOVECONNECTION { get { @@ -21945,7 +22822,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die M&igrate to Server ähnelt. + /// Looks up a localized string similar to M&igrate to Server. /// public static string MAINWINDOW_MIGRATE_TO_SERVER { get { @@ -21954,7 +22831,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Migrate VM... ähnelt. + /// Looks up a localized string similar to &Migrate VM.... /// public static string MAINWINDOW_MIGRATEVM { get { @@ -21963,7 +22840,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Move... ähnelt. + /// Looks up a localized string similar to &Move.... /// public static string MAINWINDOW_MOVE_OBJECTS { get { @@ -21972,7 +22849,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Move VM... ähnelt. + /// Looks up a localized string similar to &Move VM.... /// public static string MAINWINDOW_MOVEVM { get { @@ -21981,7 +22858,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &New SR... ähnelt. + /// Looks up a localized string similar to &New SR.... /// public static string MAINWINDOW_NEW_STORAGE { get { @@ -21990,7 +22867,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &New VM... ähnelt. + /// Looks up a localized string similar to &New VM.... /// public static string MAINWINDOW_NEW_VM { get { @@ -21999,7 +22876,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New V&M... ähnelt. + /// Looks up a localized string similar to New V&M.... /// public static string MAINWINDOW_NEW_VM_CONTEXT_MENU { get { @@ -22008,7 +22885,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &New VM wizard... ähnelt. + /// Looks up a localized string similar to &New VM wizard.... /// public static string MAINWINDOW_NEW_VM_FROM_TEMPLATE { get { @@ -22017,7 +22894,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &New Pool... ähnelt. + /// Looks up a localized string similar to &New Pool.... /// public static string MAINWINDOW_NEWPOOL { get { @@ -22026,7 +22903,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pause ähnelt. + /// Looks up a localized string similar to &Pause. /// public static string MAINWINDOW_PAUSE { get { @@ -22035,7 +22912,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Power O&n ähnelt. + /// Looks up a localized string similar to Power O&n. /// public static string MAINWINDOW_POWER_ON { get { @@ -22044,7 +22921,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Po&wer On ähnelt. + /// Looks up a localized string similar to Po&wer On. /// public static string MAINWINDOW_POWER_ON_CONTEXT_MENU { get { @@ -22053,7 +22930,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Power On ähnelt. + /// Looks up a localized string similar to Power On. /// public static string MAINWINDOW_POWER_ON_NO_AMP { get { @@ -22062,7 +22939,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die R&eattach... ähnelt. + /// Looks up a localized string similar to R&eattach.... /// public static string MAINWINDOW_REATTACH_SR { get { @@ -22071,7 +22948,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reb&oot ähnelt. + /// Looks up a localized string similar to Reb&oot. /// public static string MAINWINDOW_REBOOT { get { @@ -22080,7 +22957,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reb&oot ähnelt. + /// Looks up a localized string similar to Reb&oot. /// public static string MAINWINDOW_REBOOT_CONTEXT_MENU { get { @@ -22089,7 +22966,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Re&boot ähnelt. + /// Looks up a localized string similar to Re&boot. /// public static string MAINWINDOW_REBOOT_HOST_CONTEXT_MENU { get { @@ -22098,7 +22975,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reconnec&t As... ähnelt. + /// Looks up a localized string similar to Reconnec&t As.... /// public static string MAINWINDOW_RECONNECTAS { get { @@ -22107,7 +22984,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start in Reco&very Mode ähnelt. + /// Looks up a localized string similar to Start in Reco&very Mode. /// public static string MAINWINDOW_RECOVERY_MODE { get { @@ -22116,7 +22993,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remo&ve from [XenCenter] ähnelt. + /// Looks up a localized string similar to Remo&ve from [XenCenter]. /// public static string MAINWINDOW_REMOVE_HOST { get { @@ -22125,7 +23002,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove Crash Dump &Files ähnelt. + /// Looks up a localized string similar to Remove Crash Dump &Files. /// public static string MAINWINDOW_REMOVE_HOST_CRASHDUMPS { get { @@ -22134,7 +23011,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove Crash Dump &Files ähnelt. + /// Looks up a localized string similar to Remove Crash Dump &Files. /// public static string MAINWINDOW_REMOVE_HOST_CRASHDUMPS_CONTEXT_MENU { get { @@ -22143,7 +23020,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Rename Tag... ähnelt. + /// Looks up a localized string similar to &Rename Tag.... /// public static string MAINWINDOW_RENAME_TAG { get { @@ -22152,7 +23029,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Re&pair... ähnelt. + /// Looks up a localized string similar to Re&pair.... /// public static string MAINWINDOW_REPAIR_SR { get { @@ -22161,7 +23038,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Re&pair... ähnelt. + /// Looks up a localized string similar to Re&pair.... /// public static string MAINWINDOW_REPAIR_SR_CONTEXT_MENU { get { @@ -22170,7 +23047,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Re&start ähnelt. + /// Looks up a localized string similar to Re&start. /// public static string MAINWINDOW_RESTART { get { @@ -22179,7 +23056,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restart Toolstac&k ähnelt. + /// Looks up a localized string similar to Restart Toolstac&k. /// public static string MAINWINDOW_RESTART_TOOLSTACK { get { @@ -22188,7 +23065,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die R&esume ähnelt. + /// Looks up a localized string similar to R&esume. /// public static string MAINWINDOW_RESUME { get { @@ -22197,7 +23074,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Re&sume ähnelt. + /// Looks up a localized string similar to Re&sume. /// public static string MAINWINDOW_RESUME_CONTEXT_MENU { get { @@ -22206,7 +23083,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resume on Ser&ver ähnelt. + /// Looks up a localized string similar to Resume on Ser&ver. /// public static string MAINWINDOW_RESUME_ON_HOST { get { @@ -22215,7 +23092,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sa&ve and Restore... ähnelt. + /// Looks up a localized string similar to Sa&ve and Restore.... /// public static string MAINWINDOW_SAVE_AND_RESTORE { get { @@ -22224,7 +23101,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Set as Defaul&t ähnelt. + /// Looks up a localized string similar to Set as Defaul&t. /// public static string MAINWINDOW_SET_AS_DEFAULT_SR { get { @@ -22233,7 +23110,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Share ähnelt. + /// Looks up a localized string similar to &Share. /// public static string MAINWINDOW_SHARE_SR { get { @@ -22242,7 +23119,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die S&hut Down ähnelt. + /// Looks up a localized string similar to S&hut Down. /// public static string MAINWINDOW_SHUTDOWN { get { @@ -22251,7 +23128,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Start ähnelt. + /// Looks up a localized string similar to &Start. /// public static string MAINWINDOW_START { get { @@ -22260,7 +23137,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die S&tart ähnelt. + /// Looks up a localized string similar to S&tart. /// public static string MAINWINDOW_START_CONTEXT_MENU { get { @@ -22269,7 +23146,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start on Ser&ver ähnelt. + /// Looks up a localized string similar to Start on Ser&ver. /// public static string MAINWINDOW_START_ON_HOST { get { @@ -22278,7 +23155,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die S&top ähnelt. + /// Looks up a localized string similar to S&top. /// public static string MAINWINDOW_STOP { get { @@ -22287,7 +23164,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die S&uspend ähnelt. + /// Looks up a localized string similar to S&uspend. /// public static string MAINWINDOW_SUSPEND { get { @@ -22296,7 +23173,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ta&ke a Snapshot... ähnelt. + /// Looks up a localized string similar to Ta&ke a Snapshot.... /// public static string MAINWINDOW_TAKE_SNAPSHOT { get { @@ -22305,16 +23182,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pause to RAM ähnelt. - /// - public static string MAINWINDOW_TOOLBAR_PAUSEVM { - get { - return ResourceManager.GetString("MAINWINDOW_TOOLBAR_PAUSEVM", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Power On Server (Ctrl+B) ähnelt. + /// Looks up a localized string similar to Power On Server (Ctrl+B). /// public static string MAINWINDOW_TOOLBAR_POWER_ON_SERVER { get { @@ -22323,7 +23191,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reboot VM (Ctrl+R) ähnelt. + /// Looks up a localized string similar to Reboot VM (Ctrl+R). /// public static string MAINWINDOW_TOOLBAR_REBOOT { get { @@ -22332,7 +23200,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reboot Server ähnelt. + /// Looks up a localized string similar to Reboot Server. /// public static string MAINWINDOW_TOOLBAR_REBOOTSERVER { get { @@ -22341,7 +23209,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resume ähnelt. + /// Looks up a localized string similar to Resume. /// public static string MAINWINDOW_TOOLBAR_RESUME { get { @@ -22350,7 +23218,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resume VM (Ctrl+Y) ähnelt. + /// Looks up a localized string similar to Resume VM (Ctrl+Y). /// public static string MAINWINDOW_TOOLBAR_RESUMEVM { get { @@ -22359,7 +23227,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut Down ähnelt. + /// Looks up a localized string similar to Shut Down. /// public static string MAINWINDOW_TOOLBAR_SHUTDOWN { get { @@ -22368,7 +23236,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut Down Server ähnelt. + /// Looks up a localized string similar to Shut Down Server. /// public static string MAINWINDOW_TOOLBAR_SHUTDOWNSERVER { get { @@ -22377,7 +23245,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut Down VM (Ctrl+E) ähnelt. + /// Looks up a localized string similar to Shut Down VM (Ctrl+E). /// public static string MAINWINDOW_TOOLBAR_SHUTDOWNVM { get { @@ -22386,7 +23254,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start ähnelt. + /// Looks up a localized string similar to Start. /// public static string MAINWINDOW_TOOLBAR_START { get { @@ -22395,7 +23263,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start VM (Ctrl+B) ähnelt. + /// Looks up a localized string similar to Start VM (Ctrl+B). /// public static string MAINWINDOW_TOOLBAR_STARTVM { get { @@ -22404,7 +23272,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Suspend ähnelt. + /// Looks up a localized string similar to Suspend. /// public static string MAINWINDOW_TOOLBAR_SUSPEND { get { @@ -22413,7 +23281,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Suspend VM (Ctrl+Y) ähnelt. + /// Looks up a localized string similar to Suspend VM (Ctrl+Y). /// public static string MAINWINDOW_TOOLBAR_SUSPENDVM { get { @@ -22422,7 +23290,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Re&claim freed space ähnelt. + /// Looks up a localized string similar to Re&claim freed space. /// public static string MAINWINDOW_TRIM_SR { get { @@ -22431,7 +23299,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die XVA Files (*.xva)|*.xva|All Files (*.*)|*.* ähnelt. + /// Looks up a localized string similar to XVA Files (*.xva)|*.xva|All Files (*.*)|*.*. /// public static string MAINWINDOW_XVA_BLURB { get { @@ -22440,7 +23308,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export to File ähnelt. + /// Looks up a localized string similar to Export to File. /// public static string MAINWINDOW_XVA_TITLE { get { @@ -22449,7 +23317,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Set as &Default ähnelt. + /// Looks up a localized string similar to Set as &Default. /// public static string MAKE_DEFAULT_SR { get { @@ -22458,7 +23326,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Management ähnelt. + /// Looks up a localized string similar to Management. /// public static string MANAGEMENT { get { @@ -22467,7 +23335,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Management interface ähnelt. + /// Looks up a localized string similar to Management interface. /// public static string MANAGEMENT_INTERFACE { get { @@ -22476,7 +23344,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Management Interfaces ähnelt. + /// Looks up a localized string similar to Management Interfaces. /// public static string MANAGEMENT_INTERFACES { get { @@ -22485,7 +23353,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Displayed below is a list of management interfaces for '{0}'. ähnelt. + /// Looks up a localized string similar to Displayed below is a list of management interfaces for '{0}'.. /// public static string MANAGEMENT_INTERFACES_FOR { get { @@ -22494,7 +23362,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (management) ähnelt. + /// Looks up a localized string similar to {0} (management). /// public static string MANAGEMENT_NETWORK { get { @@ -22503,7 +23371,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (management) on {1} ähnelt. + /// Looks up a localized string similar to {0} (management) on {1}. /// public static string MANAGEMENT_NETWORK_WITH_POOL { get { @@ -22512,7 +23380,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Subscription Advantage required for some hosts ähnelt. + /// Looks up a localized string similar to Subscription Advantage required for some hosts. /// public static string MANUAL_CHECK_FOR_UPDATES_PARTIAL_UNLICENSED_INFO { get { @@ -22521,7 +23389,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Subscription Advantage required ähnelt. + /// Looks up a localized string similar to Subscription Advantage required. /// public static string MANUAL_CHECK_FOR_UPDATES_UNLICENSED_INFO { get { @@ -22530,7 +23398,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Master ähnelt. + /// Looks up a localized string similar to Master. /// public static string MASTER { get { @@ -22539,7 +23407,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Max ähnelt. + /// Looks up a localized string similar to Max. /// public static string MAX { get { @@ -22548,7 +23416,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (max = {0}) ähnelt. + /// Looks up a localized string similar to (max = {0}). /// public static string MAX_BRACKETS { get { @@ -22557,7 +23425,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The memory cannot be changed when the VM is suspended ähnelt. + /// Looks up a localized string similar to The memory cannot be changed when the VM is suspended. /// public static string MEM_NOT_WHEN_SUSPENDED { get { @@ -22566,7 +23434,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory ähnelt. + /// Looks up a localized string similar to Memory. /// public static string MEMORY { get { @@ -22575,7 +23443,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Memory: ähnelt. + /// Looks up a localized string similar to &Memory:. /// public static string MEMORY_COLON { get { @@ -22584,7 +23452,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] ähnelt. + /// Looks up a localized string similar to [XenServer]. /// public static string MEMORY_XEN { get { @@ -22593,7 +23461,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Export... ähnelt. + /// Looks up a localized string similar to &Export.... /// public static string MENU_EXPORT { get { @@ -22602,7 +23470,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrate to Home Server ähnelt. + /// Looks up a localized string similar to Migrate to Home Server. /// public static string MENU_MIGRATE_TO_HOME_SERVER { get { @@ -22611,7 +23479,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: {1} ähnelt. + /// Looks up a localized string similar to {0}: {1}. /// public static string MESSAGE_ALERT_TITLE { get { @@ -22620,7 +23488,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Activate Virtual Disk ähnelt. + /// Looks up a localized string similar to Activate Virtual Disk. /// public static string MESSAGEBOX_ACTIVATE_VD_TITLE { get { @@ -22629,7 +23497,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Clear the home server for {0}? Its home will be chosen dynamically from now on. ähnelt. + /// Looks up a localized string similar to Clear the home server for {0}? Its home will be chosen dynamically from now on.. /// public static string MESSAGEBOX_CLEAR_AFFINITY_CONFIRM { get { @@ -22638,7 +23506,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is not enough space available to clone the storage for this VM ähnelt. + /// Looks up a localized string similar to There is not enough space available to clone the storage for this VM. /// public static string MESSAGEBOX_CLONEVM_NOSPACE { get { @@ -22647,7 +23515,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Confirm ähnelt. + /// Looks up a localized string similar to Confirm. /// public static string MESSAGEBOX_CONFIRM { get { @@ -22656,7 +23524,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deactivate Virtual Disk ähnelt. + /// Looks up a localized string similar to Deactivate Virtual Disk. /// public static string MESSAGEBOX_DEACTIVATE_VD_TITLE { get { @@ -22665,7 +23533,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete '{0}' permanently, destroying all data associated with it. Continue? ähnelt. + /// Looks up a localized string similar to This will delete '{0}' permanently, destroying all data associated with it. Continue?. /// public static string MESSAGEBOX_DELETE_CUSTOM_FIELD { get { @@ -22674,7 +23542,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete {0} permanently, destroying the data on it. Continue? ähnelt. + /// Looks up a localized string similar to This will delete {0} permanently, destroying the data on it. Continue?. /// public static string MESSAGEBOX_DELETE_ISO { get { @@ -22683,7 +23551,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete these ISOs permanently, destroying any data on them. Do you want to continue? ähnelt. + /// Looks up a localized string similar to This will delete these ISOs permanently, destroying any data on them. Do you want to continue?. /// public static string MESSAGEBOX_DELETE_ISO_MULTIPLE { get { @@ -22692,7 +23560,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Storage ähnelt. + /// Looks up a localized string similar to Delete Storage. /// public static string MESSAGEBOX_DELETE_ISO_TITLE { get { @@ -22701,7 +23569,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Multiple Storage Items ähnelt. + /// Looks up a localized string similar to Delete Multiple Storage Items. /// public static string MESSAGEBOX_DELETE_ISO_TITLE_MULTIPLE { get { @@ -22710,7 +23578,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting a single snapshot disk is not allowed. This action will delete the entire snapshot, and any other disks attached. Do you want to continue? ähnelt. + /// Looks up a localized string similar to Deleting a single snapshot disk is not allowed. This action will delete the entire snapshot, and any other disks attached. Do you want to continue?. /// public static string MESSAGEBOX_DELETE_SNAPSHOT { get { @@ -22719,7 +23587,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting a single snapshot disk is not allowed. Deleting these snapshot disks will result in the deletion of the entire snapshot each belongs to, and any other disks attached. Do you want to continue? ähnelt. + /// Looks up a localized string similar to Deleting a single snapshot disk is not allowed. Deleting these snapshot disks will result in the deletion of the entire snapshot each belongs to, and any other disks attached. Do you want to continue?. /// public static string MESSAGEBOX_DELETE_SNAPSHOT_MULTIPLE { get { @@ -22728,7 +23596,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete entire snapshot ähnelt. + /// Looks up a localized string similar to Delete entire snapshot. /// public static string MESSAGEBOX_DELETE_SNAPSHOT_TITLE { get { @@ -22737,7 +23605,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Multiple Entire Snapshots ähnelt. + /// Looks up a localized string similar to Delete Multiple Entire Snapshots. /// public static string MESSAGEBOX_DELETE_SNAPSHOTS_TITLE_MULTIPLE { get { @@ -22746,7 +23614,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete this system disk permanently, possibly leaving the VM unable to boot. Do you want to continue? ähnelt. + /// Looks up a localized string similar to This will delete this system disk permanently, possibly leaving the VM unable to boot. Do you want to continue?. /// public static string MESSAGEBOX_DELETE_SYS_DISK { get { @@ -22755,7 +23623,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete these system disks permanently, possibly leaving their VMs unable to boot. Do you want to continue? ähnelt. + /// Looks up a localized string similar to This will delete these system disks permanently, possibly leaving their VMs unable to boot. Do you want to continue?. /// public static string MESSAGEBOX_DELETE_SYS_DISK_MULTIPLE { get { @@ -22764,7 +23632,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete System Disk ähnelt. + /// Looks up a localized string similar to Delete System Disk. /// public static string MESSAGEBOX_DELETE_SYS_DISK_TITLE { get { @@ -22773,7 +23641,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Multiple System Disks ähnelt. + /// Looks up a localized string similar to Delete Multiple System Disks. /// public static string MESSAGEBOX_DELETE_SYS_DISK_TITLE_MULTIPLE { get { @@ -22782,7 +23650,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete this virtual disk permanently, destroying the data on it. Continue? ähnelt. + /// Looks up a localized string similar to This will delete this virtual disk permanently, destroying the data on it. Continue?. /// public static string MESSAGEBOX_DELETE_VD { get { @@ -22791,7 +23659,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete these virtual disks permanently, destroying any data on them. Do you want to continue? ähnelt. + /// Looks up a localized string similar to This will delete these virtual disks permanently, destroying any data on them. Do you want to continue?. /// public static string MESSAGEBOX_DELETE_VD_MULTIPLE { get { @@ -22800,7 +23668,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Virtual Disk ähnelt. + /// Looks up a localized string similar to Delete Virtual Disk. /// public static string MESSAGEBOX_DELETE_VD_TITLE { get { @@ -22809,7 +23677,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Multiple Virtual Disks ähnelt. + /// Looks up a localized string similar to Delete Multiple Virtual Disks. /// public static string MESSAGEBOX_DELETE_VD_TITLE_MUTLIPLE { get { @@ -22818,11 +23686,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to destroy '{0}'? + /// Looks up a localized string similar to Are you sure you want to destroy '{0}'? /// ///Destroying this storage repository will permanently remove all associated virtual disks from the underlying storage device. /// - ///This action is final and unrecoverable. ähnelt. + ///This action is final and unrecoverable.. /// public static string MESSAGEBOX_DESTROY_SR_CONTINUE { get { @@ -22831,7 +23699,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destroy Storage Repository ähnelt. + /// Looks up a localized string similar to Destroy Storage Repository. /// public static string MESSAGEBOX_DESTROY_SR_CONTINUE_TITLE { get { @@ -22840,7 +23708,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Yes, Destroy ähnelt. + /// Looks up a localized string similar to &Yes, Destroy. /// public static string MESSAGEBOX_DESTROY_SR_YES_BUTTON_LABEL { get { @@ -22849,11 +23717,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to destroy the selected storage repositories? + /// Looks up a localized string similar to Are you sure you want to destroy the selected storage repositories? /// ///Destroying the selected storage repositories will permanently remove all associated virtual disks from the underlying storage devices. /// - ///This action is final and unrecoverable. ähnelt. + ///This action is final and unrecoverable.. /// public static string MESSAGEBOX_DESTROY_SRS_CONTINUE { get { @@ -22862,7 +23730,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Destroy Multiple Storage Repositories ähnelt. + /// Looks up a localized string similar to Destroy Multiple Storage Repositories. /// public static string MESSAGEBOX_DESTROY_SRS_CONTINUE_TITLE { get { @@ -22871,11 +23739,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detaching this storage repository will make the virtual disks that it contains inaccessible. The contents of the virtual disks themselves will remain intact. + /// Looks up a localized string similar to Detaching this storage repository will make the virtual disks that it contains inaccessible. The contents of the virtual disks themselves will remain intact. /// ///If you subsequently reattach the storage repository, you will need to provide the correct device configuration details. /// - ///Are you sure you want to detach this storage repository? ähnelt. + ///Are you sure you want to detach this storage repository?. /// public static string MESSAGEBOX_DETACH_SR_CONTINUE { get { @@ -22884,7 +23752,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detach Storage Repository ähnelt. + /// Looks up a localized string similar to Detach Storage Repository. /// public static string MESSAGEBOX_DETACH_SR_CONTINUE_TITLE { get { @@ -22893,11 +23761,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detaching the selected storage repositories will make the virtual disks that they contain inaccessible. The contents of the virtual disks themselves will remain intact. + /// Looks up a localized string similar to Detaching the selected storage repositories will make the virtual disks that they contain inaccessible. The contents of the virtual disks themselves will remain intact. /// ///If you subsequently reattach the storage repositories, you will need to provide the correct device configuration details. /// - ///Are you sure you want to detach the selected storage repositories? ähnelt. + ///Are you sure you want to detach the selected storage repositories?. /// public static string MESSAGEBOX_DETACH_SRS_CONTINUE { get { @@ -22906,7 +23774,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detach Multiple Storage Repositories ähnelt. + /// Looks up a localized string similar to Detach Multiple Storage Repositories. /// public static string MESSAGEBOX_DETACH_SRS_CONTINUE_TITLE { get { @@ -22915,7 +23783,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This action will detach a system disk from the VM which may leave it unbootable. Would you like to continue? ähnelt. + /// Looks up a localized string similar to This action will detach a system disk from the VM which may leave it unbootable. Would you like to continue?. /// public static string MESSAGEBOX_DETACH_SYSTEMVD { get { @@ -22924,7 +23792,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detach system disk ähnelt. + /// Looks up a localized string similar to Detach system disk. /// public static string MESSAGEBOX_DETACH_SYSTEMVD_TITLE { get { @@ -22933,7 +23801,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detaching this virtual disk will remove the association between it and the VM while preserving the disk and its data. Would you like to continue? ähnelt. + /// Looks up a localized string similar to Detaching this virtual disk will remove the association between it and the VM while preserving the disk and its data. Would you like to continue?. /// public static string MESSAGEBOX_DETACH_VD { get { @@ -22942,7 +23810,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detach virtual disk ähnelt. + /// Looks up a localized string similar to Detach virtual disk. /// public static string MESSAGEBOX_DETACH_VD_TITLE { get { @@ -22951,7 +23819,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Detach Multiple Virtual Disks ähnelt. + /// Looks up a localized string similar to Detach Multiple Virtual Disks. /// public static string MESSAGEBOX_DETACH_VD_TITLE_MUTLIPLE { get { @@ -22960,10 +23828,10 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to connect to server '{0}'. + /// Looks up a localized string similar to Unable to connect to server '{0}'. ///{1} /// - ///{2} ähnelt. + ///{2}. /// public static string MESSAGEBOX_ERRORTEXT { get { @@ -22972,11 +23840,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to forget '{0}'? + /// Looks up a localized string similar to Are you sure you want to forget '{0}'? /// ///Forgetting this storage repository will permanently remove the information used to connect the virtual machines to the virtual disks in the storage repository. The contents of the virtual disks themselves will remain intact. /// - ///This action is final and unrecoverable. ähnelt. + ///This action is final and unrecoverable.. /// public static string MESSAGEBOX_FORGET_SR_CONTINUE { get { @@ -22985,7 +23853,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Forget Storage Repository ähnelt. + /// Looks up a localized string similar to Forget Storage Repository. /// public static string MESSAGEBOX_FORGET_SR_CONTINUE_TITLE { get { @@ -22994,7 +23862,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Yes, Forget ähnelt. + /// Looks up a localized string similar to &Yes, Forget. /// public static string MESSAGEBOX_FORGET_SR_CONTINUE_YES_BUTTON_LABEL { get { @@ -23003,11 +23871,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to forget the selected storage repositories? + /// Looks up a localized string similar to Are you sure you want to forget the selected storage repositories? /// ///Forgetting the selected storage repositories will permanently remove the information used to connect the virtual machines to the virtual disks in the storage repositories. The contents of the virtual disks themselves will remain intact. /// - ///This action is final and unrecoverable. ähnelt. + ///This action is final and unrecoverable.. /// public static string MESSAGEBOX_FORGET_SRS_CONTINUE { get { @@ -23016,7 +23884,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Forget Multiple Storage Repositories ähnelt. + /// Looks up a localized string similar to Forget Multiple Storage Repositories. /// public static string MESSAGEBOX_FORGET_SRS_CONTINUE_TITLE { get { @@ -23025,25 +23893,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Help topic {0} does not exist. ähnelt. - /// - public static string MESSAGEBOX_HELP_TOPIC_NOT_FOUND { - get { - return ResourceManager.GetString("MESSAGEBOX_HELP_TOPIC_NOT_FOUND", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Launching help topic {0} ({1}). ähnelt. - /// - public static string MESSAGEBOX_HELP_TOPICS { - get { - return ResourceManager.GetString("MESSAGEBOX_HELP_TOPICS", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Your saved settings appear to be corrupt. Revert changes to {0} or delete the file to return to default values. ähnelt. + /// Looks up a localized string similar to Your saved settings appear to be corrupt. Revert changes to {0} or delete the file to return to default values.. /// public static string MESSAGEBOX_LOAD_CORRUPTED { get { @@ -23052,7 +23902,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could Not Load Settings ähnelt. + /// Looks up a localized string similar to Could Not Load Settings. /// public static string MESSAGEBOX_LOAD_CORRUPTED_TITLE { get { @@ -23061,7 +23911,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to dismiss this event? ähnelt. + /// Looks up a localized string similar to Are you sure you want to dismiss this event?. /// public static string MESSAGEBOX_LOG_DELETE { get { @@ -23070,7 +23920,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Log file is missing. ähnelt. + /// Looks up a localized string similar to Log file is missing.. /// public static string MESSAGEBOX_LOGFILE_MISSING { get { @@ -23079,7 +23929,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You have applied filters to the list of events. Do you want to dismiss all events or only the events you have chosen to view? In both cases only completed events will be removed. ähnelt. + /// Looks up a localized string similar to You have applied filters to the list of events. Do you want to dismiss all events or only the events you have chosen to view? In both cases only completed events will be removed.. /// public static string MESSAGEBOX_LOGS_DELETE { get { @@ -23088,7 +23938,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This operation will remove all completed events. Do you want to continue? ähnelt. + /// Looks up a localized string similar to This operation will remove all completed events. Do you want to continue?. /// public static string MESSAGEBOX_LOGS_DELETE_NO_FILTER { get { @@ -23097,7 +23947,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This operation will remove all selected completed events. Do you want to continue? ähnelt. + /// Looks up a localized string similar to This operation will remove all selected completed events. Do you want to continue?. /// public static string MESSAGEBOX_LOGS_DELETE_SELECTED { get { @@ -23106,7 +23956,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Moving Virtual Disk ähnelt. + /// Looks up a localized string similar to Moving Virtual Disk. /// public static string MESSAGEBOX_MOVING_VDI_TITLE { get { @@ -23115,7 +23965,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete the selected network permanently. Continue? ähnelt. + /// Looks up a localized string similar to This will delete the selected network permanently. Continue?. /// public static string MESSAGEBOX_NETWORK_DELETE { get { @@ -23124,7 +23974,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Network ähnelt. + /// Looks up a localized string similar to Delete Network. /// public static string MESSAGEBOX_NETWORK_DELETE_TITLE { get { @@ -23133,7 +23983,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Writing password information failed: {0} ähnelt. + /// Looks up a localized string similar to Writing password information failed: {0}. /// public static string MESSAGEBOX_PASSWORD_WRITE_FAILED { get { @@ -23142,7 +23992,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The pool Master will become a standalone server, are you sure you want to continue? ähnelt. + /// Looks up a localized string similar to The pool Master will become a standalone server, are you sure you want to continue?. /// public static string MESSAGEBOX_POOL_DELETE { get { @@ -23151,7 +24001,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You cannot remove the master from the pool. ähnelt. + /// Looks up a localized string similar to You cannot remove the master from the pool.. /// public static string MESSAGEBOX_POOL_MASTER_REMOVE { get { @@ -23160,9 +24010,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [{0}] There has been an unexpected error. Technical details about this error have been saved to the following file. Please send this to your support representative. + /// Looks up a localized string similar to [{0}] There has been an unexpected error. Technical details about this error have been saved to the following file. Please send this to your support representative. /// - ///{1} ähnelt. + ///{1}. /// public static string MESSAGEBOX_PROGRAM_UNEXPECTED { get { @@ -23171,7 +24021,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] - Error ähnelt. + /// Looks up a localized string similar to [XenCenter] - Error. /// public static string MESSAGEBOX_PROGRAM_UNEXPECTED_TITLE { get { @@ -23180,7 +24030,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to reconnect to {0} . Server is unavailable. ähnelt. + /// Looks up a localized string similar to Unable to reconnect to {0} . Server is unavailable.. /// public static string MESSAGEBOX_RECONNECT_FAIL { get { @@ -23189,7 +24039,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to Reconnect ähnelt. + /// Looks up a localized string similar to Failed to Reconnect. /// public static string MESSAGEBOX_RECONNECT_FAIL_TITLE { get { @@ -23198,9 +24048,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to save settings. You may have insufficient disk space or your configuration file could be corrupt. + /// Looks up a localized string similar to Unable to save settings. You may have insufficient disk space or your configuration file could be corrupt. /// - ///To fix a corrupt configuration file revert changes to {0} or delete the file to return to default values. ähnelt. + ///To fix a corrupt configuration file revert changes to {0} or delete the file to return to default values.. /// public static string MESSAGEBOX_SAVE_CORRUPTED { get { @@ -23209,7 +24059,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could Not Save Settings ähnelt. + /// Looks up a localized string similar to Could Not Save Settings. /// public static string MESSAGEBOX_SAVE_CORRUPTED_TITLE { get { @@ -23218,7 +24068,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The program could not securely save your session: no session information will be stored. ähnelt. + /// Looks up a localized string similar to The program could not securely save your session: no session information will be stored.. /// public static string MESSAGEBOX_SESSION_SAVE_UNABLE { get { @@ -23227,7 +24077,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not save session ähnelt. + /// Looks up a localized string similar to Could not save session. /// public static string MESSAGEBOX_SESSION_SAVE_UNABLE_TITLE { get { @@ -23236,11 +24086,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die By pressing Yes, the following step will be skipped: + /// Looks up a localized string similar to By pressing Yes, the following step will be skipped: /// ///{0} /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string MESSAGEBOX_SKIP_RPU_STEP { get { @@ -23249,11 +24099,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die By pressing Yes, the following steps will be skipped: + /// Looks up a localized string similar to By pressing Yes, the following steps will be skipped: /// ///{0} /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string MESSAGEBOX_SKIP_RPU_STEPS { get { @@ -23262,7 +24112,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You must eject all slaves from the pool before you can delete the pool. ähnelt. + /// Looks up a localized string similar to You must eject all slaves from the pool before you can delete the pool.. /// public static string MESSAGEBOX_SLAVES_EJECT { get { @@ -23271,7 +24121,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete the selected network interface permanently. Continue? ähnelt. + /// Looks up a localized string similar to This will delete the selected network interface permanently. Continue?. /// public static string MESSAGEBOX_VIF_DELETE { get { @@ -23280,7 +24130,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Network Interface ähnelt. + /// Looks up a localized string similar to Delete Network Interface. /// public static string MESSAGEBOX_VIF_DELETE_TITLE { get { @@ -23289,7 +24139,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrate ähnelt. + /// Looks up a localized string similar to Migrate. /// public static string MIGRATE { get { @@ -23298,7 +24148,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot migrate this VM - there may be a CD in the drive. Eject the CD and try again. ähnelt. + /// Looks up a localized string similar to Cannot migrate this VM - there may be a CD in the drive. Eject the CD and try again.. /// public static string MIGRATE_EJECT_TOOLS_ON_UPGRADE { get { @@ -23307,7 +24157,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please eject your CD ähnelt. + /// Looks up a localized string similar to Please eject your CD. /// public static string MIGRATE_PLEASE_EJECT_YOUR_CD { get { @@ -23316,7 +24166,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM may not migrate at the moment ähnelt. + /// Looks up a localized string similar to This VM may not migrate at the moment. /// public static string MIGRATION_NOT_ALLOWED { get { @@ -23325,7 +24175,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM may not migrate because the destination host does not have some of the CPU features that the VM is currently using ähnelt. + /// Looks up a localized string similar to This VM may not migrate because the destination host does not have some of the CPU features that the VM is currently using. /// public static string MIGRATION_NOT_ALLOWED_CPU_FEATURES { get { @@ -23334,7 +24184,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM may not migrate; it is not on shared storage ähnelt. + /// Looks up a localized string similar to This VM may not migrate; it is not on shared storage. /// public static string MIGRATION_NOT_ALLOWED_NO_SHARED_STORAGE { get { @@ -23343,7 +24193,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A VM may not migrate outside of its pool ähnelt. + /// Looks up a localized string similar to A VM may not migrate outside of its pool. /// public static string MIGRATION_NOT_ALLOWED_OUTSIDE_POOL { get { @@ -23352,7 +24202,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Min ähnelt. + /// Looks up a localized string similar to Min. /// public static string MIN { get { @@ -23361,7 +24211,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Mixed ähnelt. + /// Looks up a localized string similar to Mixed. /// public static string MIXED_POWER_ON_MODE { get { @@ -23370,7 +24220,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Monday ähnelt. + /// Looks up a localized string similar to Monday. /// public static string MONDAY_LONG { get { @@ -23379,7 +24229,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Mon ähnelt. + /// Looks up a localized string similar to Mon. /// public static string MONDAY_SHORT { get { @@ -23388,7 +24238,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} VMs selected ähnelt. + /// Looks up a localized string similar to More info.... + /// + public static string MORE_INFO { + get { + return ResourceManager.GetString("MORE_INFO", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} VMs selected. /// public static string MOREONE_VM_SELECTED { get { @@ -23397,7 +24256,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Moving {0} canceled ähnelt. + /// Looks up a localized string similar to Moving {0} canceled. /// public static string MOVE_CANCELLED { get { @@ -23406,7 +24265,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Move object '{0}' to folder '{1}'... ähnelt. + /// Looks up a localized string similar to Move object '{0}' to folder '{1}'.... /// public static string MOVE_OBJECT_TO_FOLDER { get { @@ -23415,7 +24274,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Move selected objects to folder '{0}'... ähnelt. + /// Looks up a localized string similar to Move selected objects to folder '{0}'.... /// public static string MOVE_OBJECTS_TO_FOLDER { get { @@ -23424,7 +24283,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Move Virtual Disk... ähnelt. + /// Looks up a localized string similar to &Move Virtual Disk.... /// public static string MOVE_VDI_CONTEXT_MENU { get { @@ -23433,7 +24292,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Move VM ähnelt. + /// Looks up a localized string similar to Move VM. /// public static string MOVE_VM_WIZARD_TITLE { get { @@ -23442,7 +24301,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Move VM to {0} ähnelt. + /// Looks up a localized string similar to Move VM to {0}. /// public static string MOVE_VM_WIZARD_TITLE_AND_LOCATION { get { @@ -23451,7 +24310,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Moved ähnelt. + /// Looks up a localized string similar to Moved. /// public static string MOVED { get { @@ -23460,7 +24319,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Moving... ähnelt. + /// Looks up a localized string similar to Moving.... /// public static string MOVING { get { @@ -23469,7 +24328,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die MTU ähnelt. + /// Looks up a localized string similar to MTU. /// public static string MTU { get { @@ -23478,7 +24337,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to delete the selected items? ähnelt. + /// Looks up a localized string similar to Are you sure you want to delete the selected items?. /// public static string MULTI_VDI_DELETE_INSTRUCTION { get { @@ -23487,7 +24346,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are about to delete multiple virtual disks. Are you sure you want to proceed? ähnelt. + /// Looks up a localized string similar to You are about to delete multiple virtual disks. Are you sure you want to proceed?. /// public static string MULTI_VDI_DELETE_WARNING { get { @@ -23496,7 +24355,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are about to detach multiple virtual disks, are you sure you want to proceed? ähnelt. + /// Looks up a localized string similar to You are about to detach multiple virtual disks, are you sure you want to proceed?. /// public static string MULTI_VDI_DETACH_WARNING { get { @@ -23505,7 +24364,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Active ähnelt. + /// Looks up a localized string similar to Active. /// public static string MULTIPATH_ACTIVE { get { @@ -23514,7 +24373,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Multipath capable ähnelt. + /// Looks up a localized string similar to Multipath capable. /// public static string MULTIPATH_CAPABLE { get { @@ -23523,7 +24382,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die One or more paths to at least one of your storages has failed. Refer to the "[XenServer product] Administrator's Guide" for information about configuring storage multipathing. ähnelt. + /// Looks up a localized string similar to One or more paths to at least one of your storages has failed. Refer to the "[XenServer product] Administrator's Guide" for information about configuring storage multipathing.. /// public static string MULTIPATH_FAILED { get { @@ -23532,7 +24391,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not active ähnelt. + /// Looks up a localized string similar to Not active. /// public static string MULTIPATH_NOT_ACTIVE { get { @@ -23541,9 +24400,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not active. + /// Looks up a localized string similar to Not active. ///To ensure system stability, it is strongly recommended that you use multipathing for your storage connectivity. - /// ähnelt. + ///. /// public static string MULTIPATH_NOT_ACTIVE_GFS2 { get { @@ -23552,7 +24411,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} of {1} paths active ähnelt. + /// Looks up a localized string similar to {0} of {1} paths active. /// public static string MULTIPATH_STATUS { get { @@ -23561,7 +24420,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ({0} iSCSI sessions) ähnelt. + /// Looks up a localized string similar to ({0} iSCSI sessions). /// public static string MULTIPATH_STATUS_ISCSI_SESSIONS { get { @@ -23570,7 +24429,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Multipathing ähnelt. + /// Looks up a localized string similar to Multipathing. /// public static string MULTIPATHING { get { @@ -23579,7 +24438,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You must select a network ähnelt. + /// Looks up a localized string similar to You must select a network. /// public static string MUST_SELECT_NETWORK { get { @@ -23588,7 +24447,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die http://www.citrix.com/welcome.html ähnelt. + /// Looks up a localized string similar to http://www.citrix.com/welcome.html. /// public static string MY_CITRIX_CREDENTIALS_URL { get { @@ -23597,7 +24456,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Name ähnelt. + /// Looks up a localized string similar to Name. /// public static string NAME { get { @@ -23606,7 +24465,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die General ähnelt. + /// Looks up a localized string similar to General. /// public static string NAME_DESCRIPTION_TAGS { get { @@ -23615,7 +24474,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} {1} ähnelt. + /// Looks up a localized string similar to {0} {1}. /// public static string NAME_WITH_LOCATION { get { @@ -23624,7 +24483,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the SR to reattach or create a new SR ähnelt. + /// Looks up a localized string similar to Select the SR to reattach or create a new SR. /// public static string NETAPP_EQUAL_PAGE_TITLE { get { @@ -23633,7 +24492,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Bond Members ähnelt. + /// Looks up a localized string similar to Bond Members. /// public static string NETW_BOND_DETAILS_TEXT { get { @@ -23642,7 +24501,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select members for the new bonded network ähnelt. + /// Looks up a localized string similar to Select members for the new bonded network. /// public static string NETW_BOND_DETAILS_TITLE { get { @@ -23651,7 +24510,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure the new network ähnelt. + /// Looks up a localized string similar to Configure the new network. /// public static string NETW_CHIN_DETAILS_TITLE { get { @@ -23660,7 +24519,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network settings ähnelt. + /// Looks up a localized string similar to Network settings. /// public static string NETW_DETAILS_TEXT { get { @@ -23669,7 +24528,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VLAN number is already in use ähnelt. + /// Looks up a localized string similar to This VLAN number is already in use. /// public static string NETW_DETAILS_VLAN_NUMBER_IN_USE { get { @@ -23678,7 +24537,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure the new network ähnelt. + /// Looks up a localized string similar to Configure the new network. /// public static string NETW_EXTERNAL_DETAILS_TITLE { get { @@ -23687,7 +24546,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure the new network ähnelt. + /// Looks up a localized string similar to Configure the new network. /// public static string NETW_INTERNAL_DETAILS_TITLE { get { @@ -23696,7 +24555,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Name ähnelt. + /// Looks up a localized string similar to Name. /// public static string NETW_NAME_TEXT { get { @@ -23705,7 +24564,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter a name and description for the new network ähnelt. + /// Looks up a localized string similar to Enter a name and description for the new network. /// public static string NETW_NAME_TITLE { get { @@ -23714,7 +24573,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select Type ähnelt. + /// Looks up a localized string similar to Select Type. /// public static string NETW_TYPE_SELECT_TEXT { get { @@ -23723,7 +24582,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose the type of network to create ähnelt. + /// Looks up a localized string similar to Choose the type of network to create. /// public static string NETW_TYPE_SELECT_TITLE { get { @@ -23732,7 +24591,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network ähnelt. + /// Looks up a localized string similar to Network. /// public static string NETWORK { get { @@ -23741,7 +24600,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating network ähnelt. + /// Looks up a localized string similar to Creating network. /// public static string NETWORK_ACTION_CREATING_NETWORK { get { @@ -23750,7 +24609,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating network '{0}' on {1} ähnelt. + /// Looks up a localized string similar to Creating network '{0}' on {1}. /// public static string NETWORK_ACTION_CREATING_NETWORK_TITLE { get { @@ -23759,7 +24618,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network created ähnelt. + /// Looks up a localized string similar to Network created. /// public static string NETWORK_ACTION_NETWORK_CREATED { get { @@ -23768,7 +24627,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network removed ähnelt. + /// Looks up a localized string similar to Network removed. /// public static string NETWORK_ACTION_NETWORK_REMOVED { get { @@ -23777,7 +24636,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network updated ähnelt. + /// Looks up a localized string similar to Network updated. /// public static string NETWORK_ACTION_NETWORK_UPDATED { get { @@ -23786,7 +24645,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing network ähnelt. + /// Looks up a localized string similar to Removing network. /// public static string NETWORK_ACTION_REMOVING_NETWORK { get { @@ -23795,7 +24654,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing network '{0}' from {1} ähnelt. + /// Looks up a localized string similar to Removing network '{0}' from {1}. /// public static string NETWORK_ACTION_REMOVING_NETWORK_TITLE { get { @@ -23804,7 +24663,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updating network ähnelt. + /// Looks up a localized string similar to Updating network. /// public static string NETWORK_ACTION_UPDATING_NETWORK { get { @@ -23813,7 +24672,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updating network '{0}' on {1} ähnelt. + /// Looks up a localized string similar to Updating network '{0}' on {1}. /// public static string NETWORK_ACTION_UPDATING_NETWORK_TITLE { get { @@ -23822,7 +24681,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network connectivity error ähnelt. + /// Looks up a localized string similar to Network connectivity error. /// public static string NETWORK_CONNECTIVITY_ERROR { get { @@ -23831,7 +24690,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (in use by {1}) ähnelt. + /// Looks up a localized string similar to {0} (in use by {1}). /// public static string NETWORK_IN_USE_BY { get { @@ -23840,7 +24699,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network {0} ähnelt. + /// Looks up a localized string similar to Network {0}. /// public static string NETWORK_NAME { get { @@ -23849,7 +24708,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network Options ähnelt. + /// Looks up a localized string similar to Network Options. /// public static string NETWORK_OPTIONS { get { @@ -23858,7 +24717,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The connection to the server was lost. No changes have been made. ähnelt. + /// Looks up a localized string similar to The connection to the server was lost. No changes have been made.. /// public static string NETWORK_RECONFIG_CONNECTION_LOST { get { @@ -23867,7 +24726,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network Settings ähnelt. + /// Looks up a localized string similar to Network Settings. /// public static string NETWORK_SETTINGS { get { @@ -23876,7 +24735,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SR-IOV ähnelt. + /// Looks up a localized string similar to SR-IOV. /// public static string NETWORK_SRIOV { get { @@ -23885,7 +24744,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} on {1} ähnelt. + /// Looks up a localized string similar to {0} on {1}. /// public static string NETWORK_WITH_POOL { get { @@ -23894,7 +24753,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage {0} ähnelt. + /// Looks up a localized string similar to Storage {0}. /// public static string NETWORKING_PROPERTIES_AUX_TAB_NAME { get { @@ -23903,8 +24762,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure IP address settings for server management traffic (the management interface) on '{0}' here. - ///You can also assign IP addresses for dedicated storage or other types of network traffic (secondary interfaces). ähnelt. + /// Looks up a localized string similar to Configure IP address settings for server management traffic (the management interface) on '{0}' here. + ///You can also assign IP addresses for dedicated storage or other types of network traffic (secondary interfaces).. /// public static string NETWORKING_PROPERTIES_BLURB_HOST { get { @@ -23913,8 +24772,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure IP address settings for server management traffic (the management interface) on all of the servers in pool '{0}' here. - ///You can also assign IP addresses for dedicated storage or other types of network traffic (secondary interfaces) in the pool. ähnelt. + /// Looks up a localized string similar to Configure IP address settings for server management traffic (the management interface) on all of the servers in pool '{0}' here. + ///You can also assign IP addresses for dedicated storage or other types of network traffic (secondary interfaces) in the pool.. /// public static string NETWORKING_PROPERTIES_BLURB_POOL { get { @@ -23923,7 +24782,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Reconfigure anyway ähnelt. + /// Looks up a localized string similar to &Reconfigure anyway. /// public static string NETWORKING_PROPERTIES_CHANGING_MANAGEMENT_CONTINUE { get { @@ -23932,7 +24791,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} is currently in use by {1} ähnelt. + /// Looks up a localized string similar to {0} is currently in use by {1}. /// public static string NETWORKING_PROPERTIES_IN_USE_WARNING { get { @@ -23941,7 +24800,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} is currently in use by the primary interface ähnelt. + /// Looks up a localized string similar to {0} is currently in use by the primary interface. /// public static string NETWORKING_PROPERTIES_IN_USE_WARNING_MANAGEMENT { get { @@ -23950,7 +24809,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die IP address and DNS server settings: ähnelt. + /// Looks up a localized string similar to IP address and DNS server settings:. /// public static string NETWORKING_PROPERTIES_IP_AND_DNS_SETTINGS { get { @@ -23959,7 +24818,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die IP address settings: ähnelt. + /// Looks up a localized string similar to IP address settings:. /// public static string NETWORKING_PROPERTIES_IP_SETTINGS { get { @@ -23968,7 +24827,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die unknown ähnelt. + /// Looks up a localized string similar to unknown. /// public static string NETWORKING_PROPERTIES_PURPOSE_UNKNOWN { get { @@ -23977,7 +24836,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove IP Address ähnelt. + /// Looks up a localized string similar to Remove IP Address. /// public static string NETWORKING_PROPERTIES_REMOVE_TOOLTIP { get { @@ -23986,7 +24845,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}; {1} ähnelt. + /// Looks up a localized string similar to {0}; {1}. /// public static string NETWORKING_PROPERTIES_SUBTEXT { get { @@ -23995,7 +24854,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Management Interface ähnelt. + /// Looks up a localized string similar to Management Interface. /// public static string NETWORKING_PROPERTIES_TAB_TITLE_PRIMARY { get { @@ -24004,7 +24863,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure IP Addresses - {0} ähnelt. + /// Looks up a localized string similar to Configure IP Addresses - {0}. /// public static string NETWORKING_PROPERTIES_TITLE { get { @@ -24013,9 +24872,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are reconfiguring the primary management interface. If the new settings are incorrect then [XenCenter] may permanently lose the connection to the server. + /// Looks up a localized string similar to You are reconfiguring the primary management interface. If the new settings are incorrect then [XenCenter] may permanently lose the connection to the server. /// - ///You should only proceed if you have verified that these settings are correct. ähnelt. + ///You should only proceed if you have verified that these settings are correct.. /// public static string NETWORKING_PROPERTIES_WARNING_CHANGING_MANAGEMENT_HOST { get { @@ -24024,9 +24883,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are reconfiguring the primary management interface. If the new settings are incorrect then [XenCenter] may permanently lose the connection to the server, or pool members may be unable to contact each other. + /// Looks up a localized string similar to You are reconfiguring the primary management interface. If the new settings are incorrect then [XenCenter] may permanently lose the connection to the server, or pool members may be unable to contact each other. /// - ///You should only proceed if you have verified that these settings are correct. ähnelt. + ///You should only proceed if you have verified that these settings are correct.. /// public static string NETWORKING_PROPERTIES_WARNING_CHANGING_MANAGEMENT_POOL { get { @@ -24035,7 +24894,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die IGMP snooping disabled ähnelt. + /// Looks up a localized string similar to IGMP snooping disabled. /// public static string NETWORKOPTIONSEDITPAGE_SUBTEXT_IGMP_SNOOPING_DISABLED { get { @@ -24044,7 +24903,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die IGMP snooping enabled ähnelt. + /// Looks up a localized string similar to IGMP snooping enabled. /// public static string NETWORKOPTIONSEDITPAGE_SUBTEXT_IGMP_SNOOPING_ENABLED { get { @@ -24053,7 +24912,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Auto ähnelt. + /// Looks up a localized string similar to Auto. /// public static string NETWORKPANEL_AUTO { get { @@ -24062,7 +24921,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die <internal> ähnelt. + /// Looks up a localized string similar to <internal>. /// public static string NETWORKPANEL_INTERNAL { get { @@ -24071,7 +24930,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die IP Address ähnelt. + /// Looks up a localized string similar to IP Address. /// public static string NETWORKPANEL_IP { get { @@ -24080,7 +24939,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Limit ähnelt. + /// Looks up a localized string similar to Limit. /// public static string NETWORKPANEL_LIMIT { get { @@ -24089,7 +24948,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VLAN ähnelt. + /// Looks up a localized string similar to VLAN. /// public static string NETWORKPANEL_VLAN { get { @@ -24098,7 +24957,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die interface {0} ähnelt. + /// Looks up a localized string similar to interface {0}. /// public static string NETWORKPICKER_INTERFACE { get { @@ -24107,7 +24966,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error from VIF table: {0} ähnelt. + /// Looks up a localized string similar to Error from VIF table: {0}. /// public static string NETWORKPICKER_LOG_VIF_ERROR { get { @@ -24116,7 +24975,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Networks ähnelt. + /// Looks up a localized string similar to Networks. /// public static string NETWORKS { get { @@ -24125,7 +24984,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Never ähnelt. + /// Looks up a localized string similar to Never. /// public static string NEVER { get { @@ -24134,7 +24993,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating new DVD drive on VM {0} ähnelt. + /// Looks up a localized string similar to Creating new DVD drive on VM {0}. /// public static string NEW_DVD_DRIVE_CREATE_TITLE { get { @@ -24143,16 +25002,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die DVD Drive Created ähnelt. - /// - public static string NEW_DVD_DRIVE_CREATED { - get { - return ResourceManager.GetString("NEW_DVD_DRIVE_CREATED", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating new DVD drive ähnelt. + /// Looks up a localized string similar to Creating new DVD drive. /// public static string NEW_DVD_DRIVE_CREATING { get { @@ -24161,7 +25011,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating new DVD drive succeeded ähnelt. + /// Looks up a localized string similar to Creating new DVD drive succeeded. /// public static string NEW_DVD_DRIVE_DONE { get { @@ -24170,7 +25020,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You must shut down and then restart the VM to finish the installation of the new DVD drive. ähnelt. + /// Looks up a localized string similar to You must shut down and then restart the VM to finish the installation of the new DVD drive.. /// public static string NEW_DVD_DRIVE_REBOOT { get { @@ -24179,8 +25029,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You must shut down and then restart the VM to finish the installation of the new DVD drive. - ///Once the VM has restarted click the Install [Citrix VM Tools] menu item once again. ähnelt. + /// Looks up a localized string similar to You must shut down and then restart the VM to finish the installation of the new DVD drive. + ///Once the VM has restarted click the Install [Citrix VM Tools] menu item once again.. /// public static string NEW_DVD_DRIVE_REBOOT_TOOLS { get { @@ -24189,7 +25039,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The VM you want to install [Citrix VM Tools] onto has no DVD drive, would you like to create one? ähnelt. + /// Looks up a localized string similar to The VM you want to install [Citrix VM Tools] onto has no DVD drive, would you like to create one?. /// public static string NEW_DVD_DRIVE_REQUIRED { get { @@ -24198,7 +25048,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die At least one of the VMs you want to install [Citrix VM Tools] onto has no DVD drive. Would you like to create a new DVD drive for each of the VMs that requires one? ähnelt. + /// Looks up a localized string similar to At least one of the VMs you want to install [Citrix VM Tools] onto has no DVD drive. Would you like to create a new DVD drive for each of the VMs that requires one?. /// public static string NEW_DVD_DRIVES_REQUIRED { get { @@ -24207,7 +25057,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &New Folder... ähnelt. + /// Looks up a localized string similar to &New Folder.... /// public static string NEW_FOLDER { get { @@ -24216,7 +25066,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Create ähnelt. + /// Looks up a localized string similar to &Create. /// public static string NEW_FOLDER_BUTTON { get { @@ -24225,7 +25075,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New Folder ähnelt. + /// Looks up a localized string similar to New Folder. /// public static string NEW_FOLDER_DIALOG_TITLE { get { @@ -24234,7 +25084,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &New folder name: ähnelt. + /// Looks up a localized string similar to &New folder name:. /// public static string NEW_FOLDER_NAME { get { @@ -24243,7 +25093,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &New Policy... ähnelt. + /// Looks up a localized string similar to &New Policy.... /// public static string NEW_POLICY { get { @@ -24252,9 +25102,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the server '{0}' to a pool with a master that is configured to use AD authentication. All pool members must use the same authentication method. + /// Looks up a localized string similar to You are attempting to add the server '{0}' to a pool with a master that is configured to use AD authentication. All pool members must use the same authentication method. /// - ///Do you want to enable AD authentication on your server and join it to the same domain as the pool? ähnelt. + ///Do you want to enable AD authentication on your server and join it to the same domain as the pool?. /// public static string NEW_POOL_AD_MESSAGE { get { @@ -24263,11 +25113,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the following servers to a pool with a master that is configured to use AD authentication: + /// Looks up a localized string similar to You are attempting to add the following servers to a pool with a master that is configured to use AD authentication: /// ///{0} /// - ///All pool members must use the same authentication method. Do you want to enable AD authentication on these servers and join them to the same domain as the pool? ähnelt. + ///All pool members must use the same authentication method. Do you want to enable AD authentication on these servers and join them to the same domain as the pool?. /// public static string NEW_POOL_AD_MESSAGE_MULTIPLE { get { @@ -24276,11 +25126,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the server '{0}' to a pool with a master that is using an older CPU. + /// Looks up a localized string similar to You are attempting to add the server '{0}' to a pool with a master that is using an older CPU. /// ///[XenServer] can continue by rebooting the server and reducing its CPU to the level of the master. This will shut down any VMs running on the server. This feature is supported for CPU combinations listed in the [XenServer] Hardware Compatibility List. /// - ///Do you want to do this? ähnelt. + ///Do you want to do this?. /// public static string NEW_POOL_CPU_MASKING_MESSAGE { get { @@ -24289,13 +25139,13 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the following servers to a pool with a master that is using an older CPU: + /// Looks up a localized string similar to You are attempting to add the following servers to a pool with a master that is using an older CPU: /// ///{0} /// ///[XenServer] can continue by rebooting the servers and reducing their CPUs to the level of the master. This will shut down any VMs running on the servers. This feature is supported for CPU combinations listed in the [XenServer] Hardware Compatibility List. /// - ///Do you want to do this? ähnelt. + ///Do you want to do this?. /// public static string NEW_POOL_CPU_MASKING_MESSAGE_MULTIPLE { get { @@ -24304,9 +25154,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the server '{0}' to a licensed pool. + /// Looks up a localized string similar to You are attempting to add the server '{0}' to a licensed pool. /// - ///Do you want to apply the licensing from the master to this server? ähnelt. + ///Do you want to apply the licensing from the master to this server?. /// public static string NEW_POOL_LICENSE_MESSAGE { get { @@ -24315,11 +25165,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting to add the following servers to a licensed pool. + /// Looks up a localized string similar to You are attempting to add the following servers to a licensed pool. /// ///{0} /// - ///Do you want to apply the licensing from the master to these servers? ähnelt. + ///Do you want to apply the licensing from the master to these servers?. /// public static string NEW_POOL_LICENSE_MESSAGE_MULTIPLE { get { @@ -24328,11 +25178,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following supplemental pack should be installed on all servers in a pool, but currently is not: + /// Looks up a localized string similar to The following supplemental pack should be installed on all servers in a pool, but currently is not: /// ///{0} /// - ///It is strongly recommended that you Cancel and apply the latest version of the pack to all servers before creating the pool. ähnelt. + ///It is strongly recommended that you Cancel and apply the latest version of the pack to all servers before creating the pool.. /// public static string NEW_POOL_SUPP_PACK { get { @@ -24341,11 +25191,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following supplemental packs should be installed on all servers in a pool, but currently are not: + /// Looks up a localized string similar to The following supplemental packs should be installed on all servers in a pool, but currently are not: /// ///{0} /// - ///It is strongly recommended that you Cancel and apply the latest version of the packs to all servers before creating the pool. ähnelt. + ///It is strongly recommended that you Cancel and apply the latest version of the packs to all servers before creating the pool.. /// public static string NEW_POOL_SUPP_PACKS { get { @@ -24354,7 +25204,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &New schedule... ähnelt. + /// Looks up a localized string similar to &New Snapshot Schedule.... /// public static string NEW_SCHEDULE { get { @@ -24363,7 +25213,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New Search ähnelt. + /// Looks up a localized string similar to New Search. /// public static string NEW_SEARCH { get { @@ -24372,7 +25222,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connection to {0} has been lost ähnelt. + /// Looks up a localized string similar to Connection to {0} has been lost. /// public static string NEW_SR_CONNECTION_LOST { get { @@ -24381,8 +25231,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected disk is not shared. If you add non shared disks to the VM it will became non-agile. - /// Do you want to continue? ähnelt. + /// Looks up a localized string similar to The selected disk is not shared. If you add non shared disks to the VM it will became non-agile. + /// Do you want to continue?. /// public static string NEW_SR_DIALOG_ATTACH_NON_SHARED_DISK_HA { get { @@ -24391,7 +25241,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attached SRs ähnelt. + /// Looks up a localized string similar to Attached SRs. /// public static string NEW_SR_WIZARD_FINAL_ACTION_END { get { @@ -24400,7 +25250,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attaching SRs ähnelt. + /// Looks up a localized string similar to Attaching SRs. /// public static string NEW_SR_WIZARD_FINAL_ACTION_START { get { @@ -24409,7 +25259,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New Storage Repository ähnelt. + /// Looks up a localized string similar to New Storage Repository. /// public static string NEW_SR_WIZARD_FINAL_ACTION_TITLE { get { @@ -24418,7 +25268,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New SR-IOV network ähnelt. + /// Looks up a localized string similar to New SR-IOV network. /// public static string NEW_SRIOV_NETWORK_NAME { get { @@ -24427,7 +25277,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Edit tags... ähnelt. + /// Looks up a localized string similar to Edit tags.... /// public static string NEW_TAG_LINK { get { @@ -24436,7 +25286,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter &name for new template: ähnelt. + /// Looks up a localized string similar to Enter &name for new template:. /// public static string NEW_TEMPLATE_PROMPT { get { @@ -24445,7 +25295,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New Update Available - {0} ähnelt. + /// Looks up a localized string similar to New Update Available - {0}. /// public static string NEW_UPDATE_AVAILABLE { get { @@ -24454,7 +25304,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &New vApp... ähnelt. + /// Looks up a localized string similar to &New vApp.... /// public static string NEW_VM_APPLIANCE { get { @@ -24463,7 +25313,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The amount of physical memory allocated to this VM is greater than the free memory of its home server ähnelt. + /// Looks up a localized string similar to The amount of physical memory allocated to this VM is greater than the free memory of its home server. /// public static string NEW_VM_FREE_MEMORY_WARNING { get { @@ -24472,7 +25322,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &New VM From Snapshot... ähnelt. + /// Looks up a localized string similar to &New VM From Snapshot.... /// public static string NEW_VM_FROM_SNAPSHOT_MENU_ITEM { get { @@ -24481,7 +25331,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The amount of physical memory allocated to this VM is greater than the total memory of its home server ähnelt. + /// Looks up a localized string similar to The amount of physical memory allocated to this VM is greater than the total memory of its home server. /// public static string NEW_VM_TOTAL_MEMORY_WARNING { get { @@ -24490,7 +25340,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New VM ähnelt. + /// Looks up a localized string similar to New VM. /// public static string NEW_VM_WIZARD { get { @@ -24499,7 +25349,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The BIOS strings have already been set for this template and cannot be changed. ähnelt. + /// Looks up a localized string similar to The BIOS strings have already been set for this template and cannot be changed.. /// public static string NEW_VM_WIZARD_BIOS_STRINGS_CANNOT_BE_CHANGED { get { @@ -24508,7 +25358,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot find a storage repository or all your storage repositories are full. ähnelt. + /// Looks up a localized string similar to Cannot find a storage repository or all your storage repositories are full.. /// public static string NEW_VM_WIZARD_NO_SR_OR_SRS_FULL { get { @@ -24517,7 +25367,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You must have some working storage to create a VM ähnelt. + /// Looks up a localized string similar to You must have some working storage to create a VM. /// public static string NEW_VM_WIZARD_NO_SRS { get { @@ -24526,7 +25376,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Asianux ähnelt. + /// Looks up a localized string similar to Asianux. /// public static string NEW_VM_WIZARD_TEMPLATEPAGE_ASIANUX { get { @@ -24535,7 +25385,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NeoKylin ähnelt. + /// Looks up a localized string similar to NeoKylin. /// public static string NEW_VM_WIZARD_TEMPLATEPAGE_NEOKYLIN { get { @@ -24544,7 +25394,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Turbo ähnelt. + /// Looks up a localized string similar to Turbo. /// public static string NEW_VM_WIZARD_TEMPLATEPAGE_TURBO { get { @@ -24553,7 +25403,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ubuntu ähnelt. + /// Looks up a localized string similar to Ubuntu. /// public static string NEW_VM_WIZARD_TEMPLATEPAGE_UBUNTU { get { @@ -24562,7 +25412,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die YinheKylin ähnelt. + /// Looks up a localized string similar to YinheKylin. /// public static string NEW_VM_WIZARD_TEMPLATEPAGE_YINHEKYLIN { get { @@ -24571,7 +25421,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New [XenCenter] version required ähnelt. + /// Looks up a localized string similar to New [XenCenter] version required. /// public static string NEW_XENCENTER_REQUIRED_INFO { get { @@ -24580,7 +25430,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You need to shut down and then restart the VM before it can access the new disk. ähnelt. + /// Looks up a localized string similar to You need to shut down and then restart the VM before it can access the new disk.. /// public static string NEWDISKWIZARD_MESSAGE { get { @@ -24589,16 +25439,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk Created ähnelt. - /// - public static string NEWDISKWIZARD_MESSAGE_TITLE { - get { - return ResourceManager.GetString("NEWDISKWIZARD_MESSAGE_TITLE", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die There is a newer version of [XenCenter] available. Please contact your support representative. ähnelt. + /// Looks up a localized string similar to There is a newer version of [XenCenter] available. Please contact your support representative.. /// public static string NEWER_GUI_AVAILABLE { get { @@ -24607,7 +25448,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New Network ähnelt. + /// Looks up a localized string similar to New Network. /// public static string NEWNETWORK_NAME { get { @@ -24616,7 +25457,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New Private Network ähnelt. + /// Looks up a localized string similar to New Private Network. /// public static string NEWNETWORK_VNAME { get { @@ -24625,7 +25466,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New Network - {0} ähnelt. + /// Looks up a localized string similar to New Network - {0}. /// public static string NEWNETWORKWIZARD_TITLE { get { @@ -24634,7 +25475,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server's hardware is incompatible with the master's ähnelt. + /// Looks up a localized string similar to This server's hardware is incompatible with the master's. /// public static string NEWPOOL_DIFF_HARDWARE { get { @@ -24643,7 +25484,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server is a different version to the master ähnelt. + /// Looks up a localized string similar to This server is a different version to the master. /// public static string NEWPOOL_DIFF_SERVER { get { @@ -24652,7 +25493,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server has different updates from the master ähnelt. + /// Looks up a localized string similar to This server has different updates from the master. /// public static string NEWPOOL_DIFFERENT_HOMOGENEOUS_UPDATES_FROM_MASTER { get { @@ -24661,7 +25502,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server has different updates from servers already in the pool ähnelt. + /// Looks up a localized string similar to This server has different updates from servers already in the pool. /// public static string NEWPOOL_DIFFERENT_HOMOGENEOUS_UPDATES_FROM_POOL { get { @@ -24670,7 +25511,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server's network backend is different from the master's ähnelt. + /// Looks up a localized string similar to This server's network backend is different from the master's. /// public static string NEWPOOL_DIFFERENT_NETWORK_BACKENDS { get { @@ -24679,7 +25520,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server has a different Active Directory configuration to the master ähnelt. + /// Looks up a localized string similar to This server has a different Active Directory configuration to the master. /// public static string NEWPOOL_DIFFERING_AD_CONFIG { get { @@ -24688,7 +25529,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server has running VMs ähnelt. + /// Looks up a localized string similar to This server has running VMs. /// public static string NEWPOOL_HAS_RUNNING_VMS { get { @@ -24697,7 +25538,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server has shared storage ähnelt. + /// Looks up a localized string similar to This server has shared storage. /// public static string NEWPOOL_HAS_SHARED_STORAGE { get { @@ -24706,7 +25547,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server needs to have an IP address assigned to one (and only one) of the interfaces that will be part of the bonded cluster network. ähnelt. + /// Looks up a localized string similar to This server needs to have an IP address assigned to one (and only one) of the interfaces that will be part of the bonded cluster network.. /// public static string NEWPOOL_IP_COUNT_BOND { get { @@ -24715,7 +25556,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server needs to have one (and only one) IP address on the network that will be used for clustering. ähnelt. + /// Looks up a localized string similar to This server needs to have one (and only one) IP address on the network that will be used for clustering.. /// public static string NEWPOOL_IP_COUNT_CLUSTER { get { @@ -24724,7 +25565,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server is master of an existing pool ähnelt. + /// Looks up a localized string similar to This server is master of an existing pool. /// public static string NEWPOOL_IS_A_POOL { get { @@ -24733,7 +25574,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You cannot add a licensed server to an unlicensed pool ähnelt. + /// Looks up a localized string similar to You cannot add a licensed server to an unlicensed pool. /// public static string NEWPOOL_LICENSED_HOST_UNLICENSED_MASTER { get { @@ -24742,7 +25583,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server does not have the same license as the pool master ähnelt. + /// Looks up a localized string similar to This server does not have the same license as the pool master. /// public static string NEWPOOL_LICENSEMISMATCH { get { @@ -24751,7 +25592,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server's linux pack installation state differs from that of the master ähnelt. + /// Looks up a localized string similar to This server's linux pack installation state differs from that of the master. /// public static string NEWPOOL_LINUXPACK { get { @@ -24760,7 +25601,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The master is still connecting ähnelt. + /// Looks up a localized string similar to The master is still connecting. /// public static string NEWPOOL_MASTER_CONNECTING { get { @@ -24769,7 +25610,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The master is disconnected ähnelt. + /// Looks up a localized string similar to The master is disconnected. /// public static string NEWPOOL_MASTER_DISCONNECTED { get { @@ -24778,7 +25619,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Your current role on the master is not authorized to add hosts to the master's pool ähnelt. + /// Looks up a localized string similar to Your current role on the master is not authorized to add hosts to the master's pool. /// public static string NEWPOOL_MASTER_ROLE { get { @@ -24787,7 +25628,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The pool has already reached the maximum number of servers allowed by your license ähnelt. + /// Looks up a localized string similar to The pool has already reached the maximum number of servers allowed by your license. /// public static string NEWPOOL_MAX_NUMBER_HOST_REACHED { get { @@ -24796,7 +25637,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pooling is restricted with this server's license ähnelt. + /// Looks up a localized string similar to Pooling is restricted with this server's license. /// public static string NEWPOOL_POOLINGRESTRICTED { get { @@ -24805,7 +25646,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Your current role on the slave is not authorized to add the slave to a pool ähnelt. + /// Looks up a localized string similar to Your current role on the slave is not authorized to add the slave to a pool. /// public static string NEWPOOL_SLAVE_ROLE { get { @@ -24814,7 +25655,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You cannot add an unlicensed server to a licensed pool ähnelt. + /// Looks up a localized string similar to You cannot add an unlicensed server to a licensed pool. /// public static string NEWPOOL_UNLICENSED_HOST_LICENSED_MASTER { get { @@ -24823,7 +25664,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The pool will exceed the maximum number of servers allowed by your license ähnelt. + /// Looks up a localized string similar to The pool will exceed the maximum number of servers allowed by your license. /// public static string NEWPOOL_WILL_EXCEED_POOL_MAX_SIZE { get { @@ -24832,7 +25673,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NFS SR [{0}] ähnelt. + /// Looks up a localized string similar to NFS SR [{0}]. /// public static string NEWSR_ACTION { get { @@ -24841,7 +25682,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SMB ISO Library [{0}] ähnelt. + /// Looks up a localized string similar to SMB ISO Library [{0}]. /// public static string NEWSR_CIF_DESCRIPTION { get { @@ -24850,7 +25691,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SMB SR [{0}] ähnelt. + /// Looks up a localized string similar to SMB SR [{0}]. /// public static string NEWSR_CIFS_ACTION { get { @@ -24859,11 +25700,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SMB servers are a common form of Windows shared filesystem infrastructure, and can be used as a storage repository substrate for virtual disks. + /// Looks up a localized string similar to SMB servers are a common form of Windows shared filesystem infrastructure, and can be used as a storage repository substrate for virtual disks. /// ///As SMB storage repositories are shared, the virtual disks stored in them allow VMs to be started on any server in a resource pool and to be migrated between them using Live Migration. /// - ///When you configure a SMB storage repository, you simply provide the hostname or IP address of the SMB server, the user name, the password and the path to a directory that will be [Rest der Zeichenfolge wurde abgeschnitten]"; ähnelt. + ///When you configure a SMB storage repository, you simply provide the hostname or IP address of the SMB server, the user name, the password and the path to a directory that will be [rest of string was truncated]";. /// public static string NEWSR_CIFS_BLURB { get { @@ -24872,7 +25713,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select this option if you have a library of VM installation ISO images available as a Windows (SMB/CIFS) share that you want to attach to your host or pool. ähnelt. + /// Looks up a localized string similar to Select this option if you have a library of VM installation ISO images available as a Windows (SMB/CIFS) share that you want to attach to your host or pool.. /// public static string NEWSR_CIFS_ISO_BLURB { get { @@ -24881,7 +25722,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Windows File Sharing (SMB/CIFS) ähnelt. + /// Looks up a localized string similar to Windows File Sharing (SMB/CIFS). /// public static string NEWSR_CIFS_ISO_TYPE_NAME { get { @@ -24890,7 +25731,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SMB/CIFS ähnelt. + /// Looks up a localized string similar to SMB/CIFS. /// public static string NEWSR_CIFS_TYPE_NAME { get { @@ -24899,7 +25740,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the storage system adapter ähnelt. + /// Looks up a localized string similar to Select the storage system adapter. /// public static string NEWSR_CSLG_ADAPTER_PAGE_TITLE { get { @@ -24908,7 +25749,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Auto ähnelt. + /// Looks up a localized string similar to Auto. /// public static string NEWSR_CSLG_AUTO { get { @@ -24917,7 +25758,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die StorageLink technology is used to connect to any of the leading storage architectures and protocols, including DAS, NAS, SAN, iSCSI and Fibre Channel. ähnelt. + /// Looks up a localized string similar to StorageLink technology is used to connect to any of the leading storage architectures and protocols, including DAS, NAS, SAN, iSCSI and Fibre Channel.. /// public static string NEWSR_CSLG_BLURB { get { @@ -24926,7 +25767,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deduplication ähnelt. + /// Looks up a localized string similar to Deduplication. /// public static string NEWSR_CSLG_DEDUPLICATION { get { @@ -24935,7 +25776,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Default ähnelt. + /// Looks up a localized string similar to Default. /// public static string NEWSR_CSLG_DEFAULT_PROVISIONING { get { @@ -24944,7 +25785,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fibre Channel ähnelt. + /// Looks up a localized string similar to Fibre Channel. /// public static string NEWSR_CSLG_FC { get { @@ -24953,7 +25794,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die iSCSI ähnelt. + /// Looks up a localized string similar to iSCSI. /// public static string NEWSR_CSLG_ISCSI { get { @@ -24962,7 +25803,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die None ähnelt. + /// Looks up a localized string similar to None. /// public static string NEWSR_CSLG_NONE { get { @@ -24971,7 +25812,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the storage system for your storage repository ähnelt. + /// Looks up a localized string similar to Select the storage system for your storage repository. /// public static string NEWSR_CSLG_PAGE_TITLE { get { @@ -24980,7 +25821,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the storage repository settings for use with the provisioning of new storage volumes ähnelt. + /// Looks up a localized string similar to Select the storage repository settings for use with the provisioning of new storage volumes. /// public static string NEWSR_CSLG_SETTINGS_PAGE_TITLE { get { @@ -24989,7 +25830,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Thick ähnelt. + /// Looks up a localized string similar to Thick. /// public static string NEWSR_CSLG_THICK_PROVISIONING { get { @@ -24998,7 +25839,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Thin ähnelt. + /// Looks up a localized string similar to Thin. /// public static string NEWSR_CSLG_THIN_PROVISIONING { get { @@ -25007,7 +25848,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die StorageLink technology ähnelt. + /// Looks up a localized string similar to StorageLink technology. /// public static string NEWSR_CSLG_TYPE_NAME { get { @@ -25016,7 +25857,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Dell EqualLogic is a scalable form of high performance network attached storage, which supports the addition of capacity without downtime. You can use Dell EqualLogic shared storage to support [XenServer] features such as Live Migration and High Availability. ähnelt. + /// Looks up a localized string similar to Dell EqualLogic is a scalable form of high performance network attached storage, which supports the addition of capacity without downtime. You can use Dell EqualLogic shared storage to support [XenServer] features such as Live Migration and High Availability.. /// public static string NEWSR_EQUAL_LOGIC_BLURB { get { @@ -25025,7 +25866,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Dell EqualLogic SR [{0} ({1})] ähnelt. + /// Looks up a localized string similar to Dell EqualLogic SR [{0} ({1})]. /// public static string NEWSR_EQUAL_LOGIC_DESCRIPTION { get { @@ -25034,7 +25875,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Dell EqualLogic filer &address: ähnelt. + /// Looks up a localized string similar to Dell EqualLogic filer &address:. /// public static string NEWSR_EQUAL_LOGIC_FILER_ADDRESS { get { @@ -25043,7 +25884,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die EqualLogic Filer Details ähnelt. + /// Looks up a localized string similar to EqualLogic Filer Details. /// public static string NEWSR_EQUAL_LOGIC_FILER_DETAILS_TEXT { get { @@ -25052,7 +25893,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter the Dell EqualLogic filer details ähnelt. + /// Looks up a localized string similar to Enter the Dell EqualLogic filer details. /// public static string NEWSR_EQUAL_LOGIC_FILER_PAGE_TITLE { get { @@ -25061,7 +25902,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Software FCoE virtual disk storage ähnelt. + /// Looks up a localized string similar to Software FCoE virtual disk storage. /// public static string NEWSR_FCOE_DEFAULT_NAME { get { @@ -25070,7 +25911,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Hardware HBA virtual disk storage ähnelt. + /// Looks up a localized string similar to Hardware HBA virtual disk storage. /// public static string NEWSR_HBA_DEFAULT_NAME { get { @@ -25079,7 +25920,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die iSCSI SR [{0} ({1}; {2})] ähnelt. + /// Looks up a localized string similar to iSCSI SR [{0} ({1}; {2})]. /// public static string NEWSR_ISCSI_DESCRIPTION { get { @@ -25088,9 +25929,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating a new virtual disk on this LUN will destroy any data present. You must ensure that no other system is using the LUN, including any servers, or the virtual disk may become corrupted while in use. + /// Looks up a localized string similar to Creating a new virtual disk on this LUN will destroy any data present. You must ensure that no other system is using the LUN, including any servers, or the virtual disk may become corrupted while in use. /// - ///Do you want to format the disk? ähnelt. + ///Do you want to format the disk?. /// public static string NEWSR_ISCSI_FORMAT_WARNING { get { @@ -25099,7 +25940,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NFS ISO Library [{0}] ähnelt. + /// Looks up a localized string similar to NFS ISO Library [{0}]. /// public static string NEWSR_ISO_DESCRIPTION { get { @@ -25108,7 +25949,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Location ähnelt. + /// Looks up a localized string similar to Location. /// public static string NEWSR_LOCATION { get { @@ -25117,7 +25958,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This LUN does not contain a Storage Repository. Please select another LUN. ähnelt. + /// Looks up a localized string similar to This LUN does not contain a Storage Repository. Please select another LUN.. /// public static string NEWSR_LUN_HAS_NO_SRS { get { @@ -25126,7 +25967,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This LUN is already in use. ähnelt. + /// Looks up a localized string similar to This LUN is already in use.. /// public static string NEWSR_LUN_IN_USE { get { @@ -25135,7 +25976,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This LUN is already in use as SR {0} on pool {1}. ähnelt. + /// Looks up a localized string similar to This LUN is already in use as SR {0} on pool {1}.. /// public static string NEWSR_LUN_IN_USE_ON_POOL { get { @@ -25144,7 +25985,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The LUN {0} is already in use as SR {1} on your pool. Please select another LUN. ähnelt. + /// Looks up a localized string similar to The LUN {0} is already in use as SR {1} on your pool. Please select another LUN.. /// public static string NEWSR_LUN_IN_USE_ON_SELECTED_POOL { get { @@ -25153,7 +25994,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The LUN {0} is already in use as SR {1} on your server. Please select another LUN. ähnelt. + /// Looks up a localized string similar to The LUN {0} is already in use as SR {1} on your server. Please select another LUN.. /// public static string NEWSR_LUN_IN_USE_ON_SELECTED_SERVER { get { @@ -25162,7 +26003,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This LUN is already in use as SR {0} on server {1}. ähnelt. + /// Looks up a localized string similar to This LUN is already in use as SR {0} on server {1}.. /// public static string NEWSR_LUN_IN_USE_ON_SERVER { get { @@ -25171,11 +26012,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] hosts support Software based Fibre Channel over Ethernet using supported Converged Network Adapters (CNAs) which support FCoE in this way. + /// Looks up a localized string similar to [XenServer] hosts support Software based Fibre Channel over Ethernet using supported Converged Network Adapters (CNAs) which support FCoE in this way. /// ///All configuration required to expose a LUN to the host must be completed manually, including configuring your FCoE fabric, and allocating LUN(s) to your CNA’s public world wide name (PWWN). /// - ///Once this configuration has been carried out, this wizard will walk you through discovering and mounting a LUN available to the hosts CNA’s as a SCSI device. The SC [Rest der Zeichenfolge wurde abgeschnitten]"; ähnelt. + ///Once this configuration has been carried out, this wizard will walk you through discovering and mounting a LUN available to the hosts CNA’s as a SCSI device. The SC [rest of string was truncated]";. /// public static string NEWSR_LVMOFCOE_BLURB { get { @@ -25184,7 +26025,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Software FCoE SR [{0} - {1}] ähnelt. + /// Looks up a localized string similar to Software FCoE SR [{0} - {1}]. /// public static string NEWSR_LVMOFCOE_DESCRIPTION { get { @@ -25193,7 +26034,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Software FCoE ähnelt. + /// Looks up a localized string similar to Software FCoE. /// public static string NEWSR_LVMOFCOE_TYPE_NAME { get { @@ -25202,11 +26043,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] hosts support Fibre Channel (FC), Fibre Channel over Ethernet (FCoE) and shared Serial Attached SCSI (SAS) storage area networks (SANs) using host bus adapters (HBAs). + /// Looks up a localized string similar to [XenServer] hosts support Fibre Channel (FC), Fibre Channel over Ethernet (FCoE) and shared Serial Attached SCSI (SAS) storage area networks (SANs) using host bus adapters (HBAs). /// ///All configuration required to expose a LUN to the host must be completed manually, including storage devices, network devices, and the HBA within the [XenServer] host. /// - ///Once all configuration is complete the HBA will expose a SCSI device backed by the LUN to the host. The SCSI device can then be used to access the LUN as if i [Rest der Zeichenfolge wurde abgeschnitten]"; ähnelt. + ///Once all configuration is complete the HBA will expose a SCSI device backed by the LUN to the host. The SCSI device can then be used to access the LUN as if i [rest of string was truncated]";. /// public static string NEWSR_LVMOHBA_BLURB { get { @@ -25215,7 +26056,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Hardware HBA SR [{0} - {1}] ähnelt. + /// Looks up a localized string similar to Hardware HBA SR [{0} - {1}]. /// public static string NEWSR_LVMOHBA_DESCRIPTION { get { @@ -25224,7 +26065,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Create ähnelt. + /// Looks up a localized string similar to &Create. /// public static string NEWSR_LVMOHBA_NEXT_TEXT { get { @@ -25233,7 +26074,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} ({1} - {2}) ähnelt. + /// Looks up a localized string similar to {0} ({1} - {2}). /// public static string NEWSR_LVMOHBA_SUMMARY_DETAILS_CELL_TEXT { get { @@ -25242,7 +26083,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to create {0} SRs ähnelt. + /// Looks up a localized string similar to Failed to create {0} SRs. /// public static string NEWSR_LVMOHBA_SUMMARY_FAILURE_MULTIPLE { get { @@ -25251,7 +26092,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to create SR ähnelt. + /// Looks up a localized string similar to Failed to create SR. /// public static string NEWSR_LVMOHBA_SUMMARY_FAILURE_SINGLE { get { @@ -25260,7 +26101,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Summary of new Storage Repositories creation ähnelt. + /// Looks up a localized string similar to Summary of new Storage Repositories creation. /// public static string NEWSR_LVMOHBA_SUMMARY_MULTIPLE_TITLE { get { @@ -25269,7 +26110,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Summary of new Storage Repository creation ähnelt. + /// Looks up a localized string similar to Summary of new Storage Repository creation. /// public static string NEWSR_LVMOHBA_SUMMARY_SINGLE_TITLE { get { @@ -25278,7 +26119,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} SRs created successfully ähnelt. + /// Looks up a localized string similar to {0} SRs created successfully. /// public static string NEWSR_LVMOHBA_SUMMARY_SUCCESS_MULTIPLE { get { @@ -25287,7 +26128,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SR created successfully ähnelt. + /// Looks up a localized string similar to SR created successfully. /// public static string NEWSR_LVMOHBA_SUMMARY_SUCCESS_SINGLE { get { @@ -25296,7 +26137,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Summary ähnelt. + /// Looks up a localized string similar to Summary. /// public static string NEWSR_LVMOHBA_SUMMARY_TEXT { get { @@ -25305,7 +26146,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Hardware HBA ähnelt. + /// Looks up a localized string similar to Hardware HBA. /// public static string NEWSR_LVMOHBA_TYPE_NAME { get { @@ -25314,7 +26155,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die iSCSI or Fibre Channel access to a shared LUN can be configured to host fully provisioned virtual disks using LVM or be formatted with the GFS2 cluster file system for hosting thinly provisioned virtual disks. ähnelt. + /// Looks up a localized string similar to iSCSI or Fibre Channel access to a shared LUN can be configured to host fully provisioned virtual disks using LVM or be formatted with the GFS2 cluster file system for hosting thinly provisioned virtual disks.. /// public static string NEWSR_LVMOISCSI_BLURB { get { @@ -25323,7 +26164,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die iSCSI ähnelt. + /// Looks up a localized string similar to iSCSI. /// public static string NEWSR_LVMOISCSI_TYPE_NAME { get { @@ -25332,11 +26173,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Warning: you must ensure that the following SR is not in use by any server not connected to [XenCenter]. Failure to do so may result in data loss. + /// Looks up a localized string similar to Warning: you must ensure that the following SR is not in use by any server not connected to [XenCenter]. Failure to do so may result in data loss. /// ///SR: {0} /// - ///Do you want to reattach the SR? ähnelt. + ///Do you want to reattach the SR?. /// public static string NEWSR_MULTI_POOL_WARNING { get { @@ -25345,7 +26186,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Name ähnelt. + /// Looks up a localized string similar to Name. /// public static string NEWSR_NAMEPAGE_TEXT { get { @@ -25354,7 +26195,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die What do you want to call this Storage Repository? ähnelt. + /// Looks up a localized string similar to What do you want to call this Storage Repository?. /// public static string NEWSR_NAMEPAGE_TITLE { get { @@ -25363,11 +26204,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die If you have access to a Network Appliance (NetApp) filer with sufficient disk space, running a version of Data ONTAP 7G (version 7.2 or greater), you can configure a custom NetApp Storage Repository. + /// Looks up a localized string similar to If you have access to a Network Appliance (NetApp) filer with sufficient disk space, running a version of Data ONTAP 7G (version 7.2 or greater), you can configure a custom NetApp Storage Repository. /// ///The driver uses the ZAPI interface to the filer to create a group of FlexVols which correspond to an SR. VDIs are created as virtual LUNs on the filer, and attached to the host using an iSCSI data path. /// - ///VM cloning uses the snapshot and clone capabilities of the filer to provide high performance and to e [Rest der Zeichenfolge wurde abgeschnitten]"; ähnelt. + ///VM cloning uses the snapshot and clone capabilities of the filer to provide high performance and to e [rest of string was truncated]";. /// public static string NEWSR_NETAPP_BLURB { get { @@ -25376,7 +26217,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This aggregate does not support FAS deduplication ähnelt. + /// Looks up a localized string similar to This aggregate does not support FAS deduplication. /// public static string NEWSR_NETAPP_DEDUP_UNAVAILABLE { get { @@ -25385,7 +26226,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NetApp SR [{0} ({1})] ähnelt. + /// Looks up a localized string similar to NetApp SR [{0} ({1})]. /// public static string NEWSR_NETAPP_DESCRIPTION { get { @@ -25394,7 +26235,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NetApp filer &address: ähnelt. + /// Looks up a localized string similar to NetApp filer &address:. /// public static string NEWSR_NETAPP_FILER_ADDRESS { get { @@ -25403,7 +26244,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NetApp Filer Details ähnelt. + /// Looks up a localized string similar to NetApp Filer Details. /// public static string NEWSR_NETAPP_FILER_DETAILS_TEXT { get { @@ -25412,7 +26253,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter the NetApp filer details ähnelt. + /// Looks up a localized string similar to Enter the NetApp filer details. /// public static string NEWSR_NETAPP_FILER_PAGE_TITLE { get { @@ -25421,7 +26262,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select this option if you have a library of VM installation ISO images available as a NFS share that you want to attach to your host or pool. ähnelt. + /// Looks up a localized string similar to Select this option if you have a library of VM installation ISO images available as a NFS share that you want to attach to your host or pool.. /// public static string NEWSR_NFS_ISO_BLURB { get { @@ -25430,7 +26271,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NFS ISO ähnelt. + /// Looks up a localized string similar to NFS ISO. /// public static string NEWSR_NFS_ISO_TYPE_NAME { get { @@ -25439,7 +26280,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No IQNs were found on {0}. ähnelt. + /// Looks up a localized string similar to No IQNs were found on {0}.. /// public static string NEWSR_NO_IQNS_FOUND { get { @@ -25448,7 +26289,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No LUNs were found on {0}. ähnelt. + /// Looks up a localized string similar to No LUNs were found on {0}.. /// public static string NEWSR_NO_LUNS_FOUND { get { @@ -25457,7 +26298,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die <No SRs were found> ähnelt. + /// Looks up a localized string similar to <No SRs were found>. /// public static string NEWSR_NO_SRS_FOUND { get { @@ -25466,7 +26307,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The given filer has no existing SRs and nowhere to create a new SR. ähnelt. + /// Looks up a localized string similar to The given filer has no existing SRs and nowhere to create a new SR.. /// public static string NEWSR_NOWHERE_TO_CREATE { get { @@ -25475,7 +26316,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter a path for your SMB storage ähnelt. + /// Looks up a localized string similar to Enter a path for your SMB storage. /// public static string NEWSR_PATH_CIFS { get { @@ -25484,7 +26325,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter a path for your iSCSI storage ähnelt. + /// Looks up a localized string similar to Enter a path for your iSCSI storage. /// public static string NEWSR_PATH_ISCSI { get { @@ -25493,7 +26334,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter a path for your NFS ISO storage ähnelt. + /// Looks up a localized string similar to Enter a path for your NFS ISO storage. /// public static string NEWSR_PATH_ISO { get { @@ -25502,7 +26343,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter a path for your SMB ISO storage ähnelt. + /// Looks up a localized string similar to Enter a path for your SMB ISO storage. /// public static string NEWSR_PATH_ISO_CIFS { get { @@ -25511,7 +26352,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter a path for your NFS storage ähnelt. + /// Looks up a localized string similar to Enter a path for your NFS storage. /// public static string NEWSR_PATH_NFS { get { @@ -25520,7 +26361,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the LUN to reattach or create a new SR on ähnelt. + /// Looks up a localized string similar to Select the LUN to reattach or create a new SR on. /// public static string NEWSR_SELECT_LUN { get { @@ -25529,7 +26370,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New Storage Repository - {0} ähnelt. + /// Looks up a localized string similar to New Storage Repository - {0}. /// public static string NEWSR_TEXT { get { @@ -25538,7 +26379,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Attach Storage Repository - {0} ähnelt. + /// Looks up a localized string similar to Attach Storage Repository - {0}. /// public static string NEWSR_TEXT_ATTACH { get { @@ -25547,11 +26388,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NFS servers are a common form of shared filesystem infrastructure, and can be used as a storage repository substrate for virtual disks. + /// Looks up a localized string similar to NFS servers are a common form of shared filesystem infrastructure, and can be used as a storage repository substrate for virtual disks. /// ///As NFS storage repositories are shared, the virtual disks stored in them allow VMs to be started on any server in a resource pool and to be migrated between them using Live Migration. /// - ///When you configure an NFS storage repository, you simply provide the hostname or IP address of the NFS server and the path to a directory that will be used to contain the storage reposit [Rest der Zeichenfolge wurde abgeschnitten]"; ähnelt. + ///When you configure an NFS storage repository, you simply provide the hostname or IP address of the NFS server and the path to a directory that will be used to contain the storage reposit [rest of string was truncated]";. /// public static string NEWSR_VHDONFS_BLURB { get { @@ -25560,7 +26401,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NFS ähnelt. + /// Looks up a localized string similar to NFS. /// public static string NEWSR_VHDONFS_TYPE_NAME { get { @@ -25569,7 +26410,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} ({1}) ähnelt. + /// Looks up a localized string similar to {0} ({1}). /// public static string NEWVM_DEFAULTNAME { get { @@ -25578,7 +26419,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ftp://server/path ähnelt. + /// Looks up a localized string similar to ftp://server/path. /// public static string NEWVM_INSTALL_URL_EXAMPLE_FTP { get { @@ -25587,7 +26428,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die http://server/path ähnelt. + /// Looks up a localized string similar to http://server/path. /// public static string NEWVM_INSTALL_URL_EXAMPLE_HTTP { get { @@ -25596,7 +26437,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die nfs://server/path ähnelt. + /// Looks up a localized string similar to nfs://server/path. /// public static string NEWVM_INSTALL_URL_EXAMPLE_NFS { get { @@ -25605,7 +26446,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New VM - {0} ähnelt. + /// Looks up a localized string similar to New VM - {0}. /// public static string NEWVM_TITLE { get { @@ -25614,7 +26455,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Finish ähnelt. + /// Looks up a localized string similar to Finish. /// public static string NEWVMAPPLIANCE_FINISHPAGE_TEXT { get { @@ -25623,7 +26464,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Create the new vApp ähnelt. + /// Looks up a localized string similar to Create the new vApp. /// public static string NEWVMAPPLIANCE_FINISHPAGE_TITLE { get { @@ -25632,7 +26473,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Name ähnelt. + /// Looks up a localized string similar to Name. /// public static string NEWVMAPPLIANCE_NAMEPAGE_TEXT { get { @@ -25641,7 +26482,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die What do you want to call this vApp? ähnelt. + /// Looks up a localized string similar to What do you want to call this vApp?. /// public static string NEWVMAPPLIANCE_NAMEPAGE_TITLE { get { @@ -25650,7 +26491,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM Startup Sequence ähnelt. + /// Looks up a localized string similar to VM Startup Sequence. /// public static string NEWVMAPPLIANCE_VMORDERANDDELAYSPAGE_TEXT { get { @@ -25659,7 +26500,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure the startup sequence for the VMs in this vApp ähnelt. + /// Looks up a localized string similar to Configure the startup sequence for the VMs in this vApp. /// public static string NEWVMAPPLIANCE_VMORDERANDDELAYSPAGE_TITLE { get { @@ -25668,7 +26509,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Machines ähnelt. + /// Looks up a localized string similar to Virtual Machines. /// public static string NEWVMAPPLIANCE_VMSPAGE_TEXT { get { @@ -25677,7 +26518,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose which VMs to include in this vApp ähnelt. + /// Looks up a localized string similar to Choose which VMs to include in this vApp. /// public static string NEWVMAPPLIANCE_VMSPAGE_TITLE { get { @@ -25686,7 +26527,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Installation Source ähnelt. + /// Looks up a localized string similar to Installation Source. /// public static string NEWVMWIZARD_CDMEDIAPAGE_INSTALLATIONSOURCE { get { @@ -25695,7 +26536,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Source ähnelt. + /// Looks up a localized string similar to Source. /// public static string NEWVMWIZARD_CDMEDIAPAGE_NAME { get { @@ -25704,7 +26545,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Locate the operating system installation media ähnelt. + /// Looks up a localized string similar to Locate the operating system installation media. /// public static string NEWVMWIZARD_CDMEDIAPAGE_TITLE { get { @@ -25713,7 +26554,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cloud-Config Parameters ähnelt. + /// Looks up a localized string similar to Cloud-Config Parameters. /// public static string NEWVMWIZARD_CLOUD_CONFIG_PARAMETERS_PAGE { get { @@ -25722,7 +26563,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure Cloud-Config Parameters ähnelt. + /// Looks up a localized string similar to Configure Cloud-Config Parameters. /// public static string NEWVMWIZARD_CLOUD_CONFIG_PARAMETERS_PAGE_TITLE { get { @@ -25731,7 +26572,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copy BIOS Strings from ähnelt. + /// Looks up a localized string similar to Copy BIOS Strings from. /// public static string NEWVMWIZARD_COPY_BIOS_STRINGS_PAGE_HOST { get { @@ -25740,7 +26581,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die BIOS Strings ähnelt. + /// Looks up a localized string similar to BIOS Strings. /// public static string NEWVMWIZARD_COPY_BIOS_STRINGS_PAGE_NAME { get { @@ -25749,7 +26590,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the server that will provide the BIOS strings ähnelt. + /// Looks up a localized string similar to Select the server that will provide the BIOS strings. /// public static string NEWVMWIZARD_COPY_BIOS_STRINGS_PAGE_TITLE { get { @@ -25758,7 +26599,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Initial number of vCPUs ähnelt. + /// Looks up a localized string similar to Initial number of vCPUs. /// public static string NEWVMWIZARD_CPUMEMPAGE_INITIAL_VCPUS { get { @@ -25767,7 +26608,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maximum number of vCPUs ähnelt. + /// Looks up a localized string similar to Maximum number of vCPUs. /// public static string NEWVMWIZARD_CPUMEMPAGE_MAX_VCPUS { get { @@ -25776,7 +26617,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (min = {0}, max = {1}) ähnelt. + /// Looks up a localized string similar to (min = {0}, max = {1}). /// public static string NEWVMWIZARD_CPUMEMPAGE_MEMORYINFO { get { @@ -25785,11 +26626,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The amount of memory allocated to the new VM is greater than the amount of physical memory on any server in the pool. + /// Looks up a localized string similar to The amount of memory allocated to the new VM is greater than the amount of physical memory on any server in the pool. /// ///Server '{0}' has {1} of physical memory in total. /// - ///You will not be able to start this VM without increasing the amount of physical memory on one of the servers in the pool. ähnelt. + ///You will not be able to start this VM without increasing the amount of physical memory on one of the servers in the pool.. /// public static string NEWVMWIZARD_CPUMEMPAGE_MEMORYWARN1 { get { @@ -25798,11 +26639,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The amount of memory allocated to the new VM is greater than the amount of physical memory available on any server in the pool. + /// Looks up a localized string similar to The amount of memory allocated to the new VM is greater than the amount of physical memory available on any server in the pool. /// ///Server '{0}' has {1} of physical memory available. /// - ///You will not be able to start this VM without freeing some space on one of the servers. ähnelt. + ///You will not be able to start this VM without freeing some space on one of the servers.. /// public static string NEWVMWIZARD_CPUMEMPAGE_MEMORYWARN2 { get { @@ -25811,7 +26652,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CPU && Memory ähnelt. + /// Looks up a localized string similar to CPU && Memory. /// public static string NEWVMWIZARD_CPUMEMPAGE_NAME { get { @@ -25820,7 +26661,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Specify the number of virtual CPUs, their topology, and the amount of memory that will be allocated to the new virtual machine. ähnelt. + /// Looks up a localized string similar to Specify the number of virtual CPUs, their topology, and the amount of memory that will be allocated to the new virtual machine. . /// public static string NEWVMWIZARD_CPUMEMPAGE_RUBRIC { get { @@ -25829,7 +26670,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Allocate processor and memory resources ähnelt. + /// Looks up a localized string similar to Allocate processor and memory resources. /// public static string NEWVMWIZARD_CPUMEMPAGE_TITLE { get { @@ -25838,7 +26679,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Topology ähnelt. + /// Looks up a localized string similar to Topology. /// public static string NEWVMWIZARD_CPUMEMPAGE_TOPOLOGY { get { @@ -25847,7 +26688,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vCPUs ähnelt. + /// Looks up a localized string similar to vCPUs. /// public static string NEWVMWIZARD_CPUMEMPAGE_VCPUS { get { @@ -25856,11 +26697,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The number of vCPUs given to the new VM is greater than the number of physical CPUs on any server in the pool. + /// Looks up a localized string similar to The number of vCPUs given to the new VM is greater than the number of physical CPUs on any server in the pool. /// ///Server '{0}' has {1} physical CPUs. /// - ///Performance of this VM will be greatly reduced if it is started with this many vCPUs. ähnelt. + ///Performance of this VM will be greatly reduced if it is started with this many vCPUs.. /// public static string NEWVMWIZARD_CPUMEMPAGE_VCPUSWARN { get { @@ -25869,9 +26710,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die All the necessary information has been collected and the wizard is ready to provision the new virtual machine using the settings shown below. + /// Looks up a localized string similar to All the necessary information has been collected and the wizard is ready to provision the new virtual machine using the settings shown below. /// - ///Review these settings, then click Previous if you need to change anything. Otherwise, click Create Now to create the new VM. It may take several minutes to create the new VM. ähnelt. + ///Review these settings, then click Previous if you need to change anything. Otherwise, click Create Now to create the new VM. It may take several minutes to create the new VM.. /// public static string NEWVMWIZARD_FINISHPAGE { get { @@ -25880,7 +26721,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Create Now ähnelt. + /// Looks up a localized string similar to &Create Now. /// public static string NEWVMWIZARD_FINISHPAGE_CREATE { get { @@ -25889,7 +26730,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Finish ähnelt. + /// Looks up a localized string similar to Finish. /// public static string NEWVMWIZARD_FINISHPAGE_NAME { get { @@ -25898,7 +26739,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ready to create the new virtual machine ähnelt. + /// Looks up a localized string similar to Ready to create the new virtual machine. /// public static string NEWVMWIZARD_FINISHPAGE_TITLE { get { @@ -25907,7 +26748,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die First Run ähnelt. + /// Looks up a localized string similar to First Run. /// public static string NEWVMWIZARD_FIRSTRUNPAGE_NAME { get { @@ -25916,7 +26757,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Before you begin ähnelt. + /// Looks up a localized string similar to Before you begin. /// public static string NEWVMWIZARD_FIRSTRUNPAGE_TITLE { get { @@ -25925,7 +26766,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die none ähnelt. + /// Looks up a localized string similar to none. /// public static string NEWVMWIZARD_HOMESERVER_NONE { get { @@ -25934,7 +26775,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Home Server ähnelt. + /// Looks up a localized string similar to Home Server. /// public static string NEWVMWIZARD_HOMESERVERPAGE_HOMESERVER { get { @@ -25943,7 +26784,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Home Server ähnelt. + /// Looks up a localized string similar to Home Server. /// public static string NEWVMWIZARD_HOMESERVERPAGE_NAME { get { @@ -25952,7 +26793,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a home server ähnelt. + /// Looks up a localized string similar to Select a home server. /// public static string NEWVMWIZARD_HOMESERVERPAGE_TITLE { get { @@ -25961,7 +26802,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CD ähnelt. + /// Looks up a localized string similar to CD. /// public static string NEWVMWIZARD_INSTALLATIONMEDIAPAGE_CD { get { @@ -25970,7 +26811,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Install Method ähnelt. + /// Looks up a localized string similar to Install Method. /// public static string NEWVMWIZARD_INSTALLATIONMEDIAPAGE_INSTALLMETHOD { get { @@ -25979,7 +26820,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Installation Media ähnelt. + /// Looks up a localized string similar to Installation Media. /// public static string NEWVMWIZARD_INSTALLATIONMEDIAPAGE_NAME { get { @@ -25988,7 +26829,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network ähnelt. + /// Looks up a localized string similar to Network. /// public static string NEWVMWIZARD_INSTALLATIONMEDIAPAGE_NETWORK { get { @@ -25997,7 +26838,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die none ähnelt. + /// Looks up a localized string similar to none. /// public static string NEWVMWIZARD_INSTALLATIONMEDIAPAGE_NONE { get { @@ -26006,7 +26847,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Locate the operating system installation media ähnelt. + /// Looks up a localized string similar to Locate the operating system installation media. /// public static string NEWVMWIZARD_INSTALLATIONMEDIAPAGE_TITLE { get { @@ -26015,7 +26856,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &DVD drive: ähnelt. + /// Looks up a localized string similar to &DVD drive:. /// public static string NEWVMWIZARD_INSTALLMEDIA_DVD { get { @@ -26024,7 +26865,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Install from ISO library or &DVD drive: ähnelt. + /// Looks up a localized string similar to Install from ISO library or &DVD drive:. /// public static string NEWVMWIZARD_INSTALLMEDIA_INSTALLDVD { get { @@ -26033,7 +26874,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Boot from network ähnelt. + /// Looks up a localized string similar to &Boot from network. /// public static string NEWVMWIZARD_INSTALLMEDIA_INSTALLPXE { get { @@ -26042,7 +26883,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Install from &URL: ähnelt. + /// Looks up a localized string similar to Install from &URL:. /// public static string NEWVMWIZARD_INSTALLMEDIA_INSTALLURL { get { @@ -26051,7 +26892,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Name ähnelt. + /// Looks up a localized string similar to Name. /// public static string NEWVMWIZARD_NAMEPAGE_NAME { get { @@ -26060,7 +26901,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Name ähnelt. + /// Looks up a localized string similar to Name. /// public static string NEWVMWIZARD_NAMEPAGE_NAME2 { get { @@ -26069,7 +26910,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Name the new virtual machine ähnelt. + /// Looks up a localized string similar to Name the new virtual machine. /// public static string NEWVMWIZARD_NAMEPAGE_TITLE { get { @@ -26078,7 +26919,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die <autogenerated MAC> ähnelt. + /// Looks up a localized string similar to <autogenerated MAC>. /// public static string NEWVMWIZARD_NETWORKINGPAGE_AUTOGEN { get { @@ -26087,7 +26928,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Networking ähnelt. + /// Looks up a localized string similar to Networking. /// public static string NEWVMWIZARD_NETWORKINGPAGE_NAME { get { @@ -26096,7 +26937,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure networking on the new VM ähnelt. + /// Looks up a localized string similar to Configure networking on the new VM. /// public static string NEWVMWIZARD_NETWORKINGPAGE_TITLE { get { @@ -26105,7 +26946,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network Interface {0} ähnelt. + /// Looks up a localized string similar to Network Interface {0}. /// public static string NEWVMWIZARD_NETWORKINGPAGE_VIF { get { @@ -26114,7 +26955,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual network interfaces on {0} ähnelt. + /// Looks up a localized string similar to Virtual network interfaces on {0}. /// public static string NEWVMWIZARD_NETWORKINGPAGE_VIFSON { get { @@ -26123,7 +26964,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Installation Method ähnelt. + /// Looks up a localized string similar to Installation Method. /// public static string NEWVMWIZARD_NETWORKMEDIAPAGE_INSTALLATIONMETHOD { get { @@ -26132,7 +26973,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Installation URL ähnelt. + /// Looks up a localized string similar to Installation URL. /// public static string NEWVMWIZARD_NETWORKMEDIAPAGE_INSTALLATIONURL { get { @@ -26141,7 +26982,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Source ähnelt. + /// Looks up a localized string similar to Source. /// public static string NEWVMWIZARD_NETWORKMEDIAPAGE_NAME { get { @@ -26150,7 +26991,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die PXE ähnelt. + /// Looks up a localized string similar to PXE. /// public static string NEWVMWIZARD_NETWORKMEDIAPAGE_PXE { get { @@ -26159,7 +27000,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Locate the operating system installation media ähnelt. + /// Looks up a localized string similar to Locate the operating system installation media. /// public static string NEWVMWIZARD_NETWORKMEDIAPAGE_TITLE { get { @@ -26168,7 +27009,25 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk '{0}' ähnelt. + /// Looks up a localized string similar to VMs without a home server cannot have disks on the default SR '{0}'.. + /// + public static string NEWVMWIZARD_STORAGEPAGE_DEFAULT_LOCAL { + get { + return ResourceManager.GetString("NEWVMWIZARD_STORAGEPAGE_DEFAULT_LOCAL", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The default SR '{0}' does not have enough free space for the new VM's disks.. + /// + public static string NEWVMWIZARD_STORAGEPAGE_DEFAULT_NOSPACE { + get { + return ResourceManager.GetString("NEWVMWIZARD_STORAGEPAGE_DEFAULT_NOSPACE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Disk '{0}'. /// public static string NEWVMWIZARD_STORAGEPAGE_DISK { get { @@ -26177,7 +27036,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Created by template provisioner ähnelt. + /// Looks up a localized string similar to Created by template provisioner. /// public static string NEWVMWIZARD_STORAGEPAGE_DISK_DESCRIPTION { get { @@ -26186,7 +27045,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage ähnelt. + /// Looks up a localized string similar to Storage. /// public static string NEWVMWIZARD_STORAGEPAGE_NAME { get { @@ -26195,7 +27054,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die <no suitable storage> ähnelt. + /// Looks up a localized string similar to <no suitable storage>. /// public static string NEWVMWIZARD_STORAGEPAGE_NOSTORAGE { get { @@ -26204,7 +27063,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The SR '{0}' is over committed. There is only {1} of free space and the new VM requires {2}. ähnelt. + /// Looks up a localized string similar to The SR '{0}' is overcommitted. There is only {1} of free space and the new VM requires {2}.. /// public static string NEWVMWIZARD_STORAGEPAGE_SROVERCOMMIT { get { @@ -26213,7 +27072,25 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure storage for the new VM ähnelt. + /// Looks up a localized string similar to VMs without a home server cannot have disks on the SR suggested by the template ('{0}').. + /// + public static string NEWVMWIZARD_STORAGEPAGE_SUGGESTED_LOCAL { + get { + return ResourceManager.GetString("NEWVMWIZARD_STORAGEPAGE_SUGGESTED_LOCAL", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The SR suggested by the template ('{0}') does not have enough free space for the new VM's disks.. + /// + public static string NEWVMWIZARD_STORAGEPAGE_SUGGESTED_NOSPACE { + get { + return ResourceManager.GetString("NEWVMWIZARD_STORAGEPAGE_SUGGESTED_NOSPACE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Configure storage for the new VM. /// public static string NEWVMWIZARD_STORAGEPAGE_TITLE { get { @@ -26222,7 +27099,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} {1} ähnelt. + /// Looks up a localized string similar to {0} {1}. /// public static string NEWVMWIZARD_STORAGEPAGE_VDINAME { get { @@ -26231,7 +27108,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CentOS ähnelt. + /// Looks up a localized string similar to [XenCenter] has selected a different SR for you.. + /// + public static string NEWVMWIZARD_STORAGEPAGE_XC_SELECTION { + get { + return ResourceManager.GetString("NEWVMWIZARD_STORAGEPAGE_XC_SELECTION", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to CentOS. /// public static string NEWVMWIZARD_TEMPLATEPAGE_CENTOS { get { @@ -26240,7 +27126,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix] ähnelt. + /// Looks up a localized string similar to [Citrix]. /// public static string NEWVMWIZARD_TEMPLATEPAGE_CITRIX { get { @@ -26249,7 +27135,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CoreOS ähnelt. + /// Looks up a localized string similar to CoreOS. /// public static string NEWVMWIZARD_TEMPLATEPAGE_COREOS { get { @@ -26258,7 +27144,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Custom ähnelt. + /// Looks up a localized string similar to Custom. /// public static string NEWVMWIZARD_TEMPLATEPAGE_CUSTOM { get { @@ -26267,7 +27153,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Debian ähnelt. + /// Looks up a localized string similar to Debian. /// public static string NEWVMWIZARD_TEMPLATEPAGE_DEBIAN { get { @@ -26276,7 +27162,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Linx ähnelt. + /// Looks up a localized string similar to Linx. /// public static string NEWVMWIZARD_TEMPLATEPAGE_LINX { get { @@ -26285,7 +27171,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Misc ähnelt. + /// Looks up a localized string similar to Misc. /// public static string NEWVMWIZARD_TEMPLATEPAGE_MISC { get { @@ -26294,7 +27180,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Template ähnelt. + /// Looks up a localized string similar to Template. /// public static string NEWVMWIZARD_TEMPLATEPAGE_NAME { get { @@ -26303,7 +27189,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die <no template selected> ähnelt. + /// Looks up a localized string similar to <no template selected>. /// public static string NEWVMWIZARD_TEMPLATEPAGE_NOTEMPLATE { get { @@ -26312,7 +27198,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Oracle ähnelt. + /// Looks up a localized string similar to Oracle. /// public static string NEWVMWIZARD_TEMPLATEPAGE_ORACLE { get { @@ -26321,7 +27207,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Red Hat ähnelt. + /// Looks up a localized string similar to Red Hat. /// public static string NEWVMWIZARD_TEMPLATEPAGE_REDHAT { get { @@ -26330,7 +27216,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scientific Linux ähnelt. + /// Looks up a localized string similar to Scientific Linux. /// public static string NEWVMWIZARD_TEMPLATEPAGE_SCILINUX { get { @@ -26339,7 +27225,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshots ähnelt. + /// Looks up a localized string similar to Snapshots. /// public static string NEWVMWIZARD_TEMPLATEPAGE_SNAPSHOTS { get { @@ -26348,7 +27234,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SUSE ähnelt. + /// Looks up a localized string similar to SUSE. /// public static string NEWVMWIZARD_TEMPLATEPAGE_SUSE { get { @@ -26357,7 +27243,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Template ähnelt. + /// Looks up a localized string similar to Template. /// public static string NEWVMWIZARD_TEMPLATEPAGE_TEMPLATE { get { @@ -26366,7 +27252,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Template name ähnelt. + /// Looks up a localized string similar to Template name. /// public static string NEWVMWIZARD_TEMPLATEPAGE_TEMPLATENAME { get { @@ -26375,7 +27261,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a VM template ähnelt. + /// Looks up a localized string similar to Select a VM template. /// public static string NEWVMWIZARD_TEMPLATEPAGE_TITLE { get { @@ -26384,7 +27270,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Windows ähnelt. + /// Looks up a localized string similar to Windows. /// public static string NEWVMWIZARD_TEMPLATEPAGE_WINDOWS { get { @@ -26393,7 +27279,25 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Assign a virtual GPU ähnelt. + /// Looks up a localized string similar to The selected virtual GPU type supports multiple instances.. + /// + public static string NEWVMWIZARD_VGPUPAGE_MULTIPLE_VGPU_INFO { + get { + return ResourceManager.GetString("NEWVMWIZARD_VGPUPAGE_MULTIPLE_VGPU_INFO", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The selected virtual GPU type does not support multiple instances.. + /// + public static string NEWVMWIZARD_VGPUPAGE_SINGLE_VGPU_INFO { + get { + return ResourceManager.GetString("NEWVMWIZARD_VGPUPAGE_SINGLE_VGPU_INFO", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Assign a virtual GPU. /// public static string NEWVMWIZARD_VGPUPAGE_TITLE { get { @@ -26402,7 +27306,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This pool is only licensed for [Citrix] Virtual Apps and Desktops workloads ähnelt. + /// Looks up a localized string similar to This pool is only licensed for [Citrix] Virtual Apps and Desktops workloads. /// public static string NEWVMWIZARD_XENAPP_XENDESKTOP_INFO_MESSAGE_POOL { get { @@ -26411,7 +27315,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server is only licensed for [Citrix] Virtual Apps and Desktops workloads ähnelt. + /// Looks up a localized string similar to This server is only licensed for [Citrix] Virtual Apps and Desktops workloads. /// public static string NEWVMWIZARD_XENAPP_XENDESKTOP_INFO_MESSAGE_SERVER { get { @@ -26420,7 +27324,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New Virtual Network Interface - {0} ähnelt. + /// Looks up a localized string similar to New Virtual Network Interface - {0}. /// public static string NEWVNET_TITLE { get { @@ -26429,7 +27333,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This NFS ISO storage is already attached to '{0}' ähnelt. + /// Looks up a localized string similar to This NFS ISO storage is already attached to '{0}'. /// public static string NFS_ISO_ALREADY_ATTACHED { get { @@ -26438,7 +27342,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Example: server:/path ähnelt. + /// Looks up a localized string similar to Example: server:/path. /// public static string NFS_ISO_PATH_EXAMPLE { get { @@ -26447,7 +27351,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NIC ähnelt. + /// Looks up a localized string similar to NIC. /// public static string NIC { get { @@ -26456,7 +27360,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (Hidden) ähnelt. + /// Looks up a localized string similar to {0} (Hidden). /// public static string NIC_HIDDEN { get { @@ -26465,7 +27369,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (Slave) ähnelt. + /// Looks up a localized string similar to {0} (Slave). /// public static string NIC_SLAVE { get { @@ -26474,7 +27378,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network Interface Cards ähnelt. + /// Looks up a localized string similar to Network Interface Cards. /// public static string NIC_TAB_TITLE { get { @@ -26483,7 +27387,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}, VLAN {1} ähnelt. + /// Looks up a localized string similar to {0}, VLAN {1}. /// public static string NIC_VLAN { get { @@ -26492,7 +27396,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} Mbit/s ähnelt. + /// Looks up a localized string similar to {0} Mbit/s. /// public static string NICPANEL_BIT_RATE { get { @@ -26501,7 +27405,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Full ähnelt. + /// Looks up a localized string similar to Full. /// public static string NICPANEL_FULL_DUPLEX { get { @@ -26510,7 +27414,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Half ähnelt. + /// Looks up a localized string similar to Half. /// public static string NICPANEL_HALF_DUPLEX { get { @@ -26519,7 +27423,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SR-IOV is already enabled on all the SR-IOV capable NICs. ähnelt. + /// Looks up a localized string similar to SR-IOV is already enabled on all the SR-IOV capable NICs.. /// public static string NICS_ARE_SRIOV_ENABLED { get { @@ -26528,7 +27432,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No ähnelt. + /// Looks up a localized string similar to No. /// public static string NO { get { @@ -26537,7 +27441,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &No ähnelt. + /// Looks up a localized string similar to &No. /// public static string NO_BUTTON_CAPTION { get { @@ -26546,7 +27450,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM does not have any disks. ähnelt. + /// Looks up a localized string similar to This VM does not have any disks.. /// public static string NO_DISKS { get { @@ -26555,7 +27459,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is no server eligible to become the master of your new pool ähnelt. + /// Looks up a localized string similar to There is no server eligible to become the master of your new pool. /// public static string NO_ELIGIBLE_MASTER { get { @@ -26564,7 +27468,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die GPU configuration and monitoring is disabled, because there are no GPUs available in this pool. ähnelt. + /// Looks up a localized string similar to GPU configuration and monitoring is disabled, because there are no GPUs available in this pool.. /// public static string NO_GPU_IN_POOL { get { @@ -26573,7 +27477,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die GPU configuration and monitoring is disabled, because there are no GPUs available on this host. ähnelt. + /// Looks up a localized string similar to GPU configuration and monitoring is disabled, because there are no GPUs available on this host.. /// public static string NO_GPU_ON_HOST { get { @@ -26582,7 +27486,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There are no halted or suspended VMs to export ähnelt. + /// Looks up a localized string similar to There are no halted or suspended VMs to export. /// public static string NO_HALTED_VMS { get { @@ -26591,7 +27495,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Home Server is not set ähnelt. + /// Looks up a localized string similar to Home Server is not set. /// public static string NO_HOME_SERVER { get { @@ -26600,7 +27504,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There are no system alerts available to dismiss. ähnelt. + /// Looks up a localized string similar to There are no system alerts available to dismiss.. /// public static string NO_MESSAGES_TO_DISMISS { get { @@ -26609,7 +27513,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The server cannot create any more disks for this VM ähnelt. + /// Looks up a localized string similar to The server cannot create any more disks for this VM. /// public static string NO_MORE_USERDEVICES { get { @@ -26618,7 +27522,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (No Name) ähnelt. + /// Looks up a localized string similar to (No Name). /// public static string NO_NAME { get { @@ -26627,7 +27531,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No screenshot ähnelt. + /// Looks up a localized string similar to No screenshot. /// public static string NO_SCREENSHOT { get { @@ -26636,7 +27540,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There are no servers that need activating at this time. ähnelt. + /// Looks up a localized string similar to There are no servers that need activating at this time.. /// public static string NO_SERVERS_NEED_ACTIVATING { get { @@ -26645,7 +27549,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No server session information is available, cannot continue. ähnelt. + /// Looks up a localized string similar to No server session information is available, cannot continue.. /// public static string NO_SESSION_INFO { get { @@ -26654,7 +27558,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM does not have any snapshots. ähnelt. + /// Looks up a localized string similar to This VM does not have any snapshots.. /// public static string NO_SNAPSHOTS { get { @@ -26663,7 +27567,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (There are currently no added timeline intervals) ähnelt. + /// Looks up a localized string similar to (There are currently no added timeline intervals). /// public static string NO_TIMELINE_INTERVALS_TEXT { get { @@ -26672,7 +27576,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There are no SR locations that can support this disk ähnelt. + /// Looks up a localized string similar to There are no SR locations that can support this disk. /// public static string NO_VALID_DISK_LOCATION { get { @@ -26681,7 +27585,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die - ähnelt. + /// Looks up a localized string similar to -. /// public static string NO_VALUE { get { @@ -26690,7 +27594,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die <None> ähnelt. + /// Looks up a localized string similar to <None>. /// public static string NONE { get { @@ -26699,7 +27603,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die None defined ähnelt. + /// Looks up a localized string similar to None defined. /// public static string NONE_DEFINED { get { @@ -26708,7 +27612,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die None of the following: ähnelt. + /// Looks up a localized string similar to None of the following:. /// public static string NONE_OF { get { @@ -26717,7 +27621,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (None) ähnelt. + /// Looks up a localized string similar to (None). /// public static string NONE_PARENS { get { @@ -26726,7 +27630,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The VM is not using a shared network. Restart cannot be guaranteed. ähnelt. + /// Looks up a localized string similar to The VM is not using a shared network. Restart cannot be guaranteed.. /// public static string NOT_AGILE_NETWORK_NOT_SHARED { get { @@ -26735,7 +27639,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The VM is using a non-shared SR. Restart cannot be guaranteed. ähnelt. + /// Looks up a localized string similar to The VM is using a non-shared SR. Restart cannot be guaranteed.. /// public static string NOT_AGILE_SR_NOT_SHARED { get { @@ -26744,7 +27648,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The VM is not agile. Restart cannot be guaranteed. ähnelt. + /// Looks up a localized string similar to The VM is not agile. Restart cannot be guaranteed.. /// public static string NOT_AGILE_UNKOWN { get { @@ -26753,7 +27657,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The VM has one or more SR-IOV VFs attached. Restart cannot be guaranteed. ähnelt. + /// Looks up a localized string similar to The VM has one or more SR-IOV VFs attached. Restart cannot be guaranteed.. /// public static string NOT_AGILE_VM_HAS_SRIOV_VIF { get { @@ -26762,7 +27666,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The VM has one or more virtual GPUs. Restart cannot be guaranteed. ähnelt. + /// Looks up a localized string similar to The VM has one or more virtual GPUs. Restart cannot be guaranteed.. /// public static string NOT_AGILE_VM_HAS_VGPU { get { @@ -26771,7 +27675,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The VM has one or more USB devices attached. Restart cannot be guaranteed. ähnelt. + /// Looks up a localized string similar to The VM has one or more USB devices attached. Restart cannot be guaranteed.. /// public static string NOT_AGILE_VM_HAS_VUSB { get { @@ -26780,7 +27684,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not applied ähnelt. + /// Looks up a localized string similar to Not applied. /// public static string NOT_APPLIED { get { @@ -26789,7 +27693,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die not attached to ähnelt. + /// Looks up a localized string similar to not attached to. /// public static string NOT_ATTACHED_TO { get { @@ -26798,7 +27702,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die not contained in ähnelt. + /// Looks up a localized string similar to not contained in. /// public static string NOT_CONTAINED_IN { get { @@ -26807,7 +27711,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die does not contain ähnelt. + /// Looks up a localized string similar to does not contain. /// public static string NOT_CONTAINS { get { @@ -26816,7 +27720,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This host does not have enough disk space to install this update ähnelt. + /// Looks up a localized string similar to This host does not have enough disk space to install this update. /// public static string NOT_ENOUGH_SPACE_DESCRIPTION { get { @@ -26825,7 +27729,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is not enough space to update '{0}' with automated updates. ähnelt. + /// Looks up a localized string similar to There is not enough space to update '{0}' with automated updates.. /// public static string NOT_ENOUGH_SPACE_MESSAGE_AUTO_UPDATE { get { @@ -26834,7 +27738,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is not enough space to upload the required updates to '{0}'. ähnelt. + /// Looks up a localized string similar to There is not enough space to upload the required updates to '{0}'.. /// public static string NOT_ENOUGH_SPACE_MESSAGE_AUTO_UPDATE_UPLOAD { get { @@ -26843,7 +27747,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is not enough space on the SRs on '{0}' to upload all the update files required by the automated updates. ähnelt. + /// Looks up a localized string similar to There is not enough space on the SRs on '{0}' to upload all the update files required by the automated updates.. /// public static string NOT_ENOUGH_SPACE_MESSAGE_AUTO_UPDATE_UPLOAD_ALL { get { @@ -26852,7 +27756,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is not enough space on any of the SRs on '{0}' to upload an update file required by the automated updates. ähnelt. + /// Looks up a localized string similar to There is not enough space on any of the SRs on '{0}' to upload an update file required by the automated updates.. /// public static string NOT_ENOUGH_SPACE_MESSAGE_AUTO_UPDATE_UPLOAD_ONE { get { @@ -26861,7 +27765,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Space available: {0} ähnelt. + /// Looks up a localized string similar to Space available: {0}. /// public static string NOT_ENOUGH_SPACE_MESSAGE_AVAILABLE_SPACE { get { @@ -26870,7 +27774,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] can free up {0} by removing residual update files. Do you want to proceed with the cleanup? ähnelt. + /// Looks up a localized string similar to [XenCenter] can free up {0} by removing residual update files. Do you want to proceed with the cleanup?. /// public static string NOT_ENOUGH_SPACE_MESSAGE_CLEANUP { get { @@ -26879,7 +27783,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is not enough space on '{0}' to install update '{1}'. ähnelt. + /// Looks up a localized string similar to There is not enough space on '{0}' to install update '{1}'.. /// public static string NOT_ENOUGH_SPACE_MESSAGE_INSTALL { get { @@ -26888,7 +27792,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Free up some space and try again. ähnelt. + /// Looks up a localized string similar to Free up some space and try again.. /// public static string NOT_ENOUGH_SPACE_MESSAGE_NOCLEANUP { get { @@ -26897,7 +27801,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Space required: {0} ähnelt. + /// Looks up a localized string similar to Space required: {0}. /// public static string NOT_ENOUGH_SPACE_MESSAGE_REQUIRED_SPACE { get { @@ -26906,7 +27810,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is not enough space on '{0}' to upload update '{1}'. ähnelt. + /// Looks up a localized string similar to There is not enough space on '{0}' to upload update '{1}'.. /// public static string NOT_ENOUGH_SPACE_MESSAGE_UPLOAD { get { @@ -26915,7 +27819,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not in any folder ähnelt. + /// Looks up a localized string similar to Not in any folder. /// public static string NOT_IN_A_FOLDER { get { @@ -26924,11 +27828,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs on local disk will prevent disk repartitioning. + /// Looks up a localized string similar to VMs on local disk will prevent disk repartitioning. /// ///A new disk partitioning scheme is available in [XenServer] [BRANDING_VERSION_7_0] and above that includes larger dom0 and backup partitions, and dedicated partitions for logging, swap and UEFI. /// - ///However, there are VMs on local storage, so the current partitioning scheme will be retained. To benefit from repartitioning on upgrade to [XenServer] [BRANDING_VERSION_7_0] or above, VMs must be moved from local storage first. ähnelt. + ///However, there are VMs on local storage, so the current partitioning scheme will be retained. To benefit from repartitioning on upgrade to [XenServer] [BRANDING_VERSION_7_0] or above, VMs must be moved from local storage first.. /// public static string NOT_SAFE_TO_UPGRADE_DEFAULT_WARNING_LONG { get { @@ -26937,7 +27841,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: VMs on local disk will prevent disk repartitioning. ähnelt. + /// Looks up a localized string similar to {0}: VMs on local disk will prevent disk repartitioning.. /// public static string NOT_SAFE_TO_UPGRADE_DEFAULT_WARNING_SHORT { get { @@ -26946,11 +27850,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The disk size of the local storage prevents repartitioning. + /// Looks up a localized string similar to The disk size of the local storage prevents repartitioning. /// ///A new disk partitioning scheme is available in [XenServer] [BRANDING_VERSION_7_0] and above that includes larger dom0 and backup partitions, and dedicated partitions for logging, swap and UEFI. /// - ///However, there is not enough space to perform the repartitioning, so the current partitioning scheme will be retained. ähnelt. + ///However, there is not enough space to perform the repartitioning, so the current partitioning scheme will be retained.. /// public static string NOT_SAFE_TO_UPGRADE_NOT_ENOUGH_SPACE_LONG { get { @@ -26959,7 +27863,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: The disk size of the local storage prevents repartitioning. ähnelt. + /// Looks up a localized string similar to {0}: The disk size of the local storage prevents repartitioning.. /// public static string NOT_SAFE_TO_UPGRADE_NOT_ENOUGH_SPACE_SHORT { get { @@ -26968,7 +27872,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die not trusted ähnelt. + /// Looks up a localized string similar to not trusted. /// public static string NOT_TRUSTED { get { @@ -26977,7 +27881,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Out of date ähnelt. + /// Looks up a localized string similar to Out of date. /// public static string NOT_UPDATED { get { @@ -26986,7 +27890,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not Upgraded ähnelt. + /// Looks up a localized string similar to Not Upgraded. /// public static string NOT_UPGRADED { get { @@ -26995,7 +27899,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not uploaded ähnelt. + /// Looks up a localized string similar to Not uploaded. /// public static string NOT_UPLOADED { get { @@ -27004,7 +27908,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not yet run ähnelt. + /// Looks up a localized string similar to Not yet run. /// public static string NOT_YET_RUN { get { @@ -27013,7 +27917,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server License ähnelt. + /// Looks up a localized string similar to Server License. /// public static string NOTICE_LICENCE_TITLE { get { @@ -27022,7 +27926,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Alerts ähnelt. + /// Looks up a localized string similar to Alerts. /// public static string NOTIFICATIONS_SUBMODE_ALERTS_READ { get { @@ -27031,7 +27935,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Alerts ({0}) ähnelt. + /// Looks up a localized string similar to Alerts ({0}). /// public static string NOTIFICATIONS_SUBMODE_ALERTS_UNREAD { get { @@ -27040,7 +27944,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Events ähnelt. + /// Looks up a localized string similar to Events. /// public static string NOTIFICATIONS_SUBMODE_EVENTS_READ { get { @@ -27049,7 +27953,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Events ({0} errors) ähnelt. + /// Looks up a localized string similar to Events ({0} errors). /// public static string NOTIFICATIONS_SUBMODE_EVENTS_UNREAD_MANY { get { @@ -27058,7 +27962,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Events (1 error) ähnelt. + /// Looks up a localized string similar to Events (1 error). /// public static string NOTIFICATIONS_SUBMODE_EVENTS_UNREAD_ONE { get { @@ -27067,7 +27971,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updates ähnelt. + /// Looks up a localized string similar to Updates. /// public static string NOTIFICATIONS_SUBMODE_UPDATES_READ { get { @@ -27076,7 +27980,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updates ({0}) ähnelt. + /// Looks up a localized string similar to Updates ({0}). /// public static string NOTIFICATIONS_SUBMODE_UPDATES_UNREAD { get { @@ -27085,7 +27989,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Notifications ({0}) ähnelt. + /// Looks up a localized string similar to Notifications ({0}). /// public static string NOTIFICATIONS_TOTAL { get { @@ -27094,7 +27998,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Notifications ähnelt. + /// Looks up a localized string similar to Notifications. /// public static string NOTIFICATIONS_TOTAL_ZERO { get { @@ -27103,7 +28007,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Now ähnelt. + /// Looks up a localized string similar to Now. /// public static string NOW { get { @@ -27112,7 +28016,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Number of snapshots to keep ähnelt. + /// Looks up a localized string similar to Number of snapshots to keep. /// public static string NUMBER_OF_SNAPSHOTS_TO_KEEP { get { @@ -27121,7 +28025,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Number of Sockets ähnelt. + /// Looks up a localized string similar to Number of Sockets. /// public static string NUMBER_OF_SOCKETS { get { @@ -27130,7 +28034,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} snapshots ähnelt. + /// Looks up a localized string similar to {0} snapshots. /// public static string NUMBER_SNAPSHOTS { get { @@ -27139,7 +28043,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} in '{1}' ähnelt. + /// Looks up a localized string similar to {0} in '{1}'. /// public static string OBJECT_IN_POOL { get { @@ -27148,7 +28052,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} on '{1}' ähnelt. + /// Looks up a localized string similar to {0} on '{1}'. /// public static string OBJECT_ON_SERVER { get { @@ -27157,7 +28061,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Objects with tag '{0}' ähnelt. + /// Looks up a localized string similar to Objects with tag '{0}'. /// public static string OBJECTS_WITH_TAG { get { @@ -27166,7 +28070,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die OK ähnelt. + /// Looks up a localized string similar to OK. /// public static string OK { get { @@ -27175,7 +28079,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are already connected to '{0}' ähnelt. + /// Looks up a localized string similar to You are already connected to '{0}'. /// public static string OLD_CONNECTION_ALREADY_CONNECTED { get { @@ -27184,7 +28088,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Older than current server ähnelt. + /// Looks up a localized string similar to Older than current server. /// public static string OLDER_THAN_CURRENT_SERVER { get { @@ -27193,7 +28097,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die on '{0}' ähnelt. + /// Looks up a localized string similar to on '{0}'. /// public static string ON_SERVER { get { @@ -27202,7 +28106,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die 1 VM selected ähnelt. + /// Looks up a localized string similar to 1 VM selected. /// public static string ONE_VM_SELECTED { get { @@ -27211,7 +28115,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Only VMs using StorageLink Gateway NetApp, Dell EqualLogic or SMI-S adapters can be upgraded ähnelt. + /// Looks up a localized string similar to Only VMs using StorageLink Gateway NetApp, Dell EqualLogic or SMI-S adapters can be upgraded. /// public static string ONLY_VMS_USING_STORAGELINK_SMIS { get { @@ -27220,7 +28124,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Operating System ähnelt. + /// Looks up a localized string similar to Operating System. /// public static string OPERATING_SYSTEM { get { @@ -27229,7 +28133,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Optimized ähnelt. + /// Looks up a localized string similar to Optimized. /// public static string OPTIMIZED { get { @@ -27238,7 +28142,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Out of date ähnelt. + /// Looks up a localized string similar to Out of date. /// public static string OUT_OF_DATE { get { @@ -27247,7 +28151,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Overall progress: {0} of {1} servers done ähnelt. + /// Looks up a localized string similar to Overall progress: {0} of {1} servers done. /// public static string OVERALL_PROGRESS { get { @@ -27256,7 +28160,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ({0}% of total memory) ähnelt. + /// Looks up a localized string similar to ({0}% of total memory). /// public static string OVERCOMMIT { get { @@ -27265,7 +28169,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Overcommit: ähnelt. + /// Looks up a localized string similar to Overcommit:. /// public static string OVERCOMMIT_LABEL { get { @@ -27274,7 +28178,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CPU Usage ähnelt. + /// Looks up a localized string similar to CPU Usage. /// public static string OVERVIEW_CPU_USAGE { get { @@ -27283,7 +28187,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disks ähnelt. + /// Looks up a localized string similar to Disks. /// public static string OVERVIEW_DISKS { get { @@ -27292,7 +28196,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Used Memory ähnelt. + /// Looks up a localized string similar to Used Memory. /// public static string OVERVIEW_MEMORY_USAGE { get { @@ -27301,7 +28205,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Name ähnelt. + /// Looks up a localized string similar to Name. /// public static string OVERVIEW_NAME { get { @@ -27310,7 +28214,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network ähnelt. + /// Looks up a localized string similar to Network. /// public static string OVERVIEW_NETWORK { get { @@ -27319,7 +28223,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No results found ähnelt. + /// Looks up a localized string similar to No results found. /// public static string OVERVIEW_NO_RESULTS { get { @@ -27328,7 +28232,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (avg / max KBs) ähnelt. + /// Looks up a localized string similar to (avg / max KBs). /// public static string OVERVIEW_UNITS { get { @@ -27337,34 +28241,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Created by [XenCenter] Disk Image Import ähnelt. - /// - public static string OVF_CREATED { - get { - return ResourceManager.GetString("OVF_CREATED", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Disk ähnelt. - /// - public static string OVF_DISK_CAPTION { - get { - return ResourceManager.GetString("OVF_DISK_CAPTION", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Network ähnelt. - /// - public static string OVF_NET_DESCRIPTION { - get { - return ResourceManager.GetString("OVF_NET_DESCRIPTION", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Parent folder ähnelt. + /// Looks up a localized string similar to Parent folder. /// public static string PARENT_FOLDER { get { @@ -27373,7 +28250,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Applied on some servers ähnelt. + /// Looks up a localized string similar to Applied on some servers. /// public static string PARTIALLY_APPLIED { get { @@ -27382,7 +28259,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Partially connected ähnelt. + /// Looks up a localized string similar to Partially connected. /// public static string PARTIALLY_CONNECTED { get { @@ -27391,7 +28268,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Partially Licensed ähnelt. + /// Looks up a localized string similar to Partially Licensed. /// public static string PARTIALLY_LICENSED { get { @@ -27400,7 +28277,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fair ähnelt. + /// Looks up a localized string similar to Fair. /// public static string PASSPHRASE_STRENGTH_FAIR { get { @@ -27409,7 +28286,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Good ähnelt. + /// Looks up a localized string similar to Good. /// public static string PASSPHRASE_STRENGTH_GOOD { get { @@ -27418,7 +28295,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Low ähnelt. + /// Looks up a localized string similar to Low. /// public static string PASSPHRASE_STRENGTH_LOW { get { @@ -27427,7 +28304,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Password strength: {0} ähnelt. + /// Looks up a localized string similar to Password strength: {0}. /// public static string PASSPHRASE_STRENGTH_PROMPT { get { @@ -27436,7 +28313,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Strong ähnelt. + /// Looks up a localized string similar to Strong. /// public static string PASSPHRASE_STRENGTH_STRONG { get { @@ -27445,7 +28322,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unknown ähnelt. + /// Looks up a localized string similar to Unknown. /// public static string PASSPHRASE_STRENGTH_UNKNOWN { get { @@ -27454,7 +28331,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The password you typed was incorrect ähnelt. + /// Looks up a localized string similar to The password you typed was incorrect. /// public static string PASSWORD_INCORRECT { get { @@ -27463,7 +28340,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Passwords do not match ähnelt. + /// Looks up a localized string similar to Passwords do not match. /// public static string PASSWORDS_DONT_MATCH { get { @@ -27472,7 +28349,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Passwords cannot be empty ähnelt. + /// Looks up a localized string similar to Passwords cannot be empty. /// public static string PASSWORDS_EMPTY { get { @@ -27481,16 +28358,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You have set a master password, so "Give Passwords Always" is not available. ähnelt. - /// - public static string PASSWORDS_REQUEST_ALWAYS_DISABLED_TOOLTIP_BODY { - get { - return ResourceManager.GetString("PASSWORDS_REQUEST_ALWAYS_DISABLED_TOOLTIP_BODY", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Paste ähnelt. + /// Looks up a localized string similar to Paste. /// public static string PASTE { get { @@ -27499,7 +28367,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update '{0}' applied to server '{1}' ähnelt. + /// Looks up a localized string similar to Update '{0}' applied to server '{1}'. /// public static string PATCH_APPLIED { get { @@ -27508,7 +28376,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update '{0}' already applied to server '{1}' ähnelt. + /// Looks up a localized string similar to Update '{0}' already applied to server '{1}'. /// public static string PATCH_APPLIED_ALREADY { get { @@ -27517,8 +28385,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - ///Installation size: {1} ähnelt. + /// Looks up a localized string similar to {0} + ///Installation size: {1}. /// public static string PATCH_DESCRIPTION_AND_INSTALLATION_SIZE { get { @@ -27527,7 +28395,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to download {0} from '{1}' ähnelt. + /// Looks up a localized string similar to Failed to download {0} from '{1}'. /// public static string PATCH_DOWNLOAD_FAILED { get { @@ -27536,10 +28404,10 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} + /// Looks up a localized string similar to {0} ///Date modified: {1} ///Date created: {2} - ///Size: {3} ähnelt. + ///Size: {3}. /// public static string PATCH_EXPANDED_DESCRIPTION { get { @@ -27548,7 +28416,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Installation size: {0} ähnelt. + /// Looks up a localized string similar to Installation size: {0}. /// public static string PATCH_INSTALLATION_SIZE { get { @@ -27557,7 +28425,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This version requires [XenCenter] {0} or newer ähnelt. + /// Looks up a localized string similar to This version requires [XenCenter] {0} or newer. /// public static string PATCH_NEEDS_NEW_XENCENTER { get { @@ -27566,7 +28434,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not found ähnelt. + /// Looks up a localized string similar to Not found. /// public static string PATCH_NOT_FOUND { get { @@ -27575,8 +28443,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - ///File not found ähnelt. + /// Looks up a localized string similar to {0} + ///File not found. /// public static string PATCH_NOT_FOUND_EXPANDED_DESCRIPTION { get { @@ -27585,7 +28453,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update uploaded to server '{0}' ähnelt. + /// Looks up a localized string similar to Update uploaded to server '{0}' . /// public static string PATCH_UPLOADED { get { @@ -27594,7 +28462,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Eject any virtual CDs from your VMs ähnelt. + /// Looks up a localized string similar to Eject any virtual CDs from your VMs. /// public static string PATCHING_EJECT_CDS { get { @@ -27603,7 +28471,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disable HA until after all the hosts have been rebooted ähnelt. + /// Looks up a localized string similar to Disable HA until after all the hosts have been rebooted. /// public static string PATCHING_WARNING_HA { get { @@ -27612,7 +28480,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} ok. ähnelt. + /// Looks up a localized string similar to {0} ok.. /// public static string PATCHING_WIZARD_CHECK_OK { get { @@ -27621,7 +28489,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The patch {0} is going to be deleted. Do you want to continue? ähnelt. + /// Looks up a localized string similar to The patch {0} is going to be deleted. Do you want to continue?. /// public static string PATCHING_WIZARD_CONFIRMATION_DELETE { get { @@ -27630,7 +28498,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0,4}{1} ähnelt. + /// Looks up a localized string similar to {0,4}{1}. /// public static string PATCHING_WIZARD_DESC_CELL_INDENT { get { @@ -27639,7 +28507,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: {1} ok. ähnelt. + /// Looks up a localized string similar to {0}: {1} ok.. /// public static string PATCHING_WIZARD_HOST_CHECK_OK { get { @@ -27648,7 +28516,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} ... ähnelt. + /// Looks up a localized string similar to {0} .... /// public static string PATCHING_WIZARD_PRECHECK_STATUS { get { @@ -27657,7 +28525,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Running prechecks... ähnelt. + /// Looks up a localized string similar to Running pre-checks.... /// public static string PATCHING_WIZARD_RUNNING_PRECHECKS { get { @@ -27666,8 +28534,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to resolve this issue:\n{0}\n\nPlease resolve this issue manually and then click Check Again. - /// ähnelt. + /// Looks up a localized string similar to Unable to resolve this issue:\n{0}\n\nPlease resolve this issue manually and then click Check Again. + ///. /// public static string PATCHING_WIZARD_SOLVE_MANUALLY { get { @@ -27676,7 +28544,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Solving problems ähnelt. + /// Looks up a localized string similar to Solving problems. /// public static string PATCHING_WIZARD_SOLVING_PROBLEMS { get { @@ -27685,7 +28553,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Go to web page ähnelt. + /// Looks up a localized string similar to Go to web page. /// public static string PATCHING_WIZARD_WEBPAGE_CELL { get { @@ -27694,7 +28562,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The update process was canceled. ähnelt. + /// Looks up a localized string similar to The update process was canceled.. /// public static string PATCHINGWIZARD_AUTOUPDATINGPAGE_CANCELLATION { get { @@ -27703,9 +28571,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to leave this page? + /// Looks up a localized string similar to Are you sure you want to leave this page? /// - ///This will cancel the update process and may leave your system in an unstable state. ähnelt. + ///This will cancel the update process and may leave your system in an unstable state.. /// public static string PATCHINGWIZARD_AUTOUPDATINGPAGE_CANCELLATION_RECONSIDER { get { @@ -27714,7 +28582,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die One or more of the automated updates processes were not completed successfully. The update process has been paused. Press Retry to resume it. ähnelt. + /// Looks up a localized string similar to One or more of the automated updates processes were not completed successfully. The update process has been paused. Press Retry to resume it.. /// public static string PATCHINGWIZARD_AUTOUPDATINGPAGE_ERROR_MANY { get { @@ -27723,7 +28591,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The automated updates process was not completed successfully. The update process has been paused. Press Retry to resume it. ähnelt. + /// Looks up a localized string similar to The automated updates process was not completed successfully. The update process has been paused. Press Retry to resume it.. /// public static string PATCHINGWIZARD_AUTOUPDATINGPAGE_ERROR_ONE { get { @@ -27732,7 +28600,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following errors occurred while automated updates were in progress: ähnelt. + /// Looks up a localized string similar to The following errors occurred while automated updates were in progress:. /// public static string PATCHINGWIZARD_AUTOUPDATINGPAGE_ERROR_POOL_MANY { get { @@ -27741,7 +28609,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following error occurred while automated updates were in progress: ähnelt. + /// Looks up a localized string similar to The following error occurred while automated updates were in progress:. /// public static string PATCHINGWIZARD_AUTOUPDATINGPAGE_ERROR_POOL_ONE { get { @@ -27750,7 +28618,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die All automated updates processes were completed successfully. ähnelt. + /// Looks up a localized string similar to All automated updates processes were completed successfully.. /// public static string PATCHINGWIZARD_AUTOUPDATINGPAGE_SUCCESS_MANY { get { @@ -27759,7 +28627,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The automated updates process was completed successfully. ähnelt. + /// Looks up a localized string similar to The automated updates process was completed successfully.. /// public static string PATCHINGWIZARD_AUTOUPDATINGPAGE_SUCCESS_ONE { get { @@ -27768,7 +28636,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upload and Install ähnelt. + /// Looks up a localized string similar to Upload and Install. /// public static string PATCHINGWIZARD_AUTOUPDATINGPAGE_TEXT { get { @@ -27777,7 +28645,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uploading and installing updates ähnelt. + /// Looks up a localized string similar to Uploading and installing updates. /// public static string PATCHINGWIZARD_AUTOUPDATINGPAGE_TITLE { get { @@ -27786,7 +28654,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Clean up... ähnelt. + /// Looks up a localized string similar to Some of the automated updates processes were completed with warnings.. /// public static string PATCHINGWIZARD_AUTOUPDATINGPAGE_WARNING_MANY { get { @@ -27813,7 +28681,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Skipping download: Already downloaded update {0}... ähnelt. + /// Looks up a localized string similar to Skipping download: Already downloaded update {0}.... /// public static string PATCHINGWIZARD_DOWNLOADUPDATE_ACTION_TITLE_SKIPPING { get { @@ -27822,7 +28690,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Waiting to download update {0}... ähnelt. + /// Looks up a localized string similar to Waiting to download update {0}.... /// public static string PATCHINGWIZARD_DOWNLOADUPDATE_ACTION_TITLE_WAITING { get { @@ -27831,7 +28699,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No action required ähnelt. + /// Looks up a localized string similar to No action required. /// public static string PATCHINGWIZARD_MODEPAGE_NOACTION { get { @@ -27840,7 +28708,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restart these servers in this order (master always first): ähnelt. + /// Looks up a localized string similar to Restart these servers in this order (master always first):. /// public static string PATCHINGWIZARD_MODEPAGE_RESTARTSERVERS { get { @@ -27849,7 +28717,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restart these VMs: ähnelt. + /// Looks up a localized string similar to Restart these VMs:. /// public static string PATCHINGWIZARD_MODEPAGE_RESTARTVMS { get { @@ -27858,7 +28726,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restart toolstack on these servers in this order (master always first): ähnelt. + /// Looks up a localized string similar to Restart toolstack on these servers in this order (master always first):. /// public static string PATCHINGWIZARD_MODEPAGE_RESTARTXAPI { get { @@ -27867,7 +28735,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update Mode ähnelt. + /// Looks up a localized string similar to Update Mode. /// public static string PATCHINGWIZARD_MODEPAGE_TEXT { get { @@ -27876,7 +28744,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the update mode ähnelt. + /// Looks up a localized string similar to Select the update mode. /// public static string PATCHINGWIZARD_MODEPAGE_TITLE { get { @@ -27885,16 +28753,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die More info... ähnelt. - /// - public static string PATCHINGWIZARD_MORE_INFO { - get { - return ResourceManager.GetString("PATCHINGWIZARD_MORE_INFO", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Resolve pool problems ähnelt. + /// Looks up a localized string similar to Resolve pool problems. /// public static string PATCHINGWIZARD_PATCHINGPAGE_POOL_RESOLVE { get { @@ -27903,7 +28762,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool problems resolved ähnelt. + /// Looks up a localized string similar to Pool problems resolved. /// public static string PATCHINGWIZARD_PATCHINGPAGE_POOL_RESOLVED { get { @@ -27912,7 +28771,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resolving pool problems... ähnelt. + /// Looks up a localized string similar to Resolving pool problems.... /// public static string PATCHINGWIZARD_PATCHINGPAGE_POOL_RESOLVING { get { @@ -27921,7 +28780,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Revert pool problems ähnelt. + /// Looks up a localized string similar to Revert pool problems. /// public static string PATCHINGWIZARD_PATCHINGPAGE_POOL_REVERT { get { @@ -27930,7 +28789,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool problems reverted ähnelt. + /// Looks up a localized string similar to Pool problems reverted. /// public static string PATCHINGWIZARD_PATCHINGPAGE_POOL_REVERTED { get { @@ -27939,7 +28798,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reverting pool problems... ähnelt. + /// Looks up a localized string similar to Reverting pool problems.... /// public static string PATCHINGWIZARD_PATCHINGPAGE_POOL_REVERTING { get { @@ -27948,7 +28807,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Revert resolved prechecks ähnelt. + /// Looks up a localized string similar to Revert resolved pre-checks. /// public static string PATCHINGWIZARD_PATCHINGPAGE_PRECHECK_REVERT { get { @@ -27957,7 +28816,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resolved prechecks reverted ähnelt. + /// Looks up a localized string similar to Resolved pre-checks reverted. /// public static string PATCHINGWIZARD_PATCHINGPAGE_PRECHECK_REVERTED { get { @@ -27966,7 +28825,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resolve server problems ähnelt. + /// Looks up a localized string similar to Resolve server problems. /// public static string PATCHINGWIZARD_PATCHINGPAGE_SERVER_RESOLVE { get { @@ -27975,7 +28834,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server problems resolved ähnelt. + /// Looks up a localized string similar to Server problems resolved. /// public static string PATCHINGWIZARD_PATCHINGPAGE_SERVER_RESOLVED { get { @@ -27984,7 +28843,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resolving server problems... ähnelt. + /// Looks up a localized string similar to Resolving server problems.... /// public static string PATCHINGWIZARD_PATCHINGPAGE_SERVER_RESOLVING { get { @@ -27993,7 +28852,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Revert server problems ähnelt. + /// Looks up a localized string similar to Revert server problems. /// public static string PATCHINGWIZARD_PATCHINGPAGE_SERVER_REVERT { get { @@ -28002,7 +28861,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server problems reverted ähnelt. + /// Looks up a localized string similar to Server problems reverted. /// public static string PATCHINGWIZARD_PATCHINGPAGE_SERVER_REVERTED { get { @@ -28011,7 +28870,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reverting server problems... ähnelt. + /// Looks up a localized string similar to Reverting server problems.... /// public static string PATCHINGWIZARD_PATCHINGPAGE_SERVER_REVERTING { get { @@ -28020,7 +28879,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Install Update ähnelt. + /// Looks up a localized string similar to Install Update. /// public static string PATCHINGWIZARD_PATCHINGPAGE_TEXT { get { @@ -28029,7 +28888,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Install the update ähnelt. + /// Looks up a localized string similar to Install the update. /// public static string PATCHINGWIZARD_PATCHINGPAGE_TITLE { get { @@ -28038,7 +28897,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking disk space requirements ähnelt. + /// Looks up a localized string similar to Checking disk space requirements. /// public static string PATCHINGWIZARD_PRECHECKPAGE_CHECKING_DISK_SPACE { get { @@ -28047,7 +28906,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Prechecks failed. ähnelt. + /// Looks up a localized string similar to Pre-checks failed.. /// public static string PATCHINGWIZARD_PRECHECKPAGE_FAILED { get { @@ -28056,7 +28915,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update prechecks are performed to verify that the update "{0}" can be applied to the servers. ähnelt. + /// Looks up a localized string similar to Update pre-checks are performed to verify that the update "{0}" can be applied to the servers.. /// public static string PATCHINGWIZARD_PRECHECKPAGE_FIRSTLINE { get { @@ -28065,7 +28924,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Prechecks are performed to verify that automated updates can proceed. ähnelt. + /// Looks up a localized string similar to Pre-checks are performed to verify that automated updates can proceed.. /// public static string PATCHINGWIZARD_PRECHECKPAGE_FIRSTLINE_AUTOMATED_UPDATES_MODE { get { @@ -28074,7 +28933,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update prechecks are performed to verify that the selected update can be applied to the servers. ähnelt. + /// Looks up a localized string similar to Update pre-checks are performed to verify that the selected update can be applied to the servers.. /// public static string PATCHINGWIZARD_PRECHECKPAGE_FIRSTLINE_NO_PATCH_NAME { get { @@ -28083,7 +28942,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resolve ähnelt. + /// Looks up a localized string similar to Resolve. /// public static string PATCHINGWIZARD_PRECHECKPAGE_RESOLVE { get { @@ -28092,7 +28951,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resolving issues... ähnelt. + /// Looks up a localized string similar to Resolving issues.... /// public static string PATCHINGWIZARD_PRECHECKPAGE_RESOLVING_ALL { get { @@ -28101,7 +28960,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Prechecks ähnelt. + /// Looks up a localized string similar to Pre-checks. /// public static string PATCHINGWIZARD_PRECHECKPAGE_TEXT { get { @@ -28110,7 +28969,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Perform update prechecks on selected servers ähnelt. + /// Looks up a localized string similar to Perform update pre-checks on selected servers. /// public static string PATCHINGWIZARD_PRECHECKPAGE_TITLE { get { @@ -28119,7 +28978,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete update installation files ähnelt. + /// Looks up a localized string similar to Delete update installation files. /// public static string PATCHINGWIZARD_REMOVE_UPDATES { get { @@ -28128,7 +28987,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleted update installation files ähnelt. + /// Looks up a localized string similar to Deleted update installation files. /// public static string PATCHINGWIZARD_REMOVED_UPDATES { get { @@ -28137,7 +28996,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting update installation files ähnelt. + /// Looks up a localized string similar to Deleting update installation files. /// public static string PATCHINGWIZARD_REMOVING_UPDATES { get { @@ -28146,7 +29005,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose Update File ähnelt. + /// Looks up a localized string similar to Choose Update File. /// public static string PATCHINGWIZARD_SELECTPATCHPAGE_CHOOSE { get { @@ -28155,7 +29014,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select Update ähnelt. + /// Looks up a localized string similar to Select Update. /// public static string PATCHINGWIZARD_SELECTPATCHPAGE_TEXT { get { @@ -28164,7 +29023,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose an existing update to install or upload a new one ähnelt. + /// Looks up a localized string similar to Choose an existing update to install or upload a new one. /// public static string PATCHINGWIZARD_SELECTPATCHPAGE_TITLE { get { @@ -28173,7 +29032,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] Updates and Supplemental Packs (*.{0}, *.iso,*.zip)|*.{0};*.iso;*.zip ähnelt. + /// Looks up a localized string similar to [XenServer] Updates and Supplemental Packs (*.{0}, *.iso,*.zip)|*.{0};*.iso;*.zip. /// public static string PATCHINGWIZARD_SELECTPATCHPAGE_UPDATESEXT { get { @@ -28182,7 +29041,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Also apply all released &updates on the new version ähnelt. + /// Looks up a localized string similar to Also apply all released &updates on the new version. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_APPLY_UPDATES { get { @@ -28191,7 +29050,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Also apply all released &updates on the new version (only on pools licensed for automated updates) ähnelt. + /// Looks up a localized string similar to Also apply all released &updates on the new version (only on pools licensed for automated updates). /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_APPLY_UPDATES_MIXED { get { @@ -28200,7 +29059,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Automated updates are not supported on this [XenServer] version ähnelt. + /// Looks up a localized string similar to Automated updates are not supported on this [XenServer] version. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_AUTOMATED_UPDATES_NOT_SUPPORTED_HOST_VERSION { get { @@ -28209,7 +29068,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Automated updates are not supported on partially upgraded [XenServer] pools ähnelt. + /// Looks up a localized string similar to Automated updates are not supported on partially upgraded [XenServer] pools. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_AUTOMATED_UPDATES_NOT_SUPPORTED_PARTIALLY_UPGRADED { get { @@ -28219,7 +29078,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot install supplemental packs on this [XenServer] version ähnelt. + /// Looks up a localized string similar to Cannot install supplemental packs on this [XenServer] version. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_CANNOT_INSTALL_SUPP_PACKS { get { @@ -28228,7 +29087,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot install updates on this host because the master is running a version higher than [BRANDING_VERSION_7_0] ähnelt. + /// Looks up a localized string similar to Cannot install updates on this host because the master is running a version higher than [BRANDING_VERSION_7_0]. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_CANNOT_INSTALL_UPDATE_MASTER_POST_7_0 { get { @@ -28237,7 +29096,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Subscription Advantage required ähnelt. + /// Looks up a localized string similar to Subscription Advantage required. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_HOST_UNLICENSED { get { @@ -28246,7 +29105,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die One or more servers in the pool are not licensed for automated updates ähnelt. + /// Looks up a localized string similar to One or more servers in the pool are not licensed for automated updates. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_HOST_UNLICENSED_FOR_AUTOMATED_UPDATES { get { @@ -28255,7 +29114,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The server is unreachable ähnelt. + /// Looks up a localized string similar to The server is unreachable. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_HOST_UNREACHABLE { get { @@ -28264,7 +29123,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die One or more servers in the pool have to be upgraded before [XenCenter] can apply the selected new version. ähnelt. + /// Looks up a localized string similar to One or more servers in the pool have to be upgraded before [XenCenter] can apply the selected new version.. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_NEW_VERSION_UPGRADE_SLAVES_FIRST { get { @@ -28273,7 +29132,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update already applied ähnelt. + /// Looks up a localized string similar to Update already applied. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_PATCH_ALREADY_APPLIED { get { @@ -28282,7 +29141,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update not applicable ähnelt. + /// Looks up a localized string similar to Update not applicable. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_PATCH_NOT_APPLICABLE { get { @@ -28291,14 +29150,14 @@ namespace XenAdmin { } /// - /// 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. + /// Looks up a localized string similar to Update not applicable or file contains invalid data.. + /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_PATCH_NOT_APPLICABLE_OR_INVALID { get { return ResourceManager.GetString("PATCHINGWIZARD_SELECTSERVERPAGE_PATCH_NOT_APPLICABLE_OR_INVALID", resourceCulture); } } - /// + /// /// 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.. @@ -28310,8 +29169,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select one or more servers where you want to apply the selected update. - ///Servers where this update cannot be applied appear disabled in this list. ähnelt. + /// Looks up a localized string similar to Select one or more servers where you want to apply the selected update. + ///Servers where this update cannot be applied appear disabled in this list.. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_RUBRIC_DEFAULT { get { @@ -28320,8 +29179,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select one or more pools or standalone servers that you want to update to the new version. - ///Servers where this update cannot be applied appear disabled in this list. ähnelt. + /// Looks up a localized string similar to Select one or more pools or standalone servers that you want to update to the new version. + ///Servers where this update cannot be applied appear disabled in this list.. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_RUBRIC_NEW_VERSION_MODE { get { @@ -28330,8 +29189,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select one or more pools or standalone servers where you want to apply the selected update. - ///Servers where this update cannot be applied appear disabled in this list. ähnelt. + /// Looks up a localized string similar to Select one or more pools or standalone servers where you want to apply the selected update. + ///Servers where this update cannot be applied appear disabled in this list.. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_RUBRIC_POOL_SELECTION { get { @@ -28340,7 +29199,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server cannot be updated with automated updates ähnelt. + /// Looks up a localized string similar to This server cannot be updated with automated updates. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_SERVER_NOT_AUTO_UPGRADABLE { get { @@ -28349,7 +29208,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server is already up-to-date ähnelt. + /// Looks up a localized string similar to This server is already up-to-date. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_SERVER_UP_TO_DATE { get { @@ -28358,7 +29217,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select Servers ähnelt. + /// Looks up a localized string similar to Select Servers. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_TEXT { get { @@ -28367,7 +29226,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the servers you want to update ähnelt. + /// Looks up a localized string similar to Select the servers you want to update. /// public static string PATCHINGWIZARD_SELECTSERVERPAGE_TITLE { get { @@ -28376,7 +29235,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The installation of update {0} was not completed successfully on all selected servers. The update process has been paused. Press Retry to resume it. ähnelt. + /// Looks up a localized string similar to The installation of update {0} was not completed successfully on all selected servers. The update process has been paused. Press Retry to resume it.. /// public static string PATCHINGWIZARD_SINGLEUPDATE_FAILURE_MANY { get { @@ -28385,7 +29244,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The installation of update {0} was not completed successfully. ähnelt. + /// Looks up a localized string similar to The installation of update {0} was not completed successfully.. /// public static string PATCHINGWIZARD_SINGLEUPDATE_FAILURE_ONE { get { @@ -28394,7 +29253,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following errors occurred while the installation of update {0} was in progress: ähnelt. + /// Looks up a localized string similar to The following errors occurred while the installation of update {0} was in progress:. /// public static string PATCHINGWIZARD_SINGLEUPDATE_FAILURE_PER_POOL_MANY { get { @@ -28403,7 +29262,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following error occurred while the installation of update {0} was in progress: ähnelt. + /// Looks up a localized string similar to The following error occurred while the installation of update {0} was in progress:. /// public static string PATCHINGWIZARD_SINGLEUPDATE_FAILURE_PER_POOL_ONE { get { @@ -28412,7 +29271,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The installation of update {0} on all selected servers was completed successfully. ähnelt. + /// Looks up a localized string similar to Please carry out any pending post-update tasks from the list below:. + /// + public static string PATCHINGWIZARD_SINGLEUPDATE_MANUAL_POST_UPDATE { + get { + return ResourceManager.GetString("PATCHINGWIZARD_SINGLEUPDATE_MANUAL_POST_UPDATE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The installation of update {0} on all selected servers was completed successfully.. /// public static string PATCHINGWIZARD_SINGLEUPDATE_SUCCESS_MANY { get { @@ -28421,7 +29289,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The installation of update {0} was completed successfully. ähnelt. + /// Looks up a localized string similar to The installation of update {0} was completed successfully.. /// public static string PATCHINGWIZARD_SINGLEUPDATE_SUCCESS_ONE { get { @@ -28430,7 +29298,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] is now installing update {0} on your system. ähnelt. + /// Looks up a localized string similar to [XenCenter] is now installing update {0} on your system.. /// public static string PATCHINGWIZARD_SINGLEUPDATE_TITLE { get { @@ -28439,7 +29307,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The upload process was cancelled. ähnelt. + /// Looks up a localized string similar to The installation of update {0} was completed with warnings on some of the selected servers.. /// public static string PATCHINGWIZARD_SINGLEUPDATE_WARNING_MANY { get { @@ -28457,7 +29325,7 @@ namespace XenAdmin { } /// - /// Looks up a localized string similar to The upload process was cancelled.. + /// Looks up a localized string similar to The upload process was canceled.. /// public static string PATCHINGWIZARD_SINGLEUPLOAD_CANCELLATION { get { @@ -28466,9 +29334,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to leave this page? + /// Looks up a localized string similar to Are you sure you want to leave this page? /// - ///This will cancel the upload process. ähnelt. + ///This will cancel the upload process.. /// public static string PATCHINGWIZARD_SINGLEUPLOAD_CANCELLATION_RECONSIDER { get { @@ -28477,7 +29345,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The upload of update {0} was not completed successfully on all selected servers. The update process has been paused. Press Retry to resume it. ähnelt. + /// Looks up a localized string similar to The upload of update {0} was not completed successfully on all selected servers. The update process has been paused. Press Retry to resume it.. /// public static string PATCHINGWIZARD_SINGLEUPLOAD_FAILURE_MANY { get { @@ -28486,7 +29354,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The upload of update {0} was not completed successfully. ähnelt. + /// Looks up a localized string similar to The upload of update {0} was not completed successfully.. /// public static string PATCHINGWIZARD_SINGLEUPLOAD_FAILURE_ONE { get { @@ -28495,7 +29363,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following errors occurred while the upload of update {0} was in progress: ähnelt. + /// Looks up a localized string similar to The following errors occurred while the upload of update {0} was in progress:. /// public static string PATCHINGWIZARD_SINGLEUPLOAD_FAILURE_PER_POOL_MANY { get { @@ -28504,7 +29372,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following error occurred while the upload of update {0} was in progress: ähnelt. + /// Looks up a localized string similar to The following error occurred while the upload of update {0} was in progress:. /// public static string PATCHINGWIZARD_SINGLEUPLOAD_FAILURE_PER_POOL_ONE { get { @@ -28513,7 +29381,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The upload of update {0} on all selected servers was completed successfully. ähnelt. + /// Looks up a localized string similar to The upload of update {0} on all selected servers was completed successfully.. /// public static string PATCHINGWIZARD_SINGLEUPLOAD_SUCCESS_MANY { get { @@ -28522,7 +29390,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The upload of update {0} was completed successfully. ähnelt. + /// Looks up a localized string similar to The upload of update {0} was completed successfully.. /// public static string PATCHINGWIZARD_SINGLEUPLOAD_SUCCESS_ONE { get { @@ -28531,7 +29399,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [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. ähnelt. + /// Looks up a localized string similar to [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.. /// public static string PATCHINGWIZARD_SINGLEUPLOAD_TITLE { get { @@ -28540,7 +29408,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] is now installing updates on your system. ähnelt. + /// Looks up a localized string similar to The upload of update {0} was completed with warnings on some of the selected servers.. /// public static string PATCHINGWIZARD_SINGLEUPLOAD_WARNING_MANY { get { @@ -28567,7 +29435,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] is now installing the new version on your system. ähnelt. + /// Looks up a localized string similar to [XenCenter] is now installing the new version on your system.. /// public static string PATCHINGWIZARD_UPLOAD_AND_INSTALL_TITLE_NEW_VERSION_AUTOMATED_MODE { get { @@ -28576,7 +29444,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upload ähnelt. + /// Looks up a localized string similar to Upload. /// public static string PATCHINGWIZARD_UPLOADPAGE_TEXT { get { @@ -28585,7 +29453,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uploading the selected file to your servers ähnelt. + /// Looks up a localized string similar to Uploading the selected file to your servers. /// public static string PATCHINGWIZARD_UPLOADPAGE_TITLE_ONLY_UPLOAD { get { @@ -28594,7 +29462,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die XVA (*.xva)|*.xva|XVA Version 1 (ova.xml)|ova.xml ähnelt. + /// Looks up a localized string similar to XVA (*.xva)|*.xva|XVA Version 1 (ova.xml)|ova.xml. /// public static string PATHPICKER_FILETYPE { get { @@ -28603,7 +29471,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage connection check ähnelt. + /// Looks up a localized string similar to Storage connection check. /// public static string PBDS_CHECK_DESCRIPTION { get { @@ -28612,7 +29480,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Title ähnelt. + /// Looks up a localized string similar to Title. /// public static string PDSECTION_TITLE { get { @@ -28621,7 +29489,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pending restart check ähnelt. + /// Looks up a localized string similar to Pending restart check. /// public static string PENDING_RESTART_CHECK { get { @@ -28630,7 +29498,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Interval must be a multiple of 5 ähnelt. + /// Looks up a localized string similar to Interval must be a multiple of 5. /// public static string PERFORM_ALERT_EDIT_INTERVAL_WRONG_MULTIPLE { get { @@ -28639,7 +29507,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Performance Graphs ähnelt. + /// Looks up a localized string similar to Performance Graphs. /// public static string PERFORMANCE_TAB_TITLE { get { @@ -28648,7 +29516,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Permission Denied ähnelt. + /// Looks up a localized string similar to Permission Denied. /// public static string PERMISSION_DENIED { get { @@ -28657,7 +29525,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Physical device ähnelt. + /// Looks up a localized string similar to Physical device. /// public static string PHYSICAL_DEVICE { get { @@ -28666,7 +29534,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Bond {0} ähnelt. + /// Looks up a localized string similar to Bond {0}. /// public static string PIF_BOND { get { @@ -28675,7 +29543,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die DHCP ähnelt. + /// Looks up a localized string similar to DHCP. /// public static string PIF_DHCP { get { @@ -28684,7 +29552,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die in use by VMs ähnelt. + /// Looks up a localized string similar to in use by VMs. /// public static string PIF_IN_USE_BY_VMS { get { @@ -28693,7 +29561,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Management Interfaces ähnelt. + /// Looks up a localized string similar to Management Interfaces. /// public static string PIF_MANAGEMENT_INTERFACES { get { @@ -28702,7 +29570,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NIC {0} ähnelt. + /// Looks up a localized string similar to NIC {0}. /// public static string PIF_NIC { get { @@ -28711,7 +29579,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die None ähnelt. + /// Looks up a localized string similar to None. /// public static string PIF_NONE { get { @@ -28720,7 +29588,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Static ähnelt. + /// Looks up a localized string similar to Static. /// public static string PIF_STATIC { get { @@ -28729,7 +29597,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unknown ähnelt. + /// Looks up a localized string similar to Unknown. /// public static string PIF_UNKNOWN { get { @@ -28738,7 +29606,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die These files may contain personally identifiable information if customized. ähnelt. + /// Looks up a localized string similar to These files may contain personally identifiable information if customized.. /// public static string PII_CUSTOMISED { get { @@ -28747,7 +29615,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die These files may contain personally identifiable information. ähnelt. + /// Looks up a localized string similar to These files may contain personally identifiable information.. /// public static string PII_MAYBE { get { @@ -28756,7 +29624,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die These files will contain no personally identifiable information. ähnelt. + /// Looks up a localized string similar to These files will contain no personally identifiable information.. /// public static string PII_NO { get { @@ -28765,7 +29633,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die These files will contain personally identifiable information. ähnelt. + /// Looks up a localized string similar to These files will contain personally identifiable information.. /// public static string PII_YES { get { @@ -28774,7 +29642,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die canceled by user. ähnelt. + /// Looks up a localized string similar to canceled by user.. /// public static string PLAN_ACTION_CANCELLED_BY_USER { get { @@ -28783,7 +29651,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die done. ähnelt. + /// Looks up a localized string similar to done.. /// public static string PLAN_ACTION_DONE { get { @@ -28792,7 +29660,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die error. ähnelt. + /// Looks up a localized string similar to error.. /// public static string PLAN_ACTION_ERROR { get { @@ -28801,7 +29669,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' could not be evacuated because there was not enough free memory on the other servers to migrate all the VMs from this server. Please suspend or shutdown some VMs and then press Retry to resume the process. ähnelt. + /// Looks up a localized string similar to Server '{0}' could not be evacuated because there were no servers available to accommodate all the VMs being migrated from this server. Please reboot the other servers that are pending a reboot following the update installation, and then press Retry to resume the process.. + /// + public static string PLAN_ACTION_FAILURE_NO_HOSTS_AVAILABLE { + get { + return ResourceManager.GetString("PLAN_ACTION_FAILURE_NO_HOSTS_AVAILABLE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Server '{0}' could not be evacuated because there was not enough free memory on the other servers to migrate all the VMs from this server. Please suspend or shutdown some VMs and then press Retry to resume the process.. /// public static string PLAN_ACTION_FAILURE_NOT_ENOUGH_MEMORY { get { @@ -28810,7 +29687,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Installing [XenServer] on '{0}'... ähnelt. + /// Looks up a localized string similar to Installing [XenServer] on '{0}'.... /// public static string PLAN_ACTION_STATUS_INSTALLING_XENSERVER { get { @@ -28819,7 +29696,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reconnecting storage... ähnelt. + /// Looks up a localized string similar to Installing [XenServer] {0} on '{1}'.... + /// + public static string PLAN_ACTION_STATUS_INSTALLING_XENSERVER_VERSION { + get { + return ResourceManager.GetString("PLAN_ACTION_STATUS_INSTALLING_XENSERVER_VERSION", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reconnecting storage.... /// public static string PLAN_ACTION_STATUS_RECONNECTING_STORAGE { get { @@ -28828,7 +29714,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrating VMs back to server {0}... ähnelt. + /// Looks up a localized string similar to Migrating VMs back to server {0}.... /// public static string PLAN_ACTION_STATUS_REPATRIATING_VMS { get { @@ -28837,7 +29723,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrate VMs from Server ähnelt. + /// Looks up a localized string similar to Migrate VMs from Server. /// public static string PLANACTION_VMS_MIGRATE { get { @@ -28846,7 +29732,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs migrated from Server ähnelt. + /// Looks up a localized string similar to VMs migrated from Server. /// public static string PLANACTION_VMS_MIGRATED { get { @@ -28855,7 +29741,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Migrating VMs off server '{0}'... ähnelt. + /// Looks up a localized string similar to Migrating VMs off server '{0}'.... /// public static string PLANACTION_VMS_MIGRATING { get { @@ -28864,7 +29750,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reboot specified VMs ähnelt. + /// Looks up a localized string similar to Reboot specified VMs. /// public static string PLANACTION_VMS_REBOOT { get { @@ -28873,7 +29759,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooted specified VMs ähnelt. + /// Looks up a localized string similar to Rebooted specified VMs. /// public static string PLANACTION_VMS_REBOOTED { get { @@ -28882,7 +29768,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooting VM {0}... ähnelt. + /// Looks up a localized string similar to Rebooting VM {0}.... /// public static string PLANACTION_VMS_REBOOTING { get { @@ -28891,9 +29777,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} + /// Looks up a localized string similar to {0} /// - ///Please reconnect the host and try again ähnelt. + ///Please reconnect the host and try again. /// public static string PLEASE_RECONNECT_HOST { get { @@ -28902,7 +29788,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Running plug-in '{0}' ähnelt. + /// Looks up a localized string similar to Running plug-in '{0}'. /// public static string PLUGIN_CALLING { get { @@ -28911,7 +29797,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copyright ähnelt. + /// Looks up a localized string similar to Copyright. /// public static string PLUGIN_COPYRIGHT { get { @@ -28920,7 +29806,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} plugins enabled ähnelt. + /// Looks up a localized string similar to {0} plug-ins enabled. /// public static string PLUGIN_ENABLED_COUNT { get { @@ -28929,7 +29815,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die 1 plugin enabled ähnelt. + /// Looks up a localized string similar to 1 plug-in enabled. /// public static string PLUGIN_ENABLED_COUNT_ONE { get { @@ -28938,7 +29824,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Features ähnelt. + /// Looks up a localized string similar to Features. /// public static string PLUGIN_FEATURES { get { @@ -28947,7 +29833,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Link ähnelt. + /// Looks up a localized string similar to Link. /// public static string PLUGIN_LINK { get { @@ -28956,7 +29842,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Plug-in '{0}' completed successfully. ähnelt. + /// Looks up a localized string similar to Plug-in '{0}' completed successfully.. /// public static string PLUGIN_SUCCEED { get { @@ -28965,7 +29851,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Call plug-in '{0}' ähnelt. + /// Looks up a localized string similar to Call plug-in '{0}'. /// public static string PLUGIN_TITLE { get { @@ -28974,7 +29860,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Version ähnelt. + /// Looks up a localized string similar to Version. /// public static string PLUGIN_VERSION { get { @@ -28983,7 +29869,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Plugins ähnelt. + /// Looks up a localized string similar to Plug-ins. /// public static string PLUGINS { get { @@ -28992,7 +29878,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adjust settings for plugins to [XenCenter] ähnelt. + /// Looks up a localized string similar to Adjust settings for plug-ins to [XenCenter]. /// public static string PLUGINS_DESC { get { @@ -29001,7 +29887,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Menu item features must only have a single command XML node as a child ähnelt. + /// Looks up a localized string similar to Menu item features must only have a single command XML node as a child. /// public static string PLUGINS_MENU_ITEMS_ONLY_ONE_CHILD_ALLOWED { get { @@ -29010,7 +29896,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unexpected XML node '{0}' found as child of node '{1}' ähnelt. + /// Looks up a localized string similar to Unexpected XML node '{0}' found as child of node '{1}'. /// public static string PLUGINS_UNRECOGNISED_XML_NODE { get { @@ -29019,7 +29905,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Custom ähnelt. + /// Looks up a localized string similar to Custom. /// public static string PM_MODE_CUSTOM { get { @@ -29028,7 +29914,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabled ähnelt. + /// Looks up a localized string similar to Disabled. /// public static string PM_MODE_DISABLED { get { @@ -29037,7 +29923,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Dell DRAC ähnelt. + /// Looks up a localized string similar to Dell DRAC. /// public static string PM_MODE_DRAC { get { @@ -29046,7 +29932,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die iLO ähnelt. + /// Looks up a localized string similar to iLO. /// public static string PM_MODE_ILO { get { @@ -29055,7 +29941,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Wake on LAN ähnelt. + /// Looks up a localized string similar to Wake on LAN. /// public static string PM_MODE_WOL { get { @@ -29064,7 +29950,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Policy Name ähnelt. + /// Looks up a localized string similar to Policy Name. /// public static string POLICY_NAME { get { @@ -29073,7 +29959,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Policy na&me: ähnelt. + /// Looks up a localized string similar to Policy na&me:. /// public static string POLICY_NAME_FIELD_TEXT { get { @@ -29082,7 +29968,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die What do you want to call this policy? ähnelt. + /// Looks up a localized string similar to What do you want to call this policy?. /// public static string POLICY_NAME_TITLE { get { @@ -29091,7 +29977,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Job name:\r\n {0}\r\n\r\nSelected VMs:\r\n {1}\r\n\r\nSnapshot type:\r\n {2}\r\n\r\nSchedule:\r\n {3}\r\n\r\nArchive:\r\n {4} ähnelt. + /// Looks up a localized string similar to Job name:\r\n {0}\r\n\r\nSelected VMs:\r\n {1}\r\n\r\nSnapshot type:\r\n {2}\r\n\r\nSchedule:\r\n {3}\r\n\r\nArchive:\r\n {4}. /// public static string POLICY_SUMMARY { get { @@ -29100,7 +29986,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool ähnelt. + /// Looks up a localized string similar to Pool. /// public static string POOL { get { @@ -29109,7 +29995,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool: ähnelt. + /// Looks up a localized string similar to Pool:. /// public static string POOL_COLON { get { @@ -29118,7 +30004,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' has HA enabled. You must disable HA before making the pool into a standalone server. ähnelt. + /// Looks up a localized string similar to Pool '{0}' has HA enabled. You must disable HA before making the pool into a standalone server.. /// public static string POOL_DELETE_HA_ENABLED { get { @@ -29127,7 +30013,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA is currently being enabled on pool '{0}'. You must disable HA before making the pool into a standalone server. ähnelt. + /// Looks up a localized string similar to HA is currently being enabled on pool '{0}'. You must disable HA before making the pool into a standalone server.. /// public static string POOL_DELETE_HA_ENABLING { get { @@ -29136,7 +30022,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The configuration for this pool is currently being modified ähnelt. + /// Looks up a localized string similar to The configuration for this pool is currently being modified. /// public static string POOL_EDIT_IN_PROGRESS { get { @@ -29145,7 +30031,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} failure tolerated ähnelt. + /// Looks up a localized string similar to {0} failure tolerated. /// public static string POOL_FAILURE_TOLERATE { get { @@ -29154,7 +30040,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} failures tolerated ähnelt. + /// Looks up a localized string similar to {0} failures tolerated. /// public static string POOL_FAILURES_TOLERATE { get { @@ -29163,7 +30049,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Automated updates are not supported for this server. ähnelt. + /// Looks up a localized string similar to Automated updates are not supported for this server.. /// public static string POOL_FORBIDS_AUTOMATED_UPDATES { get { @@ -29172,7 +30058,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Post-update tasks cannot be carried out automatically for all the servers to be updated. ähnelt. + /// Looks up a localized string similar to Post-update tasks cannot be carried out automatically for all the servers to be updated.. /// public static string POOL_FORBIDS_AUTOMATIC_RESTARTS { get { @@ -29181,7 +30067,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool General Properties ähnelt. + /// Looks up a localized string similar to Pool General Properties. /// public static string POOL_GENERAL_TAB_TITLE { get { @@ -29190,7 +30076,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find the pool in [XenCenter]'s cache. ähnelt. + /// Looks up a localized string similar to Could not find the pool in [XenCenter]'s cache.. /// public static string POOL_GONE { get { @@ -29199,7 +30085,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This pool has hosts with different types of license. ähnelt. + /// Looks up a localized string similar to This pool has hosts with different types of license.. /// public static string POOL_HAS_MIXED_LICENSES { get { @@ -29208,7 +30094,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This pool has no shared storage ähnelt. + /// Looks up a localized string similar to This pool has no shared storage. /// public static string POOL_HAS_NO_SHARED_STORAGE { get { @@ -29217,7 +30103,25 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The pool is partially licensed ähnelt. + /// Looks up a localized string similar to {0}: Support for paravirtualized (PV) guests is dropped as of [XenServer] [BRANDING_VERSION_8_1]. Click "Learn more" to see the list of supported guest operating systems. . + /// + public static string POOL_HAS_PV_GUEST_UPDATE_WARNING { + get { + return ResourceManager.GetString("POOL_HAS_PV_GUEST_UPDATE_WARNING", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}: Support for paravirtualized (PV) guests is dropped as of [XenServer] [BRANDING_VERSION_8_1]. Click "Learn more" to see the list of supported guest operating systems. . + /// + public static string POOL_HAS_PV_GUEST_UPGRADE_WARNING { + get { + return ResourceManager.GetString("POOL_HAS_PV_GUEST_UPGRADE_WARNING", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The pool is partially licensed. /// public static string POOL_IS_PARTIALLY_LICENSED { get { @@ -29226,7 +30130,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA is enabled on the pool ähnelt. + /// Looks up a localized string similar to HA is enabled on the pool. /// public static string POOL_JOIN_FORBIDDEN_BY_HA { get { @@ -29235,7 +30139,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool join not possible ähnelt. + /// Looks up a localized string similar to Pool join not possible. /// public static string POOL_JOIN_IMPOSSIBLE { get { @@ -29244,7 +30148,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server must not have any bonds, non management VLANs, SR-IOV networks or cross-server private networks ähnelt. + /// Looks up a localized string similar to This server must not have any bonds, non management VLANs, SR-IOV networks or cross-server private networks. /// public static string POOL_JOIN_NON_COMPATIBLE_MANAGEMENT_INTERFACE { get { @@ -29253,7 +30157,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server must not have any bonds, VLANs or cross-server private networks ähnelt. + /// Looks up a localized string similar to This server must not have any bonds, VLANs or cross-server private networks. /// public static string POOL_JOIN_NOT_PHYSICAL_PIF { get { @@ -29262,7 +30166,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool License ähnelt. + /// Looks up a localized string similar to Pool License. /// public static string POOL_LICENSE { get { @@ -29271,7 +30175,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool master ähnelt. + /// Looks up a localized string similar to Pool master. /// public static string POOL_MASTER { get { @@ -29280,7 +30184,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find the pool master in [XenCenter]'s cache. ähnelt. + /// Looks up a localized string similar to Could not find the pool master in [XenCenter]'s cache.. /// public static string POOL_MASTER_GONE { get { @@ -29289,7 +30193,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool name cannot be empty ähnelt. + /// Looks up a localized string similar to Pool name cannot be empty. /// public static string POOL_NAME_EMPTY { get { @@ -29298,7 +30202,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool Networks ähnelt. + /// Looks up a localized string similar to Pool Networks. /// public static string POOL_NETWORK_TAB_TITLE { get { @@ -29307,7 +30211,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool or host is not connected ähnelt. + /// Looks up a localized string similar to Pool or host is not connected. /// public static string POOL_OR_HOST_IS_NOT_CONNECTED { get { @@ -29316,7 +30220,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a pool or stand alone server to import this VM to. The home server setting will be taken from the template.\n\nIf this value does not correspond to a server within the selected resource pool then it will be ignored for all resourcing decisions. ähnelt. + /// Looks up a localized string similar to Select a pool or stand alone server to import this VM to. The home server setting will be taken from the template.\n\nIf this value does not correspond to a server within the selected resource pool then it will be ignored for all resourcing decisions.. /// public static string POOL_PICKER_BLURB_NO_AFFINITY { get { @@ -29325,7 +30229,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find the pool update in [XenCenter]'s cache. ähnelt. + /// Looks up a localized string similar to Could not find the pool update in [XenCenter]'s cache.. /// public static string POOL_UPDATE_GONE { get { @@ -29334,7 +30238,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool partially upgraded to [XenServer] {0} ähnelt. + /// Looks up a localized string similar to Pool partially upgraded to [XenServer] {0}. /// public static string POOL_VERSIONS_LINK_TEXT { get { @@ -29343,7 +30247,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Partially upgraded ähnelt. + /// Looks up a localized string similar to Partially upgraded. /// public static string POOL_VERSIONS_LINK_TEXT_SHORT { get { @@ -29352,7 +30256,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die pool '{0}' ähnelt. + /// Looks up a localized string similar to pool '{0}'. /// public static string POOL_X { get { @@ -29361,7 +30265,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Added to pool ähnelt. + /// Looks up a localized string similar to Added to pool. /// public static string POOLCREATE_ADDED { get { @@ -29370,7 +30274,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adding to Pool ähnelt. + /// Looks up a localized string similar to Adding to Pool. /// public static string POOLCREATE_ADDING { get { @@ -29379,7 +30283,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating pool ähnelt. + /// Looks up a localized string similar to Creating pool. /// public static string POOLCREATE_CREATING { get { @@ -29388,7 +30292,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Made pool into standalone server ähnelt. + /// Looks up a localized string similar to Made pool into standalone server. /// public static string POOLCREATE_DESTROYED { get { @@ -29397,7 +30301,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Making pool into standalone server ähnelt. + /// Looks up a localized string similar to Making pool into standalone server. /// public static string POOLCREATE_DESTROYING { get { @@ -29406,7 +30310,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot make pool with more than one hosts into standalone server. ähnelt. + /// Looks up a localized string similar to Cannot make pool with more than one hosts into standalone server.. /// public static string POOLCREATE_MULTIHOST { get { @@ -29415,7 +30319,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removed from pool ähnelt. + /// Looks up a localized string similar to Removed from pool. /// public static string POOLCREATE_REMOVED { get { @@ -29424,7 +30328,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing from pool ähnelt. + /// Looks up a localized string similar to Removing from pool. /// public static string POOLCREATE_REMOVING { get { @@ -29433,7 +30337,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pools ähnelt. + /// Looks up a localized string similar to Pools. /// public static string POOLS { get { @@ -29442,7 +30346,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Power On ähnelt. + /// Looks up a localized string similar to Power On. /// public static string POWER_ON { get { @@ -29451,7 +30355,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Power on request to {0} failed. Check the network connectivity. ähnelt. + /// Looks up a localized string similar to Power on request to {0} failed. Check the network connectivity.. /// public static string POWER_ON_REQUEST_FAILED { get { @@ -29460,7 +30364,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Power state ähnelt. + /// Looks up a localized string similar to Power state. /// public static string POWER_STATE { get { @@ -29469,7 +30373,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Power usage (W) ähnelt. + /// Looks up a localized string similar to Power usage (W). /// public static string POWER_USAGE { get { @@ -29478,7 +30382,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Privacy Warning ähnelt. + /// Looks up a localized string similar to Privacy Warning. /// public static string PRIVACY_WARNING { get { @@ -29487,7 +30391,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Probing for LUNs finished ähnelt. + /// Looks up a localized string similar to Probing for LUNs finished. /// public static string PROBED_HBA { get { @@ -29496,7 +30400,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Probing for LUNs... ähnelt. + /// Looks up a localized string similar to Probing for LUNs.... /// public static string PROBING_HBA { get { @@ -29505,7 +30409,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Probing for LUNs on {0} ähnelt. + /// Looks up a localized string similar to Probing for LUNs on {0}. /// public static string PROBING_HBA_TITLE { get { @@ -29514,7 +30418,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' ähnelt. + /// Looks up a localized string similar to Server '{0}'. /// public static string PROBLEM_HOSTPROBLEM_TITLE { get { @@ -29523,10 +30427,10 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The MAC address entered has already been assigned to the VM: + /// Looks up a localized string similar to The MAC address entered has already been assigned to the VM: ///{1} /// - ///Are you sure you want to continue? ähnelt. + ///Are you sure you want to continue?. /// public static string PROBLEM_MAC_ADDRESS_IS_DUPLICATE { get { @@ -29535,7 +30439,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Duplicate MAC address ähnelt. + /// Looks up a localized string similar to Duplicate MAC address. /// public static string PROBLEM_MAC_ADDRESS_IS_DUPLICATE_TITLE { get { @@ -29544,7 +30448,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: The master needs to be rebooted first ähnelt. + /// Looks up a localized string similar to {0}: The master needs to be rebooted first. /// public static string PROBLEM_MASTER_PENDING_RESTART_HOST { get { @@ -29553,7 +30457,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: This update requires the master to be rebooted first ähnelt. + /// Looks up a localized string similar to {0}: This update requires the master to be rebooted first. /// public static string PROBLEM_MASTER_PENDING_RESTART_HOST_THIS_UPDATE { get { @@ -29562,7 +30466,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Toolstack on master needs to be restarted first ähnelt. + /// Looks up a localized string similar to {0}: Toolstack on master needs to be restarted first. /// public static string PROBLEM_MASTER_PENDING_RESTART_TOOLSTACK { get { @@ -29571,7 +30475,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: This update requires the toolstack on master to be restarted first ähnelt. + /// Looks up a localized string similar to {0}: This update requires the toolstack on master to be restarted first. /// public static string PROBLEM_MASTER_PENDING_RESTART_TOOLSTACK_THIS_UPDATE { get { @@ -29580,7 +30484,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' ähnelt. + /// Looks up a localized string similar to Pool '{0}'. /// public static string PROBLEM_POOLPROBLEM_TITLE { get { @@ -29589,9 +30493,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please ensure you have specified a network location that is visible from the server and contains an applicable version of installer files. + /// Looks up a localized string similar to Please ensure you have specified a network location that is visible from the server and contains an applicable version of installer files. /// - ///Click Previous if you need to go back and specify a different network location or select a different set of servers to upgrade. ähnelt. + ///Click Previous if you need to go back and specify a different network location or select a different set of servers to upgrade.. /// public static string PROBLEM_PREPARE_TO_UPGRADE { get { @@ -29600,7 +30504,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SR '{0}' ähnelt. + /// Looks up a localized string similar to SR '{0}'. /// public static string PROBLEM_SRPROBLEM_TITLE { get { @@ -29609,7 +30513,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An error has occurred while attempting to connect to Storage Link Gateway: \n\n{0}\n\nPlease review the settings for this host and reconnect. ähnelt. + /// Looks up a localized string similar to An error has occurred while attempting to connect to Storage Link Gateway: \n\n{0}\n\nPlease review the settings for this host and reconnect.. /// public static string PROBLEM_STORAGELINK_CONNECTION_FAILED { get { @@ -29618,7 +30522,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The use of StorageLink SRs has been deprecated. Please remove StorageLink SRs before upgrading. ähnelt. + /// Looks up a localized string similar to The use of StorageLink SRs has been deprecated. Please remove StorageLink SRs before upgrading.. /// public static string PROBLEM_UNSUPPORTED_STORAGELINK_SR { get { @@ -29627,7 +30531,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vApp {0} ähnelt. + /// Looks up a localized string similar to vApp {0}. /// public static string PROBLEM_VMAPPLIANCEPROBLEM_TITLE { get { @@ -29636,7 +30540,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM '{0}' ähnelt. + /// Looks up a localized string similar to VM '{0}'. /// public static string PROBLEM_VMPROBLEM_TITLE { get { @@ -29645,7 +30549,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] version ähnelt. + /// Looks up a localized string similar to [XenCenter] version. /// public static string PROBLEM_XENCENTER_VERSION_TITLE { get { @@ -29654,7 +30558,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Proceed ähnelt. + /// Looks up a localized string similar to &Proceed. /// public static string PROCEED { get { @@ -29663,8 +30567,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please insert the [XenServer] CD into the physical drive on server '{0}'. - ///Press OK to continue the wizard and return to the server and follow the instructions on screen. ähnelt. + /// Looks up a localized string similar to Please insert the [XenServer] CD into the physical drive on server '{0}'. + ///Press OK to continue the wizard and return to the server and follow the instructions on screen.. /// public static string PROMPT_XS_CD { get { @@ -29673,7 +30577,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die '{0}' Properties ähnelt. + /// Looks up a localized string similar to '{0}' Properties. /// public static string PROPERTIES_DIALOG_TITLE { get { @@ -29682,7 +30586,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} on '{1}' ähnelt. + /// Looks up a localized string similar to {0} on '{1}'. /// public static string PROPERTY_ON_OBJECT { get { @@ -29691,7 +30595,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Protected VMs ähnelt. + /// Looks up a localized string similar to Protected VMs. /// public static string PROTECTED_VMS { get { @@ -29700,7 +30604,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the VMs that you want to protect with this policy ähnelt. + /// Looks up a localized string similar to Select the VMs that you want to protect with this policy. /// public static string PROTECTED_VMS_TITLE { get { @@ -29709,7 +30613,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Provisioning ähnelt. + /// Looks up a localized string similar to Provisioning. /// public static string PROVISIONING { get { @@ -29718,7 +30622,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Provisioning Options ähnelt. + /// Looks up a localized string similar to Provisioning Options. /// public static string PROVISIONING_OPTIONS { get { @@ -29727,7 +30631,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Provisioning Type ähnelt. + /// Looks up a localized string similar to Provisioning Type. /// public static string PROVISIONING_TYPE { get { @@ -29736,7 +30640,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Provisioning VM ähnelt. + /// Looks up a localized string similar to Provisioning VM. /// public static string PROVISIONING_VM { get { @@ -29745,7 +30649,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Proxy servers are not supported. ähnelt. + /// Looks up a localized string similar to Proxy servers are not supported.. /// public static string PROXY_SERVERS_NOT_SUPPORTED { get { @@ -29754,7 +30658,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix VM Tools] not installed ähnelt. + /// Looks up a localized string similar to [Citrix VM Tools] not installed. /// public static string PV_DRIVERS_NOT_INSTALLED { get { @@ -29763,7 +30667,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix VM Tools] out of date (version {0} installed) ähnelt. + /// Looks up a localized string similar to [Citrix VM Tools] out of date (version {0} installed). /// public static string PV_DRIVERS_OUT_OF_DATE { get { @@ -29772,7 +30676,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix VM Tools] out of date ähnelt. + /// Looks up a localized string similar to [Citrix VM Tools] out of date. /// public static string PV_DRIVERS_OUT_OF_DATE_UNKNOWN_VERSION { get { @@ -29781,7 +30685,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die PVS-Accelerator configuration - '{0}' ähnelt. + /// Looks up a localized string similar to Guest compatibility check. + /// + public static string PV_GUESTS_CHECK_DESCRIPTION { + get { + return ResourceManager.GetString("PV_GUESTS_CHECK_DESCRIPTION", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to PVS-Accelerator configuration - '{0}'. /// public static string PVS_CACHE_CONFIG_DIALOG_TITLE { get { @@ -29790,7 +30703,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (Incomplete PVS configuration) ähnelt. + /// Looks up a localized string similar to {0} (Incomplete PVS configuration). /// public static string PVS_CACHE_INCOMPLETE_CONFIGURATION { get { @@ -29799,7 +30712,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory and disk ähnelt. + /// Looks up a localized string similar to Memory and disk. /// public static string PVS_CACHE_MEMORY_AND_DISK { get { @@ -29808,7 +30721,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory only ähnelt. + /// Looks up a localized string similar to Memory only. /// public static string PVS_CACHE_MEMORY_ONLY { get { @@ -29817,7 +30730,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory only (Not enough Control Domain memory) ähnelt. + /// Looks up a localized string similar to Memory only (Not enough Control Domain memory). /// public static string PVS_CACHE_MEMORY_ONLY_DISABLED { get { @@ -29826,7 +30739,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die MemorySR ähnelt. + /// Looks up a localized string similar to MemorySR. /// public static string PVS_CACHE_MEMORY_SR_NAME { get { @@ -29835,7 +30748,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not configured ähnelt. + /// Looks up a localized string similar to Not configured. /// public static string PVS_CACHE_NOT_CONFIGURED { get { @@ -29844,7 +30757,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This PVS cache storage cannot be changed because it is in use. ähnelt. + /// Looks up a localized string similar to This PVS cache storage cannot be changed because it is in use.. /// public static string PVS_CACHE_STORAGE_CANNOT_BE_CHANGED { get { @@ -29853,7 +30766,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (Incomplete Cache Storage configuration) ähnelt. + /// Looks up a localized string similar to {0} (Incomplete Cache Storage configuration). /// public static string PVS_CACHE_STORAGE_NOT_CONFIGURED { get { @@ -29862,7 +30775,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This cache configuration cannot be removed because there are VMs that are streamed from this site. ähnelt. + /// Looks up a localized string similar to This cache configuration cannot be removed because there are VMs that are streamed from this site.. /// public static string PVS_SITE_CANNOT_BE_REMOVED { get { @@ -29871,7 +30784,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die PVS Servers on site {0}' ähnelt. + /// Looks up a localized string similar to PVS Servers on site {0}'. /// public static string PVS_SITE_DIALOG_TITLE { get { @@ -29880,7 +30793,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die PVS Site ähnelt. + /// Looks up a localized string similar to PVS Site. /// public static string PVS_SITE_NAME { get { @@ -29889,7 +30802,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die PVS-Accelerator ähnelt. + /// Looks up a localized string similar to PVS-Accelerator. /// public static string PVS_TAB_TITLE { get { @@ -29898,7 +30811,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die QoS limit must be between 1 and 2147483647 (or left empty). ähnelt. + /// Looks up a localized string similar to QoS limit must be between 1 and 2147483647 (or left empty).. /// public static string QOS_LIMIT_INVALID { get { @@ -29907,7 +30820,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}/{1} ähnelt. + /// Looks up a localized string similar to {0}/{1}. /// public static string QUERY_DATA_AVG_MAX { get { @@ -29916,7 +30829,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}% of {1} ähnelt. + /// Looks up a localized string similar to {0}% of {1}. /// public static string QUERY_MEMORY_PERCENT { get { @@ -29925,7 +30838,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} of {1} ähnelt. + /// Looks up a localized string similar to {0} of {1}. /// public static string QUERY_MEMORY_USAGE { get { @@ -29934,7 +30847,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}% of 1 CPU ähnelt. + /// Looks up a localized string similar to {0}% of 1 CPU. /// public static string QUERY_PERCENT_OF_CPU { get { @@ -29943,7 +30856,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}% of {1} CPUs ähnelt. + /// Looks up a localized string similar to {0}% of {1} CPUs. /// public static string QUERY_PERCENT_OF_CPUS { get { @@ -29952,9 +30865,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are about to log out {0} users. + /// Looks up a localized string similar to You are about to log out {0} users. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string QUESTION_LOGOUT_AD_USER_MANY { get { @@ -29963,9 +30876,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are about to log out the user '{0}'. + /// Looks up a localized string similar to You are about to log out the user '{0}'. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string QUESTION_LOGOUT_AD_USER_ONE { get { @@ -29974,7 +30887,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ? ähnelt. + /// Looks up a localized string similar to ?. /// public static string QUESTION_MARK { get { @@ -29983,9 +30896,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are about to remove {0} users. + /// Looks up a localized string similar to You are about to remove {0} users. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string QUESTION_REMOVE_AD_USER_MANY { get { @@ -29994,9 +30907,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are about to remove the user '{0}'. + /// Looks up a localized string similar to You are about to remove the user '{0}'. /// - ///Do you want to continue? ähnelt. + ///Do you want to continue?. /// public static string QUESTION_REMOVE_AD_USER_ONE { get { @@ -30005,7 +30918,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Quiesced snapshots ähnelt. + /// Looks up a localized string similar to Quiesced snapshots. /// public static string QUIESCED_SNAPSHOTS { get { @@ -30014,7 +30927,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die RAID type ähnelt. + /// Looks up a localized string similar to RAID type. /// public static string RAID_TYPE { get { @@ -30023,7 +30936,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die RAID Types ähnelt. + /// Looks up a localized string similar to RAID Types. /// public static string RAID_TYPES { get { @@ -30032,11 +30945,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Your current role is '{0}'. + /// Looks up a localized string similar to Your current role is '{0}'. /// ///To access this console switch to an account with one of the following roles: /// - ///{1} ähnelt. + ///{1}. /// public static string RBAC_CONSOLE_WARNING_MANY { get { @@ -30045,11 +30958,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Your current role is '{0}'. + /// Looks up a localized string similar to Your current role is '{0}'. /// ///To access this console switch to an account with the following role: /// - ///{1} ähnelt. + ///{1}. /// public static string RBAC_CONSOLE_WARNING_ONE { get { @@ -30058,7 +30971,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Current access levels do not allow migration of VMs across pools. Log in as a different user with sufficient privileges on both source and target hosts and try again. ähnelt. + /// Looks up a localized string similar to Current access levels do not allow migration of VMs across pools. Log in as a different user with sufficient privileges on both source and target hosts and try again.. /// public static string RBAC_CROSS_POOL_MIGRATE_VM_BLOCKED { get { @@ -30067,7 +30980,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die User {0} does not have sufficient permissions to run a Disaster Recovery wizard. Login as a different user with sufficient privileges and try again. ähnelt. + /// Looks up a localized string similar to User {0} does not have sufficient permissions to run a Disaster Recovery wizard. Login as a different user with sufficient privileges and try again.. /// public static string RBAC_DR_WIZARD_MESSAGE { get { @@ -30076,11 +30989,11 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Your current role is '{1}'. + /// Looks up a localized string similar to Your current role is '{1}'. /// ///To configure HA settings, switch to an account with one of the following roles: /// - ///{0} ähnelt. + ///{0}. /// public static string RBAC_HA_TAB_WARNING { get { @@ -30089,7 +31002,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot perform this action. ähnelt. + /// Looks up a localized string similar to A {0} user cannot perform this action.. /// public static string RBAC_HTTP_FAILURE { get { @@ -30098,7 +31011,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Check complete, you have full access to the features in this wizard. ähnelt. + /// Looks up a localized string similar to Check complete, you have full access to the features in this wizard.. /// public static string RBAC_NO_WIZARD_LIMITS { get { @@ -30107,9 +31020,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die User {0} does not have sufficient permissions to apply software updates to {1}. + /// Looks up a localized string similar to User {0} does not have sufficient permissions to apply software updates to {1}. /// - ///You must reconnect to {1} using an account with Pool Operator permissions before you can apply software updates to it. ähnelt. + ///You must reconnect to {1} using an account with Pool Operator permissions before you can apply software updates to it.. /// public static string RBAC_UPDATES_WIZARD { get { @@ -30118,9 +31031,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die User {0} does not have sufficient permissions to perform a rolling pool upgrade on {1}. + /// Looks up a localized string similar to User {0} does not have sufficient permissions to perform a rolling pool upgrade on {1}. /// - ///You must reconnect to {1} using an account with Pool Administrator permissions before you can upgrade it using the Rolling Pool Upgrade wizard. ähnelt. + ///You must reconnect to {1} using an account with Pool Administrator permissions before you can upgrade it using the Rolling Pool Upgrade wizard.. /// public static string RBAC_UPGRADE_WIZARD_MESSAGE { get { @@ -30129,7 +31042,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot export appliances. Login as a different user with sufficient privileges and try again. ähnelt. + /// Looks up a localized string similar to A {0} user cannot export appliances. Login as a different user with sufficient privileges and try again.. /// public static string RBAC_WARNING_EXPORT_WIZARD_APPLIANCE { get { @@ -30138,7 +31051,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot export VMs. Login as a different user with sufficient privileges and try again. ähnelt. + /// Looks up a localized string similar to A {0} user cannot export VMs. Login as a different user with sufficient privileges and try again.. /// public static string RBAC_WARNING_EXPORT_WIZARD_XVA { get { @@ -30147,7 +31060,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot alter the Home Server setting. The value will be taken from the template, and if it relates to a server outside the resource pool then it will be ignored. ähnelt. + /// Looks up a localized string similar to A {0} user cannot alter the Home Server setting. The value will be taken from the template, and if it relates to a server outside the resource pool then it will be ignored.. /// public static string RBAC_WARNING_IMPORT_WIZARD_AFFINITY { get { @@ -30156,7 +31069,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot import appliances. Login as a different user with sufficient privileges and try again. ähnelt. + /// Looks up a localized string similar to A {0} user cannot import appliances. Login as a different user with sufficient privileges and try again.. /// public static string RBAC_WARNING_IMPORT_WIZARD_APPLIANCE { get { @@ -30165,7 +31078,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot import virtual disk images. Login as a different user with sufficient privileges and try again. ähnelt. + /// Looks up a localized string similar to A {0} user cannot import virtual disk images. Login as a different user with sufficient privileges and try again.. /// public static string RBAC_WARNING_IMPORT_WIZARD_IMAGE { get { @@ -30174,7 +31087,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot import VMs. Log in as a different user with sufficient privileges and try again. ähnelt. + /// Looks up a localized string similar to A {0} user cannot import VMs. Log in as a different user with sufficient privileges and try again.. /// public static string RBAC_WARNING_IMPORT_WIZARD_XVA { get { @@ -30183,7 +31096,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Before you can proceed through this wizard, role-based security checks are made to ensure that you have sufficient privileges to attach storage repositories and use all the features in this wizard. ähnelt. + /// Looks up a localized string similar to Before you can proceed through this wizard, role-based security checks are made to ensure that you have sufficient privileges to attach storage repositories and use all the features in this wizard.. /// public static string RBAC_WARNING_PAGE_DESCRIPTION_SR_ATTACH { get { @@ -30192,7 +31105,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Before you can proceed through this wizard, role-based security checks are made to ensure that you have sufficient privileges to create new storage repositories and use all the features in this wizard. ähnelt. + /// Looks up a localized string similar to Before you can proceed through this wizard, role-based security checks are made to ensure that you have sufficient privileges to create new storage repositories and use all the features in this wizard.. /// public static string RBAC_WARNING_PAGE_DESCRIPTION_SR_CREATE { get { @@ -30201,7 +31114,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checking permissions for {0} ({1}) in '{2}' ... ähnelt. + /// Looks up a localized string similar to Checking permissions for {0} ({1}) in '{2}' .... /// public static string RBAC_WARNING_PAGE_HEADER_ROW_DESC { get { @@ -30210,7 +31123,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Permission Checks ähnelt. + /// Looks up a localized string similar to Permission Checks. /// public static string RBAC_WARNING_PAGE_TEXT_TITLE { get { @@ -30219,7 +31132,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot attach SRs. Log in as a different user with sufficient privileges and try again. ähnelt. + /// Looks up a localized string similar to A {0} user cannot attach SRs. Log in as a different user with sufficient privileges and try again.. /// public static string RBAC_WARNING_SR_WIZARD_ATTACH { get { @@ -30228,7 +31141,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot create new SRs. Log in as a different user with sufficient privileges and try again. ähnelt. + /// Looks up a localized string similar to A {0} user cannot create new SRs. Log in as a different user with sufficient privileges and try again.. /// public static string RBAC_WARNING_SR_WIZARD_CREATE { get { @@ -30237,7 +31150,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot create vApps. Log in as a different user with sufficient privileges and try again. ähnelt. + /// Looks up a localized string similar to A {0} user cannot create vApps. Log in as a different user with sufficient privileges and try again.. /// public static string RBAC_WARNING_VM_APPLIANCE { get { @@ -30246,7 +31159,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot alter the Home Server setting. Your choice of storage may be limited by the Home Server defined in the Template you select ähnelt. + /// Looks up a localized string similar to A {0} user cannot alter the Home Server setting. Your choice of storage may be limited by the Home Server defined in the Template you select. /// public static string RBAC_WARNING_VM_WIZARD_AFFINITY { get { @@ -30255,7 +31168,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot create VMs. Log in as a different user with sufficient privileges and try again. ähnelt. + /// Looks up a localized string similar to A {0} user cannot create VMs. Log in as a different user with sufficient privileges and try again.. /// public static string RBAC_WARNING_VM_WIZARD_BLOCK { get { @@ -30264,7 +31177,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot assign a virtual GPU and will be restricted to the settings on the template. ähnelt. + /// Looks up a localized string similar to A {0} user cannot assign a virtual GPU and will be restricted to the settings on the template.. /// public static string RBAC_WARNING_VM_WIZARD_GPU { get { @@ -30273,7 +31186,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot alter memory values and will be restricted to the settings on the template. ähnelt. + /// Looks up a localized string similar to A {0} user cannot alter memory values and will be restricted to the settings on the template.. /// public static string RBAC_WARNING_VM_WIZARD_MEM { get { @@ -30282,7 +31195,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot create a snapshot schedule. Log in as a different user with sufficient privileges and try again. ähnelt. + /// Looks up a localized string similar to A {0} user cannot create a snapshot schedule. Log in as a different user with sufficient privileges and try again.. /// public static string RBAC_WARNING_VMSS { get { @@ -30291,7 +31204,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Read Only ähnelt. + /// Looks up a localized string similar to Read Only. /// public static string READ_ONLY { get { @@ -30300,8 +31213,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You cannot perform this action because you only have Read Only access on {0}. - ///Disconnect from these servers, or reconnect as a more privileged user. ähnelt. + /// Looks up a localized string similar to You cannot perform this action because you only have Read Only access on {0}. + ///Disconnect from these servers, or reconnect as a more privileged user.. /// public static string READ_ONLY_ON_PLURAL { get { @@ -30310,8 +31223,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You cannot perform this action because you only have Read Only access on {0}. - ///Disconnect from this server, or reconnect as a more privileged user. ähnelt. + /// Looks up a localized string similar to You cannot perform this action because you only have Read Only access on {0}. + ///Disconnect from this server, or reconnect as a more privileged user.. /// public static string READ_ONLY_ON_SINGULAR { get { @@ -30320,7 +31233,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Read / Write ähnelt. + /// Looks up a localized string similar to Read / Write. /// public static string READ_WRITE { get { @@ -30329,7 +31242,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die R&eattach ähnelt. + /// Looks up a localized string similar to R&eattach. /// public static string REATTACH_SR { get { @@ -30338,7 +31251,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Reboot Now ähnelt. + /// Looks up a localized string similar to &Reboot Now. /// public static string REBOOT { get { @@ -30347,7 +31260,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Reboot again ähnelt. + /// Looks up a localized string similar to &Reboot again. /// public static string REBOOT_AGAIN_BUTTON_LABEL { get { @@ -30356,7 +31269,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooted with the same version ähnelt. + /// Looks up a localized string similar to Rebooted with the same version. /// public static string REBOOT_WITH_SAME_VERSION { get { @@ -30365,9 +31278,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are currently logged in to '{0}' as '{1}'. + /// Looks up a localized string similar to You are currently logged in to '{0}' as '{1}'. /// - ///To log out of this server and log in again using a different user account, enter the account credentials below and click OK. ähnelt. + ///To log out of this server and log in again using a different user account, enter the account credentials below and click OK.. /// public static string RECONNECT_AS_BLURB { get { @@ -30376,7 +31289,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Region: ähnelt. + /// Looks up a localized string similar to &Region:. /// public static string REGION_LABLE { get { @@ -30385,7 +31298,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Yes ({0} VFs remaining) ähnelt. + /// Looks up a localized string similar to Yes ({0} VFs remaining). /// public static string REMAINING_VFS { get { @@ -30394,7 +31307,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remote Storage Repositories ähnelt. + /// Looks up a localized string similar to Remote Storage Repositories. /// public static string REMOTE_SRS { get { @@ -30403,7 +31316,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove ähnelt. + /// Looks up a localized string similar to Remove. /// public static string REMOVE { get { @@ -30412,7 +31325,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove Crash Dump Files ähnelt. + /// Looks up a localized string similar to Remove Crash Dump Files. /// public static string REMOVE_CRASHDUMP_FILES { get { @@ -30421,7 +31334,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Would you like to remove crash dump files on the selected servers? ähnelt. + /// Looks up a localized string similar to Would you like to remove crash dump files on the selected servers?. /// public static string REMOVE_CRASHDUMP_QUESTION { get { @@ -30430,10 +31343,10 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will permanently remove all crash dump files from {0}. It is recommended you compile these files as part of a Server Status Report before you remove them. + /// Looks up a localized string similar to This will permanently remove all crash dump files from {0}. It is recommended you compile these files as part of a Server Status Report before you remove them. /// ///Click Server Status Report to open the Compile Server Status Report Wizard or click Remove Files to remove the crash dump files without compiling. - /// ähnelt. + ///. /// public static string REMOVE_CRASHDUMP_WARNING { get { @@ -30442,7 +31355,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove from &folder ähnelt. + /// Looks up a localized string similar to Remove from &folder. /// public static string REMOVE_FROM_FOLDER { get { @@ -30451,7 +31364,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove Grouping ähnelt. + /// Looks up a localized string similar to Remove Grouping. /// public static string REMOVE_GROUPING { get { @@ -30460,7 +31373,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove Update ähnelt. + /// Looks up a localized string similar to Remove Update. /// public static string REMOVE_PATCH { get { @@ -30469,7 +31382,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Remove Server... ähnelt. + /// Looks up a localized string similar to &Remove Server.... /// public static string REMOVE_SERVER { get { @@ -30478,7 +31391,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove Server from &Pool ähnelt. + /// Looks up a localized string similar to Remove From &Pool. /// public static string REMOVE_SERVER_FROM_POOL_CONTEXT_MENU_ITEM_TEXT { get { @@ -30487,7 +31400,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Remove Servers... ähnelt. + /// Looks up a localized string similar to Re&move Server. + /// + public static string REMOVE_SERVER_MENU_ITEM { + get { + return ResourceManager.GetString("REMOVE_SERVER_MENU_ITEM", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to &Remove Servers.... /// public static string REMOVE_SERVERS { get { @@ -30496,7 +31418,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove Snapshot ähnelt. + /// Looks up a localized string similar to Remove Snapshot. /// public static string REMOVE_SNAPSHOT { get { @@ -30505,7 +31427,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to delete {0}? This operation cannot be undone. ähnelt. + /// Looks up a localized string similar to Are you sure you want to delete {0}? This operation cannot be undone.. /// public static string REMOVE_SNAPSHOT_TEXT { get { @@ -30514,7 +31436,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to delete the selected snapshots? This operation cannot be undone. ähnelt. + /// Looks up a localized string similar to Are you sure you want to delete the selected snapshots? This operation cannot be undone.. /// public static string REMOVE_SNAPSHOTS_TEXT { get { @@ -30523,7 +31445,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die R&emove Storage System ähnelt. + /// Looks up a localized string similar to R&emove Storage System. /// public static string REMOVE_STORAGE_SYSTEM { get { @@ -30532,7 +31454,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die R&emove Storage Systems ähnelt. + /// Looks up a localized string similar to R&emove Storage Systems. /// public static string REMOVE_STORAGE_SYSTEMS { get { @@ -30541,7 +31463,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removed StorageLink Volume '{0}' from '{1}' ähnelt. + /// Looks up a localized string similar to Removed StorageLink Volume '{0}' from '{1}'. /// public static string REMOVE_STORAGELINK_VOLUME_ACTION_FINSH { get { @@ -30550,7 +31472,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing StorageLink Volume '{0}' from '{1}' ähnelt. + /// Looks up a localized string similar to Removing StorageLink Volume '{0}' from '{1}'. /// public static string REMOVE_STORAGELINK_VOLUME_ACTION_START { get { @@ -30559,7 +31481,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove StorageLink Volume '{0}' from '{1}' ähnelt. + /// Looks up a localized string similar to Remove StorageLink Volume '{0}' from '{1}'. /// public static string REMOVE_STORAGELINK_VOLUME_ACTION_TITLE { get { @@ -30568,7 +31490,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to remove '{0}'? ähnelt. + /// Looks up a localized string similar to Are you sure you want to remove '{0}'?. /// public static string REMOVE_STORAGELINK_VOLUME_MESSAGEBOX_TEXT { get { @@ -30577,7 +31499,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove StorageLink Volume ähnelt. + /// Looks up a localized string similar to Remove StorageLink Volume. /// public static string REMOVE_STORAGELINK_VOLUME_MESSAGEBOX_TITLE { get { @@ -30586,7 +31508,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove Virtual Disk ähnelt. + /// Looks up a localized string similar to Remove Virtual Disk. /// public static string REMOVE_VIRTUAL_DISK { get { @@ -30595,7 +31517,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove VM '{0}' from vApp '{1}' ähnelt. + /// Looks up a localized string similar to Remove VM '{0}' from vApp '{1}'. /// public static string REMOVE_VM_FROM_APPLIANCE { get { @@ -30604,7 +31526,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove VM '{0}' from snapshot schedule '{1}' ähnelt. + /// Looks up a localized string similar to Remove VM '{0}' from snapshot schedule '{1}'. /// public static string REMOVE_VM_FROM_VMSS { get { @@ -30613,7 +31535,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove VMs from vApp '{0}' ähnelt. + /// Looks up a localized string similar to Remove VMs from vApp '{0}'. /// public static string REMOVE_VMS_FROM_APPLIANCE { get { @@ -30622,7 +31544,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Remove VMs from snapshot schedule '{1}' ähnelt. + /// Looks up a localized string similar to Remove VMs from snapshot schedule '{1}'. /// public static string REMOVE_VMS_FROM_VMSS { get { @@ -30631,7 +31553,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removed from folder ähnelt. + /// Looks up a localized string similar to Removed from folder. /// public static string REMOVED_FROM_FOLDER { get { @@ -30640,7 +31562,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removed update '{0}' ähnelt. + /// Looks up a localized string similar to Removed update '{0}'. /// public static string REMOVED_UPDATE { get { @@ -30649,7 +31571,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removed from vApp ähnelt. + /// Looks up a localized string similar to Removed from vApp . /// public static string REMOVED_VMS_FROM_APPLIANCE { get { @@ -30658,7 +31580,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removed from snapshot schedule ähnelt. + /// Looks up a localized string similar to Removed from snapshot schedule. /// public static string REMOVED_VMS_FROM_VMSS { get { @@ -30667,7 +31589,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing from folder ähnelt. + /// Looks up a localized string similar to Removing from folder. /// public static string REMOVING_FROM_FOLDER { get { @@ -30676,7 +31598,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing server '{0}' from pool '{1}' ähnelt. + /// Looks up a localized string similar to Removing server '{0}' from pool '{1}'. /// public static string REMOVING_SERVER_FROM_POOL { get { @@ -30685,7 +31607,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing servers from pool ähnelt. + /// Looks up a localized string similar to Removing servers from pool. /// public static string REMOVING_SERVERS_FROM_POOL { get { @@ -30694,7 +31616,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing Update '{0}'... ähnelt. + /// Looks up a localized string similar to Removing Update '{0}'.... /// public static string REMOVING_UPDATE { get { @@ -30703,7 +31625,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing from vApp ähnelt. + /// Looks up a localized string similar to Removing from vApp. /// public static string REMOVING_VMS_FROM_APPLIANCE { get { @@ -30712,7 +31634,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing from snapshot schedule ähnelt. + /// Looks up a localized string similar to Removing from snapshot schedule. /// public static string REMOVING_VMS_FROM_VMSS { get { @@ -30721,7 +31643,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Rename Folder... ähnelt. + /// Looks up a localized string similar to &Rename Folder.... /// public static string RENAME_FOLDER { get { @@ -30730,7 +31652,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rename Folder ähnelt. + /// Looks up a localized string similar to Rename Folder. /// public static string RENAME_FOLDER_TITLE { get { @@ -30739,7 +31661,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rename tag '{0}' ähnelt. + /// Looks up a localized string similar to Rename tag '{0}'. /// public static string RENAME_TAG { get { @@ -30748,7 +31670,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Renamed ähnelt. + /// Looks up a localized string similar to Renamed. /// public static string RENAMED { get { @@ -30757,7 +31679,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Private Network ähnelt. + /// Looks up a localized string similar to Private Network. /// public static string RENAMED_BOND { get { @@ -30766,7 +31688,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Renamed tag '{0}' ähnelt. + /// Looks up a localized string similar to Renamed tag '{0}'. /// public static string RENAMED_TAG { get { @@ -30775,7 +31697,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Renaming... ähnelt. + /// Looks up a localized string similar to Renaming.... /// public static string RENAMING { get { @@ -30784,7 +31706,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Renaming folder '{0}' to '{1}'... ähnelt. + /// Looks up a localized string similar to Renaming folder '{0}' to '{1}'.... /// public static string RENAMING_FOLDER { get { @@ -30793,7 +31715,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Renaming tag '{0}' ähnelt. + /// Looks up a localized string similar to Renaming tag '{0}'. /// public static string RENAMING_TAG { get { @@ -30802,7 +31724,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Repair ähnelt. + /// Looks up a localized string similar to Repair. /// public static string REPAIR_SR { get { @@ -30811,7 +31733,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Connection Missing ähnelt. + /// Looks up a localized string similar to Connection Missing. /// public static string REPAIR_SR_DIALOG_CONNECTION_MISSING { get { @@ -30820,7 +31742,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Repair Storage Repositories ähnelt. + /// Looks up a localized string similar to Repair Storage Repositories. /// public static string REPAIR_SR_DIALOG_TITLE_MULTIPLE { get { @@ -30829,7 +31751,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Repair Storage Repository - {0} ähnelt. + /// Looks up a localized string similar to Repair Storage Repository - {0}. /// public static string REPAIR_SR_DIALOG_TITLE_SINGLE { get { @@ -30838,7 +31760,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unplugged ähnelt. + /// Looks up a localized string similar to Unplugged. /// public static string REPAIR_SR_DIALOG_UNPLUGGED { get { @@ -30847,7 +31769,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Multipaths are not fully functional ähnelt. + /// Looks up a localized string similar to Multipaths are not fully functional. /// public static string REPAIR_SR_WARNING_MULTIPATHS_DOWN { get { @@ -30856,7 +31778,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server ähnelt. + /// Looks up a localized string similar to Server. /// public static string REPAIRSR_SERVER { get { @@ -30865,7 +31787,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Repeated key ähnelt. + /// Looks up a localized string similar to Repeated key. /// public static string REPEATED_KEY { get { @@ -30874,7 +31796,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: The required hotfix is not installed ähnelt. + /// Looks up a localized string similar to {0}: The required hotfix is not installed. /// public static string REQUIRED_HOTFIX_ISNOT_INSTALLED { get { @@ -30883,7 +31805,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Required Updates ähnelt. + /// Looks up a localized string similar to Required Updates. /// public static string REQUIRED_UPDATES { get { @@ -30892,7 +31814,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resolved as {0} ähnelt. + /// Looks up a localized string similar to Resolved as {0}. /// public static string RESOLVED_AS { get { @@ -30901,7 +31823,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restore dismissed updates ähnelt. + /// Looks up a localized string similar to Restore dismissed updates. /// public static string RESTORE_DISMISSED_UPDATES { get { @@ -30910,7 +31832,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Backup file loaded to server '{0}'. Refer to the "[XenServer product] Administrator's Guide" for instructions on how to complete the restore procedure. ähnelt. + /// Looks up a localized string similar to Backup file loaded to server '{0}'. Refer to the "[XenServer product] Administrator's Guide" for instructions on how to complete the restore procedure.. /// public static string RESTORE_FROM_BACKUP_FINALIZE { get { @@ -30919,7 +31841,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restore From Backup... ähnelt. + /// Looks up a localized string similar to Restore From Backup.... /// public static string RESTORE_HOST { get { @@ -30928,7 +31850,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restoring... ähnelt. + /// Looks up a localized string similar to Restoring.... /// public static string RESTORING { get { @@ -30937,7 +31859,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restoring server '{0}' ähnelt. + /// Looks up a localized string similar to Restoring server '{0}'. /// public static string RESTORING_HOST { get { @@ -30946,7 +31868,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restrictions: ähnelt. + /// Looks up a localized string similar to Restrictions:. /// public static string RESTRICTIONS { get { @@ -30955,7 +31877,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resume On ähnelt. + /// Looks up a localized string similar to Resume On. /// public static string RESUME_ON { get { @@ -30964,7 +31886,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resume suspended VMs ähnelt. + /// Looks up a localized string similar to Resume suspended VMs. /// public static string RESUME_SUSPENDED_VMS { get { @@ -30973,7 +31895,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resumed suspended VMs ähnelt. + /// Looks up a localized string similar to Resumed suspended VMs. /// public static string RESUMED_SUSPENDED_VMS { get { @@ -30982,7 +31904,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resuming suspended VMs ähnelt. + /// Looks up a localized string similar to Resuming suspended VMs. /// public static string RESUMING_SUSPENDED_VMS { get { @@ -30991,7 +31913,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Retail ähnelt. + /// Looks up a localized string similar to Retail. /// public static string RETAIL { get { @@ -31000,7 +31922,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Retrieving the WLB configuration. ähnelt. + /// Looks up a localized string similar to Retrieving the WLB configuration.. /// public static string RETRIEVING_WLB_CONFIGURATION { get { @@ -31009,7 +31931,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Retrieving the WLB configuration for pool '{0}.' ähnelt. + /// Looks up a localized string similar to Retrieving the WLB configuration for pool '{0}.'. /// public static string RETRIEVING_WLB_CONFIGURATION_FOR { get { @@ -31018,7 +31940,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Retrieving WLB default configuration ähnelt. + /// Looks up a localized string similar to Retrieving WLB default configuration. /// public static string RETRIEVING_WLB_DEFAULT_CONFIGURATION { get { @@ -31027,7 +31949,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Retry ähnelt. + /// Looks up a localized string similar to &Retry. /// public static string RETRY_BUTTON_LABEL { get { @@ -31036,7 +31958,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Revert pool state ähnelt. + /// Looks up a localized string similar to Revert pool state. /// public static string REVERT_POOL_STATE { get { @@ -31045,7 +31967,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Revert precheck actions ähnelt. + /// Looks up a localized string similar to Revert pre-check actions. /// public static string REVERT_PRECHECK_ACTIONS { get { @@ -31054,7 +31976,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Revert all changes done by this wizard ähnelt. + /// Looks up a localized string similar to Revert all changes done by this wizard. /// public static string REVERT_WIZARD_CHANGES { get { @@ -31063,7 +31985,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reverted all changes done by this wizard ähnelt. + /// Looks up a localized string similar to Reverted all changes done by this wizard. /// public static string REVERTED_WIZARD_CHANGES { get { @@ -31072,7 +31994,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reverting the power state of {0} ähnelt. + /// Looks up a localized string similar to Reverting the power state of {0}. /// public static string REVERTING_POWER_STATE { get { @@ -31081,7 +32003,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reverting resolved prechecks... ähnelt. + /// Looks up a localized string similar to Reverting resolved pre-checks.... /// public static string REVERTING_RESOLVED_PRECHECKS { get { @@ -31090,7 +32012,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reverting resolved prechecks in {0}... ähnelt. + /// Looks up a localized string similar to Reverting resolved pre-checks in {0}.... /// public static string REVERTING_RESOLVED_PRECHECKS_POOL { get { @@ -31099,7 +32021,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reverting all changes done by this wizard ähnelt. + /// Looks up a localized string similar to Reverting all changes done by this wizard. /// public static string REVERTING_WIZARD_CHANGES { get { @@ -31108,7 +32030,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Right Ctrl ähnelt. + /// Looks up a localized string similar to Right Ctrl. /// public static string RIGHT_CTRL { get { @@ -31117,7 +32039,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Role ähnelt. + /// Looks up a localized string similar to Role. /// public static string ROLE { get { @@ -31126,7 +32048,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} on '{1}' ähnelt. + /// Looks up a localized string similar to {0} on '{1}'. /// public static string ROLE_ON_CONNECTION { get { @@ -31135,7 +32057,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rolling Pool Upgrade ähnelt. + /// Looks up a localized string similar to Rolling Pool Upgrade. /// public static string ROLLING_POOL_UPGRADE { get { @@ -31144,7 +32066,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rolling Pool &Upgrade... ähnelt. + /// Looks up a localized string similar to Rolling Pool &Upgrade.... /// public static string ROLLING_POOL_UPGRADE_ELLIPSIS { get { @@ -31153,7 +32075,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Apply all released &updates on the new version ähnelt. + /// Looks up a localized string similar to Apply all released &updates on the new version. /// public static string ROLLING_UPGRADE_APPLY_UPDATES { get { @@ -31162,7 +32084,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Apply all released &updates on the new version (only on pools licensed for automated updates) ähnelt. + /// Looks up a localized string similar to Apply all released &updates on the new version (only on pools licensed for automated updates). /// public static string ROLLING_UPGRADE_APPLY_UPDATES_MIXED { get { @@ -31171,7 +32093,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die S&top ähnelt. + /// Looks up a localized string similar to S&top. /// public static string ROLLING_UPGRADE_BUTTON_LABEL_STOP { get { @@ -31180,7 +32102,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Test ähnelt. + /// Looks up a localized string similar to &Test. /// public static string ROLLING_UPGRADE_BUTTON_LABEL_TEST { get { @@ -31189,7 +32111,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This upgrade can be resumed by launching the Rolling Pool Upgrade wizard again. ähnelt. + /// Looks up a localized string similar to This upgrade can be resumed by launching the Rolling Pool Upgrade wizard again.. /// public static string ROLLING_UPGRADE_CAN_RESUME_UPGRADE { get { @@ -31198,7 +32120,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The rolling pool upgrade process was canceled. ähnelt. + /// Looks up a localized string similar to The rolling pool upgrade process was canceled.. /// public static string ROLLING_UPGRADE_CANCELLATION { get { @@ -31207,9 +32129,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to leave this page? + /// Looks up a localized string similar to Are you sure you want to leave this page? /// - ///This will cancel the rolling pool upgrade process and may leave your system in an unstable state. ähnelt. + ///This will cancel the rolling pool upgrade process and may leave your system in an unstable state.. /// public static string ROLLING_UPGRADE_CANCELLATION_RECONSIDER { get { @@ -31218,7 +32140,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No longer connected to {0}. Please review your selection and try again. ähnelt. + /// Looks up a localized string similar to No longer connected to {0}. Please review your selection and try again.. /// public static string ROLLING_UPGRADE_DISCONNECTED_SERVER { get { @@ -31227,7 +32149,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die One or more of the rolling pool upgrade processes were not completed successfully. The upgrade process has been paused. ähnelt. + /// Looks up a localized string similar to One or more of the rolling pool upgrade processes were not completed successfully. The upgrade process has been paused.. /// public static string ROLLING_UPGRADE_ERROR_MANY { get { @@ -31236,7 +32158,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The rolling pool upgrade process was not completed successfully. The upgrade process has been paused. ähnelt. + /// Looks up a localized string similar to The rolling pool upgrade process was not completed successfully. The upgrade process has been paused.. /// public static string ROLLING_UPGRADE_ERROR_ONE { get { @@ -31245,7 +32167,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following errors occurred while rolling pool upgrade was in progress: ähnelt. + /// Looks up a localized string similar to The following errors occurred while rolling pool upgrade was in progress:. /// public static string ROLLING_UPGRADE_ERROR_POOL_MANY { get { @@ -31254,7 +32176,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The following error occurred while rolling pool upgrade was in progress: ähnelt. + /// Looks up a localized string similar to The following error occurred while rolling pool upgrade was in progress:. /// public static string ROLLING_UPGRADE_ERROR_POOL_ONE { get { @@ -31263,7 +32185,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade Options ähnelt. + /// Looks up a localized string similar to Upgrade Options. /// public static string ROLLING_UPGRADE_EXTRAS_PAGE_TEXT { get { @@ -31272,7 +32194,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Optionally, apply updates or supplemental packs ähnelt. + /// Looks up a localized string similar to Optionally, apply updates or supplemental packs. /// public static string ROLLING_UPGRADE_EXTRAS_PAGE_TITLE { get { @@ -31281,7 +32203,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose the upgrade mode: Automatic or Manual ähnelt. + /// Looks up a localized string similar to Choose the upgrade mode: Automatic or Manual. /// public static string ROLLING_UPGRADE_MODE_PAGE { get { @@ -31290,9 +32212,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade failed. The server '{0}' has rebooted with the same version. + /// Looks up a localized string similar to Upgrade failed. The server '{0}' has rebooted with the same version. /// - ///Check the boot order in the server and reboot again. ähnelt. + ///Check the boot order in the server and reboot again.. /// public static string ROLLING_UPGRADE_REBOOT_AGAIN_MESSAGE { get { @@ -31301,13 +32223,13 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die To install the [XenServer] upgrade on {0}, follow these steps: + /// Looks up a localized string similar to To install the [XenServer] upgrade on {0}, follow these steps: /// ///1. Insert the [XenServer] installation CD-ROM in the server’s CD/DVD drive or set up a PXE network boot. ///2. Click the Reboot Now button below to reboot the server and begin the installation. ///3. Go to the server’s console and follow the on-screen instructions to install the upgrade. /// - ///To skip this server and continue to the next server in the pool, click Skip This Server. Note that running a pool with servers on different versions of [X [Rest der Zeichenfolge wurde abgeschnitten]"; ähnelt. + ///To skip this server and continue to the next server in the pool, click Skip This Server. Note that running a pool with servers on different versions of [X [rest of string was truncated]";. /// public static string ROLLING_UPGRADE_REBOOT_MESSAGE { get { @@ -31316,7 +32238,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die All rolling pool upgrade processes were completed successfully. ähnelt. + /// Looks up a localized string similar to All rolling pool upgrade processes were completed successfully.. /// public static string ROLLING_UPGRADE_SUCCESS_MANY { get { @@ -31325,7 +32247,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The rolling pool upgrade process was completed successfully. ähnelt. + /// Looks up a localized string similar to The rolling pool upgrade process was completed successfully.. /// public static string ROLLING_UPGRADE_SUCCESS_ONE { get { @@ -31334,11 +32256,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Still waiting for the upgrade to complete. - /// - ///Please check the server console for possible errors. - /// - ///Click Keep Waiting if the upgrade is still running or Cancel if an error occurred. ähnelt. + /// Looks up a localized string similar to Still waiting for the installation of [XenServer] on '{0}' to complete. Please check the server console for possible errors. Keep waiting if the installation is still running.... /// public static string ROLLING_UPGRADE_TIMEOUT { get { @@ -31347,7 +32265,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade Mode ähnelt. + /// Looks up a localized string similar to Still waiting for the installation of [XenServer] {0} on '{1}' to complete. Please check the server console for possible errors. Keep waiting if the installation is still running.... + /// + public static string ROLLING_UPGRADE_TIMEOUT_VERSION { + get { + return ResourceManager.GetString("ROLLING_UPGRADE_TIMEOUT_VERSION", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Upgrade Mode. /// public static string ROLLING_UPGRADE_TITLE_MODE { get { @@ -31356,7 +32283,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server is not licensed for rolling pool upgrade ähnelt. + /// Looks up a localized string similar to This server is not licensed for rolling pool upgrade. /// public static string ROLLING_UPGRADE_UNLICENSED_HOST { get { @@ -31365,7 +32292,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This pool is not licensed for rolling pool upgrade ähnelt. + /// Looks up a localized string similar to This pool is not licensed for rolling pool upgrade. /// public static string ROLLING_UPGRADE_UNLICENSED_POOL { get { @@ -31374,7 +32301,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rolling pool upgrade is complete. ähnelt. + /// Looks up a localized string similar to Rolling pool upgrade is complete.. /// public static string ROLLING_UPGRADE_UPGRADE_COMPLETED { get { @@ -31383,7 +32310,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rolling pool upgrade is in progress. The upgrade might take some time. ähnelt. + /// Looks up a localized string similar to Rolling pool upgrade is in progress. The upgrade might take some time.. /// public static string ROLLING_UPGRADE_UPGRADE_IN_PROGRESS { get { @@ -31392,7 +32319,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rolling pool upgrade did not complete. ähnelt. + /// Looks up a localized string similar to Rolling pool upgrade did not complete.. /// public static string ROLLING_UPGRADE_UPGRADE_NOT_COMPLETED { get { @@ -31401,7 +32328,7 @@ namespace XenAdmin { } /// - /// 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. + /// Looks up a localized string similar to One or more of the rolling pool upgrade processes were completed with warnings.. /// public static string ROLLING_UPGRADE_WARNING_MANY { get { @@ -31419,7 +32346,7 @@ namespace XenAdmin { } /// - /// 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.. + /// Looks up a localized string similar to Upgrade pre-checks are performed on all the pools you selected to ensure that all the servers can be upgraded.. /// public static string ROLLINGUPGRADE_PRECHECKS { get { @@ -31428,7 +32355,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} could be skipped. ähnelt. + /// Looks up a localized string similar to {0} could be skipped.. /// public static string RPU_WIZARD_ERROR_SKIP_MSG { get { @@ -31437,7 +32364,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Installing update '{0}' on '{1}' ähnelt. + /// Looks up a localized string similar to Installing update '{0}' on '{1}'. /// public static string RPU_WIZARD_INSTALL_SUPPPACK_TITLE { get { @@ -31446,7 +32373,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Skipping installing update '{0}' on '{1}'... ähnelt. + /// Looks up a localized string similar to Skipping installing update '{0}' on '{1}'.... /// public static string RPU_WIZARD_SKIP_INSTALL_SUPPPACK { get { @@ -31455,7 +32382,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Running policy '{0}' ähnelt. + /// Looks up a localized string similar to Running policy '{0}'. /// public static string RUN_POLICY { get { @@ -31464,7 +32391,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Policy started ähnelt. + /// Looks up a localized string similar to Policy started. /// public static string RUN_POLICY_STARTED { get { @@ -31473,7 +32400,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Run Prechecks ähnelt. + /// Looks up a localized string similar to &Run Pre-checks. /// public static string RUN_PRECHECKS_WITH_ACCESS_KEY { get { @@ -31482,7 +32409,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Run Report ähnelt. + /// Looks up a localized string similar to &Run Report. /// public static string RUN_REPORT { get { @@ -31491,7 +32418,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Archiving ähnelt. + /// Looks up a localized string similar to Archiving. /// public static string RUNNING_ARCHIVE { get { @@ -31500,7 +32427,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Running on ähnelt. + /// Looks up a localized string similar to Running on. /// public static string RUNNING_ON { get { @@ -31509,7 +32436,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saturday ähnelt. + /// Looks up a localized string similar to Saturday. /// public static string SATURDAY_LONG { get { @@ -31518,7 +32445,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sat ähnelt. + /// Looks up a localized string similar to Sat. /// public static string SATURDAY_SHORT { get { @@ -31527,7 +32454,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Save ähnelt. + /// Looks up a localized string similar to Save. /// public static string SAVE { get { @@ -31536,7 +32463,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Save and Restore ähnelt. + /// Looks up a localized string similar to Save and Restore. /// public static string SAVE_AND_RESTORE { get { @@ -31545,7 +32472,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Save and restore server connection state on startup ähnelt. + /// Looks up a localized string similar to Save and restore server connection state on startup. /// public static string SAVE_AND_RESTORE_DESC { get { @@ -31554,7 +32481,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Save as a Template ähnelt. + /// Looks up a localized string similar to Save as a Template. /// public static string SAVE_AS_TEMPLATE { get { @@ -31563,7 +32490,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Do you want to save the changes for policy '{0}'? ähnelt. + /// Looks up a localized string similar to Do you want to save the changes for policy '{0}'?. /// public static string SAVE_CHANGES_FOR_POLICY { get { @@ -31572,7 +32499,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Save Search '{0}' ähnelt. + /// Looks up a localized string similar to Save Search '{0}'. /// public static string SAVE_SEARCH { get { @@ -31581,7 +32508,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Instance is already locked ähnelt. + /// Looks up a localized string similar to Instance is already locked. /// public static string SAVECHANGES_LOCKED { get { @@ -31590,7 +32517,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving file {0} ähnelt. + /// Looks up a localized string similar to Saving file {0}. /// public static string SAVING_FILE_X { get { @@ -31599,7 +32526,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving metadata... ähnelt. + /// Looks up a localized string similar to Saving metadata.... /// public static string SAVING_METADATA { get { @@ -31608,7 +32535,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving search '{0}'... ähnelt. + /// Looks up a localized string similar to Saving search '{0}'.... /// public static string SAVING_SEARCH { get { @@ -31617,7 +32544,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving configuration... ähnelt. + /// Looks up a localized string similar to Saving configuration.... /// public static string SAVING_VMS_ACTION_DESC { get { @@ -31626,7 +32553,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving VM Configuration ähnelt. + /// Looks up a localized string similar to Saving VM Configuration. /// public static string SAVING_VMS_ACTION_TITLE { get { @@ -31635,7 +32562,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving Workload Balancing configuration. ähnelt. + /// Looks up a localized string similar to Saving Workload Balancing configuration.. /// public static string SAVING_WLB_CONFIGURATION { get { @@ -31644,7 +32571,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving Workload Balancing configuration for '{0}'. ähnelt. + /// Looks up a localized string similar to Saving Workload Balancing configuration for '{0}'.. /// public static string SAVING_WLB_CONFIGURATION_FOR { get { @@ -31653,7 +32580,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This SR already has a scan in progress ähnelt. + /// Looks up a localized string similar to This SR already has a scan in progress. /// public static string SCAN_IN_PROGRESS_TOOLTIP { get { @@ -31662,7 +32589,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning adapters ähnelt. + /// Looks up a localized string similar to Scanning adapters. /// public static string SCANNING_ADAPTERS { get { @@ -31671,7 +32598,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning VMs... ähnelt. + /// Looks up a localized string similar to Scanning VMs.... /// public static string SCANNING_VMS { get { @@ -31680,7 +32607,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Search... ähnelt. + /// Looks up a localized string similar to Search.... /// public static string SEARCH_ELLIPSIS { get { @@ -31689,7 +32616,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Search... ähnelt. + /// Looks up a localized string similar to Search.... /// public static string SEARCH_TEXT_BOX_INITIAL_TEXT { get { @@ -31698,7 +32625,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Overview ähnelt. + /// Looks up a localized string similar to {0}: Overview. /// public static string SEARCH_TITLE_HOST { get { @@ -31707,7 +32634,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die All Servers, VMs, Custom Templates & Remote SRs ähnelt. + /// Looks up a localized string similar to All Servers, VMs, Custom Templates & Remote SRs. /// public static string SEARCH_TITLE_OVERVIEW { get { @@ -31716,7 +32643,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Overview ähnelt. + /// Looks up a localized string similar to {0}: Overview. /// public static string SEARCH_TITLE_POOL { get { @@ -31725,7 +32652,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Find resources in the Resources Pane ähnelt. + /// Looks up a localized string similar to Find resources in the Resources Pane. /// public static string SEARCHBOX_TOOLTIP { get { @@ -31734,7 +32661,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Secret access key: ähnelt. + /// Looks up a localized string similar to &Secret access key:. /// public static string SECRET_ACCESS_KEY_LABLE { get { @@ -31743,7 +32670,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Security ähnelt. + /// Looks up a localized string similar to Security. /// public static string SECURITY { get { @@ -31752,7 +32679,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Security Checks ähnelt. + /// Looks up a localized string similar to Security Checks. /// public static string SECURITY_CHECKS { get { @@ -31761,7 +32688,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SSL certificate options ähnelt. + /// Looks up a localized string similar to SSL certificate options. /// public static string SECURITY_DESC { get { @@ -31770,7 +32697,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Security Groups ähnelt. + /// Looks up a localized string similar to Security Groups. /// public static string SECURITY_GROUPS { get { @@ -31779,7 +32706,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the security protocols that can be used for communicating with this server. ähnelt. + /// Looks up a localized string similar to Select the security protocols that can be used for communicating with this server.. /// public static string SECURITYEDITPAGE_RUBRIC_HOST { get { @@ -31788,7 +32715,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Backwards compatibility ähnelt. + /// Looks up a localized string similar to Backwards compatibility. /// public static string SECURITYEDITPAGE_SUBTEXT_SSL { get { @@ -31797,7 +32724,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die TLS 1.2 only ähnelt. + /// Looks up a localized string similar to TLS 1.2 only. /// public static string SECURITYEDITPAGE_SUBTEXT_TLS { get { @@ -31806,7 +32733,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select a filter... ähnelt. + /// Looks up a localized string similar to Select a filter.... /// public static string SELECT_A_FILTER { get { @@ -31815,7 +32742,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select Default SR ähnelt. + /// Looks up a localized string similar to Select Default SR. /// public static string SELECT_DEFAULT_SR { get { @@ -31824,7 +32751,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There are no networks available for this network interface ähnelt. + /// Looks up a localized string similar to There are no networks available for this network interface. /// public static string SELECT_NETWORK_TOOLTIP { get { @@ -31833,7 +32760,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select Pools ähnelt. + /// Looks up a localized string similar to Select Pools. /// public static string SELECT_POOL { get { @@ -31842,7 +32769,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - not enough available space on the SR ähnelt. + /// Looks up a localized string similar to {0} - not enough available space on the SR. /// public static string SELECT_STORAGE_DROPDOWN_ERROR_NOT_ENOUGH_SPACE { get { @@ -31851,7 +32778,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select target IQN ähnelt. + /// Looks up a localized string similar to Select target IQN. /// public static string SELECT_TARGET_IQN { get { @@ -31860,7 +32787,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select target LUN ähnelt. + /// Looks up a localized string similar to Select target LUN. /// public static string SELECT_TARGET_LUN { get { @@ -31869,7 +32796,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select VMs to Suspend - server '{0}' ähnelt. + /// Looks up a localized string similar to Select VMs to Suspend - server '{0}'. /// public static string SELECT_VMS_TO_SUSPEND_DLOG_TITLE { get { @@ -31878,7 +32805,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The hosts or pools selected are not connected ähnelt. + /// Looks up a localized string similar to The hosts or pools selected are not connected. /// public static string SELECTED_HOST_POOL_NOT_CONNECTED { get { @@ -31887,7 +32814,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server ähnelt. + /// Looks up a localized string similar to Server. /// public static string SERVER { get { @@ -31896,7 +32823,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This server is using an API that is incompatible with [XenCenter]. ähnelt. + /// Looks up a localized string similar to This server is using an API that is incompatible with [XenCenter].. /// public static string SERVER_API_INCOMPATIBLE { get { @@ -31905,7 +32832,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server: ähnelt. + /// Looks up a localized string similar to Server:. /// public static string SERVER_COLON { get { @@ -31914,7 +32841,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server failure: {0} ähnelt. + /// Looks up a localized string similar to Server failure: {0}. /// public static string SERVER_FAILURE { get { @@ -31923,7 +32850,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Server: ähnelt. + /// Looks up a localized string similar to &Server:. /// public static string SERVER_LABLE { get { @@ -31932,7 +32859,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] Out of Date ähnelt. + /// Looks up a localized string similar to [XenServer] Out of Date. /// public static string SERVER_OUT_OF_DATE { get { @@ -31941,7 +32868,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' is out of date and can no longer be connected to. ähnelt. + /// Looks up a localized string similar to Server '{0}' is out of date and can no longer be connected to.. /// public static string SERVER_OUT_OF_DATE_DETAIL { get { @@ -31950,7 +32877,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A server request is in progress ähnelt. + /// Looks up a localized string similar to A server request is in progress. /// public static string SERVER_REQUEST_IN_PROGRESS { get { @@ -31959,7 +32886,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server selection check ähnelt. + /// Looks up a localized string similar to Server selection check. /// public static string SERVER_SELECTION_CHECK_DESCRIPTION { get { @@ -31968,7 +32895,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk space check ähnelt. + /// Looks up a localized string similar to Disk space check. /// public static string SERVER_SIDE_CHECK_AUTO_MODE_DESCRIPTION { get { @@ -31977,7 +32904,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server side patch check ähnelt. + /// Looks up a localized string similar to Server side patch check. /// public static string SERVER_SIDE_CHECK_DESCRIPTION { get { @@ -31986,7 +32913,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server Status Report ähnelt. + /// Looks up a localized string similar to Server Status Report. /// public static string SERVER_STATUS_REPORT { get { @@ -31995,7 +32922,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected servers failed when asked for their capabilities. Please select different servers. ähnelt. + /// Looks up a localized string similar to The selected servers failed when asked for their capabilities. Please select different servers.. /// public static string SERVER_STATUS_REPORT_CAPABILITIES_FAILED { get { @@ -32004,7 +32931,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Querying server capabilities... ähnelt. + /// Looks up a localized string similar to Querying server capabilities.... /// public static string SERVER_STATUS_REPORT_GET_CAPABILITIES { get { @@ -32013,7 +32940,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The current time on the pool master is: {0} ähnelt. + /// Looks up a localized string similar to The current time on the pool master is: {0}. /// public static string SERVER_TIME { get { @@ -32022,7 +32949,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This version of [XenCenter] supports [XenServer] [BRANDING_VERSION_7_0] onwards. ähnelt. + /// Looks up a localized string similar to This version of [XenCenter] supports [XenServer] [BRANDING_VERSION_7_0] onwards.. /// public static string SERVER_TOO_OLD { get { @@ -32031,7 +32958,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Use an earlier version of [XenCenter] to manage this server. ähnelt. + /// Looks up a localized string similar to Use an earlier version of [XenCenter] to manage this server.. /// public static string SERVER_TOO_OLD_SOLUTION { get { @@ -32040,7 +32967,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die server '{0}' ähnelt. + /// Looks up a localized string similar to server '{0}'. /// public static string SERVER_X { get { @@ -32049,7 +32976,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Servers ähnelt. + /// Looks up a localized string similar to Servers. /// public static string SERVERS { get { @@ -32058,7 +32985,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Servers and VMs ähnelt. + /// Looks up a localized string similar to Servers and VMs. /// public static string SERVERS_AND_VMS { get { @@ -32067,7 +32994,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Servers, VMs, Custom Templates and all SRs ähnelt. + /// Looks up a localized string similar to Servers, VMs, Custom Templates and all SRs. /// public static string SERVERS_AND_VMS_AND_CUSTOM_TEMPLATES_AND_ALL_SRS { get { @@ -32076,7 +33003,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Servers, VMs, Custom Templates and Remote SRs ähnelt. + /// Looks up a localized string similar to Servers, VMs, Custom Templates and Remote SRs. /// public static string SERVERS_AND_VMS_AND_CUSTOM_TEMPLATES_AND_REMOTE_SRS { get { @@ -32085,7 +33012,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Bond load balancing changed ähnelt. + /// Looks up a localized string similar to Bond load balancing changed. /// public static string SET_BOND_HASHING_ALGORITHM_ACTION_END { get { @@ -32094,7 +33021,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing bond load balancing ähnelt. + /// Looks up a localized string similar to Changing bond load balancing. /// public static string SET_BOND_HASHING_ALGORITHM_ACTION_START { get { @@ -32103,7 +33030,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change bond load balancing ähnelt. + /// Looks up a localized string similar to Change bond load balancing. /// public static string SET_BOND_HASHING_ALGORITHM_ACTION_TITLE { get { @@ -32112,7 +33039,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Bond mode changed ähnelt. + /// Looks up a localized string similar to Bond mode changed. /// public static string SET_BOND_MODE_ACTION_END { get { @@ -32121,7 +33048,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Changing bond mode ähnelt. + /// Looks up a localized string similar to Changing bond mode. /// public static string SET_BOND_MODE_ACTION_START { get { @@ -32130,7 +33057,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change bond mode ähnelt. + /// Looks up a localized string similar to Change bond mode. /// public static string SET_BOND_MODE_ACTION_TITLE { get { @@ -32139,7 +33066,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting GPU placement policy ähnelt. + /// Looks up a localized string similar to Setting GPU placement policy. /// public static string SET_GPU_PLACEMENT_POLICY_ACTION_DESCRIPTION { get { @@ -32148,7 +33075,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die GPU placement policy set ähnelt. + /// Looks up a localized string similar to GPU placement policy set. /// public static string SET_GPU_PLACEMENT_POLICY_ACTION_DONE { get { @@ -32157,7 +33084,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Set GPU placement policy ähnelt. + /// Looks up a localized string similar to Set GPU placement policy. /// public static string SET_GPU_PLACEMENT_POLICY_ACTION_TITLE { get { @@ -32166,7 +33093,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die It is highly recommended you confirm this setting matches the MTU on related network '{0}' ähnelt. + /// Looks up a localized string similar to It is highly recommended you confirm this setting matches the MTU on related network '{0}'. /// public static string SET_MTU_ON_CHINS_UNDER_NETWORK { get { @@ -32175,7 +33102,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting StorageLink Credentials ähnelt. + /// Looks up a localized string similar to Setting StorageLink Credentials. /// public static string SET_STORAGELINK_CREDS_ACTION_DESCRIPTION { get { @@ -32184,7 +33111,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Set StorageLink Credentials ähnelt. + /// Looks up a localized string similar to Set StorageLink Credentials. /// public static string SET_STORAGELINK_CREDS_ACTION_TITLE { get { @@ -32193,7 +33120,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting StorageLink Credentials to '{0}' ähnelt. + /// Looks up a localized string similar to Setting StorageLink Credentials to '{0}'. /// public static string SET_STORAGELINK_CREDS_TO_POOL_ACTION_DESCRIPTION { get { @@ -32202,7 +33129,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Set StorageLink Credentials to '{0}' ähnelt. + /// Looks up a localized string similar to Set StorageLink Credentials to '{0}'. /// public static string SET_STORAGELINK_CREDS_TO_POOL_ACTION_TITLE { get { @@ -32211,7 +33138,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting security settings ähnelt. + /// Looks up a localized string similar to Setting security settings. /// public static string SETTING_SECURITY_SETTINGS { get { @@ -32220,7 +33147,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting VM properties ähnelt. + /// Looks up a localized string similar to Setting VM properties. /// public static string SETTING_VM_PROPERTIES { get { @@ -32229,7 +33156,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting VM startup options ähnelt. + /// Looks up a localized string similar to Setting VM startup options. /// public static string SETTING_VM_STARTUP_OPTIONS { get { @@ -32238,7 +33165,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting VM startup options on {0} ähnelt. + /// Looks up a localized string similar to Setting VM startup options on {0}. /// public static string SETTING_VM_STARTUP_OPTIONS_ON_X { get { @@ -32247,7 +33174,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Settings ähnelt. + /// Looks up a localized string similar to Settings. /// public static string SETTINGS { get { @@ -32256,7 +33183,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Severity ähnelt. + /// Looks up a localized string similar to Severity. /// public static string SEVERITY { get { @@ -32265,7 +33192,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Unknown ähnelt. + /// Looks up a localized string similar to &Unknown. /// public static string SEVERITY_FILTER_0 { get { @@ -32274,7 +33201,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unknown severity ähnelt. + /// Looks up a localized string similar to Unknown severity. /// public static string SEVERITY_FILTER_0_DETAIL { get { @@ -32283,7 +33210,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Critical ähnelt. + /// Looks up a localized string similar to &Critical. /// public static string SEVERITY_FILTER_1 { get { @@ -32292,7 +33219,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Data loss imminent ähnelt. + /// Looks up a localized string similar to Data loss imminent. /// public static string SEVERITY_FILTER_1_DETAIL { get { @@ -32301,7 +33228,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Major ähnelt. + /// Looks up a localized string similar to &Major. /// public static string SEVERITY_FILTER_2 { get { @@ -32310,7 +33237,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Service loss imminent ähnelt. + /// Looks up a localized string similar to Service loss imminent. /// public static string SEVERITY_FILTER_2_DETAIL { get { @@ -32319,7 +33246,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Warning ähnelt. + /// Looks up a localized string similar to &Warning. /// public static string SEVERITY_FILTER_3 { get { @@ -32328,7 +33255,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Service degraded ähnelt. + /// Looks up a localized string similar to Service degraded. /// public static string SEVERITY_FILTER_3_DETAIL { get { @@ -32337,7 +33264,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Mi&nor ähnelt. + /// Looks up a localized string similar to Mi&nor. /// public static string SEVERITY_FILTER_4 { get { @@ -32346,7 +33273,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Service recovered ähnelt. + /// Looks up a localized string similar to Service recovered. /// public static string SEVERITY_FILTER_4_DETAIL { get { @@ -32355,7 +33282,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Information ähnelt. + /// Looks up a localized string similar to &Information. /// public static string SEVERITY_FILTER_5 { get { @@ -32364,7 +33291,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Informational ähnelt. + /// Looks up a localized string similar to Informational. /// public static string SEVERITY_FILTER_5_DETAIL { get { @@ -32373,7 +33300,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shadow memory multiplier: {0} ähnelt. + /// Looks up a localized string similar to Shadow memory multiplier: {0}. /// public static string SHADOW_MEMORY_MULTIPLIER { get { @@ -32382,7 +33309,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Value should be a number greater than or equal to 1.0 ähnelt. + /// Looks up a localized string similar to Value should be a number greater than or equal to 1.0. /// public static string SHADOW_MEMORY_MULTIPLIER_VALUE { get { @@ -32391,7 +33318,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Share ähnelt. + /// Looks up a localized string similar to &Share. /// public static string SHARE_SR { get { @@ -32400,7 +33327,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shared ähnelt. + /// Looks up a localized string similar to Shared. /// public static string SHARED { get { @@ -32409,7 +33336,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Show Details ähnelt. + /// Looks up a localized string similar to Show Details. /// public static string SHOW_DETAILS { get { @@ -32418,7 +33345,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Show Run History ähnelt. + /// Looks up a localized string similar to Show Run History. /// public static string SHOW_RUN_HISTORY { get { @@ -32427,7 +33354,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} are pool masters. It is strongly recommended to nominate a new master for each affected pool before proceeding. ähnelt. + /// Looks up a localized string similar to {0} are pool masters. It is strongly recommended to nominate a new master for each affected pool before proceeding.. /// public static string SHUT_DOWN_POOL_MASTER_MULTIPLE { get { @@ -32436,7 +33363,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} is the pool master. It is strongly recommended to nominate a new master for the pool before proceeding. ähnelt. + /// Looks up a localized string similar to {0} is the pool master. It is strongly recommended to nominate a new master for the pool before proceeding.. /// public static string SHUT_DOWN_POOL_MASTER_SINGLE { get { @@ -32445,7 +33372,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut down ähnelt. + /// Looks up a localized string similar to Shut down. /// public static string SHUTDOWN { get { @@ -32454,7 +33381,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You need to shut down or suspend the VM before exporting it. ähnelt. + /// Looks up a localized string similar to You need to shut down or suspend the VM before exporting it.. /// public static string SHUTDOWN_BEFORE_EXPORT { get { @@ -32463,7 +33390,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut down VM ähnelt. + /// Looks up a localized string similar to Shut down VM. /// public static string SHUTDOWN_VM { get { @@ -32472,7 +33399,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shutting down specified VMs ähnelt. + /// Looks up a localized string similar to Shutting down specified VMs. /// public static string SHUTTING_DOWN_SPECIFIED_VMS { get { @@ -32481,7 +33408,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shutting down VM {0} out of {1} ähnelt. + /// Looks up a localized string similar to Shutting down VM {0} out of {1}. /// public static string SHUTTING_DOWN_VM_OUT_OF { get { @@ -32490,7 +33417,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Applying digital signature to appliance... ähnelt. + /// Looks up a localized string similar to Applying digital signature to appliance.... /// public static string SIGNING_APPLIANCE { get { @@ -32499,7 +33426,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Single-server private network ähnelt. + /// Looks up a localized string similar to Single-server private network. /// public static string SINGLE_SERVER_PRIVATE_NETWORK { get { @@ -32508,7 +33435,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Size ähnelt. + /// Looks up a localized string similar to Size. /// public static string SIZE { get { @@ -32517,7 +33444,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Size and Location ähnelt. + /// Looks up a localized string similar to Size and Location. /// public static string SIZE_AND_LOCATION { get { @@ -32526,7 +33453,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die size is ähnelt. + /// Looks up a localized string similar to size is. /// public static string SIZE_IS { get { @@ -32535,7 +33462,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}, {1} ähnelt. + /// Looks up a localized string similar to {0}, {1}. /// public static string SIZE_LOCATION_SUB { get { @@ -32544,7 +33471,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Negligible ähnelt. + /// Looks up a localized string similar to Negligible. /// public static string SIZE_NEGLIGIBLE { get { @@ -32553,7 +33480,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Skip This Server ähnelt. + /// Looks up a localized string similar to &Skip This Server. /// public static string SKIP_SERVER { get { @@ -32562,7 +33489,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Slack: ähnelt. + /// Looks up a localized string similar to Slack:. /// public static string SLACK_LABEL { get { @@ -32571,7 +33498,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' is a member of pool '{1}' and is already connected. ähnelt. + /// Looks up a localized string similar to Server '{0}' is a member of pool '{1}' and is already connected.. /// public static string SLAVE_ALREADY_CONNECTED { get { @@ -32580,8 +33507,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' is in a pool. To connect to a pool, you must connect to the pool master. - ///Do you want to connect to the pool master '{1}'? ähnelt. + /// Looks up a localized string similar to Server '{0}' is in a pool. To connect to a pool, you must connect to the pool master. + ///Do you want to connect to the pool master '{1}'?. /// public static string SLAVE_CONNECTION_ERROR { get { @@ -32590,7 +33517,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This pool contains servers earlier than [XenServer] [BRANDING_VERSION_7_0]. Please use an earlier version of [XenCenter] to manage this pool. ähnelt. + /// Looks up a localized string similar to This pool contains servers earlier than [XenServer] [BRANDING_VERSION_7_0]. Please use an earlier version of [XenCenter] to manage this pool.. /// public static string SLAVE_TOO_OLD { get { @@ -32599,7 +33526,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die smaller than ähnelt. + /// Looks up a localized string similar to smaller than. /// public static string SMALLER_THAN { get { @@ -32608,7 +33535,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This SMB ISO storage is already attached to '{0}' ähnelt. + /// Looks up a localized string similar to This SMB ISO storage is already attached to '{0}'. /// public static string SMB_ISO_STORAGE_ALREADY_ATTACHED { get { @@ -32617,7 +33544,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (snapshot) ähnelt. + /// Looks up a localized string similar to {0} (snapshot). /// public static string SNAPSHOT_BRACKETS { get { @@ -32626,7 +33553,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Created on {0} ähnelt. + /// Looks up a localized string similar to Created on {0}. /// public static string SNAPSHOT_CREATED_ON { get { @@ -32635,7 +33562,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot '{0}' deleted. ähnelt. + /// Looks up a localized string similar to Snapshot '{0}' deleted.. /// public static string SNAPSHOT_DELETED { get { @@ -32644,7 +33571,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting snapshots ... ähnelt. + /// Looks up a localized string similar to Deleting snapshots .... /// public static string SNAPSHOT_DELETING { get { @@ -32653,7 +33580,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot Schedule ähnelt. + /// Looks up a localized string similar to Snapshot Schedule. /// public static string SNAPSHOT_FREQUENCY { get { @@ -32662,7 +33589,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die When do you want snapshots to be taken? ähnelt. + /// Looks up a localized string similar to When do you want snapshots to be taken?. /// public static string SNAPSHOT_FREQUENCY_TITLE { get { @@ -32671,7 +33598,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot General Properties ähnelt. + /// Looks up a localized string similar to Snapshot General Properties. /// public static string SNAPSHOT_GENERAL_TAB_TITLE { get { @@ -32680,7 +33607,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot of ähnelt. + /// Looks up a localized string similar to Snapshot of. /// public static string SNAPSHOT_OF { get { @@ -32689,7 +33616,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (snapshot of '{1}' {2}) ähnelt. + /// Looks up a localized string similar to {0} (snapshot of '{1}' {2}). /// public static string SNAPSHOT_OF_TITLE { get { @@ -32698,7 +33625,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot revert ähnelt. + /// Looks up a localized string similar to Snapshot revert. /// public static string SNAPSHOT_REVERT { get { @@ -32707,7 +33634,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Taken on: {0} ähnelt. + /// Looks up a localized string similar to Taken on: {0}. /// public static string SNAPSHOT_TAKEN_ON { get { @@ -32716,7 +33643,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot taken on {0} ähnelt. + /// Looks up a localized string similar to Snapshot taken on {0}. /// public static string SNAPSHOT_TAKEN_ON_2 { get { @@ -32725,7 +33652,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot tree view ähnelt. + /// Looks up a localized string similar to Snapshot tree view. /// public static string SNAPSHOT_TREE_VIEW { get { @@ -32734,7 +33661,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot Type ähnelt. + /// Looks up a localized string similar to Snapshot Type. /// public static string SNAPSHOT_TYPE { get { @@ -32743,7 +33670,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die What type of snapshot do you want to use for scheduled snapshots? ähnelt. + /// Looks up a localized string similar to What type of snapshot do you want to use for scheduled snapshots?. /// public static string SNAPSHOT_TYPE_TITLE { get { @@ -32752,7 +33679,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshots ähnelt. + /// Looks up a localized string similar to Snapshots. /// public static string SNAPSHOTS { get { @@ -32761,7 +33688,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshots deleted. ähnelt. + /// Looks up a localized string similar to Snapshots deleted.. /// public static string SNAPSHOTS_DELETED { get { @@ -32770,7 +33697,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting snapshots ähnelt. + /// Looks up a localized string similar to Deleting snapshots. /// public static string SNAPSHOTS_DELETING { get { @@ -32779,7 +33706,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There are currently no snapshots of this VM. To create a snapshot, click Take Snapshot. ähnelt. + /// Looks up a localized string similar to There are currently no snapshots of this VM. To create a snapshot, click Take Snapshot.. /// public static string SNAPSHOTS_EMPTY { get { @@ -32788,7 +33715,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Machine Snapshots ähnelt. + /// Looks up a localized string similar to Virtual Machine Snapshots. /// public static string SNAPSHOTS_PAGE_TITLE { get { @@ -32797,7 +33724,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} snapshots selected ähnelt. + /// Looks up a localized string similar to {0} snapshots selected. /// public static string SNAPSHOTS_SELECTED { get { @@ -32806,7 +33733,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot created ähnelt. + /// Looks up a localized string similar to Snapshot created. /// public static string SNAPSHOTTED { get { @@ -32815,7 +33742,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating a snapshot... ähnelt. + /// Looks up a localized string similar to Creating a snapshot.... /// public static string SNAPSHOTTING { get { @@ -32824,7 +33751,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Build number ähnelt. + /// Looks up a localized string similar to Build number. /// public static string SOFTWARE_VERSION_BUILD_NUMBER { get { @@ -32833,7 +33760,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Build date ähnelt. + /// Looks up a localized string similar to Build date. /// public static string SOFTWARE_VERSION_DATE { get { @@ -32842,7 +33769,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Version ähnelt. + /// Looks up a localized string similar to Version. /// public static string SOFTWARE_VERSION_PRODUCT_VERSION { get { @@ -32851,7 +33778,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Try again using a correct user name and password. ähnelt. + /// Looks up a localized string similar to Try again using a correct user name and password.. /// public static string SOLUTION_AUTHENTICATION { get { @@ -32860,7 +33787,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Check that the proxy server on '{0}' is configured correctly and [XenCenter]'s connection settings are correct and try again. ähnelt. + /// Looks up a localized string similar to Check that the proxy server on '{0}' is configured correctly and [XenCenter]'s connection settings are correct and try again.. /// public static string SOLUTION_CHECK_PROXY { get { @@ -32869,7 +33796,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Check that [XenServer] is configured correctly on '{0}' and try again. ähnelt. + /// Looks up a localized string similar to Check that [XenServer] is configured correctly on '{0}' and try again.. /// public static string SOLUTION_CHECK_XENSERVER { get { @@ -32878,7 +33805,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Check the proxy settings and that the server is configured correctly on '{0}' and try again. ähnelt. + /// Looks up a localized string similar to Check the proxy settings and that the server is configured correctly on '{0}' and try again.. /// public static string SOLUTION_CHECK_XENSERVER_WITH_PROXY { get { @@ -32887,7 +33814,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please wait and then try again. ähnelt. + /// Looks up a localized string similar to Please wait and then try again.. /// public static string SOLUTION_HOST_STILL_BOOTING { get { @@ -32896,7 +33823,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Try again with a more privileged user account. ähnelt. + /// Looks up a localized string similar to Try again with a more privileged user account.. /// public static string SOLUTION_NO_PERMISSION { get { @@ -32905,7 +33832,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter a valid hostname or IP address and try again. ähnelt. + /// Looks up a localized string similar to Enter a valid hostname or IP address and try again.. /// public static string SOLUTION_NOT_FOUND { get { @@ -32914,7 +33841,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ähnelt. + /// Looks up a localized string similar to . /// public static string SOLUTION_UNKNOWN { get { @@ -32923,7 +33850,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Some errors were encountered. See the [XenCenter] log for more information. ähnelt. + /// Looks up a localized string similar to Some errors were encountered. See the [XenCenter] log for more information.. /// public static string SOME_ERRORS_ENCOUNTERED { get { @@ -32932,7 +33859,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die - ähnelt. + /// Looks up a localized string similar to - . /// public static string SPACED_HYPHEN { get { @@ -32941,7 +33868,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Speed ähnelt. + /// Looks up a localized string similar to Speed. /// public static string SPEED { get { @@ -32950,7 +33877,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage Repository ähnelt. + /// Looks up a localized string similar to Storage Repository. /// public static string SR { get { @@ -32959,7 +33886,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is currently an action in progress on this SR. ähnelt. + /// Looks up a localized string similar to There is currently an action in progress on this SR.. /// public static string SR_ACTION_IN_PROGRESS { get { @@ -32968,7 +33895,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This SR cannot be destroyed with [XenCenter]. ähnelt. + /// Looks up a localized string similar to This SR cannot be destroyed with [XenCenter].. /// public static string SR_CANNOT_BE_DESTROYED_WITH_XC { get { @@ -32977,7 +33904,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This SR cannot be detached with [XenCenter]. ähnelt. + /// Looks up a localized string similar to This SR cannot be detached with [XenCenter].. /// public static string SR_CANNOT_BE_DETACHED_WITH_XC { get { @@ -32986,7 +33913,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This SR cannot be forgotten with [XenCenter]. ähnelt. + /// Looks up a localized string similar to This SR cannot be forgotten with [XenCenter].. /// public static string SR_CANNOT_BE_FORGOTTEN_WITH_XC { get { @@ -32995,7 +33922,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This storage repository cannot be seen from {0} ähnelt. + /// Looks up a localized string similar to This storage repository cannot be seen from {0}. /// public static string SR_CANNOT_BE_SEEN { get { @@ -33004,7 +33931,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The SR could not be contacted. ähnelt. + /// Looks up a localized string similar to The SR could not be contacted.. /// public static string SR_COULD_NOT_BE_CONTACTED { get { @@ -33013,7 +33940,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The SR is currently detached. ähnelt. + /// Looks up a localized string similar to The SR is currently detached.. /// public static string SR_DETACHED { get { @@ -33022,8 +33949,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Initial allocation: {0} - ///Incremental allocation: {1} ähnelt. + /// Looks up a localized string similar to Initial allocation: {0} + ///Incremental allocation: {1}. /// public static string SR_DISK_SPACE_ALLOCATION { get { @@ -33032,7 +33959,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This SR does not need to be upgraded. ähnelt. + /// Looks up a localized string similar to You cannot create a disk greater than {0} on this SR.. + /// + public static string SR_DISKSIZE_EXCEEDS_DISK_MAX_SIZE { + get { + return ResourceManager.GetString("SR_DISKSIZE_EXCEEDS_DISK_MAX_SIZE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to This SR does not need to be upgraded.. /// public static string SR_DOES_NOT_NEED_UPGRADE { get { @@ -33041,7 +33977,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SR {0} forgotten ähnelt. + /// Looks up a localized string similar to SR {0} forgotten. /// public static string SR_FORGOTTEN_0 { get { @@ -33050,7 +33986,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage General Properties ähnelt. + /// Looks up a localized string similar to Storage General Properties. /// public static string SR_GENERAL_TAB_TITLE { get { @@ -33059,7 +33995,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This SR contains running VMs. ähnelt. + /// Looks up a localized string similar to This SR contains running VMs.. /// public static string SR_HAS_RUNNING_VMS { get { @@ -33068,7 +34004,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This storage repository is broken ähnelt. + /// Looks up a localized string similar to This storage repository is broken. /// public static string SR_IS_BROKEN { get { @@ -33077,7 +34013,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs without a home server cannot have disks on local storage ähnelt. + /// Looks up a localized string similar to VMs without a home server cannot have disks on local storage. /// public static string SR_IS_LOCAL { get { @@ -33086,7 +34022,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk size ({0}) exceeds SR size ({1}) ähnelt. + /// Looks up a localized string similar to Disk size ({0}) exceeds SR size ({1}). /// public static string SR_PICKER_DISK_TOO_BIG { get { @@ -33095,16 +34031,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You cannot create a disk greater than {0} on this SR. ähnelt. - /// - public static string SR_PICKER_DISKSIZE_EXCEEDS_DISK_MAX_SIZE { - get { - return ResourceManager.GetString("SR_PICKER_DISKSIZE_EXCEEDS_DISK_MAX_SIZE", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} required when only {1} available ähnelt. + /// Looks up a localized string similar to {0} required when only {1} available. /// public static string SR_PICKER_INSUFFICIENT_SPACE { get { @@ -33113,9 +34040,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The Incremental allocation limits are as follows: + /// Looks up a localized string similar to The Incremental allocation limits are as follows: ///The lower limit: SR size / {0} (no lower than {1}) - ///The upper limit: SR size / {2} ähnelt. + ///The upper limit: SR size / {2}. /// public static string SR_QUANTUM_ALLOCATION_LIMITS_INFO { get { @@ -33124,7 +34051,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning SR ähnelt. + /// Looks up a localized string similar to Scanning SR. /// public static string SR_REFRESH_ACTION_DESC { get { @@ -33133,7 +34060,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Scanning SR '{0}' ähnelt. + /// Looks up a localized string similar to Scanning SR '{0}'. /// public static string SR_REFRESH_ACTION_TITLE { get { @@ -33142,7 +34069,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reverting {0} to unshared completed. ähnelt. + /// Looks up a localized string similar to Reverting {0} to unshared completed.. /// public static string SR_SHARE_REVERTED { get { @@ -33151,7 +34078,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to share {0}. Reverting to original state. ähnelt. + /// Looks up a localized string similar to Unable to share {0}. Reverting to original state.. /// public static string SR_SHARE_REVERTING { get { @@ -33160,7 +34087,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reverting {0} to unshared. ähnelt. + /// Looks up a localized string similar to Reverting {0} to unshared.. /// public static string SR_SHARE_REVERTING2 { get { @@ -33169,7 +34096,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Setting {0} as shared. ähnelt. + /// Looks up a localized string similar to Setting {0} as shared.. /// public static string SR_SHARE_SETTING { get { @@ -33178,7 +34105,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} used of {1} total ({2} allocated) ähnelt. + /// Looks up a localized string similar to {0} used of {1} total ({2} allocated). /// public static string SR_SIZE_USED { get { @@ -33187,7 +34114,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot reclaim freed space, because the SR is detached. ähnelt. + /// Looks up a localized string similar to Cannot reclaim freed space, because the SR is detached.. /// public static string SR_TRIM_NO_STORAGE_HOST_ERROR { get { @@ -33196,7 +34123,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to connect to iSCSI target ähnelt. + /// Looks up a localized string similar to Unable to connect to iSCSI target. /// public static string SR_UNABLE_TO_CONNECT_TO_SCSI_TARGET { get { @@ -33205,7 +34132,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SR {0} on {1} ähnelt. + /// Looks up a localized string similar to SR {0} on {1}. /// public static string SR_X_ON_Y { get { @@ -33214,7 +34141,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Yes (SR-IOV logical PIF is unplugged) ähnelt. + /// Looks up a localized string similar to Yes (SR-IOV logical PIF is unplugged). /// public static string SRIOV_LOGICAL_PIF_UNPLUGGED { get { @@ -33223,7 +34150,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SR-IOV networks require an SR-IOV capable NIC. ähnelt. + /// Looks up a localized string similar to SR-IOV networks require an SR-IOV capable NIC.. /// public static string SRIOV_NEED_NICSUPPORT { get { @@ -33232,7 +34159,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Create &SR-IOV anyway ähnelt. + /// Looks up a localized string similar to Create &SR-IOV anyway. /// public static string SRIOV_NETWORK_CREATE { get { @@ -33241,9 +34168,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Creating this SR-IOV network will temporarily disturb [XenCenter] connections to the pool. + /// Looks up a localized string similar to Creating this SR-IOV network will temporarily disturb [XenCenter] connections to the pool. /// - ///You may need to reboot your server(s) to enable SR-IOV network. ähnelt. + ///You may need to reboot your server(s) to enable SR-IOV network.. /// public static string SRIOV_NETWORK_CREATE_WARNING { get { @@ -33252,7 +34179,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Yes (To enable SR-IOV create an SR-IOV network on this NIC) ähnelt. + /// Looks up a localized string similar to Yes (To enable SR-IOV create an SR-IOV network on this NIC). /// public static string SRIOV_NETWORK_SHOULD_BE_CREATED { get { @@ -33261,7 +34188,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Active ähnelt. + /// Looks up a localized string similar to Active. /// public static string SRPANEL_ACTIVE { get { @@ -33270,7 +34197,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} free of {1} ähnelt. + /// Looks up a localized string similar to {0} free of {1}. /// public static string SRPICKER_DISK_FREE { get { @@ -33279,7 +34206,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Local storage must belong to resident host ähnelt. + /// Looks up a localized string similar to Local storage must belong to resident host. /// public static string SRPICKER_ERROR_LOCAL_SR_MUST_BE_RESIDENT_HOSTS { get { @@ -33288,7 +34215,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This storage repository is full ähnelt. + /// Looks up a localized string similar to This storage repository is full. /// public static string SRPICKER_SR_FULL { get { @@ -33297,7 +34224,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SRs forgotten ähnelt. + /// Looks up a localized string similar to SRs forgotten. /// public static string SRS_FORGOTTEN { get { @@ -33306,7 +34233,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SMB ISO library ähnelt. + /// Looks up a localized string similar to SMB ISO library. /// public static string SRWIZARD_CIFS_LIBRARY { get { @@ -33315,7 +34242,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die SMB virtual storage ähnelt. + /// Looks up a localized string similar to SMB virtual storage. /// public static string SRWIZARD_CIFS_STORAGE { get { @@ -33324,7 +34251,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die iSCSI virtual disk storage ähnelt. + /// Looks up a localized string similar to iSCSI virtual disk storage. /// public static string SRWIZARD_ISCSI_STORAGE { get { @@ -33333,7 +34260,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NFS ISO library ähnelt. + /// Looks up a localized string similar to NFS ISO library. /// public static string SRWIZARD_NFS_LIBRARY { get { @@ -33342,7 +34269,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die NFS virtual disk storage ähnelt. + /// Looks up a localized string similar to NFS virtual disk storage. /// public static string SRWIZARD_NFS_STORAGE { get { @@ -33351,7 +34278,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} virtual disk storage ähnelt. + /// Looks up a localized string similar to {0} virtual disk storage. /// public static string SRWIZARD_STORAGE_NAME { get { @@ -33360,7 +34287,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start host ähnelt. + /// Looks up a localized string similar to Start host. /// public static string START_HOST { get { @@ -33369,7 +34296,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start in Recovery Mode ähnelt. + /// Looks up a localized string similar to Start in Recovery Mode. /// public static string START_IN_RECOVERY_MODE { get { @@ -33378,7 +34305,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start On ähnelt. + /// Looks up a localized string similar to Start On. /// public static string START_ON { get { @@ -33387,7 +34314,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start shut down VMs ähnelt. + /// Looks up a localized string similar to Start shut down VMs. /// public static string START_SHUTDOWN_VMS { get { @@ -33396,7 +34323,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start time ähnelt. + /// Looks up a localized string similar to Start time. /// public static string START_TIME { get { @@ -33405,7 +34332,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start Options ähnelt. + /// Looks up a localized string similar to Start Options. /// public static string START_UP_OPTIONS { get { @@ -33414,7 +34341,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start &Upgrade ähnelt. + /// Looks up a localized string similar to Start &Upgrade. /// public static string START_UPGRADE { get { @@ -33423,7 +34350,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Started ähnelt. + /// Looks up a localized string similar to Started. /// public static string STARTED { get { @@ -33432,7 +34359,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Started VM in recovery mode ähnelt. + /// Looks up a localized string similar to Started VM in recovery mode. /// public static string STARTED_IN_RECOVERY_MODE { get { @@ -33441,7 +34368,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Started shut down VMs ähnelt. + /// Looks up a localized string similar to Started shut down VMs. /// public static string STARTED_SHUTDOWN_VMS { get { @@ -33450,7 +34377,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting VM in recovery mode ähnelt. + /// Looks up a localized string similar to Starting VM in recovery mode. /// public static string STARTING_IN_RECOVERY_MODE { get { @@ -33459,7 +34386,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting VM {0} in recovery mode ähnelt. + /// Looks up a localized string similar to Starting VM {0} in recovery mode. /// public static string STARTING_IN_RECOVERY_MODE_TITLE { get { @@ -33468,7 +34395,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting shut down VMs ähnelt. + /// Looks up a localized string similar to Starting shut down VMs. /// public static string STARTING_SHUTDOWN_VMS { get { @@ -33477,7 +34404,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting VM ähnelt. + /// Looks up a localized string similar to Starting VM. /// public static string STARTING_VM { get { @@ -33486,7 +34413,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting VM ähnelt. + /// Looks up a localized string similar to Starting VM. /// public static string STARTING_VM_MESSAGEBOX_TITLE { get { @@ -33495,7 +34422,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting VMs ähnelt. + /// Looks up a localized string similar to Starting VMs. /// public static string STARTING_VMS_MESSAGEBOX_TITLE { get { @@ -33504,7 +34431,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die starts with ähnelt. + /// Looks up a localized string similar to starts with. /// public static string STARTS_WITH { get { @@ -33513,7 +34440,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Static maximum ähnelt. + /// Looks up a localized string similar to Static maximum. /// public static string STATIC_MAX { get { @@ -33522,7 +34449,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Status ähnelt. + /// Looks up a localized string similar to Status. /// public static string STATUS { get { @@ -33531,7 +34458,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Canceled ähnelt. + /// Looks up a localized string similar to Canceled. /// public static string STATUS_FILTER_CANCEL { get { @@ -33540,7 +34467,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Complete ähnelt. + /// Looks up a localized string similar to Complete. /// public static string STATUS_FILTER_COMPLETE { get { @@ -33549,7 +34476,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error ähnelt. + /// Looks up a localized string similar to Error. /// public static string STATUS_FILTER_ERROR { get { @@ -33558,7 +34485,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die In progress ähnelt. + /// Looks up a localized string similar to In progress. /// public static string STATUS_FILTER_IN_PROGRESS { get { @@ -33567,7 +34494,25 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enter your MyCitrix credentials (see {0}). These credentials will only be used to authenticate with [Citrix] Insight Services once and will not be stored on this machine or on your server. ähnelt. + /// Looks up a localized string similar to Incomplete. + /// + public static string STATUS_FILTER_INCOMPLETE { + get { + return ResourceManager.GetString("STATUS_FILTER_INCOMPLETE", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Queued. + /// + public static string STATUS_FILTER_QUEUED { + get { + return ResourceManager.GetString("STATUS_FILTER_QUEUED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Enter your MyCitrix credentials (see {0}). These credentials will only be used to authenticate with [Citrix] Insight Services once and will not be stored on this machine or on your server.. /// public static string STATUS_REPORT_ENTER_CREDENTIALS_MESSAGE { get { @@ -33576,7 +34521,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There was an error while packaging the server status report. Only a partial report may be available ähnelt. + /// Looks up a localized string similar to There was an error while packaging the server status report. Only a partial report may be available. /// public static string STATUS_REPORT_ZIP_FAILED { get { @@ -33585,7 +34530,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Stopped ähnelt. + /// Looks up a localized string similar to Stopped. /// public static string STOPPED { get { @@ -33594,7 +34539,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage Adapter ähnelt. + /// Looks up a localized string similar to Storage Adapter. /// public static string STORAGE_ADAPTER { get { @@ -33603,7 +34548,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die 7 (Highest) ähnelt. + /// Looks up a localized string similar to 7 (Highest). /// public static string STORAGE_BEST { get { @@ -33612,7 +34557,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Device Position ähnelt. + /// Looks up a localized string similar to Device Position. /// public static string STORAGE_DEVICE_POSITION { get { @@ -33621,7 +34566,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk ähnelt. + /// Looks up a localized string similar to Disk . /// public static string STORAGE_DISK { get { @@ -33630,7 +34575,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The SR '{0}' is in use on '{1}' and cannot be introduced. You must detach the SR from '{1}' before using it again. ähnelt. + /// Looks up a localized string similar to The SR '{0}' is in use on '{1}' and cannot be introduced. You must detach the SR from '{1}' before using it again.. /// public static string STORAGE_IN_USE { get { @@ -33639,7 +34584,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Device Path ähnelt. + /// Looks up a localized string similar to Device Path. /// public static string STORAGE_PANEL_DEVICE_PATH { get { @@ -33648,7 +34593,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die <unknown> ähnelt. + /// Looks up a localized string similar to <unknown>. /// public static string STORAGE_PANEL_UNKNOWN { get { @@ -33657,7 +34602,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage Pool ähnelt. + /// Looks up a localized string similar to Storage Pool. /// public static string STORAGE_POOL { get { @@ -33666,7 +34611,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Priority ähnelt. + /// Looks up a localized string similar to Priority. /// public static string STORAGE_PRIORITY { get { @@ -33675,7 +34620,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Choose storage provisioning method ähnelt. + /// Looks up a localized string similar to Choose storage provisioning method. /// public static string STORAGE_PROVISIONING_METHOD_TITLE { get { @@ -33684,7 +34629,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage Provisioning Settings ähnelt. + /// Looks up a localized string similar to Storage Provisioning Settings. /// public static string STORAGE_PROVISIONING_SETTINGS { get { @@ -33693,7 +34638,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Read Only ähnelt. + /// Looks up a localized string similar to Read Only. /// public static string STORAGE_READ_ONLY { get { @@ -33702,7 +34647,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die storage repository '{0}' ähnelt. + /// Looks up a localized string similar to storage repository '{0}'. /// public static string STORAGE_REPOSITORY_X { get { @@ -33711,7 +34656,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage Repository ähnelt. + /// Looks up a localized string similar to Storage Repository. /// public static string STORAGE_SR { get { @@ -33720,7 +34665,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage System ähnelt. + /// Looks up a localized string similar to Storage System. /// public static string STORAGE_SYSTEM { get { @@ -33729,7 +34674,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage Repositories ähnelt. + /// Looks up a localized string similar to Storage Repositories. /// public static string STORAGE_TAB_TITLE { get { @@ -33738,7 +34683,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Type ähnelt. + /// Looks up a localized string similar to Type. /// public static string STORAGE_TYPE { get { @@ -33747,7 +34692,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage Volume ähnelt. + /// Looks up a localized string similar to Storage Volume. /// public static string STORAGE_VOLUME { get { @@ -33756,7 +34701,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die 0 (Lowest) ähnelt. + /// Looks up a localized string similar to 0 (Lowest). /// public static string STORAGE_WORST { get { @@ -33765,7 +34710,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} free of {1} ähnelt. + /// Looks up a localized string similar to {0} free of {1}. /// public static string STORAGELINK_POOL_DISK_SPACE { get { @@ -33774,7 +34719,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is a StorageLink Gateway SR that needs to be reattached. ähnelt. + /// Looks up a localized string similar to There is a StorageLink Gateway SR that needs to be reattached.. /// public static string STORAGELINK_SR_NEEDS_REATTACH { get { @@ -33783,7 +34728,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die StorageLink SR status ähnelt. + /// Looks up a localized string similar to StorageLink SR status. /// public static string STORAGELINK_UPGRADE_TEST { get { @@ -33792,7 +34737,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage Pools ähnelt. + /// Looks up a localized string similar to Storage Pools. /// public static string STORAGEPOOLS { get { @@ -33801,7 +34746,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage Volumes ähnelt. + /// Looks up a localized string similar to Storage Volumes. /// public static string STORAGEVOLUMES { get { @@ -33810,7 +34755,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} {1} ähnelt. + /// Looks up a localized string similar to {0} {1}. /// public static string STRING_SPACE_STRING { get { @@ -33819,7 +34764,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die , ähnelt. + /// Looks up a localized string similar to , . /// public static string STRINGIFY_LIST_INNERSEP { get { @@ -33828,7 +34773,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die and ähnelt. + /// Looks up a localized string similar to and . /// public static string STRINGIFY_LIST_LASTSEP { get { @@ -33837,7 +34782,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die succeeded ähnelt. + /// Looks up a localized string similar to succeeded. /// public static string SUCCEEDED { get { @@ -33846,7 +34791,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sunday ähnelt. + /// Looks up a localized string similar to Sunday. /// public static string SUNDAY_LONG { get { @@ -33855,7 +34800,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sun ähnelt. + /// Looks up a localized string similar to Sun. /// public static string SUNDAY_SHORT { get { @@ -33864,7 +34809,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (version {1}) ähnelt. + /// Looks up a localized string similar to {0} (version {1}). /// public static string SUPP_PACK_DESCRIPTION { get { @@ -33873,9 +34818,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to install supplemental pack '{0}' on '{1}'. + /// Looks up a localized string similar to Failed to install supplemental pack '{0}' on '{1}'. /// - ///Refer to the "[XenServer product] Administrator's Guide" for instructions on how to manually install a supplemental pack on a server. ähnelt. + ///Refer to the "[XenServer product] Administrator's Guide" for instructions on how to manually install a supplemental pack on a server.. /// public static string SUPP_PACK_INSTALL_FAILED { get { @@ -33884,7 +34829,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (not installed on {1}) ähnelt. + /// Looks up a localized string similar to {0} (not installed on {1}). /// public static string SUPP_PACK_MISSING_ON { get { @@ -33893,7 +34838,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Temporary virtual disk used for the installation of Supplemental Packs ähnelt. + /// Looks up a localized string similar to Temporary virtual disk used for the installation of Supplemental Packs. /// public static string SUPP_PACK_TEMP_VDI_DESCRIPTION { get { @@ -33902,7 +34847,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die File uploaded to '{0}' ähnelt. + /// Looks up a localized string similar to File uploaded to '{0}'. /// public static string SUPP_PACK_UPLOADED { get { @@ -33911,7 +34856,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uploading file ähnelt. + /// Looks up a localized string similar to Uploading file. /// public static string SUPP_PACK_UPLOADING { get { @@ -33920,7 +34865,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uploading update '{0}' to '{1}' ähnelt. + /// Looks up a localized string similar to Uploading update '{0}' to '{1}'. /// public static string SUPP_PACK_UPLOADING_TO { get { @@ -33929,7 +34874,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (not the same version on all hosts) ähnelt. + /// Looks up a localized string similar to {0} (not the same version on all hosts). /// public static string SUPP_PACK_VERSIONS_DIFFER { get { @@ -33938,7 +34883,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Suspend ähnelt. + /// Looks up a localized string similar to Suspend. /// public static string SUSPEND { get { @@ -33947,7 +34892,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Preparing to suspend and shut down VMs... ähnelt. + /// Looks up a localized string similar to Preparing to suspend and shut down VMs.... /// public static string SUSPEND_SHUTDOWN_VMS_ACTION_DESC { get { @@ -33956,7 +34901,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Suspend specified VMs ähnelt. + /// Looks up a localized string similar to Suspend specified VMs. /// public static string SUSPEND_SPECIFIED_VMS { get { @@ -33965,7 +34910,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Suspend VM ähnelt. + /// Looks up a localized string similar to Suspend VM. /// public static string SUSPEND_VM { get { @@ -33974,7 +34919,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Suspend VMs ähnelt. + /// Looks up a localized string similar to Suspend VMs. /// public static string SUSPEND_VMS { get { @@ -33983,7 +34928,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Suspending VM {0} out of {1} ähnelt. + /// Looks up a localized string similar to Suspending VM {0} out of {1}. /// public static string SUSPENDING_VM_OUT_OF { get { @@ -33992,7 +34937,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Switch to an account with the required role and try again. ähnelt. + /// Looks up a localized string similar to Switch to an account with the required role and try again.. /// public static string SWITCH_ROLE_DESC { get { @@ -34001,7 +34946,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Performing pool database sync ähnelt. + /// Looks up a localized string similar to Performing pool database sync. /// public static string SYNCING_DATABASE { get { @@ -34010,7 +34955,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Tags ähnelt. + /// Looks up a localized string similar to Tags. /// public static string TAGS { get { @@ -34019,7 +34964,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Take Snapshot ähnelt. + /// Looks up a localized string similar to &Take Snapshot. /// public static string TAKE_SNAPSHOT { get { @@ -34028,7 +34973,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Take snapshot is not currently allowed. ähnelt. + /// Looks up a localized string similar to Take snapshot is not currently allowed.. /// public static string TAKE_SNAPSHOT_ERROR { get { @@ -34037,7 +34982,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Target ähnelt. + /// Looks up a localized string similar to Target. /// public static string TARGET { get { @@ -34046,7 +34991,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Target Server ähnelt. + /// Looks up a localized string similar to Target Server. /// public static string TARGET_SERVER { get { @@ -34055,7 +35000,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Tell me more ... ähnelt. + /// Looks up a localized string similar to Tell me more .... /// public static string TELL_ME_MORE { get { @@ -34064,7 +35009,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Temperature (°C) ähnelt. + /// Looks up a localized string similar to Temperature (°C). /// public static string TEMPERATURE { get { @@ -34073,7 +35018,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Template ähnelt. + /// Looks up a localized string similar to Template. /// public static string TEMPLATE { get { @@ -34082,7 +35027,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Template from snapshot '{0}' ähnelt. + /// Looks up a localized string similar to Template from snapshot '{0}'. /// public static string TEMPLATE_FROM_SNAPSHOT_DEFAULT_NAME { get { @@ -34091,7 +35036,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Template General Properties ähnelt. + /// Looks up a localized string similar to Template General Properties. /// public static string TEMPLATE_GENERAL_TAB_TITLE { get { @@ -34100,7 +35045,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Description: {0} ähnelt. + /// Looks up a localized string similar to Description: {0}. /// public static string TEMPLATE_INFO_DESCRIPTION { get { @@ -34109,7 +35054,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk {0}: Size = {1}, SR Type = {2} ähnelt. + /// Looks up a localized string similar to Disk {0}: Size = {1}, SR Type = {2}. /// public static string TEMPLATE_INFO_DISK { get { @@ -34118,7 +35063,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory: {0} ähnelt. + /// Looks up a localized string similar to Memory: {0}. /// public static string TEMPLATE_INFO_MEMORY { get { @@ -34127,7 +35072,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die OS: {0} ähnelt. + /// Looks up a localized string similar to OS: {0}. /// public static string TEMPLATE_INFO_OS { get { @@ -34136,7 +35081,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix VM Tools]: Not present ähnelt. + /// Looks up a localized string similar to [Citrix VM Tools]: Not present. /// public static string TEMPLATE_INFO_TOOLSNOTPRESENT { get { @@ -34145,7 +35090,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix VM Tools]: Out of date (version {0}.{1} installed) ähnelt. + /// Looks up a localized string similar to [Citrix VM Tools]: Out of date (version {0}.{1} installed). /// public static string TEMPLATE_INFO_TOOLSOLD { get { @@ -34154,7 +35099,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix VM Tools]: Up to date ähnelt. + /// Looks up a localized string similar to [Citrix VM Tools]: Up to date. /// public static string TEMPLATE_INFO_TOOLSUPTODATE { get { @@ -34163,7 +35108,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vCPUs: {0} ähnelt. + /// Looks up a localized string similar to vCPUs: {0}. /// public static string TEMPLATE_INFO_VCPUS { get { @@ -34172,7 +35117,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Interface {0}: Network = {1} ähnelt. + /// Looks up a localized string similar to Interface {0}: Network = {1}. /// public static string TEMPLATE_INFO_VIF { get { @@ -34181,7 +35126,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You must install the Linux pack to use this template ähnelt. + /// Looks up a localized string similar to You must install the Linux pack to use this template. /// public static string TEMPLATE_LINUX_PACK_NEEDED { get { @@ -34190,7 +35135,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die <no description> ähnelt. + /// Looks up a localized string similar to <no description>. /// public static string TEMPLATE_NO_DESCRIPTION { get { @@ -34199,7 +35144,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Terminating session for user '{0}' ähnelt. + /// Looks up a localized string similar to Terminating session for user '{0}'. /// public static string TERMINATING_USER_SESSION { get { @@ -34208,7 +35153,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Test archive target location ähnelt. + /// Looks up a localized string similar to Test archive target location. /// public static string TEST_ARCHIVE_LOCATION { get { @@ -34217,7 +35162,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Text ähnelt. + /// Looks up a localized string similar to Text. /// public static string TEXT { get { @@ -34226,7 +35171,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die the snapshot '{0}' ähnelt. + /// Looks up a localized string similar to the snapshot '{0}'. /// public static string THE_SNAPSHOT { get { @@ -34235,7 +35180,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is currently part of the snapshot schedule '{0}' ähnelt. + /// Looks up a localized string similar to This VM is currently part of the snapshot schedule '{0}'. /// public static string THIS_VM_IS_IN_VMSS { get { @@ -34244,7 +35189,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is not currently part of a snapshot schedule ähnelt. + /// Looks up a localized string similar to This VM is not currently part of a snapshot schedule. /// public static string THIS_VM_IS_NOT_IN_VMSS { get { @@ -34253,7 +35198,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die is this week ähnelt. + /// Looks up a localized string similar to is this week. /// public static string THIS_WEEK { get { @@ -34262,7 +35207,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Thursday ähnelt. + /// Looks up a localized string similar to Thursday. /// public static string THURSDAY_LONG { get { @@ -34271,7 +35216,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Thu ähnelt. + /// Looks up a localized string similar to Thu. /// public static string THURSDAY_SHORT { get { @@ -34280,7 +35225,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} day ähnelt. + /// Looks up a localized string similar to {0} day. /// public static string TIME_DAY { get { @@ -34289,7 +35234,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} days ähnelt. + /// Looks up a localized string similar to {0} days. /// public static string TIME_DAYS { get { @@ -34298,7 +35243,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} hour ähnelt. + /// Looks up a localized string similar to {0} hour. /// public static string TIME_HOUR { get { @@ -34307,7 +35252,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} hours ähnelt. + /// Looks up a localized string similar to {0} hours. /// public static string TIME_HOURS { get { @@ -34316,7 +35261,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} minute ähnelt. + /// Looks up a localized string similar to {0} minute. /// public static string TIME_MINUTE { get { @@ -34325,7 +35270,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} minutes ähnelt. + /// Looks up a localized string similar to {0} minutes. /// public static string TIME_MINUTES { get { @@ -34334,7 +35279,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} months ähnelt. + /// Looks up a localized string similar to {0} months. /// public static string TIME_MONTHS { get { @@ -34343,7 +35288,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Negligible ähnelt. + /// Looks up a localized string similar to Negligible. /// public static string TIME_NEGLIGIBLE { get { @@ -34352,7 +35297,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - {1} minutes ähnelt. + /// Looks up a localized string similar to {0} - {1} minutes. /// public static string TIME_RANGE_MINUTES { get { @@ -34361,7 +35306,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - {1} seconds ähnelt. + /// Looks up a localized string similar to {0} - {1} seconds. /// public static string TIME_RANGE_SECONDS { get { @@ -34370,7 +35315,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} seconds ähnelt. + /// Looks up a localized string similar to {0} seconds. /// public static string TIME_SECONDS { get { @@ -34379,7 +35324,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die TimeStamp ähnelt. + /// Looks up a localized string similar to TimeStamp. /// public static string TIMESTAMP { get { @@ -34388,7 +35333,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Title ähnelt. + /// Looks up a localized string similar to Title. /// public static string TITLE { get { @@ -34397,7 +35342,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die is today ähnelt. + /// Looks up a localized string similar to is today. /// public static string TODAY { get { @@ -34406,7 +35351,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtualization ähnelt. + /// Looks up a localized string similar to Virtualization. /// public static string TOOLS_STATUS { get { @@ -34415,7 +35360,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Networks cannot be activated while the VM is suspended ähnelt. + /// Looks up a localized string similar to Networks cannot be activated while the VM is suspended. /// public static string TOOLTIP_ACTIVATE_VIF_SUSPENDED { get { @@ -34424,7 +35369,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Networks cannot be activated on a running VM without tools installed ähnelt. + /// Looks up a localized string similar to Networks cannot be activated on a running VM without tools installed. /// public static string TOOLTIP_ACTIVATE_VIF_TOOLS { get { @@ -34433,7 +35378,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disks cannot be activated or deactivated while the VM is suspended ähnelt. + /// Looks up a localized string similar to Disks cannot be activated or deactivated while the VM is suspended. /// public static string TOOLTIP_DEACTIVATE_SUSPENDED { get { @@ -34442,7 +35387,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die System disks cannot be activated or deactivated while the VM is running ähnelt. + /// Looks up a localized string similar to System disks cannot be activated or deactivated while the VM is running. /// public static string TOOLTIP_DEACTIVATE_SYSVDI { get { @@ -34451,7 +35396,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disks cannot be activated or deactivated from running VMs without [Citrix VM Tools] installed ähnelt. + /// Looks up a localized string similar to Disks cannot be activated or deactivated from running VMs without [Citrix VM Tools] installed. /// public static string TOOLTIP_DEACTIVATE_VDI_NEED_TOOLS { get { @@ -34460,7 +35405,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Networks cannot be deactivated while the VM is suspended ähnelt. + /// Looks up a localized string similar to Networks cannot be deactivated while the VM is suspended. /// public static string TOOLTIP_DEACTIVATE_VIF_SUSPENDED { get { @@ -34469,7 +35414,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Networks cannot be deactivated on a running VM without tools installed ähnelt. + /// Looks up a localized string similar to Networks cannot be deactivated on a running VM without tools installed. /// public static string TOOLTIP_DEACTIVATE_VIF_TOOLS { get { @@ -34478,7 +35423,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disks cannot be deleted while the VM is suspended ähnelt. + /// Looks up a localized string similar to Disks cannot be deleted while the VM is suspended. /// public static string TOOLTIP_DELETE_SUSPENDED { get { @@ -34487,7 +35432,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die System disks cannot be deleted while the VM is running ähnelt. + /// Looks up a localized string similar to System disks cannot be deleted while the VM is running. /// public static string TOOLTIP_DELETE_SYSVDI { get { @@ -34496,7 +35441,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disks cannot be deleted from running VMs without [Citrix VM Tools] installed ähnelt. + /// Looks up a localized string similar to Disks cannot be deleted from running VMs without [Citrix VM Tools] installed. /// public static string TOOLTIP_DELETE_VDI_NEED_TOOLS { get { @@ -34505,7 +35450,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disks cannot be removed while the VM is suspended ähnelt. + /// Looks up a localized string similar to Disks cannot be removed while the VM is suspended. /// public static string TOOLTIP_DETACH_SUSPENDED { get { @@ -34514,7 +35459,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die System disks cannot be detached while the VM is running ähnelt. + /// Looks up a localized string similar to System disks cannot be detached while the VM is running. /// public static string TOOLTIP_DETACH_SYSVDI { get { @@ -34523,7 +35468,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disks must be deactivated before detaching. ähnelt. + /// Looks up a localized string similar to Disks must be deactivated before detaching.. /// public static string TOOLTIP_DETACH_VDI_MUST_DEACTIVATE { get { @@ -34532,7 +35477,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disks cannot be removed from running VMs without [Citrix VM Tools] installed ähnelt. + /// Looks up a localized string similar to Disks cannot be removed from running VMs without [Citrix VM Tools] installed. /// public static string TOOLTIP_DETACH_VDI_NEED_TOOLS { get { @@ -34541,7 +35486,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die I/O drivers must be installed to edit a network on a running VM ähnelt. + /// Looks up a localized string similar to I/O drivers must be installed to edit a network on a running VM. /// public static string TOOLTIP_EDIT_NETWORK_IO_DRIVERS { get { @@ -34550,7 +35495,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix VM Tools] must be installed to edit a network on a running VM ähnelt. + /// Looks up a localized string similar to [Citrix VM Tools] must be installed to edit a network on a running VM. /// public static string TOOLTIP_EDIT_NETWORK_TOOLS { get { @@ -34559,7 +35504,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Default templates support a maximum of {0} networks at VM creation ähnelt. + /// Looks up a localized string similar to Default templates support a maximum of {0} networks at VM creation. /// public static string TOOLTIP_MAX_NETWORKS_FROM_DEFAULT_TEMPLATE { get { @@ -34568,7 +35513,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The maximum number of networks for this template has been reached. ähnelt. + /// Looks up a localized string similar to The maximum number of networks for this template has been reached.. /// public static string TOOLTIP_MAX_NETWORKS_FROM_TEMPLATE { get { @@ -34577,7 +35522,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] only supports {0} NICs per Bond. ähnelt. + /// Looks up a localized string similar to [XenServer] only supports {0} NICs per Bond.. /// public static string TOOLTIP_NICS_PER_BOND_LIMIT { get { @@ -34586,7 +35531,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die I/O drivers must be installed to remove a network on a running VM ähnelt. + /// Looks up a localized string similar to I/O drivers must be installed to remove a network on a running VM. /// public static string TOOLTIP_REMOVE_NETWORK_IO_DRIVERS { get { @@ -34595,7 +35540,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Networks cannot be removed from suspended VMs ähnelt. + /// Looks up a localized string similar to Networks cannot be removed from suspended VMs. /// public static string TOOLTIP_REMOVE_NETWORK_SUSPENDED { get { @@ -34604,7 +35549,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix VM Tools] must be installed to remove a network on a running VM ähnelt. + /// Looks up a localized string similar to [Citrix VM Tools] must be installed to remove a network on a running VM. /// public static string TOOLTIP_REMOVE_NETWORK_TOOLS { get { @@ -34613,7 +35558,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This network cannot be removed because it is a physical device ähnelt. + /// Looks up a localized string similar to This network cannot be removed because it is a physical device. /// public static string TOOLTIP_REMOVE_PIF { get { @@ -34622,7 +35567,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reclaiming freed space not supported on this SR ähnelt. + /// Looks up a localized string similar to Reclaiming freed space not supported on this SR. /// public static string TOOLTIP_SR_TRIM_UNSUPPORTED { get { @@ -34631,7 +35576,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reclaiming freed space not supported on these SRs ähnelt. + /// Looks up a localized string similar to Reclaiming freed space not supported on these SRs. /// public static string TOOLTIP_SR_TRIM_UNSUPPORTED_MULTIPLE { get { @@ -34640,7 +35585,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Views and Saved Searches ähnelt. + /// Looks up a localized string similar to Views and Saved Searches. /// public static string TREESEARCHBOX_DROPDOWN_TOOLTIP { get { @@ -34649,7 +35594,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die True ähnelt. + /// Looks up a localized string similar to True. /// public static string TRUE { get { @@ -34658,7 +35603,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die trusted ähnelt. + /// Looks up a localized string similar to trusted. /// public static string TRUSTED { get { @@ -34667,7 +35612,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Tuesday ähnelt. + /// Looks up a localized string similar to Tuesday. /// public static string TUESDAY_LONG { get { @@ -34676,7 +35621,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Tue ähnelt. + /// Looks up a localized string similar to Tue. /// public static string TUESDAY_SHORT { get { @@ -34685,7 +35630,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Turn HA off ähnelt. + /// Looks up a localized string similar to Turn HA off. /// public static string TURN_HA_OFF { get { @@ -34694,7 +35639,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the network on which the temporary VM (Transfer VM) used to perform the export operation will run. ähnelt. + /// Looks up a localized string similar to Select the network on which the temporary VM (Transfer VM) used to perform the export operation will run.. /// public static string TVM_PAGE_DESCRIPTION_EXPORT { get { @@ -34703,7 +35648,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the network on which the temporary VM (Transfer VM) used to perform the import operation will run. ähnelt. + /// Looks up a localized string similar to Select the network on which the temporary VM (Transfer VM) used to perform the import operation will run.. /// public static string TVM_PAGE_DESCRIPTION_IMPORT { get { @@ -34712,7 +35657,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Transfer VM Settings ähnelt. + /// Looks up a localized string similar to Transfer VM Settings. /// public static string TVM_PAGE_TEXT { get { @@ -34721,7 +35666,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure networking options for the Transfer VM ähnelt. + /// Looks up a localized string similar to Configure networking options for the Transfer VM. /// public static string TVM_PAGE_TITLE { get { @@ -34730,7 +35675,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Type ähnelt. + /// Looks up a localized string similar to Text Files. + /// + public static string TXT_DESCRIPTION { + get { + return ResourceManager.GetString("TXT_DESCRIPTION", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Type. /// public static string TYPE { get { @@ -34739,7 +35693,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import an appliance from an OVF or OVA package. ähnelt. + /// Looks up a localized string similar to Import an appliance from an OVF or OVA package.. /// public static string TYPE_PAGE_DESCRIPTION_HEADER_OVF { get { @@ -34748,7 +35702,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ähnelt. + /// Looks up a localized string similar to . /// public static string TYPE_PAGE_DESCRIPTION_HEADER_VHD { get { @@ -34757,7 +35711,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import a locally stored VM, template or snapshot as a new VM. ähnelt. + /// Looks up a localized string similar to Import a locally stored VM, template or snapshot as a new VM.. /// public static string TYPE_PAGE_DESCRIPTION_HEADER_XVA { get { @@ -34766,7 +35720,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Types ähnelt. + /// Looks up a localized string similar to Types. /// public static string TYPES { get { @@ -34775,7 +35729,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die UEFI Boot ähnelt. + /// Looks up a localized string similar to UEFI Boot. /// public static string UEFI_BOOT { get { @@ -34784,7 +35738,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die UEFI Secure Boot ähnelt. + /// Looks up a localized string similar to UEFI Secure Boot. /// public static string UEFI_SECURE_BOOT { get { @@ -34793,9 +35747,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] was unable to import a saved search from file '{0}'. + /// Looks up a localized string similar to [XenCenter] was unable to import a saved search from file '{0}'. /// - ///Verify that the file is a valid {1} export. ähnelt. + ///Verify that the file is a valid {1} export.. /// public static string UNABLE_TO_IMPORT_SEARCH { get { @@ -34804,7 +35758,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not available ähnelt. + /// Looks up a localized string similar to Not available. /// public static string UNAVAILABLE { get { @@ -34813,7 +35767,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] will uncompress the file to '{0}'. After uncompression the original file '{1}' will be deleted. Continue? ähnelt. + /// Looks up a localized string similar to [XenCenter] will uncompress the file to '{0}'. After uncompression the original file '{1}' will be deleted. Continue?. /// public static string UNCOMPRESS_APPLIANCE_DESCRIPTION { get { @@ -34822,7 +35776,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete ähnelt. + /// Looks up a localized string similar to Delete. /// public static string UNINSTALL { get { @@ -34831,7 +35785,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unknown ähnelt. + /// Looks up a localized string similar to Unknown. /// public static string UNKNOWN { get { @@ -34840,7 +35794,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die <unknown AD user> ähnelt. + /// Looks up a localized string similar to <unknown AD user>. /// public static string UNKNOWN_AD_USER { get { @@ -34849,7 +35803,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die unknown object ähnelt. + /// Looks up a localized string similar to unknown object. /// public static string UNKNOWN_OBJECT { get { @@ -34858,7 +35812,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unlimited ähnelt. + /// Looks up a localized string similar to Unlimited. /// public static string UNLIMITED { get { @@ -34867,7 +35821,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unrecognised plugin version '{0}' ähnelt. + /// Looks up a localized string similar to Unrecognized plug-in version '{0}'. /// public static string UNRECOGNISED_PLUGIN_VERSION { get { @@ -34876,7 +35830,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unsupported SR type ähnelt. + /// Looks up a localized string similar to Unsupported SR type. /// public static string UNSUPPORTED_SR_TYPE { get { @@ -34885,7 +35839,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Untag Ob&ject ähnelt. + /// Looks up a localized string similar to Untag Ob&ject. /// public static string UNTAG { get { @@ -34894,7 +35848,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Untag Ob&jects ähnelt. + /// Looks up a localized string similar to Untag Ob&jects. /// public static string UNTAG_OBJECTS { get { @@ -34903,7 +35857,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Until next restart {0}; after restart {1} ähnelt. + /// Looks up a localized string similar to Until next restart {0}; after restart {1}. /// public static string UNTIL_RESTART_X_AFTER_RESTART_Y { get { @@ -34912,9 +35866,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You have applied filters to the list of updates. Do you want to dismiss all updates from every connected server, or only the updates you have chosen to view? In both cases the dismissed updates will be removed from the servers permanently. + /// Looks up a localized string similar to You have applied filters to the list of updates. Do you want to dismiss all updates from every connected server, or only the updates you have chosen to view? In both cases the dismissed updates will be removed from the servers permanently. /// - ///Note that if RBAC is enabled, only updates which you have privileges to dismiss will be affected. ähnelt. + ///Note that if RBAC is enabled, only updates which you have privileges to dismiss will be affected.. /// public static string UPDATE_DISMISS_ALL_CONTINUE { get { @@ -34923,9 +35877,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This operation will remove permanently all updates from every connected server. Do you want to continue? + /// Looks up a localized string similar to This operation will remove permanently all updates from every connected server. Do you want to continue? /// - ///Note that if RBAC is enabled, only updates which you have privileges to dismiss will be affected. ähnelt. + ///Note that if RBAC is enabled, only updates which you have privileges to dismiss will be affected.. /// public static string UPDATE_DISMISS_ALL_NO_FILTER_CONTINUE { get { @@ -34934,7 +35888,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to dismiss this update? ähnelt. + /// Looks up a localized string similar to Are you sure you want to dismiss this update?. /// public static string UPDATE_DISMISS_CONFIRM { get { @@ -34943,9 +35897,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This operation will remove the selected updates from the servers permanently. Do you want to continue? + /// Looks up a localized string similar to This operation will remove the selected updates from the servers permanently. Do you want to continue? /// - ///Note that if RBAC is enabled, only updates which you have privileges to dismiss will be affected. ähnelt. + ///Note that if RBAC is enabled, only updates which you have privileges to dismiss will be affected.. /// public static string UPDATE_DISMISS_SELECTED_CONFIRM { get { @@ -34954,7 +35908,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to introduce the update. ähnelt. + /// Looks up a localized string similar to Failed to introduce the update.. /// public static string UPDATE_ERROR_INTRODUCE { get { @@ -34963,7 +35917,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You have applied filters to the list of updates. Do you want to export all updates from every connected server, or only the updates you have chosen to view? ähnelt. + /// Looks up a localized string similar to You have applied filters to the list of updates. Do you want to export all updates from every connected server, or only the updates you have chosen to view?. /// public static string UPDATE_EXPORT_ALL_OR_FILTERED { get { @@ -34972,7 +35926,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: This update is not compatible with this server version. ähnelt. + /// Looks up a localized string similar to {0}: This update is not compatible with this server version.. /// public static string UPDATE_FOR_DIFFERENT_XENSERVER_VERSION { get { @@ -34981,7 +35935,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot remove an update which is applied to any servers. ähnelt. + /// Looks up a localized string similar to Cannot remove an update which is applied to any servers.. /// public static string UPDATE_MANAGER_CANNOT_REMOVE_APPLIED_PATCH { get { @@ -34990,7 +35944,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update performance monitoring configuration ähnelt. + /// Looks up a localized string similar to Update performance monitoring configuration. /// public static string UPDATE_PERFMON { get { @@ -34999,7 +35953,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving properties of {0} ähnelt. + /// Looks up a localized string similar to Saving properties of {0}. /// public static string UPDATE_PROPERTIES { get { @@ -35008,7 +35962,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update server unreachable or network connectivity error. Please deselect the updates application checkbox on the previous page and try again. ähnelt. + /// Looks up a localized string similar to Update server unreachable or network connectivity error. Please deselect the updates application checkbox on the previous page and try again.. /// public static string UPDATE_SERVER_NOT_REACHABLE { get { @@ -35017,7 +35971,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Temporary virtual disk used for the installation of an update ähnelt. + /// Looks up a localized string similar to Temporary virtual disk used for the installation of an update. /// public static string UPDATE_TEMP_VDI_DESCRIPTION { get { @@ -35026,7 +35980,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update {0} was successfully installed ähnelt. + /// Looks up a localized string similar to Update {0} was successfully installed. /// public static string UPDATE_WAS_SUCCESSFULLY_INSTALLED { get { @@ -35035,7 +35989,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Up to date ähnelt. + /// Looks up a localized string similar to Up to date. /// public static string UPDATED { get { @@ -35044,7 +35998,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updated performance monitoring configuration ähnelt. + /// Looks up a localized string similar to Updated performance monitoring configuration. /// public static string UPDATED_PERFMON { get { @@ -35053,7 +36007,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saved properties of {0}. ähnelt. + /// Looks up a localized string similar to Saved properties of {0}.. /// public static string UPDATED_PROPERTIES { get { @@ -35062,7 +36016,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updates ähnelt. + /// Looks up a localized string similar to Updates. /// public static string UPDATES { get { @@ -35071,7 +36025,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Automatically check for [XenServer] or [XenCenter] updates ähnelt. + /// Looks up a localized string similar to Automatically check for [XenServer] or [XenCenter] updates. /// public static string UPDATES_DESC { get { @@ -35080,8 +36034,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die For the update to take effect after application, the following action is required: - /// ähnelt. + /// Looks up a localized string similar to For the update to take effect after application, the following action is required: + /// . /// public static string UPDATES_DIALOG_ACTION_REQUIRED { get { @@ -35090,7 +36044,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - installed ({1}) ähnelt. + /// Looks up a localized string similar to {0} - installed ({1}). /// public static string UPDATES_DIALOG_APPLIED { get { @@ -35099,7 +36053,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fully installed ähnelt. + /// Looks up a localized string similar to Fully installed. /// public static string UPDATES_DIALOG_FULLY_APPLIED_PROMPT { get { @@ -35108,7 +36062,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - not installed ähnelt. + /// Looks up a localized string similar to {0} - not installed. /// public static string UPDATES_DIALOG_NOT_APPLIED { get { @@ -35117,7 +36071,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not applied. Click here to apply ähnelt. + /// Looks up a localized string similar to Not applied. Click here to apply. /// public static string UPDATES_DIALOG_NOT_APPLIED_PROMPT { get { @@ -35126,7 +36080,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Partially installed. Click here to re-apply ähnelt. + /// Looks up a localized string similar to Partially installed. Click here to re-apply. /// public static string UPDATES_DIALOG_PARTIALLY_APPLIED_PROMPT { get { @@ -35135,7 +36089,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pending updates. Click here to apply ähnelt. + /// Looks up a localized string similar to Pending updates. Click here to apply. /// public static string UPDATES_DIALOG_PENDING_UPDATES_PROMPT { get { @@ -35144,7 +36098,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die After applying this update, all servers must be restarted. ähnelt. + /// Looks up a localized string similar to After applying this update, all servers must be restarted.. /// public static string UPDATES_DIALOG_RESTART_ALL_HOSTS { get { @@ -35153,7 +36107,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die After installing this update, all Windows VMs must be restarted. ähnelt. + /// Looks up a localized string similar to After installing this update, all Windows VMs must be restarted.. /// public static string UPDATES_DIALOG_RESTART_ALL_HVM_VMS { get { @@ -35162,7 +36116,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die After applying this update, all Linux VMs must be restarted. ähnelt. + /// Looks up a localized string similar to After applying this update, all Linux VMs must be restarted.. /// public static string UPDATES_DIALOG_RESTART_ALL_PV_VMS { get { @@ -35171,7 +36125,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die After installing this update, all VMs must be restarted. ähnelt. + /// Looks up a localized string similar to After installing this update, all VMs must be restarted.. /// public static string UPDATES_DIALOG_RESTART_ALL_VMS { get { @@ -35180,7 +36134,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die After installing this update, server '{0}' must be restarted. ähnelt. + /// Looks up a localized string similar to After installing this update, server '{0}' must be restarted.. /// public static string UPDATES_DIALOG_RESTART_HOST { get { @@ -35189,7 +36143,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die After installing this update, all Windows VMs on server '{0}' must be restarted. ähnelt. + /// Looks up a localized string similar to After installing this update, all Windows VMs on server '{0}' must be restarted.. /// public static string UPDATES_DIALOG_RESTART_HVM_VMS_ON_HOST { get { @@ -35198,7 +36152,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die After installing this update, all VMs on server '{0}' must be restarted. ähnelt. + /// Looks up a localized string similar to After installing this update, all VMs on server '{0}' must be restarted.. /// public static string UPDATES_DIALOG_RESTART_PV_VMS_ON_HOST { get { @@ -35207,7 +36161,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die After installing this update, all VMs on server '{0}' must be restarted. ähnelt. + /// Looks up a localized string similar to After installing this update, all VMs on server '{0}' must be restarted.. /// public static string UPDATES_DIALOG_RESTART_VMS_ON_HOST { get { @@ -35216,7 +36170,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Download and Install ähnelt. + /// Looks up a localized string similar to Download and Install. /// public static string UPDATES_DOWNLOAD_AND_INSTALL { get { @@ -35225,7 +36179,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Download [XenCenter] ähnelt. + /// Looks up a localized string similar to Download [XenCenter]. /// public static string UPDATES_DOWNLOAD_REQUIRED_XENCENTER { get { @@ -35234,7 +36188,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Install Update ähnelt. + /// Looks up a localized string similar to Install Update. /// public static string UPDATES_WIZARD { get { @@ -35243,7 +36197,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Actions for server '{0}' ähnelt. + /// Looks up a localized string similar to Actions for server '{0}'. /// public static string UPDATES_WIZARD_ACTIONS_FOR_HOST { get { @@ -35252,7 +36206,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Installed update ähnelt. + /// Looks up a localized string similar to Installed update. /// public static string UPDATES_WIZARD_APPLIED_UPDATE { get { @@ -35261,7 +36215,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The update failed to apply. Would you like to view the output? ähnelt. + /// Looks up a localized string similar to The update failed to apply. Would you like to view the output?. /// public static string UPDATES_WIZARD_APPLY_FAILED { get { @@ -35270,7 +36224,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Install update ähnelt. + /// Looks up a localized string similar to &Install update. /// public static string UPDATES_WIZARD_APPLY_UPDATE { get { @@ -35279,7 +36233,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Installing update {0} on {1}... ähnelt. + /// Looks up a localized string similar to Installing update {0} on {1}... . /// public static string UPDATES_WIZARD_APPLYING_UPDATE { get { @@ -35288,7 +36242,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Installing update on {0} servers... ähnelt. + /// Looks up a localized string similar to Installing update on {0} servers.... /// public static string UPDATES_WIZARD_APPLYING_UPDATE_MULTIPLE_HOSTS { get { @@ -35297,7 +36251,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Check skipped because the '{1}' storage repository is broken. ähnelt. + /// Looks up a localized string similar to {0}: Check skipped because the '{1}' storage repository is broken.. /// public static string UPDATES_WIZARD_BROKEN_SR_WARNING { get { @@ -35306,7 +36260,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: The '{1}' storage repository is broken. ähnelt. + /// Looks up a localized string similar to {0}: The '{1}' storage repository is broken.. /// public static string UPDATES_WIZARD_BROKEN_STORAGE { get { @@ -35315,7 +36269,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Cannot migrate VM '{1}' ähnelt. + /// Looks up a localized string similar to {0}: Cannot migrate VM '{1}'. /// public static string UPDATES_WIZARD_CANNOT_MIGRATE_VM { get { @@ -35324,7 +36278,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Cannot migrate VM '{1}' due to license restrictions. ähnelt. + /// Looks up a localized string similar to {0}: Cannot migrate VM '{1}' due to license restrictions on the server.. /// public static string UPDATES_WIZARD_CANNOT_MIGRATE_VM_LICENSE_REASON { get { @@ -35333,7 +36287,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Cannot migrate VM '{1}', because it has a virtual GPU attached and there is no suitable GPU available on other servers. ähnelt. + /// Looks up a localized string similar to {0}: Cannot migrate VM '{1}', because it has a virtual GPU attached and there is no suitable GPU available on other servers.. /// public static string UPDATES_WIZARD_CANNOT_MIGRATE_VM_NO_GPU { get { @@ -35342,7 +36296,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Cannot migrate VM '{1}', because it doesn't have up-to-date drivers installed. ähnelt. + /// Looks up a localized string similar to {0}: Cannot migrate VM '{1}', because it doesn't have up-to-date drivers installed.. /// public static string UPDATES_WIZARD_CANNOT_MIGRATE_VM_NO_TOOLS { get { @@ -35351,7 +36305,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Cannot migrate VM '{1}', because it is involved in another operation currently in progress. ähnelt. + /// Looks up a localized string similar to {0}: Cannot migrate VM '{1}', because it is involved in another operation currently in progress.. /// public static string UPDATES_WIZARD_CANNOT_MIGRATE_VM_OPERATION_IN_PROGRESS { get { @@ -35360,7 +36314,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Cannot migrate VM '{1}', because it has one or more PCI devices attached. ähnelt. + /// Looks up a localized string similar to {0}: Cannot migrate VM '{1}', because it has one or more PCI devices attached.. /// public static string UPDATES_WIZARD_CANNOT_MIGRATE_VM_PCI_REASON { get { @@ -35369,7 +36323,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Cannot migrate VM '{1}', because it cannot be suspended. ähnelt. + /// Looks up a localized string similar to {0}: Cannot migrate VM '{1}', because it cannot be suspended.. /// public static string UPDATES_WIZARD_CANNOT_MIGRATE_VM_SUSPEND_REASON { get { @@ -35378,7 +36332,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Cannot migrate VM '{1}' for an unknown reason. See application logs for more details. ähnelt. + /// Looks up a localized string similar to {0}: Cannot migrate VM '{1}' for an unknown reason. See application logs for more details.. /// public static string UPDATES_WIZARD_CANNOT_MIGRATE_VM_UNKNOWN_REASON { get { @@ -35387,7 +36341,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: The VM '{1}' uses the network '{2}', which cannot be seen from all servers. ähnelt. + /// Looks up a localized string similar to {0}: The VM '{1}' uses the network '{2}', which cannot be seen from all servers.. /// public static string UPDATES_WIZARD_CANNOT_SEE_NETWORK { get { @@ -35396,7 +36350,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No longer connected to '{0}'. Please review your selection and try again. ähnelt. + /// Looks up a localized string similar to No longer connected to '{0}'. Please review your selection and try again.. /// public static string UPDATES_WIZARD_DISCONNECTED_SERVER { get { @@ -35405,7 +36359,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Click here to eject CD ähnelt. + /// Looks up a localized string similar to Click here to eject CD. /// public static string UPDATES_WIZARD_EJECT_CD { get { @@ -35414,7 +36368,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die '{0}' is entering maintenance mode... ähnelt. + /// Looks up a localized string similar to '{0}' is entering maintenance mode.... /// public static string UPDATES_WIZARD_ENTERING_MAINTENANCE_MODE { get { @@ -35423,7 +36377,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die '{0}' is exiting maintenance mode... ähnelt. + /// Looks up a localized string similar to '{0}' is exiting maintenance mode.... /// public static string UPDATES_WIZARD_EXITING_MAINTENANCE_MODE { get { @@ -35432,7 +36386,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Extract {0} ähnelt. + /// Looks up a localized string similar to Extract {0}. /// public static string UPDATES_WIZARD_EXTRACT_ACTION_TITLE { get { @@ -35441,9 +36395,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to find the update file '{0}'. + /// Looks up a localized string similar to Unable to find the update file '{0}'. /// - ///Check your settings and try again. ähnelt. + ///Check your settings and try again.. /// public static string UPDATES_WIZARD_FILE_NOT_FOUND { get { @@ -35452,7 +36406,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool '{0}' cannot have HA enabled. ähnelt. + /// Looks up a localized string similar to Pool '{0}' cannot have HA enabled.. /// public static string UPDATES_WIZARD_HA_ON_DESCRIPTION { get { @@ -35461,7 +36415,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die HA is enabled on '{0}' ähnelt. + /// Looks up a localized string similar to HA is enabled on '{0}'. /// public static string UPDATES_WIZARD_HA_ON_TITLE { get { @@ -35470,7 +36424,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Check skipped because HA is enabled on pool {1}. ähnelt. + /// Looks up a localized string similar to {0}: Check skipped because HA is enabled on pool {1}.. /// public static string UPDATES_WIZARD_HA_ON_WARNING { get { @@ -35479,7 +36433,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Click here to exit maintenance mode ähnelt. + /// Looks up a localized string similar to Click here to exit maintenance mode. /// public static string UPDATES_WIZARD_HOST_EXIT_MAINTENANCE_MODE { get { @@ -35488,7 +36442,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server {0} will be put into maintenance mode when required. You must start with all servers enabled. ähnelt. + /// Looks up a localized string similar to Server {0} will be put into maintenance mode when required. You must start with all servers enabled.. /// public static string UPDATES_WIZARD_HOST_MAINTENANCE_MODE { get { @@ -35497,7 +36451,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' ähnelt. + /// Looks up a localized string similar to Server '{0}'. /// public static string UPDATES_WIZARD_HOST_MAINTENANCE_MODE_TITLE { get { @@ -35506,7 +36460,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Server is unreachable. ähnelt. + /// Looks up a localized string similar to {0}: Server is unreachable.. /// public static string UPDATES_WIZARD_HOST_NOT_LIVE { get { @@ -35515,7 +36469,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server '{0}' unreachable ähnelt. + /// Looks up a localized string similar to Server '{0}' unreachable. /// public static string UPDATES_WIZARD_HOST_NOT_LIVE_TITLE { get { @@ -35524,7 +36478,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Check skipped because the server is unreachable. ähnelt. + /// Looks up a localized string similar to {0}: Check skipped because the server is unreachable.. /// public static string UPDATES_WIZARD_HOST_NOT_LIVE_WARNING { get { @@ -35533,7 +36487,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The selected file does not have a valid extension. Valid extensions are *.{0}, *.zip and *.iso. ähnelt. + /// Looks up a localized string similar to The selected file does not have a valid extension. Valid extensions are *.{0}, *.zip and *.iso.. /// public static string UPDATES_WIZARD_INVALID_EXTENSION { get { @@ -35542,9 +36496,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This is not a valid update file. + /// Looks up a localized string similar to This is not a valid update file. /// - ///Please check your settings and try again. ähnelt. + ///Please check your settings and try again.. /// public static string UPDATES_WIZARD_INVALID_FILE { get { @@ -35553,7 +36507,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: VM '{1}' has a local CD/DVD in its drive. ähnelt. + /// Looks up a localized string similar to The selected ISO file is corrupt or contains invalid data.. /// public static string UPDATES_WIZARD_INVALID_ISO_FILE { get { @@ -35571,7 +36525,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: The VM '{1}' uses local storage and cannot be migrated. ähnelt. + /// Looks up a localized string similar to {0}: The VM '{1}' uses local storage and cannot be migrated.. /// public static string UPDATES_WIZARD_LOCAL_STORAGE { get { @@ -35580,7 +36534,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Check skipped because the pool is partially upgraded. ähnelt. + /// Looks up a localized string similar to {0}: Check skipped because the pool is partially upgraded.. /// public static string UPDATES_WIZARD_MIXED_POOL_SERVER_SELECTION_WARNING { get { @@ -35589,7 +36543,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] version {0} or newer is required. ähnelt. + /// Looks up a localized string similar to [XenCenter] version {0} or newer is required.. /// public static string UPDATES_WIZARD_NEWER_XENCENTER_REQUIRED { get { @@ -35598,7 +36552,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ensure you have upgraded [XenCenter] before upgrading [XenServer]. ähnelt. + /// Looks up a localized string similar to Ensure you have upgraded [XenCenter] before upgrading [XenServer].. /// public static string UPDATES_WIZARD_NEWER_XENCENTER_WARNING { get { @@ -35607,7 +36561,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No further action is required for this update. ähnelt. + /// Looks up a localized string similar to No further action is required for this update.. /// public static string UPDATES_WIZARD_NO_ACTION { get { @@ -35616,7 +36570,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: There are no servers available to migrate the VM '{1}' to. ähnelt. + /// Looks up a localized string similar to {0}: There are no servers available to migrate the VM '{1}' to.. /// public static string UPDATES_WIZARD_NO_HOSTS { get { @@ -35625,7 +36579,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: There is not enough memory available on other servers to migrate all the VMs off this server. ähnelt. + /// Looks up a localized string similar to {0}: There is not enough memory available on other servers to migrate all the VMs off this server.. /// public static string UPDATES_WIZARD_NO_MEMORY { get { @@ -35634,7 +36588,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: This server does not need to be rebooted. ähnelt. + /// Looks up a localized string similar to {0}: This server does not need to be rebooted.. /// public static string UPDATES_WIZARD_NO_REBOOT_NEEDED { get { @@ -35643,7 +36597,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: This server does not need to be rebooted because live patching is used. ähnelt. + /// Looks up a localized string similar to {0}: This server does not need to be rebooted because live patching is used.. /// public static string UPDATES_WIZARD_NO_REBOOT_NEEDED_LIVE_PATCH { get { @@ -35652,7 +36606,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: The VM {1} does not have [Citrix VM Tools] installed. ähnelt. + /// Looks up a localized string similar to {0}: The VM {1} does not have [Citrix VM Tools] installed.. /// public static string UPDATES_WIZARD_NO_TOOLS { get { @@ -35661,7 +36615,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: The VM {1} cannot be suspended until it has up to date [Citrix VM Tools]. ähnelt. + /// Looks up a localized string similar to {0}: The VM {1} cannot be suspended until it has up to date [Citrix VM Tools].. /// public static string UPDATES_WIZARD_OUT_OF_DATE_TOOLS { get { @@ -35670,7 +36624,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the checkboxes for each server you want to update. Select a pool checkbox to select all the available servers in the pool. ähnelt. + /// Looks up a localized string similar to Select the checkboxes for each server you want to update. Select a pool checkbox to select all the available servers in the pool.. /// public static string UPDATES_WIZARD_PAGE1_TOPTEXT { get { @@ -35679,7 +36633,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: The update has already been applied to this server. This server will be skipped. ähnelt. + /// Looks up a localized string similar to {0}: The update has already been applied to this server. This server will be skipped.. /// public static string UPDATES_WIZARD_PATCH_ALREADY_APPLIED { get { @@ -35688,7 +36642,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update already applied to server '{0}' ähnelt. + /// Looks up a localized string similar to Update already applied to server '{0}'. /// public static string UPDATES_WIZARD_PATCH_ALREADY_APPLIED_TITLE { get { @@ -35697,7 +36651,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An error occurred trying to carry out plan stage '{0}'. The error was '{1}' ähnelt. + /// Looks up a localized string similar to An error occurred trying to carry out plan stage '{0}'. The error was '{1}'. /// public static string UPDATES_WIZARD_PLAN_ERROR { get { @@ -35706,7 +36660,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An error occurred during pre-update checks. The results may not be reliable. ähnelt. + /// Looks up a localized string similar to An error occurred during pre-update checks. The results may not be reliable.. /// public static string UPDATES_WIZARD_PRECHECK_ERROR { get { @@ -35715,7 +36669,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: {1} ähnelt. + /// Looks up a localized string similar to {0}: {1}. /// public static string UPDATES_WIZARD_PRECHECK_FAILED { get { @@ -35724,7 +36678,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Conflicting update(s) are present: {1} ähnelt. + /// Looks up a localized string similar to {0}: Conflicting update(s) are present: {1}. /// public static string UPDATES_WIZARD_PRECHECK_FAILED_CONFLICTING_UPDATE { get { @@ -35733,7 +36687,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Prerequisite update(s) are missing: {1} ähnelt. + /// Looks up a localized string similar to {0}: Prerequisite update(s) are missing: {1}. /// public static string UPDATES_WIZARD_PRECHECK_FAILED_REQUIRED_UPDATE_MISSING { get { @@ -35742,7 +36696,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update precheck failed on server '{0}' ähnelt. + /// Looks up a localized string similar to Update pre-check failed on server '{0}'. /// public static string UPDATES_WIZARD_PRECHECK_FAILED_TITLE { get { @@ -35751,7 +36705,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reboot ähnelt. + /// Looks up a localized string similar to Reboot. /// public static string UPDATES_WIZARD_REBOOT { get { @@ -35760,7 +36714,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: This server needs to be rebooted after the update is applied. ähnelt. + /// Looks up a localized string similar to {0}: This server needs to be rebooted after the update is applied.. /// public static string UPDATES_WIZARD_REBOOT_NEEDED { get { @@ -35769,7 +36723,25 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooted ähnelt. + /// Looks up a localized string similar to {0}: This server needs to be rebooted after the update is applied, because live patching is disabled.. + /// + public static string UPDATES_WIZARD_REBOOT_NEEDED_LIVEPATCH_DISABLED { + get { + return ResourceManager.GetString("UPDATES_WIZARD_REBOOT_NEEDED_LIVEPATCH_DISABLED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}: This server needs to be rebooted after the update is applied, because it is not licensed for live patching.. + /// + public static string UPDATES_WIZARD_REBOOT_NEEDED_LIVEPATCH_RESTRICTED { + get { + return ResourceManager.GetString("UPDATES_WIZARD_REBOOT_NEEDED_LIVEPATCH_RESTRICTED", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Rebooted. /// public static string UPDATES_WIZARD_REBOOTED { get { @@ -35778,7 +36750,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Rebooting {0}... ähnelt. + /// Looks up a localized string similar to Rebooting {0}.... /// public static string UPDATES_WIZARD_REBOOTING { get { @@ -35787,7 +36759,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting update installation file {0} from {1}... ähnelt. + /// Looks up a localized string similar to Deleting update installation file {0} from {1}... . /// public static string UPDATES_WIZARD_REMOVING_UPDATE { get { @@ -35796,7 +36768,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Removing update file {0}... ähnelt. + /// Looks up a localized string similar to Removing update file {0}.... /// public static string UPDATES_WIZARD_REMOVING_UPDATES_FROM_POOL { get { @@ -35805,7 +36777,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Click here to repair ähnelt. + /// Looks up a localized string similar to Click here to repair. /// public static string UPDATES_WIZARD_REPAIR_SR { get { @@ -35814,7 +36786,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restart toolstack ähnelt. + /// Looks up a localized string similar to Restart toolstack. /// public static string UPDATES_WIZARD_RESTART_AGENT { get { @@ -35823,8 +36795,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reboot these servers: - /// ähnelt. + /// Looks up a localized string similar to Reboot these servers: + ///. /// public static string UPDATES_WIZARD_RESTART_SERVERS { get { @@ -35833,8 +36805,8 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reboot these VMs: - /// ähnelt. + /// Looks up a localized string similar to Reboot these VMs: + ///. /// public static string UPDATES_WIZARD_RESTART_VMS { get { @@ -35843,7 +36815,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restarted toolstack ähnelt. + /// Looks up a localized string similar to Restarted toolstack. /// public static string UPDATES_WIZARD_RESTARTED_AGENT { get { @@ -35852,7 +36824,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Restarting toolstack in {0} ... ähnelt. + /// Looks up a localized string similar to Restarting toolstack in {0} ... . /// public static string UPDATES_WIZARD_RESTARTING_AGENT { get { @@ -35861,7 +36833,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Click here to resume this VM ähnelt. + /// Looks up a localized string similar to Click here to resume this VM. /// public static string UPDATES_WIZARD_RESUME_VM { get { @@ -35870,7 +36842,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Precheck for {0} in {1}... ähnelt. + /// Looks up a localized string similar to Pre-check for {0} in {1}.... /// public static string UPDATES_WIZARD_RUNNING_PRECHECK { get { @@ -35879,7 +36851,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: The update needs to be applied on all servers in the pool. ähnelt. + /// Looks up a localized string similar to {0}: The update needs to be applied on all servers in the pool.. /// public static string UPDATES_WIZARD_SERVER_SELECTION_PROBLEM { get { @@ -35888,7 +36860,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Skipping update {0}. Already applied on {1}... ähnelt. + /// Looks up a localized string similar to Skipping update {0}. Already applied on {1}... . /// public static string UPDATES_WIZARD_SKIPPING_UPDATE { get { @@ -35897,7 +36869,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Skipping uploading update {0}. Already uploaded to {1}... ähnelt. + /// Looks up a localized string similar to Skipping uploading update {0}. Already uploaded to {1}... . /// public static string UPDATES_WIZARD_SKIPPING_UPLOAD { get { @@ -35906,7 +36878,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Storage repository '{0}' ähnelt. + /// Looks up a localized string similar to Storage repository '{0}'. /// public static string UPDATES_WIZARD_SR_TITLE { get { @@ -35915,7 +36887,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: VM '{1}' has the tools CD in its drive. ähnelt. + /// Looks up a localized string similar to {0}: VM '{1}' has the tools CD in its drive.. /// public static string UPDATES_WIZARD_TOOLS_CD { get { @@ -35924,7 +36896,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uploading update {0} to {1}... ähnelt. + /// Looks up a localized string similar to Uploading update {0} to {1}.... /// public static string UPDATES_WIZARD_UPLOADING_UPDATE { get { @@ -35933,7 +36905,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: The VM '{1}' has one or more virtual GPUs. ähnelt. + /// Looks up a localized string similar to {0}: The VM '{1}' has one or more virtual GPUs.. /// public static string UPDATES_WIZARD_VM_HAS_VGPU { get { @@ -35942,7 +36914,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Check skipped because WLB is enabled on pool {1}. ähnelt. + /// Looks up a localized string similar to {0}: Check skipped because WLB is enabled on pool {1}.. /// public static string UPDATES_WIZARD_WLB_ON_WARNING { get { @@ -35951,7 +36923,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Updating performance monitoring configuration ähnelt. + /// Looks up a localized string similar to Updating performance monitoring configuration. /// public static string UPDATING_PERFMON { get { @@ -35960,7 +36932,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving properties... ähnelt. + /// Looks up a localized string similar to Saving properties.... /// public static string UPDATING_PROPERTIES { get { @@ -35969,7 +36941,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade host {0} ähnelt. + /// Looks up a localized string similar to Upgrade host {0}. /// public static string UPGRADE_HOST { get { @@ -35978,7 +36950,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade master {0} ähnelt. + /// Looks up a localized string similar to Upgrade master {0}. /// public static string UPGRADE_MASTER { get { @@ -35987,7 +36959,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Apply Upgrade ähnelt. + /// Looks up a localized string similar to Apply Upgrade. /// public static string UPGRADE_PLAN { get { @@ -35996,7 +36968,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade pool {0} ähnelt. + /// Looks up a localized string similar to Upgrade pool {0}. /// public static string UPGRADE_POOL { get { @@ -36005,7 +36977,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade pool master '{0}' ähnelt. + /// Looks up a localized string similar to Upgrade pool master '{0}'. /// public static string UPGRADE_POOL_MASTER { get { @@ -36014,7 +36986,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Prechecks ähnelt. + /// Looks up a localized string similar to Pre-checks. /// public static string UPGRADE_PRECHECKS_TEXT { get { @@ -36023,7 +36995,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Perform upgrade prechecks on selected pools ähnelt. + /// Looks up a localized string similar to Perform upgrade pre-checks on selected pools. /// public static string UPGRADE_PRECHECKS_TITLE { get { @@ -36032,7 +37004,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade server '{0} ähnelt. + /// Looks up a localized string similar to Upgrade server '{0}. /// public static string UPGRADE_SERVER { get { @@ -36041,7 +37013,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade '{0}' ähnelt. + /// Looks up a localized string similar to Upgrade '{0}'. /// public static string UPGRADE_SLAVE { get { @@ -36050,7 +37022,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Apply Upgrade ähnelt. + /// Looks up a localized string similar to Apply Upgrade. /// public static string UPGRADEWIZARD_PATCHING_TEXT { get { @@ -36059,7 +37031,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Applying the upgrade to the pool. ähnelt. + /// Looks up a localized string similar to Applying the upgrade to the pool.. /// public static string UPGRADEWIZARD_PATCHING_TITLE { get { @@ -36068,7 +37040,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade Prechecks ähnelt. + /// Looks up a localized string similar to Upgrade Pre-checks. /// public static string UPGRADEWIZARD_PRECHECK_TEXT { get { @@ -36077,7 +37049,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Problems encountered when performing upgrade prechecks. ähnelt. + /// Looks up a localized string similar to Problems encountered when performing upgrade pre-checks.. /// public static string UPGRADEWIZARD_PRECHECK_TITLE { get { @@ -36086,7 +37058,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Error encountered when checking ability to download updates. ähnelt. + /// Looks up a localized string similar to Error encountered when checking ability to download updates.. /// public static string UPGRADEWIZARD_PROBLEM_CFU_STATUS { get { @@ -36095,7 +37067,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Hosts in pool '{0}' have incompatible CPUs ähnelt. + /// Looks up a localized string similar to Hosts in pool '{0}' have incompatible CPUs. /// public static string UPGRADEWIZARD_PROBLEM_INCOMPATIBLE_CPUS { get { @@ -36104,7 +37076,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut down all VMs ähnelt. + /// Looks up a localized string similar to Shut down all VMs. /// public static string UPGRADEWIZARD_PROBLEM_INCOMPATIBLE_CPUS_HELPMESSAGE { get { @@ -36113,7 +37085,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: VM '{1}' has invalid vCPU settings. ähnelt. + /// Looks up a localized string similar to {0}: VM '{1}' has invalid vCPU settings.. /// public static string UPGRADEWIZARD_PROBLEM_INVALID_VCPU_SETTINGS { get { @@ -36122,7 +37094,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fix vCPU configuration ähnelt. + /// Looks up a localized string similar to Fix vCPU configuration. /// public static string UPGRADEWIZARD_PROBLEM_INVALID_VCPU_SETTINGS_HELPMESSAGE { get { @@ -36131,7 +37103,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the servers you want to upgrade. ähnelt. + /// Looks up a localized string similar to Select the servers you want to upgrade.. /// public static string UPGRADEWIZARD_SELECTSERVERS_TITLE { get { @@ -36140,7 +37112,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Check skipped because hosts in pool '{1}' have incompatible CPUs ähnelt. + /// Looks up a localized string similar to {0}: Check skipped because hosts in pool '{1}' have incompatible CPUs. /// public static string UPGRADEWIZARD_WARNING_INCOMPATIBLE_CPUS { get { @@ -36149,7 +37121,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Completed ähnelt. + /// Looks up a localized string similar to Completed. /// public static string UPLOAD_PATCH_UPLOADED_DESCRIPTION { get { @@ -36158,7 +37130,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uploading update {0}... ähnelt. + /// Looks up a localized string similar to Uploading update {0}.... /// public static string UPLOAD_PATCH_UPLOADING_DESCRIPTION { get { @@ -36167,7 +37139,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uploading update {0} ({1} of {2})... ähnelt. + /// Looks up a localized string similar to Uploading update {0} ({1} of {2}).... /// public static string UPLOAD_PATCH_UPLOADING_PROGRESS_DESCRIPTION { get { @@ -36176,7 +37148,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uploading update '{0}' to '{1}' ({2} of {3})... ähnelt. + /// Looks up a localized string similar to Uploading update '{0}' to '{1}' ({2} of {3}).... /// public static string UPLOAD_PATCH_UPLOADING_TO_SR_PROGRESS_DESCRIPTION { get { @@ -36185,7 +37157,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uploading Update... ähnelt. + /// Looks up a localized string similar to Uploading Update.... /// public static string UPLOADING_PATCH { get { @@ -36194,7 +37166,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uploading - {0}% ähnelt. + /// Looks up a localized string similar to Uploading - {0}%. /// public static string UPLOADING_PATCH_PROGRESS { get { @@ -36203,7 +37175,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uploading to server '{0}'... ähnelt. + /// Looks up a localized string similar to Uploading to server '{0}'.... /// public static string UPLOADING_PATCH_TO { get { @@ -36212,7 +37184,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable Active Directory. Active Directory allows you to configure [XenServer] access control by adding named user accounts. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable Active Directory. Active Directory allows you to configure [XenServer] access control by adding named user accounts.. /// public static string UPSELL_BLURB_AD { get { @@ -36221,7 +37193,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable Alerting and Reporting capabilities. Email based performance and error alerting will proactively notify administrators of error conditions or performance problems before they affect critical services. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable Alerting and Reporting capabilities. Email based performance and error alerting will proactively notify administrators of error conditions or performance problems before they affect critical services.. /// public static string UPSELL_BLURB_ALERTS { get { @@ -36230,7 +37202,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable VM live migration. This feature enables you to migrate running VMs on shared or local storage between servers in the same pool or across pools with no VM downtime. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable the Conversion Manager. This feature helps you migrate workloads from VMware to [XenServer] by moving batches of VMware virtual machines to your [XenServer] environment.. + /// + public static string UPSELL_BLURB_CONVERSION { + get { + return ResourceManager.GetString("UPSELL_BLURB_CONVERSION", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Upgrade your server license to enable VM live migration. This feature enables you to migrate running VMs on shared or local storage between servers in the same pool or across pools with no VM downtime. . /// public static string UPSELL_BLURB_CPM { get { @@ -36239,7 +37220,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable Heterogeneous Pools. Heterogeneous Pools allows hosts with different CPUs to form a resource pool, and allows virtual machines to migrate between them. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable Heterogeneous Pools. Heterogeneous Pools allows hosts with different CPUs to form a resource pool, and allows virtual machines to migrate between them.. /// public static string UPSELL_BLURB_CPUMASKING { get { @@ -36248,7 +37229,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable Dynamic Memory Control. Dynamic Memory Control allows the server to adjust the memory of live virtual machines, and respond dynamically to changing demands on the server. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable Dynamic Memory Control. Dynamic Memory Control allows the server to adjust the memory of live virtual machines, and respond dynamically to changing demands on the server.. /// public static string UPSELL_BLURB_DMC { get { @@ -36257,7 +37238,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable Disaster Recovery. The Disaster Recovery feature allows you to recover your critical VMs and vApps at your DR site in the event of a disaster at your primary production site. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable Disaster Recovery. The Disaster Recovery feature allows you to recover your critical VMs and vApps at your DR site in the event of a disaster at your primary production site.. /// public static string UPSELL_BLURB_DR { get { @@ -36266,7 +37247,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable StorageLink™ Technology. StorageLink allows the server to leverage all the power of your existing storage hardware and offload storage operations automatically. This allows for high performance and space efficient storage provisioning, cloning, and snapshot capabilities to be handled in hardware using your storage hardware's native features. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable StorageLink™ Technology. StorageLink allows the server to leverage all the power of your existing storage hardware and offload storage operations automatically. This allows for high performance and space efficient storage provisioning, cloning, and snapshot capabilities to be handled in hardware using your storage hardware's native features.. /// public static string UPSELL_BLURB_ENHANCEDSR { get { @@ -36275,7 +37256,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable GPU pass-through. The GPU pass-through feature allows you to assign a dedicated graphics processing unit to a VM for higher graphics performance. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable GPU pass-through. The GPU pass-through feature allows you to assign a dedicated graphics processing unit to a VM for higher graphics performance.. /// public static string UPSELL_BLURB_GPU { get { @@ -36284,7 +37265,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable High Availability. High Availability allows virtual machines to be automatically restarted in the event of an underlying hardware failure or individual VM failure. If the server fails the VMs will be intelligently restarted on other virtualized servers in the resource pool. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable High Availability. High Availability allows virtual machines to be automatically restarted in the event of an underlying hardware failure or individual VM failure. If the server fails the VMs will be intelligently restarted on other virtualized servers in the resource pool.. /// public static string UPSELL_BLURB_HA { get { @@ -36293,7 +37274,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your [XenServer] license to enable VDI live migration. This feature enables you to migrate multiple running VDIs between SRs in the same pool with no VM downtime. ähnelt. + /// Looks up a localized string similar to Upgrade your [XenServer] license to enable VDI live migration. This feature enables you to migrate multiple running VDIs between SRs in the same pool with no VM downtime. . /// public static string UPSELL_BLURB_MIGRATE_VDI { get { @@ -36302,7 +37283,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable Performance Reporting capabilities. Performance Reporting provides guidance on overall environment performance trends and enables you to accurately plan capacity as business needs change. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable Performance Reporting capabilities. Performance Reporting provides guidance on overall environment performance trends and enables you to accurately plan capacity as business needs change.. /// public static string UPSELL_BLURB_PERFORMANCE { get { @@ -36311,7 +37292,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable Role Based Access Control. Using the RBAC feature, you will be able to control access to vital components in your [XenServer] resource pools, with full audit logging capabilities and seamless integration with your current Active Directory setup. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable Role Based Access Control. Using the RBAC feature, you will be able to control access to vital components in your [XenServer] resource pools, with full audit logging capabilities and seamless integration with your current Active Directory setup.. /// public static string UPSELL_BLURB_RBAC { get { @@ -36320,9 +37301,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die + /// Looks up a localized string similar to /// - ///To start a [XenServer] trial, click the button below. ähnelt. + ///To start a [XenServer] trial, click the button below.. /// public static string UPSELL_BLURB_TRIAL { get { @@ -36331,7 +37312,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable vApps. The vApps feature allows you to place your VMs into groups, allowing them to be started or stopped as a unit, and also allowing them to be easily recovered at your DR site in the event of a disaster at your primary production site. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable vApps. The vApps feature allows you to place your VMs into groups, allowing them to be started or stopped as a unit, and also allowing them to be easily recovered at your DR site in the event of a disaster at your primary production site.. /// public static string UPSELL_BLURB_VM_APPLIANCES { get { @@ -36340,7 +37321,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable VM Scheduled Snapshots. VM Scheduled Snapshots allows you to create automatic snapshots for your critical VMs. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable VM Scheduled Snapshots. VM Scheduled Snapshots allows you to create automatic snapshots for your critical VMs.. /// public static string UPSELL_BLURB_VMSS { get { @@ -36349,7 +37330,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Upgrade your server license to enable Dynamic Workload Balancing. Dynamic Workload Balancing continually profiles your virtual machines’ and servers' performance and will intelligently rebalance and optimally place new workloads to ensure the best use of physical server resources in your resource pool. ähnelt. + /// Looks up a localized string similar to Upgrade your server license to enable Dynamic Workload Balancing. Dynamic Workload Balancing continually profiles your virtual machines’ and servers' performance and will intelligently rebalance and optimally place new workloads to ensure the best use of physical server resources in your resource pool.. /// public static string UPSELL_BLURB_WLB { get { @@ -36358,7 +37339,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Uptime ähnelt. + /// Looks up a localized string similar to Uptime. /// public static string UPTIME { get { @@ -36367,7 +37348,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ^(http|https|file|ftp)://* ähnelt. + /// Looks up a localized string similar to ^(http|https|file|ftp)://*. /// public static string URI_REGEX { get { @@ -36376,7 +37357,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die USB ähnelt. + /// Looks up a localized string similar to USB. /// public static string USB { get { @@ -36385,7 +37366,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot attach USB devices because the VM is currently protected by HA. ähnelt. + /// Looks up a localized string similar to Cannot attach USB devices because the VM is currently protected by HA.. /// public static string USB_ATTACH_NOT_ALLOWED_HA { get { @@ -36394,7 +37375,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die USB devices can only be attached when the VM is shut down. ähnelt. + /// Looks up a localized string similar to USB devices can only be attached when the VM is shut down.. /// public static string USB_ATTACH_NOT_ALLOWED_NOT_HALTED { get { @@ -36403,7 +37384,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Vendor: {0}; Product: {1} ähnelt. + /// Looks up a localized string similar to Vendor: {0}; Product: {1}. /// public static string USB_DEVICE_VENDOR_PRODUCT { get { @@ -36412,7 +37393,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die USB devices ähnelt. + /// Looks up a localized string similar to USB devices. /// public static string USB_DEVICES { get { @@ -36421,7 +37402,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die 1 device attached ähnelt. + /// Looks up a localized string similar to 1 device attached. /// public static string USB_EDIT_SUBTEXT_1_DEVICE { get { @@ -36430,7 +37411,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} devices attached ähnelt. + /// Looks up a localized string similar to {0} devices attached. /// public static string USB_EDIT_SUBTEXT_MULTIPLE_DEVICES { get { @@ -36439,7 +37420,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No devices attached ähnelt. + /// Looks up a localized string similar to No devices attached. /// public static string USB_EDIT_SUBTEXT_NODEVICES { get { @@ -36448,7 +37429,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die USB ähnelt. + /// Looks up a localized string similar to USB. /// public static string USB_EDIT_TEXT { get { @@ -36457,7 +37438,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Disable passthrough ähnelt. + /// Looks up a localized string similar to &Disable passthrough. /// public static string USBLIST_DISABLE_PASSTHROUGH_HOTKEY { get { @@ -36466,7 +37447,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Enable passthrough ähnelt. + /// Looks up a localized string similar to &Enable passthrough. /// public static string USBLIST_ENABLE_PASSTHROUGH_HOTKEY { get { @@ -36475,7 +37456,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] was unable to authorize the action as {0}. See the application log files for more information. ähnelt. + /// Looks up a localized string similar to [XenCenter] was unable to authorize the action as {0}. See the application log files for more information.. /// public static string USER_AUTHORIZATION_FAILED { get { @@ -36484,7 +37465,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The user you have entered is not authorized to complete this action ähnelt. + /// Looks up a localized string similar to The user you have entered is not authorized to complete this action. /// public static string USER_NOT_AUTHORIZED { get { @@ -36493,7 +37474,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die uses ähnelt. + /// Looks up a localized string similar to uses. /// public static string USES { get { @@ -36502,7 +37483,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Computer Utilization (%) ähnelt. + /// Looks up a localized string similar to Computer Utilization (%). /// public static string UTILIZATION { get { @@ -36511,7 +37492,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die UUID ähnelt. + /// Looks up a localized string similar to UUID. /// public static string UUID { get { @@ -36520,7 +37501,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Is ähnelt. + /// Looks up a localized string similar to Is. /// public static string UUID_SEARCH { get { @@ -36529,7 +37510,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} B ähnelt. + /// Looks up a localized string similar to {0} B. /// public static string VAL_B { get { @@ -36538,7 +37519,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die B ähnelt. + /// Looks up a localized string similar to B. /// public static string VAL_BYTE { get { @@ -36547,7 +37528,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} {1} ähnelt. + /// Looks up a localized string similar to {0} {1}. /// public static string VAL_FORMAT { get { @@ -36556,7 +37537,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}{1} ähnelt. + /// Looks up a localized string similar to {0}{1}. /// public static string VAL_FORMAT_SECONDS { get { @@ -36565,7 +37546,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} GB ähnelt. + /// Looks up a localized string similar to {0} GB. /// public static string VAL_GB { get { @@ -36574,7 +37555,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0:F1} GB ähnelt. + /// Looks up a localized string similar to {0:F1} GB. /// public static string VAL_GB_ONE_DECIMAL { get { @@ -36583,7 +37564,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die GB ähnelt. + /// Looks up a localized string similar to GB. /// public static string VAL_GIGB { get { @@ -36592,7 +37573,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die GHz ähnelt. + /// Looks up a localized string similar to GHz. /// public static string VAL_GIGHZ { get { @@ -36601,7 +37582,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die GBps ähnelt. + /// Looks up a localized string similar to GBps. /// public static string VAL_GIGRATE { get { @@ -36610,7 +37591,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} kB ähnelt. + /// Looks up a localized string similar to {0} kB. /// public static string VAL_KB { get { @@ -36619,7 +37600,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die kB ähnelt. + /// Looks up a localized string similar to kB. /// public static string VAL_KILB { get { @@ -36628,7 +37609,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die kW ähnelt. + /// Looks up a localized string similar to kW. /// public static string VAL_KILOWATT { get { @@ -36637,7 +37618,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die kBps ähnelt. + /// Looks up a localized string similar to kBps. /// public static string VAL_KILRATE { get { @@ -36646,7 +37627,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} MB ähnelt. + /// Looks up a localized string similar to {0} MB. /// public static string VAL_MB { get { @@ -36655,7 +37636,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die MB ähnelt. + /// Looks up a localized string similar to MB. /// public static string VAL_MEGB { get { @@ -36664,7 +37645,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die MHz ähnelt. + /// Looks up a localized string similar to MHz. /// public static string VAL_MEGHZ { get { @@ -36673,7 +37654,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die MBps ähnelt. + /// Looks up a localized string similar to MBps. /// public static string VAL_MEGRATE { get { @@ -36682,7 +37663,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die μs ähnelt. + /// Looks up a localized string similar to μs. /// public static string VAL_MICSEC { get { @@ -36691,7 +37672,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ms ähnelt. + /// Looks up a localized string similar to ms. /// public static string VAL_MILSEC { get { @@ -36700,7 +37681,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die mW ähnelt. + /// Looks up a localized string similar to mW. /// public static string VAL_MILWATT { get { @@ -36709,7 +37690,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die MW ähnelt. + /// Looks up a localized string similar to MW. /// public static string VAL_MWATT { get { @@ -36718,7 +37699,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ns ähnelt. + /// Looks up a localized string similar to ns. /// public static string VAL_NANOSEC { get { @@ -36727,7 +37708,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Bps ähnelt. + /// Looks up a localized string similar to Bps. /// public static string VAL_RATE { get { @@ -36736,7 +37717,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die 0.0 ähnelt. + /// Looks up a localized string similar to 0.0. /// public static string VAL_RATE_NUM_FORMAT { get { @@ -36745,7 +37726,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die s ähnelt. + /// Looks up a localized string similar to s. /// public static string VAL_SEC { get { @@ -36754,7 +37735,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die TiB ähnelt. + /// Looks up a localized string similar to TB. /// public static string VAL_TERB { get { @@ -36763,7 +37744,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die TiBps ähnelt. + /// Looks up a localized string similar to TBps. /// public static string VAL_TERRATE { get { @@ -36772,7 +37753,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die W ähnelt. + /// Looks up a localized string similar to W. /// public static string VAL_WATT { get { @@ -36781,7 +37762,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - {1} ähnelt. + /// Looks up a localized string similar to {0} - {1}. /// public static string VALUE_HYPHEN_VALUE { get { @@ -36790,7 +37771,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut Dow&n vApp ähnelt. + /// Looks up a localized string similar to Shut Dow&n vApp. /// public static string VAPP_SHUT_DOWN_MENU { get { @@ -36799,7 +37780,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut Dow&n vApp ähnelt. + /// Looks up a localized string similar to Shut Dow&n vApp. /// public static string VAPP_SHUTDOWN_CONTEXT_MENU { get { @@ -36808,7 +37789,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Start vApp ähnelt. + /// Looks up a localized string similar to &Start vApp. /// public static string VAPP_START_CONTEXT_MENU { get { @@ -36817,7 +37798,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die S&tart vApp ähnelt. + /// Looks up a localized string similar to S&tart vApp. /// public static string VAPP_START_MENU { get { @@ -36826,7 +37807,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The disk is attached to a VM that is not in halted state. ähnelt. + /// Looks up a localized string similar to The disk is attached to a VM that is not in halted state.. /// public static string VBD_EDIT_CURRENTLY_ATTACHED { get { @@ -36835,7 +37816,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - currently in use ähnelt. + /// Looks up a localized string similar to {0} - currently in use. /// public static string VBD_EDIT_CURRENTLY_IN_USE { get { @@ -36844,7 +37825,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} - currently in use by '{1}' ähnelt. + /// Looks up a localized string similar to {0} - currently in use by '{1}'. /// public static string VBD_EDIT_CURRENTLY_IN_USE_BY { get { @@ -36853,7 +37834,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The VCPUs can only be changed when the VM is shut down. ähnelt. + /// Looks up a localized string similar to The VCPUs can only be changed when the VM is shut down.. /// public static string VCPU_ONLY_WHEN_HALTED { get { @@ -36862,7 +37843,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VDI ähnelt. + /// Looks up a localized string similar to VDI. /// public static string VDI { get { @@ -36871,7 +37852,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copied disk '{0}' from SR '{1}' to SR '{2}' ähnelt. + /// Looks up a localized string similar to Copied disk '{0}' from SR '{1}' to SR '{2}'. /// public static string VDI_COPIED { get { @@ -36880,7 +37861,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Copying disk '{0}' from SR '{1}' to SR '{2}' ähnelt. + /// Looks up a localized string similar to Copying disk '{0}' from SR '{1}' to SR '{2}'. /// public static string VDI_COPYING { get { @@ -36889,7 +37870,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} on '{1}' {2} ähnelt. + /// Looks up a localized string similar to {0} on '{1}' {2}. /// public static string VDI_ON_SR_TITLE { get { @@ -36898,7 +37879,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Vendor ähnelt. + /// Looks up a localized string similar to Vendor. /// public static string VENDOR_NAME { get { @@ -36907,7 +37888,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Verifying Manifest Content... ähnelt. + /// Looks up a localized string similar to Verifying Manifest Content.... /// public static string VERIFYING_MANIFEST { get { @@ -36916,7 +37897,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Manifest verification failed. {0} ähnelt. + /// Looks up a localized string similar to Manifest verification failed. {0}. /// public static string VERIFYING_MANIFEST_ERROR { get { @@ -36925,7 +37906,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Verifying Digital Signature... ähnelt. + /// Looks up a localized string similar to Verifying Digital Signature.... /// public static string VERIFYING_SIGNATURE { get { @@ -36934,7 +37915,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Signature verification failed. {0} ähnelt. + /// Looks up a localized string similar to Signature verification failed. {0}. /// public static string VERIFYING_SIGNATURE_ERROR { get { @@ -36943,7 +37924,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Version ähnelt. + /// Looks up a localized string similar to Version. /// public static string VERSION { get { @@ -36952,7 +37933,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] version {0} (build {1}.{2}) {3}-bit ähnelt. + /// Looks up a localized string similar to [XenCenter] version {0} (build {1}.{2}) {3}-bit. /// public static string VERSION_NUMBER { get { @@ -36961,7 +37942,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} virtual GPU ({1} per GPU, {2}, {3} displays) ähnelt. + /// Looks up a localized string similar to {0} virtual GPU ({1} per GPU, {2}, {3} displays). /// public static string VGPU_DESCRIPTION_MANY { get { @@ -36970,7 +37951,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} virtual GPU ({1} per GPU, {2}, {3} display) ähnelt. + /// Looks up a localized string similar to {0} virtual GPU ({1} per GPU, {2}, {3} displays, multiple vGPU support). + /// + public static string VGPU_DESCRIPTION_MANY_MULTIPLE_VGPU_SUPPORT { + get { + return ResourceManager.GetString("VGPU_DESCRIPTION_MANY_MULTIPLE_VGPU_SUPPORT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} virtual GPU ({1} per GPU, {2}, {3} display). /// public static string VGPU_DESCRIPTION_ONE { get { @@ -36979,7 +37969,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} virtual GPU ({1} per GPU) ähnelt. + /// Looks up a localized string similar to {0} virtual GPU ({1} per GPU, {2}, {3} display, multiple vGPU support). + /// + public static string VGPU_DESCRIPTION_ONE_MULTIPLE_VGPU_SUPPORT { + get { + return ResourceManager.GetString("VGPU_DESCRIPTION_ONE_MULTIPLE_VGPU_SUPPORT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} virtual GPU ({1} per GPU). /// public static string VGPU_DESCRIPTION_ZEROES { get { @@ -36988,7 +37987,16 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pass-through whole GPU ähnelt. + /// Looks up a localized string similar to {0} virtual GPU ({1} per GPU, multiple vGPU support). + /// + public static string VGPU_DESCRIPTION_ZEROES_MULTIPLE_VGPU_SUPPORT { + get { + return ResourceManager.GetString("VGPU_DESCRIPTION_ZEROES_MULTIPLE_VGPU_SUPPORT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pass-through whole GPU. /// public static string VGPU_PASSTHRU_TOSTRING { get { @@ -36997,7 +38005,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} virtual GPU ({1} per GPU) ähnelt. + /// Looks up a localized string similar to {0} virtual GPU ({1} per GPU). /// public static string VGPU_TOSTRING { get { @@ -37006,7 +38014,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die View folder... ähnelt. + /// Looks up a localized string similar to View folder.... /// public static string VIEW_FOLDER_MENU_OPTION { get { @@ -37015,7 +38023,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Infrastructure ähnelt. + /// Looks up a localized string similar to Infrastructure. /// public static string VIEW_INFRASTRUCTURE { get { @@ -37024,7 +38032,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Objects by Type ähnelt. + /// Looks up a localized string similar to Objects by Type. /// public static string VIEW_OBJECTS { get { @@ -37033,7 +38041,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Organization Views ähnelt. + /// Looks up a localized string similar to Organization Views. /// public static string VIEW_ORGANIZATION { get { @@ -37042,7 +38050,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die View tag... ähnelt. + /// Looks up a localized string similar to View tag.... /// public static string VIEW_TAG_MENU_OPTION { get { @@ -37051,7 +38059,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die View snapshot schedules ähnelt. + /// Looks up a localized string similar to View snapshot schedules. /// public static string VIEW_VMSS_POLICIES { get { @@ -37060,7 +38068,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The virtual network device changes will take effect when you shut down and then restart the VM. ähnelt. + /// Looks up a localized string similar to The virtual network device changes will take effect when you shut down and then restart the VM.. /// public static string VIF_HOTPLUG_FAILED_MESSAGE { get { @@ -37069,7 +38077,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Network Device Changes ähnelt. + /// Looks up a localized string similar to Virtual Network Device Changes. /// public static string VIF_HOTPLUG_FAILED_TITLE { get { @@ -37078,7 +38086,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Disk ähnelt. + /// Looks up a localized string similar to Virtual Disk. /// public static string VIRTUAL_DISK { get { @@ -37087,7 +38095,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Disks ähnelt. + /// Looks up a localized string similar to Virtual Disks. /// public static string VIRTUAL_DISKS { get { @@ -37096,7 +38104,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Interface Properties ähnelt. + /// Looks up a localized string similar to Virtual Interface Properties. /// public static string VIRTUAL_INTERFACE_PROPERTIES { get { @@ -37105,7 +38113,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Machine ähnelt. + /// Looks up a localized string similar to Virtual Machine. /// public static string VIRTUAL_MACHINE { get { @@ -37114,7 +38122,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Machines ähnelt. + /// Looks up a localized string similar to Virtual Machines. /// public static string VIRTUAL_MACHINES { get { @@ -37123,7 +38131,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Optimized (version {0} installed) ähnelt. + /// Looks up a localized string similar to Optimized (version {0} installed). /// public static string VIRTUALIZATION_OPTIMIZED { get { @@ -37132,7 +38140,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Tools out of date (version {0} installed) ähnelt. + /// Looks up a localized string similar to Tools out of date (version {0} installed). /// public static string VIRTUALIZATION_OUT_OF_DATE { get { @@ -37141,7 +38149,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Install I/O drivers and Management Agent ähnelt. + /// Looks up a localized string similar to Install I/O drivers and Management Agent. /// public static string VIRTUALIZATION_STATE_VM_INSTALL_IO_DRIVERS_AND_MANAGEMENT_AGENT { get { @@ -37150,7 +38158,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Install Management Agent ähnelt. + /// Looks up a localized string similar to Install Management Agent. /// public static string VIRTUALIZATION_STATE_VM_INSTALL_MANAGEMENT_AGENT { get { @@ -37159,7 +38167,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die I/O drivers and Management Agent installed ähnelt. + /// Looks up a localized string similar to I/O drivers and Management Agent installed. /// public static string VIRTUALIZATION_STATE_VM_IO_DRIVERS_AND_MANAGEMENT_AGENT_INSTALLED { get { @@ -37168,7 +38176,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die I/O not optimized ähnelt. + /// Looks up a localized string similar to I/O not optimized. /// public static string VIRTUALIZATION_STATE_VM_IO_NOT_OPTIMIZED { get { @@ -37177,7 +38185,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die I/O optimized ähnelt. + /// Looks up a localized string similar to I/O optimized. /// public static string VIRTUALIZATION_STATE_VM_IO_OPTIMIZED { get { @@ -37186,7 +38194,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die I/O optimized only ähnelt. + /// Looks up a localized string similar to I/O optimized only. /// public static string VIRTUALIZATION_STATE_VM_IO_OPTIMIZED_ONLY { get { @@ -37195,7 +38203,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Management Agent installed ähnelt. + /// Looks up a localized string similar to Management Agent installed. /// public static string VIRTUALIZATION_STATE_VM_MANAGEMENT_AGENT_INSTALLED { get { @@ -37204,7 +38212,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Management Agent not installed ähnelt. + /// Looks up a localized string similar to Management Agent not installed. /// public static string VIRTUALIZATION_STATE_VM_MANAGEMENT_AGENT_NOT_INSTALLED { get { @@ -37213,7 +38221,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not optimized ähnelt. + /// Looks up a localized string similar to Not optimized. /// public static string VIRTUALIZATION_STATE_VM_NOT_OPTIMIZED { get { @@ -37222,7 +38230,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not able to receive updates from Windows Update ähnelt. + /// Looks up a localized string similar to Not able to receive updates from Windows Update. /// public static string VIRTUALIZATION_STATE_VM_NOT_RECEIVING_UPDATES { get { @@ -37231,7 +38239,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fully optimized ähnelt. + /// Looks up a localized string similar to Fully optimized. /// public static string VIRTUALIZATION_STATE_VM_OPTIMIZED { get { @@ -37240,7 +38248,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Able to receive updates from Windows Update ähnelt. + /// Looks up a localized string similar to Able to receive updates from Windows Update. /// public static string VIRTUALIZATION_STATE_VM_RECEIVING_UPDATES { get { @@ -37249,7 +38257,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unknown (please wait) ähnelt. + /// Looks up a localized string similar to Unknown (please wait). /// public static string VIRTUALIZATION_UNKNOWN { get { @@ -37258,7 +38266,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network {0} on VLAN {1} ähnelt. + /// Looks up a localized string similar to Network {0} on VLAN {1}. /// public static string VLAN_NETWORK_NAME { get { @@ -37267,7 +38275,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM ähnelt. + /// Looks up a localized string similar to VM. /// public static string VM { get { @@ -37276,7 +38284,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is already suspended. ähnelt. + /// Looks up a localized string similar to This VM is already suspended.. /// public static string VM_ALREADY_SUSPENDED { get { @@ -37285,7 +38293,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vApp ähnelt. + /// Looks up a localized string similar to vApp. /// public static string VM_APPLIANCE { get { @@ -37294,7 +38302,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vApp Properties... ähnelt. + /// Looks up a localized string similar to vApp Properties.... /// public static string VM_APPLIANCE_PROPERTIES { get { @@ -37303,7 +38311,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut down all VMs in vApp ähnelt. + /// Looks up a localized string similar to Shut down all VMs in vApp. /// public static string VM_APPLIANCE_SHUT_DOWN { get { @@ -37312,7 +38320,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shutting down vApp '{0}' ähnelt. + /// Looks up a localized string similar to Shutting down vApp '{0}'. /// public static string VM_APPLIANCE_SHUTTING_DOWN { get { @@ -37321,7 +38329,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Shut down vApp '{0}' completed ähnelt. + /// Looks up a localized string similar to Shut down vApp '{0}' completed. /// public static string VM_APPLIANCE_SHUTTING_DOWN_COMPLETED { get { @@ -37330,7 +38338,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start all VMs in vApp ähnelt. + /// Looks up a localized string similar to Start all VMs in vApp. /// public static string VM_APPLIANCE_START { get { @@ -37339,7 +38347,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start all VMs in vApp in paused mode ähnelt. + /// Looks up a localized string similar to Start all VMs in vApp in paused mode. /// public static string VM_APPLIANCE_START_PAUSED { get { @@ -37348,7 +38356,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting vApp '{0}' ähnelt. + /// Looks up a localized string similar to Starting vApp '{0}'. /// public static string VM_APPLIANCE_STARTING { get { @@ -37357,7 +38365,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start vApp '{0}' completed ähnelt. + /// Looks up a localized string similar to Start vApp '{0}' completed. /// public static string VM_APPLIANCE_STARTING_COMPLETED { get { @@ -37366,7 +38374,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting vApp '{0}' in paused mode ähnelt. + /// Looks up a localized string similar to Starting vApp '{0}' in paused mode. /// public static string VM_APPLIANCE_STARTING_PAUSED { get { @@ -37375,7 +38383,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start vApp '{0}' in paused mode completed ähnelt. + /// Looks up a localized string similar to Start vApp '{0}' in paused mode completed. /// public static string VM_APPLIANCE_STARTING_PAUSED_COMPLETED { get { @@ -37384,7 +38392,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vApp name:\r\n {0}\r\n\r\nSelected VMs:\r\n {1} ähnelt. + /// Looks up a localized string similar to vApp name:\r\n {0}\r\n\r\nSelected VMs:\r\n {1}. /// public static string VM_APPLIANCE_SUMMARY { get { @@ -37393,7 +38401,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vApps ähnelt. + /// Looks up a localized string similar to vApps. /// public static string VM_APPLIANCES { get { @@ -37402,7 +38410,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vApps defined in pool '{0}': ähnelt. + /// Looks up a localized string similar to vApps defined in pool '{0}': . /// public static string VM_APPLIANCES_DEFINED_FOR_POOL { get { @@ -37411,7 +38419,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vApps defined in server '{0}': ähnelt. + /// Looks up a localized string similar to vApps defined in server '{0}': . /// public static string VM_APPLIANCES_DEFINED_FOR_SERVER { get { @@ -37420,7 +38428,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Manage &vApps... ähnelt. + /// Looks up a localized string similar to Manage &vApps.... /// public static string VM_APPLIANCES_MENU { get { @@ -37429,7 +38437,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Manage vApps - pool {0} ähnelt. + /// Looks up a localized string similar to Manage vApps - pool {0}. /// public static string VM_APPLIANCES_TITLE { get { @@ -37438,7 +38446,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to retrieve the default cloud-config parameters. ähnelt. + /// Looks up a localized string similar to Unable to retrieve the default cloud-config parameters.. /// public static string VM_CLOUD_CONFIG_DRIVE_CANNOT_RETRIEVE_DEFAULT { get { @@ -37447,7 +38455,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Config drive included ähnelt. + /// Looks up a localized string similar to Config drive included. /// public static string VM_CLOUD_CONFIG_DRIVE_INCLUDED { get { @@ -37456,7 +38464,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Config drive not included ähnelt. + /// Looks up a localized string similar to Config drive not included. /// public static string VM_CLOUD_CONFIG_DRIVE_NOT_INCLUDED { get { @@ -37465,7 +38473,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The cloud-config parameters can only be changed when the VM is shut down. ähnelt. + /// Looks up a localized string similar to The cloud-config parameters can only be changed when the VM is shut down.. /// public static string VM_CLOUD_CONFIG_DRIVE_READONLY { get { @@ -37474,7 +38482,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The cloud-config parameters could not be retrieved. ähnelt. + /// Looks up a localized string similar to The cloud-config parameters could not be retrieved.. /// public static string VM_CLOUD_CONFIG_DRIVE_UNAVAILABLE { get { @@ -37483,7 +38491,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Current number of v&CPUs: ähnelt. + /// Looks up a localized string similar to Current number of v&CPUs:. /// public static string VM_CPUMEMPAGE_CURRENT_VCPUS_LABEL { get { @@ -37492,7 +38500,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The current number of vCPUs can only be changed when the VM is running or shut down. ähnelt. + /// Looks up a localized string similar to The current number of vCPUs can only be changed when the VM is running or shut down. . /// public static string VM_CPUMEMPAGE_CURRENT_VCPUS_READONLY { get { @@ -37501,7 +38509,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Initial number of v&CPUs: ähnelt. + /// Looks up a localized string similar to Initial number of v&CPUs:. /// public static string VM_CPUMEMPAGE_INITIAL_VCPUS_LABEL { get { @@ -37510,7 +38518,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maximum number of &vCPUs: ähnelt. + /// Looks up a localized string similar to Maximum number of &vCPUs:. /// public static string VM_CPUMEMPAGE_MAX_VCPUS_LABEL { get { @@ -37519,7 +38527,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The maximum number of vCPUs, the topology and the vCPU priority can only be changed when the VM is shut down. ähnelt. + /// Looks up a localized string similar to The maximum number of vCPUs, the topology and the vCPU priority can only be changed when the VM is shut down. . /// public static string VM_CPUMEMPAGE_MAX_VCPUS_READONLY { get { @@ -37528,7 +38536,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Specify the number of vCPUs, their topology, and the priority to assign them over other vCPUs. ähnelt. + /// Looks up a localized string similar to Specify the number of vCPUs, their topology, and the priority to assign them over other vCPUs. . /// public static string VM_CPUMEMPAGE_RUBRIC { get { @@ -37537,7 +38545,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die If the initial number of vCPUs is set lower than the maximum number, more vCPUs can be added to the virtual machine while it is running. ähnelt. + /// Looks up a localized string similar to If the initial number of vCPUs is set lower than the maximum number, more vCPUs can be added to the virtual machine while it is running. . /// public static string VM_CPUMEMPAGE_RUBRIC_HOTPLUG { get { @@ -37546,7 +38554,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die It is recommended to allocate at least {0} vCPUs for this VM ähnelt. + /// Looks up a localized string similar to It is recommended to allocate at least {0} vCPUs for this VM. /// public static string VM_CPUMEMPAGE_VCPU_MIN_WARNING { get { @@ -37555,7 +38563,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die More vCPUs than physical CPUs may lead to reduced VM performance ähnelt. + /// Looks up a localized string similar to More vCPUs than physical CPUs may lead to reduced VM performance. /// public static string VM_CPUMEMPAGE_VCPU_WARNING { get { @@ -37564,7 +38572,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Number of vCPUs: ähnelt. + /// Looks up a localized string similar to &Number of vCPUs:. /// public static string VM_CPUMEMPAGE_VCPUS_LABEL { get { @@ -37573,7 +38581,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Container Management ähnelt. + /// Looks up a localized string similar to Container Management. /// public static string VM_ENLIGHTENMENT { get { @@ -37582,7 +38590,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM General Properties ähnelt. + /// Looks up a localized string similar to VM General Properties. /// public static string VM_GENERAL_TAB_TITLE { get { @@ -37591,7 +38599,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM has a pass-through GPU assigned. ähnelt. + /// Looks up a localized string similar to This VM has a pass-through GPU assigned.. /// public static string VM_HAS_GPU_PASSTHROUGH { get { @@ -37600,7 +38608,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory and/or VCPU changes will take effect when you restart the VM. ähnelt. + /// Looks up a localized string similar to Memory and/or VCPU changes will take effect when you restart the VM.. /// public static string VM_LIVE_CHANGES_NOT_SUPPORTED_MESSAGE { get { @@ -37609,7 +38617,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM General Changes ähnelt. + /// Looks up a localized string similar to VM General Changes. /// public static string VM_LIVE_CHANGES_NOT_SUPPORTED_TITLE { get { @@ -37618,7 +38626,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die I/O drivers not installed. ähnelt. + /// Looks up a localized string similar to I/O drivers not installed.. /// public static string VM_MISSING_IO_DRIVERS { get { @@ -37627,7 +38635,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A&ctivate ähnelt. + /// Looks up a localized string similar to A&ctivate. /// public static string VM_NETWORK_TAB_ACTIVATE_BUTTON_LABEL { get { @@ -37636,7 +38644,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Add Interface... ähnelt. + /// Looks up a localized string similar to &Add Interface.... /// public static string VM_NETWORK_TAB_ADD_BUTTON_LABEL { get { @@ -37645,7 +38653,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Dea&ctivate ähnelt. + /// Looks up a localized string similar to Dea&ctivate. /// public static string VM_NETWORK_TAB_DEACTIVATE_BUTTON_LABEL { get { @@ -37654,7 +38662,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die P&roperties ähnelt. + /// Looks up a localized string similar to P&roperties. /// public static string VM_NETWORK_TAB_EDIT_BUTTON_LABEL { get { @@ -37663,7 +38671,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die R&emove Interface ähnelt. + /// Looks up a localized string similar to R&emove Interface. /// public static string VM_NETWORK_TAB_REMOVE_BUTTON_LABEL { get { @@ -37672,7 +38680,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Network Interfaces ähnelt. + /// Looks up a localized string similar to Virtual Network Interfaces. /// public static string VM_NETWORK_TAB_TITLE { get { @@ -37681,7 +38689,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} is not in halted or suspended state. Current state: {1} ähnelt. + /// Looks up a localized string similar to {0} is not in halted or suspended state. Current state: {1}. /// public static string VM_NOT_HALTED { get { @@ -37690,7 +38698,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is not shut down. ähnelt. + /// Looks up a localized string similar to This VM is not shut down.. /// public static string VM_NOT_SHUT_DOWN { get { @@ -37699,7 +38707,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is not suspended. ähnelt. + /// Looks up a localized string similar to This VM is not suspended.. /// public static string VM_NOT_SUSPENDED { get { @@ -37708,7 +38716,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Hardware-assisted Virtualization (HVM) ähnelt. + /// Looks up a localized string similar to Hardware-assisted Virtualization (HVM). /// public static string VM_OPERATING_MODE_HVM { get { @@ -37717,7 +38725,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Paravirtualization (PV) ähnelt. + /// Looks up a localized string similar to Paravirtualization (PV). /// public static string VM_OPERATING_MODE_PV { get { @@ -37726,7 +38734,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is paused. ähnelt. + /// Looks up a localized string similar to This VM is paused.. /// public static string VM_PAUSED { get { @@ -37735,7 +38743,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is not using read caching ähnelt. + /// Looks up a localized string similar to This VM is not using read caching. /// public static string VM_READ_CACHING_DISABLED { get { @@ -37744,7 +38752,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This pool is not licensed for read caching ähnelt. + /// Looks up a localized string similar to This pool is not licensed for read caching. /// public static string VM_READ_CACHING_DISABLED_REASON_LICENSE { get { @@ -37753,7 +38761,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM does not have any read-only disks or disks with a read-only parent ähnelt. + /// Looks up a localized string similar to This VM does not have any read-only disks or disks with a read-only parent. /// public static string VM_READ_CACHING_DISABLED_REASON_NO_RO_IMAGE { get { @@ -37762,7 +38770,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This pool was not licensed for read caching when the VM was started ähnelt. + /// Looks up a localized string similar to This pool was not licensed for read caching when the VM was started. /// public static string VM_READ_CACHING_DISABLED_REASON_PREV_LICENSE { get { @@ -37771,7 +38779,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Read caching is not supported on the type of Storage Repository used by this VM ähnelt. + /// Looks up a localized string similar to Read caching is not supported on the type of Storage Repository used by this VM. /// public static string VM_READ_CACHING_DISABLED_REASON_SR_TYPE { get { @@ -37780,7 +38788,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Read caching has been disabled on the Storage Repository used by this VM ähnelt. + /// Looks up a localized string similar to Read caching has been disabled on the Storage Repository used by this VM. /// public static string VM_READ_CACHING_DISABLED_REASON_TURNED_OFF { get { @@ -37789,7 +38797,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not using read caching ähnelt. + /// Looks up a localized string similar to Not using read caching. /// public static string VM_READ_CACHING_DISABLED_SEARCH { get { @@ -37798,7 +38806,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is using read caching ähnelt. + /// Looks up a localized string similar to This VM is using read caching. /// public static string VM_READ_CACHING_ENABLED { get { @@ -37807,7 +38815,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Using read caching ähnelt. + /// Looks up a localized string similar to Using read caching. /// public static string VM_READ_CACHING_ENABLED_SEARCH { get { @@ -37816,7 +38824,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM reverted to '{0}' ähnelt. + /// Looks up a localized string similar to VM reverted to '{0}'. /// public static string VM_REVERTED { get { @@ -37825,7 +38833,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM reverting to '{0}' ähnelt. + /// Looks up a localized string similar to VM reverting to '{0}'. /// public static string VM_REVERTING { get { @@ -37834,7 +38842,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM reverting... ähnelt. + /// Looks up a localized string similar to VM reverting.... /// public static string VM_REVERTING_ELLIPSIS { get { @@ -37843,7 +38851,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}: Running VM check ähnelt. + /// Looks up a localized string similar to {0}: Running VM check. /// public static string VM_RUNNING_CHECK_DESCRIPTION { get { @@ -37852,7 +38860,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is shut down. ähnelt. + /// Looks up a localized string similar to This VM is shut down.. /// public static string VM_SHUT_DOWN { get { @@ -37861,7 +38869,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} ({1} VMs failed) ähnelt. + /// Looks up a localized string similar to {0} ({1} VMs failed). /// public static string VM_SNAPSHOT_SCHEDULE_FAILED { get { @@ -37870,7 +38878,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM successfully created ähnelt. + /// Looks up a localized string similar to VM successfully created. /// public static string VM_SUCCESSFULLY_CREATED { get { @@ -37879,7 +38887,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM is suspended. ähnelt. + /// Looks up a localized string similar to This VM is suspended.. /// public static string VM_SUSPENDED { get { @@ -37888,7 +38896,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This VM uses local storage ähnelt. + /// Looks up a localized string similar to This VM uses local storage. /// public static string VM_USES_LOCAL_STORAGE { get { @@ -37897,7 +38905,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The current number of vCPUs is already {0} and cannot be decreased while the VM is running. ähnelt. + /// Looks up a localized string similar to The current number of vCPUs is already {0} and cannot be decreased while the VM is running.. /// public static string VM_VCPU_CANNOT_UNPLUG_LIVE { get { @@ -37906,7 +38914,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die vCPU changes will take effect when you restart the VM. ähnelt. + /// Looks up a localized string similar to vCPU changes will take effect when you restart the VM.. /// public static string VM_VCPU_CHANGES_NOT_SUPPORTED_MESSAGE { get { @@ -37915,7 +38923,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM '{0}' ähnelt. + /// Looks up a localized string similar to VM '{0}'. /// public static string VM_X { get { @@ -37924,7 +38932,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs ähnelt. + /// Looks up a localized string similar to VMs. /// public static string VMS { get { @@ -37933,7 +38941,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs in pool '{0}': ähnelt. + /// Looks up a localized string similar to VMs in pool '{0}':. /// public static string VMS_IN_POOL { get { @@ -37942,7 +38950,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VMs in server '{0}': ähnelt. + /// Looks up a localized string similar to VMs in server '{0}':. /// public static string VMS_IN_SERVER { get { @@ -37951,7 +38959,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} VMs ähnelt. + /// Looks up a localized string similar to {0} VMs. /// public static string VMS_MANY { get { @@ -37960,7 +38968,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die 1 VM ähnelt. + /// Looks up a localized string similar to 1 VM. /// public static string VMS_ONE { get { @@ -37969,7 +38977,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Details: ähnelt. + /// Looks up a localized string similar to Details:. /// public static string VMSS_ALERT_DETAILS { get { @@ -37978,7 +38986,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0}. {1}: {2} ähnelt. + /// Looks up a localized string similar to {0}. {1}: {2}. /// public static string VMSS_ALERT_VM_ERROR_FORMAT { get { @@ -37987,7 +38995,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapsh&ot schedules ... ähnelt. + /// Looks up a localized string similar to VM Snapsh&ot Schedules.... /// public static string VMSS_CONTEXT_MENU { get { @@ -37996,7 +39004,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Send &email notifications about snapshot schedule job alerts ähnelt. + /// Looks up a localized string similar to Send &email notifications about snapshot schedule job alerts. /// public static string VMSS_EMAIL_CHECKBOX_TEXT { get { @@ -38005,7 +39013,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The server can send you email notifications when alerts associated with snapshot schedule jobs are raised, such as when a VM snapshot is created or when a snapshot operation fails. ähnelt. + /// Looks up a localized string similar to The server can send you email notifications when alerts associated with snapshot schedule jobs are raised, such as when a VM snapshot is created or when a snapshot operation fails.. /// public static string VMSS_EMAIL_PAGE_TEXT { get { @@ -38014,7 +39022,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Create the new schedule ähnelt. + /// Looks up a localized string similar to Create the new schedule. /// public static string VMSS_FINISH_TITLE { get { @@ -38023,7 +39031,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool master unreachable ähnelt. + /// Looks up a localized string similar to Pool master unreachable. /// public static string VMSS_HOST_NOT_LIVE { get { @@ -38032,7 +39040,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Invalid or incomplete schedule ähnelt. + /// Looks up a localized string similar to Invalid or incomplete schedule. /// public static string VMSS_INVALID_SCHEDULE { get { @@ -38041,7 +39049,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM Snapsh&ot Schedules... ähnelt. + /// Looks up a localized string similar to VM Snapsh&ot Schedules.... /// public static string VMSS_MAIN_MENU { get { @@ -38050,7 +39058,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Schedule Name ähnelt. + /// Looks up a localized string similar to Schedule Name. /// public static string VMSS_NAME { get { @@ -38059,7 +39067,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die What do you want to call this schedule? ähnelt. + /// Looks up a localized string similar to What do you want to call this schedule?. /// public static string VMSS_NAME_TITLE { get { @@ -38068,7 +39076,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The next scheduled local run time is {0}. ähnelt. + /// Looks up a localized string similar to The next scheduled local run time is {0}.. /// public static string VMSS_NEXT_CLIENT_LOCAL_RUN { get { @@ -38077,7 +39085,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The corresponding server local time is {0}. ähnelt. + /// Looks up a localized string similar to The corresponding server local time is {0}.. /// public static string VMSS_NEXT_SERVER_LOCAL_RUN { get { @@ -38086,7 +39094,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Job name: + /// Looks up a localized string similar to Job name: /// {0} /// ///Selected VMs: @@ -38096,7 +39104,7 @@ namespace XenAdmin { /// {2} /// ///Schedule: - /// {3} ähnelt. + /// {3}. /// public static string VMSS_POLICY_SUMMARY { get { @@ -38105,7 +39113,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot schedules defined in pool '{0}' ({1} out of {2} VMs currently in schedule): ähnelt. + /// Looks up a localized string similar to Snapshot schedules defined in pool '{0}' ({1} out of {2} VMs currently in schedule):. /// public static string VMSS_SCHEDULED_SNAPSHOTS_DEFINED_FOR_POOL { get { @@ -38114,7 +39122,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Snapshot schedules defined in server '{0}' ({1} out of {2} VMs currently in schedule): ähnelt. + /// Looks up a localized string similar to Snapshot schedules defined in server '{0}' ({1} out of {2} VMs currently in schedule):. /// public static string VMSS_SCHEDULED_SNAPSHOTS_DEFINED_FOR_SERVER { get { @@ -38123,7 +39131,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Succeeded ähnelt. + /// Looks up a localized string similar to Succeeded. /// public static string VMSS_SUCCEEDED { get { @@ -38132,7 +39140,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Machines ähnelt. + /// Looks up a localized string similar to Virtual Machines. /// public static string VMSS_VMS { get { @@ -38141,7 +39149,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select the VMs that you want to schedule snapshots for ähnelt. + /// Looks up a localized string similar to Select the VMs that you want to schedule snapshots for. /// public static string VMSS_VMS_TITLE { get { @@ -38150,7 +39158,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die New snapshot schedule ähnelt. + /// Looks up a localized string similar to New snapshot schedule. /// public static string VMSS_WIZARD_TITLE { get { @@ -38159,7 +39167,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not connect to console ähnelt. + /// Looks up a localized string similar to Could not connect to console. /// public static string VNC_COULD_NOT_CONNECT_CONSOLE { get { @@ -38168,7 +39176,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Could not find any consoles ähnelt. + /// Looks up a localized string similar to Could not find any consoles. /// public static string VNC_COULD_NOT_FIND_CONSOLES { get { @@ -38177,7 +39185,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sw&itch to Default Desktop ähnelt. + /// Looks up a localized string similar to Sw&itch to Default Desktop. /// public static string VNC_DEFAULT_DESKTOP { get { @@ -38186,7 +39194,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (Alt+Shift+U) ähnelt. + /// Looks up a localized string similar to (Alt+Shift+U). /// public static string VNC_DOCK_ALT_SHIFT_U { get { @@ -38195,7 +39203,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die (F11) ähnelt. + /// Looks up a localized string similar to (F11). /// public static string VNC_DOCK_F11 { get { @@ -38204,7 +39212,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fulls&creen (Ctrl+Alt) ähnelt. + /// Looks up a localized string similar to Fulls&creen (Ctrl+Alt). /// public static string VNC_FULLSCREEN_CTRL_ALT { get { @@ -38213,7 +39221,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fulls&creen (Ctrl+Alt+F) ähnelt. + /// Looks up a localized string similar to Fulls&creen (Ctrl+Alt+F). /// public static string VNC_FULLSCREEN_CTRL_ALT_F { get { @@ -38222,7 +39230,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fulls&creen (Ctrl+Enter) ähnelt. + /// Looks up a localized string similar to Fulls&creen (Ctrl+Enter). /// public static string VNC_FULLSCREEN_CTRL_ENTER { get { @@ -38231,7 +39239,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fulls&creen (F12) ähnelt. + /// Looks up a localized string similar to Fulls&creen (F12). /// public static string VNC_FULLSCREEN_F12 { get { @@ -38240,7 +39248,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Press Ctrl+Alt to exit full screen mode ähnelt. + /// Looks up a localized string similar to Press Ctrl+Alt to exit full screen mode. /// public static string VNC_FULLSCREEN_MESSAGE_CTRL_ALT { get { @@ -38249,7 +39257,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Press Ctrl+Alt+F to exit full screen mode ähnelt. + /// Looks up a localized string similar to Press Ctrl+Alt+F to exit full screen mode. /// public static string VNC_FULLSCREEN_MESSAGE_CTRL_ALT_F { get { @@ -38258,7 +39266,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Press Ctrl+Enter to exit full screen mode ähnelt. + /// Looks up a localized string similar to Press Ctrl+Enter to exit full screen mode. /// public static string VNC_FULLSCREEN_MESSAGE_CTRL_ENTER { get { @@ -38267,7 +39275,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Press F12 to exit full screen mode ähnelt. + /// Looks up a localized string similar to Press F12 to exit full screen mode. /// public static string VNC_FULLSCREEN_MESSAGE_F12 { get { @@ -38276,7 +39284,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Looking for guest console... ähnelt. + /// Looks up a localized string similar to Looking for guest console.... /// public static string VNC_LOOKING { get { @@ -38285,7 +39293,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sw&itch to Remote Desktop ähnelt. + /// Looks up a localized string similar to Sw&itch to Remote Desktop. /// public static string VNC_RDESKTOP { get { @@ -38294,7 +39302,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Turn &on Remote Desktop ähnelt. + /// Looks up a localized string similar to Turn &on Remote Desktop. /// public static string VNC_RDESKTOP_TURN_ON { get { @@ -38303,7 +39311,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Redock ähnelt. + /// Looks up a localized string similar to &Redock. /// public static string VNC_REDOCK { get { @@ -38312,7 +39320,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Undock ähnelt. + /// Looks up a localized string similar to &Undock. /// public static string VNC_UNDOCK { get { @@ -38321,7 +39329,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sw&itch to Text Console ähnelt. + /// Looks up a localized string similar to Sw&itch to Text Console. /// public static string VNC_VIRTUAL_CONSOLE { get { @@ -38330,7 +39338,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Sw&itch to Graphical Console ähnelt. + /// Looks up a localized string similar to Sw&itch to Graphical Console. /// public static string VNC_X_CONSOLE { get { @@ -38339,7 +39347,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Volumes ähnelt. + /// Looks up a localized string similar to Volumes. /// public static string VOLUMES { get { @@ -38348,7 +39356,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Waiting ähnelt. + /// Looks up a localized string similar to Waiting. /// public static string WAITING { get { @@ -38357,7 +39365,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Waiting for user... ähnelt. + /// Looks up a localized string similar to Waiting for user.... /// public static string WAITING_FOR_USER { get { @@ -38366,7 +39374,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Wake-on-LAN ähnelt. + /// Looks up a localized string similar to Wake-on-LAN. /// public static string WAKE_ON_LAN { get { @@ -38375,7 +39383,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Warning ähnelt. + /// Looks up a localized string similar to Warning. /// public static string WARNING { get { @@ -38384,7 +39392,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete this ISO permanently, destroying any data on it. ähnelt. + /// Looks up a localized string similar to This will delete this ISO permanently, destroying any data on it.. /// public static string WARNING_DELETE_ISO { get { @@ -38393,7 +39401,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete these ISOs permanently, destroying any data on them. ähnelt. + /// Looks up a localized string similar to This will delete these ISOs permanently, destroying any data on them.. /// public static string WARNING_DELETE_ISO_MULTIPLE { get { @@ -38402,7 +39410,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting a single snapshot disk is not allowed. This action will delete the entire snapshot, and any other disks attached. ähnelt. + /// Looks up a localized string similar to Deleting a single snapshot disk is not allowed. This action will delete the entire snapshot, and any other disks attached.. /// public static string WARNING_DELETE_SNAPSHOT { get { @@ -38411,7 +39419,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deleting a single snapshot disk is not allowed. This will delete the entire snapshot each disk belongs to, and any other disks attached. ähnelt. + /// Looks up a localized string similar to Deleting a single snapshot disk is not allowed. This will delete the entire snapshot each disk belongs to, and any other disks attached.. /// public static string WARNING_DELETE_SNAPSHOT_MULTIPLE { get { @@ -38420,7 +39428,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete this system disk permanently, possibly leaving the VM unable to boot. ähnelt. + /// Looks up a localized string similar to This will delete this system disk permanently, possibly leaving the VM unable to boot.. /// public static string WARNING_DELETE_SYS_DISK { get { @@ -38429,7 +39437,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete these system disks permanently, possibly leaving their VMs unable to boot. ähnelt. + /// Looks up a localized string similar to This will delete these system disks permanently, possibly leaving their VMs unable to boot.. /// public static string WARNING_DELETE_SYS_DISK_MULTIPLE { get { @@ -38438,7 +39446,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete this virtual disk permanently, destroying any data on it. ähnelt. + /// Looks up a localized string similar to This will delete this virtual disk permanently, destroying any data on it.. /// public static string WARNING_DELETE_VD { get { @@ -38447,7 +39455,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This will delete these virtual disks permanently, destroying any data on them. ähnelt. + /// Looks up a localized string similar to This will delete these virtual disks permanently, destroying any data on them.. /// public static string WARNING_DELETE_VD_MULTIPLE { get { @@ -38456,7 +39464,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot find '{0}'. ähnelt. + /// Looks up a localized string similar to Cannot find '{0}'.. /// public static string WEB_BROWSER_FAILED { get { @@ -38465,7 +39473,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cannot find '{0}'. Waiting for '{1}'... ähnelt. + /// Looks up a localized string similar to Cannot find '{0}'. Waiting for '{1}'.... /// public static string WEB_BROWSER_FAILED_RETRYING { get { @@ -38474,7 +39482,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Loading '{0}'... ähnelt. + /// Looks up a localized string similar to Loading '{0}'.... /// public static string WEB_BROWSER_LOADING { get { @@ -38483,7 +39491,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Loading '{0}' ({1}%)... ähnelt. + /// Looks up a localized string similar to Loading '{0}' ({1}%).... /// public static string WEB_BROWSER_LOADING_PERCENT { get { @@ -38492,7 +39500,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Waiting for '{0}'... ähnelt. + /// Looks up a localized string similar to Waiting for '{0}'.... /// public static string WEB_BROWSER_WAITING { get { @@ -38501,7 +39509,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Web Page ähnelt. + /// Looks up a localized string similar to Web Page. /// public static string WEB_PAGE { get { @@ -38510,7 +39518,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Wednesday ähnelt. + /// Looks up a localized string similar to Wednesday. /// public static string WEDNESDAY_LONG { get { @@ -38519,7 +39527,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Wed ähnelt. + /// Looks up a localized string similar to Wed. /// public static string WEDNESDAY_SHORT { get { @@ -38528,7 +39536,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Weekly; at {0} every {1} ähnelt. + /// Looks up a localized string similar to Weekly; at {0} every {1}. /// public static string WEEKLY_SCHEDULE_FORMAT { get { @@ -38537,7 +39545,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Windows Update capable ähnelt. + /// Looks up a localized string similar to Windows Update capable. /// public static string WINDOWS_UPDATE_CAPABLE { get { @@ -38546,7 +39554,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not Windows Update capable ähnelt. + /// Looks up a localized string similar to Not Windows Update capable. /// public static string WINDOWS_UPDATE_CAPABLE_NOT { get { @@ -38555,7 +39563,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Next > ähnelt. + /// Looks up a localized string similar to &Next >. /// public static string WIZARD_BUTTON_NEXT { get { @@ -38564,7 +39572,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Your new network will be mapped to an existing physical network interface and assigned a VLAN number to use on that interface. You can select the physical interface you would like to use below. ähnelt. + /// Looks up a localized string similar to Your new network will be mapped to an existing physical network interface and assigned a VLAN number to use on that interface. You can select the physical interface you would like to use below.. /// public static string WIZARD_DESC_NETWORK_SETTINGS_EXTERNAL { get { @@ -38573,7 +39581,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Check the box below if you would like to automatically add this network to new VMs. ähnelt. + /// Looks up a localized string similar to Check the box below if you would like to automatically add this network to new VMs.. /// public static string WIZARD_DESC_NETWORK_SETTINGS_INTERNAL { get { @@ -38582,7 +39590,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There was an internal error completing this wizard. Please see the logs for more information. ähnelt. + /// Looks up a localized string similar to There was an internal error completing this wizard. Please see the logs for more information.. /// public static string WIZARD_INTERNAL_ERROR { get { @@ -38591,7 +39599,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import OVF/OVA Package ähnelt. + /// Looks up a localized string similar to Import OVF/OVA Package. /// public static string WIZARD_TEXT_IMPORT_OVF { get { @@ -38600,7 +39608,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import Disk Image ähnelt. + /// Looks up a localized string similar to Import Disk Image. /// public static string WIZARD_TEXT_IMPORT_VHD { get { @@ -38609,7 +39617,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Import XVA ähnelt. + /// Looks up a localized string similar to Import XVA. /// public static string WIZARD_TEXT_IMPORT_XVA { get { @@ -38618,7 +39626,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Workload Balancing ähnelt. + /// Looks up a localized string similar to Workload Balancing. /// public static string WLB { get { @@ -38627,7 +39635,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Advanced ähnelt. + /// Looks up a localized string similar to Advanced. /// public static string WLB_ADVANCED_CONFIGURATION { get { @@ -38636,7 +39644,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ähnelt. + /// Looks up a localized string similar to . /// public static string WLB_ADVANCED_CONFIGURATION_SUBTEXT { get { @@ -38645,7 +39653,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maximum ähnelt. + /// Looks up a localized string similar to Maximum. /// public static string WLB_AUDIT_LOG_MAXIMUM { get { @@ -38654,7 +39662,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Medium ähnelt. + /// Looks up a localized string similar to Medium. /// public static string WLB_AUDIT_LOG_MEDIUM { get { @@ -38663,7 +39671,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Minimum ähnelt. + /// Looks up a localized string similar to Minimum. /// public static string WLB_AUDIT_LOG_MINIMUM { get { @@ -38672,7 +39680,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die ALL ähnelt. + /// Looks up a localized string similar to ALL. /// public static string WLB_AUDIT_LOG_USER_OBJECT_ALL { get { @@ -38681,7 +39689,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Automated optimizations ähnelt. + /// Looks up a localized string similar to Automated optimizations. /// public static string WLB_AUTO_OPT { get { @@ -38690,7 +39698,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Automation ähnelt. + /// Looks up a localized string similar to Automation. /// public static string WLB_AUTOMATION { get { @@ -38699,7 +39707,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure WLB Automation ähnelt. + /// Looks up a localized string similar to Configure WLB Automation. /// public static string WLB_AUTOMATION_SUBTEXT { get { @@ -38708,7 +39716,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Workload Balancing Configuration for {0} ähnelt. + /// Looks up a localized string similar to Workload Balancing Configuration for {0}. /// public static string WLB_CONFIGURATION_DIALOG { get { @@ -38717,7 +39725,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Connect... ähnelt. + /// Looks up a localized string similar to &Connect.... /// public static string WLB_CONNECT { get { @@ -38726,9 +39734,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There was an error communicating with the Workload Balancing server. + /// Looks up a localized string similar to There was an error communicating with the Workload Balancing server. /// - ///Click Reconnect... to update the connection settings. ähnelt. + ///Click Reconnect... to update the connection settings.. /// public static string WLB_CONNECTION_ERROR_BLURB { get { @@ -38737,9 +39745,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There was an error communicating with the Workload Balancing server: + /// Looks up a localized string similar to There was an error communicating with the Workload Balancing server: /// - ///A {0} user cannot alter the Workload Balancing settings. ähnelt. + ///A {0} user cannot alter the Workload Balancing settings.. /// public static string WLB_CONNECTION_ERROR_BLURB_NO_PRIV { get { @@ -38748,7 +39756,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Workload Balancing is in control of VM placement. ähnelt. + /// Looks up a localized string similar to Workload Balancing is in control of VM placement.. /// public static string WLB_CONTROLLING_HOME_SERVER { get { @@ -38757,7 +39765,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Every Day ähnelt. + /// Looks up a localized string similar to Every Day. /// public static string WLB_DAY_ALL { get { @@ -38766,7 +39774,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Weekdays ähnelt. + /// Looks up a localized string similar to Weekdays. /// public static string WLB_DAY_WEEKDAYS { get { @@ -38775,7 +39783,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Weekends ähnelt. + /// Looks up a localized string similar to Weekends. /// public static string WLB_DAY_WEEKENDS { get { @@ -38784,7 +39792,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to disable Workload Balancing for pool '{0}'? ähnelt. + /// Looks up a localized string similar to Are you sure you want to disable Workload Balancing for pool '{0}'?. /// public static string WLB_DISABLE_QUERY { get { @@ -38793,7 +39801,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disabled ähnelt. + /// Looks up a localized string similar to Disabled. /// public static string WLB_DISABLED { get { @@ -38802,9 +39810,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Workload Balancing is currently paused for pool {0}. + /// Looks up a localized string similar to Workload Balancing is currently paused for pool {0}. /// - ///Click Resume to continue analyzing the pool for possible optimizations. ähnelt. + ///Click Resume to continue analyzing the pool for possible optimizations.. /// public static string WLB_ENABLE_WLB_BLURB { get { @@ -38813,9 +39821,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Workload Balancing is currently paused for pool {0}. + /// Looks up a localized string similar to Workload Balancing is currently paused for pool {0}. /// - ///A {1} user cannot alter the Workload Balancing settings. ähnelt. + ///A {1} user cannot alter the Workload Balancing settings.. /// public static string WLB_ENABLE_WLB_BLURB_NO_PRIV { get { @@ -38824,7 +39832,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Enabled ähnelt. + /// Looks up a localized string similar to Enabled. /// public static string WLB_ENABLED { get { @@ -38833,7 +39841,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Workload Balancing is currently analyzing pool {0} for possible optimizations. ähnelt. + /// Looks up a localized string similar to Workload Balancing is currently analyzing pool {0} for possible optimizations.. /// public static string WLB_ENABLED_BLURB { get { @@ -38842,7 +39850,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB unknown error. ähnelt. + /// Looks up a localized string similar to WLB unknown error.. /// public static string WLB_ERROR_4000 { get { @@ -38851,7 +39859,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An error occurred when WLB tried to establish a session with the server. ähnelt. + /// Looks up a localized string similar to An error occurred when WLB tried to establish a session with the server.. /// public static string WLB_ERROR_4001 { get { @@ -38860,7 +39868,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB could not log into the server. It could be due to invalid credentials. ähnelt. + /// Looks up a localized string similar to WLB could not log into the server. It could be due to invalid credentials.. /// public static string WLB_ERROR_4002 { get { @@ -38869,7 +39877,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB cannot connect to the server. It could be due to the server being offline or an incorrect TCP/IP address. ähnelt. + /// Looks up a localized string similar to WLB cannot connect to the server. It could be due to the server being offline or an incorrect TCP/IP address.. /// public static string WLB_ERROR_4003 { get { @@ -38878,7 +39886,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB received a null argument from the server. ähnelt. + /// Looks up a localized string similar to WLB received a null argument from the server.. /// public static string WLB_ERROR_4004 { get { @@ -38887,7 +39895,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB registry key is missing. ähnelt. + /// Looks up a localized string similar to WLB registry key is missing.. /// public static string WLB_ERROR_4005 { get { @@ -38896,7 +39904,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB received an invalid argument from the server. ähnelt. + /// Looks up a localized string similar to WLB received an invalid argument from the server.. /// public static string WLB_ERROR_4007 { get { @@ -38905,7 +39913,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB data collection service cannot retrieve server data. ähnelt. + /// Looks up a localized string similar to WLB data collection service cannot retrieve server data.. /// public static string WLB_ERROR_4008 { get { @@ -38914,7 +39922,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB configuration data is missing in WLB database. ähnelt. + /// Looks up a localized string similar to WLB configuration data is missing in WLB database.. /// public static string WLB_ERROR_4009 { get { @@ -38923,7 +39931,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB received an invalid operation from the server. ähnelt. + /// Looks up a localized string similar to WLB received an invalid operation from the server.. /// public static string WLB_ERROR_4010 { get { @@ -38932,7 +39940,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB received an out of range argument from the server. ähnelt. + /// Looks up a localized string similar to WLB received an out of range argument from the server.. /// public static string WLB_ERROR_4011 { get { @@ -38941,7 +39949,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB data collection service is not properly initialized. ähnelt. + /// Looks up a localized string similar to WLB data collection service is not properly initialized.. /// public static string WLB_ERROR_4012 { get { @@ -38950,7 +39958,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB data collection service cannot migrate or start VMs. ähnelt. + /// Looks up a localized string similar to WLB data collection service cannot migrate or start VMs.. /// public static string WLB_ERROR_4013 { get { @@ -38959,7 +39967,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB received an unknown exception. ähnelt. + /// Looks up a localized string similar to WLB received an unknown exception.. /// public static string WLB_ERROR_4014 { get { @@ -38968,7 +39976,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB does not know this pool. ähnelt. + /// Looks up a localized string similar to WLB does not know this pool.. /// public static string WLB_ERROR_4015 { get { @@ -38977,7 +39985,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB does not have current metrics. ähnelt. + /// Looks up a localized string similar to WLB does not have current metrics.. /// public static string WLB_ERROR_4016 { get { @@ -38986,7 +39994,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB cannot find a host that has the required storage repositories for placing a VM. ähnelt. + /// Looks up a localized string similar to WLB cannot find a host that has the required storage repositories for placing a VM. . /// public static string WLB_ERROR_4017 { get { @@ -38995,7 +40003,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB cannot find the required free CPUs for placing a VM. ähnelt. + /// Looks up a localized string similar to WLB cannot find the required free CPUs for placing a VM.. /// public static string WLB_ERROR_4018 { get { @@ -39004,7 +40012,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB cannot find the required free memory for placing a VM. ähnelt. + /// Looks up a localized string similar to WLB cannot find the required free memory for placing a VM.. /// public static string WLB_ERROR_4019 { get { @@ -39013,7 +40021,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die One or more hosts in the pool do not have an appropriate license. ähnelt. + /// Looks up a localized string similar to One or more hosts in the pool do not have an appropriate license.. /// public static string WLB_ERROR_4020 { get { @@ -39022,7 +40030,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB could not connect to the server because the supplied credentials were invalid. ähnelt. + /// Looks up a localized string similar to WLB could not connect to the server because the supplied credentials were invalid.. /// public static string WLB_ERROR_4021 { get { @@ -39031,7 +40039,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB is unable to evacuate an explicitly excluded host. ähnelt. + /// Looks up a localized string similar to WLB is unable to evacuate an explicitly excluded host.. /// public static string WLB_ERROR_4022 { get { @@ -39040,7 +40048,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die WLB cannot save your configuration at this time. Verify all Workload Balancing services are running, and try reentering your configuration in a few minutes. ähnelt. + /// Looks up a localized string similar to WLB cannot save your configuration at this time. Verify all Workload Balancing services are running, and try reentering your configuration in a few minutes.. /// public static string WLB_ERROR_4023 { get { @@ -39049,7 +40057,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The server cannot connect to the WLB Server with the supplied WLB Server credentials. ähnelt. + /// Looks up a localized string similar to The server cannot connect to the WLB Server with the supplied WLB Server credentials.. /// public static string WLB_ERROR_5 { get { @@ -39058,7 +40066,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The user WLB uses to connect to the server has either insufficient privileges or no access to the server. Please re-initialize WLB with a valid user. ähnelt. + /// Looks up a localized string similar to The user WLB uses to connect to the server has either insufficient privileges or no access to the server. Please re-initialize WLB with a valid user.. /// public static string WLB_ERROR_6 { get { @@ -39067,7 +40075,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The specified WLB Server could not be found. Please check your settings. ähnelt. + /// Looks up a localized string similar to The specified WLB Server could not be found. Please check your settings.. /// public static string WLB_ERROR_SERVER_NOT_FOUND { get { @@ -39076,7 +40084,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Excluded Hosts ähnelt. + /// Looks up a localized string similar to Excluded Hosts. /// public static string WLB_HOST_EXCLUSION { get { @@ -39085,7 +40093,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Host Server ähnelt. + /// Looks up a localized string similar to Host Server. /// public static string WLB_HOST_SERVER { get { @@ -39094,9 +40102,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This pool ({0}) is not currently connected to a Workload Balancing (WLB) server. + /// Looks up a localized string similar to This pool ({0}) is not currently connected to a Workload Balancing (WLB) server. /// - ///Click Connect... to begin using Workload Balancing to optimize your pool. ähnelt. + ///Click Connect... to begin using Workload Balancing to optimize your pool.. /// public static string WLB_INITIALIZE_WLB_BLURB { get { @@ -39105,9 +40113,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This pool ({0}) is not currently connected to a Workload Balancing (WLB) server. + /// Looks up a localized string similar to This pool ({0}) is not currently connected to a Workload Balancing (WLB) server. /// - ///A {1} user cannot alter the Workload Balancing settings. ähnelt. + ///A {1} user cannot alter the Workload Balancing settings.. /// public static string WLB_INITIALIZE_WLB_BLURB_NO_PRIV { get { @@ -39116,7 +40124,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Last PowerOn Succeeded ähnelt. + /// Looks up a localized string similar to Last PowerOn Succeeded. /// public static string WLB_LAST_POWERON_SUCCEEDED { get { @@ -39125,7 +40133,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The server does not have a license permitting Workload Balancing. ähnelt. + /// Looks up a localized string similar to The server does not have a license permitting Workload Balancing.. /// public static string WLB_LICENSE_DISABLED { get { @@ -39134,7 +40142,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Metric Weighting ähnelt. + /// Looks up a localized string similar to Metric Weighting. /// public static string WLB_METRIC_WEIGHTING { get { @@ -39143,7 +40151,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adjust the weighting of WLB metrics ähnelt. + /// Looks up a localized string similar to Adjust the weighting of WLB metrics. /// public static string WLB_METRIC_WEIGHTING_SUBTEXT { get { @@ -39152,7 +40160,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} at {1} ähnelt. + /// Looks up a localized string similar to {0} at {1}. /// public static string WLB_NEXT_OPT_MODE_SCHEDULE_FORMAT { get { @@ -39161,7 +40169,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Next scheduled mode change ähnelt. + /// Looks up a localized string similar to Next scheduled mode change. /// public static string WLB_NEXT_OPT_MODE_SCHEDULE_TEXT { get { @@ -39170,7 +40178,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die A {0} user cannot alter the Workload Balancing settings. ähnelt. + /// Looks up a localized string similar to A {0} user cannot alter the Workload Balancing settings. . /// public static string WLB_NO_PERMISSION_BLURB { get { @@ -39179,7 +40187,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Not configured for pool '{0}' ähnelt. + /// Looks up a localized string similar to Not configured for pool '{0}'. /// public static string WLB_NOT_CONFIGURED { get { @@ -39188,7 +40196,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Apply Recommendations ähnelt. + /// Looks up a localized string similar to Apply Recommendations. /// public static string WLB_OPT_APPLY_RECOMMENDATIONS { get { @@ -39197,7 +40205,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed ähnelt. + /// Looks up a localized string similar to Failed. /// public static string WLB_OPT_FAILED { get { @@ -39206,7 +40214,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM ähnelt. + /// Looks up a localized string similar to VM. /// public static string WLB_OPT_HEADER_VM { get { @@ -39215,7 +40223,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die VM/Host ähnelt. + /// Looks up a localized string similar to VM/Host. /// public static string WLB_OPT_HEADER_VMHOST { get { @@ -39224,7 +40232,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There was an internal error occurred loading pool optimizations. Please see the logs for more information. ähnelt. + /// Looks up a localized string similar to There was an internal error occurred loading pool optimizations. Please see the logs for more information.. /// public static string WLB_OPT_LOADING_ERROR { get { @@ -39233,7 +40241,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Optimal Server ähnelt. + /// Looks up a localized string similar to &Optimal Server. /// public static string WLB_OPT_MENU_OPTIMAL_SERVER { get { @@ -39242,7 +40250,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool optimization mode ähnelt. + /// Looks up a localized string similar to Pool optimization mode. /// public static string WLB_OPT_MODE { get { @@ -39251,7 +40259,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Specify the optimization mode to use when placing VMs in this pool. ähnelt. + /// Looks up a localized string similar to Specify the optimization mode to use when placing VMs in this pool.. /// public static string WLB_OPT_MODE_BLURB { get { @@ -39260,7 +40268,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Place the largest possible number of VMs on each server ähnelt. + /// Looks up a localized string similar to Place the largest possible number of VMs on each server . /// public static string WLB_OPT_MODE_DENSITY_BLURB { get { @@ -39269,7 +40277,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maximize Density ähnelt. + /// Looks up a localized string similar to Maximize Density. /// public static string WLB_OPT_MODE_MAXIMIZEDENSITY { get { @@ -39278,7 +40286,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Maximize Performance ähnelt. + /// Looks up a localized string similar to Maximize Performance. /// public static string WLB_OPT_MODE_MAXIMIZEPERFORMANCE { get { @@ -39287,7 +40295,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Guarantee performance metrics for placed VMs ähnelt. + /// Looks up a localized string similar to Guarantee performance metrics for placed VMs . /// public static string WLB_OPT_MODE_PERF_BLURB { get { @@ -39296,7 +40304,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Optimized successfully. ähnelt. + /// Looks up a localized string similar to Optimized successfully.. /// public static string WLB_OPT_OK_NOTICE_TEXT { get { @@ -39305,7 +40313,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Power off ähnelt. + /// Looks up a localized string similar to Power off. /// public static string WLB_OPT_OPERATION_HOST_POWEROFF { get { @@ -39314,7 +40322,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Power on ähnelt. + /// Looks up a localized string similar to Power on. /// public static string WLB_OPT_OPERATION_HOST_POWERON { get { @@ -39323,7 +40331,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Relocate from '{0}' to '{1}' ähnelt. + /// Looks up a localized string similar to Relocate from '{0}' to '{1}'. /// public static string WLB_OPT_OPERATION_VM { get { @@ -39332,7 +40340,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Optimizing ... ähnelt. + /// Looks up a localized string similar to Optimizing .... /// public static string WLB_OPT_OPTIMIZING { get { @@ -39341,7 +40349,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No recommendations at this time. ähnelt. + /// Looks up a localized string similar to No recommendations at this time.. /// public static string WLB_OPT_POOL_NO_RECOMMENDATION { get { @@ -39350,7 +40358,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die There is not enough free memory available on the other servers in the pool to finish optimizing pool. ähnelt. + /// Looks up a localized string similar to There is not enough free memory available on the other servers in the pool to finish optimizing pool.. /// public static string WLB_OPT_POOL_NOT_ENOUGH_MEMORY { get { @@ -39359,7 +40367,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Consolidation ähnelt. + /// Looks up a localized string similar to Consolidation. /// public static string WLB_OPT_REASON_CONSOLIDATE { get { @@ -39368,7 +40376,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die CPU ähnelt. + /// Looks up a localized string similar to CPU. /// public static string WLB_OPT_REASON_CPU { get { @@ -39377,7 +40385,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk ähnelt. + /// Looks up a localized string similar to Disk. /// public static string WLB_OPT_REASON_DISK { get { @@ -39386,7 +40394,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk Reads ähnelt. + /// Looks up a localized string similar to Disk Reads. /// public static string WLB_OPT_REASON_DISKREAD { get { @@ -39395,7 +40403,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Disk Writes ähnelt. + /// Looks up a localized string similar to Disk Writes. /// public static string WLB_OPT_REASON_DISKWRITE { get { @@ -39404,7 +40412,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Load Average ähnelt. + /// Looks up a localized string similar to Load Average. /// public static string WLB_OPT_REASON_LOADAVERAGE { get { @@ -39413,7 +40421,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Memory ähnelt. + /// Looks up a localized string similar to Memory. /// public static string WLB_OPT_REASON_MEMORY { get { @@ -39422,7 +40430,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network ähnelt. + /// Looks up a localized string similar to Network. /// public static string WLB_OPT_REASON_NETWORK { get { @@ -39431,7 +40439,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network Reads ähnelt. + /// Looks up a localized string similar to Network Reads. /// public static string WLB_OPT_REASON_NETWORKREAD { get { @@ -39440,7 +40448,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Network Writes ähnelt. + /// Looks up a localized string similar to Network Writes. /// public static string WLB_OPT_REASON_NETWORKWRITE { get { @@ -39449,7 +40457,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die None ähnelt. + /// Looks up a localized string similar to None. /// public static string WLB_OPT_REASON_NONE { get { @@ -39458,7 +40466,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Release Resource ähnelt. + /// Looks up a localized string similar to Release Resource. /// public static string WLB_OPT_REASON_POWEROFF { get { @@ -39467,7 +40475,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Resource required ähnelt. + /// Looks up a localized string similar to Resource required. /// public static string WLB_OPT_REASON_POWERON { get { @@ -39476,7 +40484,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Optimization Mode ähnelt. + /// Looks up a localized string similar to Optimization Mode. /// public static string WLB_OPTIMIZATION_MODE { get { @@ -39485,7 +40493,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adjust the WLB optimization mode ähnelt. + /// Looks up a localized string similar to Adjust the WLB optimization mode. /// public static string WLB_OPTIMIZATION_MODE_SUBTEXT { get { @@ -39494,7 +40502,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Optimizing pool {0} ähnelt. + /// Looks up a localized string similar to Optimizing pool {0}. /// public static string WLB_OPTIMIZING_POOL { get { @@ -39503,7 +40511,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please wait... ähnelt. + /// Looks up a localized string similar to Please wait.... /// public static string WLB_PLEASE_WAIT { get { @@ -39512,7 +40520,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Power Management ähnelt. + /// Looks up a localized string similar to Power Management. /// public static string WLB_POWERMANAGEMENT { get { @@ -39521,7 +40529,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configure WLB Power Management ähnelt. + /// Looks up a localized string similar to Configure WLB Power Management. /// public static string WLB_POWERMANAGEMENT_SUBTEXT { get { @@ -39530,7 +40538,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die PowerOn Mode ähnelt. + /// Looks up a localized string similar to PowerOn Mode. /// public static string WLB_POWERON_MODE { get { @@ -39539,9 +40547,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The Optimization Mode is scheduled to be {0}, but it currently set to {1}. + /// Looks up a localized string similar to The Optimization Mode is scheduled to be {0}, but it currently set to {1}. /// - ///Would you like to adjust the current Optimization Mode to match the schedule? ähnelt. + ///Would you like to adjust the current Optimization Mode to match the schedule?. /// public static string WLB_PROMPT_FOR_MODE_CHANGE_BLURB { get { @@ -39550,7 +40558,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Apply Optimization Mode Schedule ähnelt. + /// Looks up a localized string similar to Apply Optimization Mode Schedule. /// public static string WLB_PROMPT_FOR_MODE_CHANGE_CAPTION { get { @@ -39559,7 +40567,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Power management ähnelt. + /// Looks up a localized string similar to Power management. /// public static string WLB_PWR_MGT { get { @@ -39568,7 +40576,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuration Error: {0} ähnelt. + /// Looks up a localized string similar to Configuration Error: {0}. /// public static string WLB_RECONFIGURE { get { @@ -39577,7 +40585,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The stored server credentials are no longer valid. Please update the connection settings for Workload Balancing. ähnelt. + /// Looks up a localized string similar to The stored server credentials are no longer valid. Please update the connection settings for Workload Balancing.. /// public static string WLB_RECONFIGURE_CREDS { get { @@ -39586,7 +40594,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Re&connect... ähnelt. + /// Looks up a localized string similar to Re&connect.... /// public static string WLB_RECONNECT { get { @@ -39595,7 +40603,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Back to Parent Report ähnelt. + /// Looks up a localized string similar to Back to Parent Report. /// public static string WLB_REPORT_BACKMENUITEMTEXT { get { @@ -39604,7 +40612,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Back to Parent Report ähnelt. + /// Looks up a localized string similar to Back to Parent Report. /// public static string WLB_REPORT_BACKTOPARENTREPORT { get { @@ -39613,7 +40621,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An error occurred when attempting to bind report datasources: {0} ähnelt. + /// Looks up a localized string similar to An error occurred when attempting to bind report datasources: {0}. /// public static string WLB_REPORT_BIND_DATASOURCE { get { @@ -39622,7 +40630,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Change Credentials ähnelt. + /// Looks up a localized string similar to Change Credentials. /// public static string WLB_REPORT_CHANGECREDENTIALSTEXT { get { @@ -39631,7 +40639,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Current Page ähnelt. + /// Looks up a localized string similar to Current Page. /// public static string WLB_REPORT_CURRENTPAGETEXTBOXTOOLTIP { get { @@ -39640,7 +40648,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Date Ordering ähnelt. + /// Looks up a localized string similar to Date Ordering. /// public static string WLB_REPORT_DATE_ORDERING_CAPTION { get { @@ -39649,7 +40657,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please select an End Date that is greater than, or equal to, the Start Date ähnelt. + /// Looks up a localized string similar to Please select an End Date that is greater than, or equal to, the Start Date. /// public static string WLB_REPORT_DATE_ORDERING_MESSAGE { get { @@ -39658,7 +40666,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die definitions ähnelt. + /// Looks up a localized string similar to definitions. /// public static string WLB_REPORT_DEFINITIONS { get { @@ -39667,7 +40675,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Are you sure you want to unsubscribe report '{0}'? ähnelt. + /// Looks up a localized string similar to Are you sure you want to unsubscribe report '{0}'?. /// public static string WLB_REPORT_DELETE_SUBSCRIPTION_QUERY { get { @@ -39676,7 +40684,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete Report Subscription ähnelt. + /// Looks up a localized string similar to Delete Report Subscription. /// public static string WLB_REPORT_DELETE_SUBSCRIPTION_TITLE { get { @@ -39685,7 +40693,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Show or Hide Document Map ähnelt. + /// Looks up a localized string similar to Show or Hide Document Map. /// public static string WLB_REPORT_DOCUMENTMAP { get { @@ -39694,7 +40702,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to generate localized report label parameters: {0} ähnelt. + /// Looks up a localized string similar to Unable to generate localized report label parameters: {0}. /// public static string WLB_REPORT_ERROR_LOCALIZED_PARAMS { get { @@ -39703,7 +40711,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Everyday ähnelt. + /// Looks up a localized string similar to Everyday. /// public static string WLB_REPORT_EVERYDAY { get { @@ -39712,7 +40720,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Export ähnelt. + /// Looks up a localized string similar to Export. /// public static string WLB_REPORT_EXPORT { get { @@ -39721,7 +40729,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Exporting to {0} ähnelt. + /// Looks up a localized string similar to Exporting to {0}. /// public static string WLB_REPORT_EXPORTING { get { @@ -39730,7 +40738,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Invalid Value ähnelt. + /// Looks up a localized string similar to Invalid Value. /// public static string WLB_REPORT_FALSEVALUETEXT { get { @@ -39739,7 +40747,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Find ähnelt. + /// Looks up a localized string similar to Find. /// public static string WLB_REPORT_FIND { get { @@ -39748,7 +40756,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Find Next ähnelt. + /// Looks up a localized string similar to Find Next. /// public static string WLB_REPORT_FINDNEXT { get { @@ -39757,7 +40765,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die First Page ähnelt. + /// Looks up a localized string similar to First Page. /// public static string WLB_REPORT_FIRSTPAGE { get { @@ -39766,7 +40774,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The WLB Server was unable to process the report. Try refining your filter criteria to a smaller date range and try again. ähnelt. + /// Looks up a localized string similar to The WLB Server was unable to process the report. Try refining your filter criteria to a smaller date range and try again.. /// public static string WLB_REPORT_HTTP_403 { get { @@ -39775,7 +40783,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The WLB Server did not respond to the report request. ähnelt. + /// Looks up a localized string similar to The WLB Server did not respond to the report request.. /// public static string WLB_REPORT_HTTP_500 { get { @@ -39784,7 +40792,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Last month ähnelt. + /// Looks up a localized string similar to Last month. /// public static string WLB_REPORT_LASTMONTH { get { @@ -39793,7 +40801,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Last Page ähnelt. + /// Looks up a localized string similar to Last Page. /// public static string WLB_REPORT_LASTPAGE { get { @@ -39802,7 +40810,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Last week ähnelt. + /// Looks up a localized string similar to Last week. /// public static string WLB_REPORT_LASTWEEK { get { @@ -39811,7 +40819,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Last {0} weeks ähnelt. + /// Looks up a localized string similar to Last {0} weeks. /// public static string WLB_REPORT_LASTWEEKS { get { @@ -39820,7 +40828,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Never ähnelt. + /// Looks up a localized string similar to Never. /// public static string WLB_REPORT_NEVER { get { @@ -39829,7 +40837,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Next ähnelt. + /// Looks up a localized string similar to Next. /// public static string WLB_REPORT_NEXT { get { @@ -39838,7 +40846,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Next Page ähnelt. + /// Looks up a localized string similar to Next Page. /// public static string WLB_REPORT_NEXTPAGE { get { @@ -39847,7 +40855,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No More Matches ähnelt. + /// Looks up a localized string similar to No More Matches. /// public static string WLB_REPORT_NOMOREMATCHES { get { @@ -39856,7 +40864,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die of ähnelt. + /// Looks up a localized string similar to of. /// public static string WLB_REPORT_PAGEOF { get { @@ -39865,7 +40873,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Page Setup ähnelt. + /// Looks up a localized string similar to Page Setup. /// public static string WLB_REPORT_PAGESETUP { get { @@ -39874,7 +40882,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Page Width ähnelt. + /// Looks up a localized string similar to Page Width. /// public static string WLB_REPORT_PAGEWIDTH { get { @@ -39883,7 +40891,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Parameters ähnelt. + /// Looks up a localized string similar to Parameters. /// public static string WLB_REPORT_PARAMETERS { get { @@ -39892,7 +40900,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Please enter your password ähnelt. + /// Looks up a localized string similar to Please enter your password. /// public static string WLB_REPORT_PASSWORDPROMPT { get { @@ -39901,7 +40909,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die No longer connected to pool "{0}". Please reconnect to the pool and try again. ähnelt. + /// Looks up a localized string similar to No longer connected to pool "{0}". Please reconnect to the pool and try again.. /// public static string WLB_REPORT_POOL_CONNECTION_LOST { get { @@ -39910,7 +40918,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool Health ähnelt. + /// Looks up a localized string similar to Pool Health. /// public static string WLB_REPORT_POOL_HEALTH { get { @@ -39919,7 +40927,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Previous Page ähnelt. + /// Looks up a localized string similar to Previous Page. /// public static string WLB_REPORT_PREVIOUSPAGE { get { @@ -39928,7 +40936,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Print ähnelt. + /// Looks up a localized string similar to Print. /// public static string WLB_REPORT_PRINT { get { @@ -39937,7 +40945,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Print Layout ähnelt. + /// Looks up a localized string similar to Print Layout. /// public static string WLB_REPORT_PRINTLAYOUT { get { @@ -39946,7 +40954,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Processing Please Wait ähnelt. + /// Looks up a localized string similar to Processing Please Wait. /// public static string WLB_REPORT_PROCESSING { get { @@ -39955,7 +40963,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Refresh ähnelt. + /// Looks up a localized string similar to Refresh. /// public static string WLB_REPORT_REFRESH { get { @@ -39964,7 +40972,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An error occurred when attempting to run the remote query: {0} ähnelt. + /// Looks up a localized string similar to An error occurred when attempting to run the remote query: {0}. /// public static string WLB_REPORT_REMOTE_QUERY { get { @@ -39973,7 +40981,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Search ähnelt. + /// Looks up a localized string similar to Search. /// public static string WLB_REPORT_SEARCH { get { @@ -39982,7 +40990,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select ähnelt. + /// Looks up a localized string similar to Select. /// public static string WLB_REPORT_SELECT { get { @@ -39991,7 +40999,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Select All ähnelt. + /// Looks up a localized string similar to Select All. /// public static string WLB_REPORT_SELECTALL { get { @@ -40000,7 +41008,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An error occurred when attempting to set report parameters: {0} ähnelt. + /// Looks up a localized string similar to An error occurred when attempting to set report parameters: {0}. /// public static string WLB_REPORT_SET_PARAMS { get { @@ -40009,7 +41017,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Start ähnelt. + /// Looks up a localized string similar to Start. /// public static string WLB_REPORT_START { get { @@ -40018,7 +41026,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Stop Rendering ähnelt. + /// Looks up a localized string similar to Stop Rendering. /// public static string WLB_REPORT_STOPRENDERING { get { @@ -40027,7 +41035,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Text not found ähnelt. + /// Looks up a localized string similar to Text not found. /// public static string WLB_REPORT_TEXTNOTFOUND { get { @@ -40036,7 +41044,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Total pages ähnelt. + /// Looks up a localized string similar to Total pages. /// public static string WLB_REPORT_TOTALPAGES { get { @@ -40045,7 +41053,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die User name ähnelt. + /// Looks up a localized string similar to User name. /// public static string WLB_REPORT_USERNAME { get { @@ -40054,7 +41062,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die View All ähnelt. + /// Looks up a localized string similar to View All. /// public static string WLB_REPORT_VIEW_ALL { get { @@ -40063,7 +41071,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Basic View ähnelt. + /// Looks up a localized string similar to Basic View. /// public static string WLB_REPORT_VIEW_BASIC { get { @@ -40072,7 +41080,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Custom View ähnelt. + /// Looks up a localized string similar to Custom View. /// public static string WLB_REPORT_VIEW_CUSTOM { get { @@ -40081,7 +41089,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Filter Item ähnelt. + /// Looks up a localized string similar to Filter Item. /// public static string WLB_REPORT_VIEW_TAG_COLUMN_HEADER { get { @@ -40090,7 +41098,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Verbose View ähnelt. + /// Looks up a localized string similar to Verbose View. /// public static string WLB_REPORT_VIEW_VERBOSE { get { @@ -40099,7 +41107,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die View Report ähnelt. + /// Looks up a localized string similar to View Report. /// public static string WLB_REPORT_VIEWREPORT { get { @@ -40108,7 +41116,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Whole Page ähnelt. + /// Looks up a localized string similar to Whole Page. /// public static string WLB_REPORT_WHOLEPAGE { get { @@ -40117,7 +41125,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Zoom ähnelt. + /// Looks up a localized string similar to Zoom. /// public static string WLB_REPORT_ZOOM { get { @@ -40126,7 +41134,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Retrieving WLB Configuration ähnelt. + /// Looks up a localized string similar to Retrieving WLB Configuration. /// public static string WLB_RETRIEVING_CONFIGURATION { get { @@ -40135,7 +41143,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Retrieving WLB recommendations for pool {0} ähnelt. + /// Looks up a localized string similar to Retrieving WLB recommendations for pool {0}. /// public static string WLB_RETRIEVING_RECOMMENDATIONS { get { @@ -40144,7 +41152,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Retrieving WLB recommendations ähnelt. + /// Looks up a localized string similar to Retrieving WLB recommendations . /// public static string WLB_RETRIEVING_VM_RECOMMENDATIONS { get { @@ -40153,7 +41161,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saving Workload Balancing settings ähnelt. + /// Looks up a localized string similar to Saving Workload Balancing settings. /// public static string WLB_SAVING_SETTINGS { get { @@ -40162,7 +41170,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (Scheduled) ähnelt. + /// Looks up a localized string similar to {0} (Scheduled). /// public static string WLB_SCHEDULED_OPT_MODE { get { @@ -40171,7 +41179,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Server Credentials ähnelt. + /// Looks up a localized string similar to Server Credentials. /// public static string WLB_SERVER_CREDENTIALS { get { @@ -40180,7 +41188,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Update the credentials used for WLB communications ähnelt. + /// Looks up a localized string similar to Update the credentials used for WLB communications. /// public static string WLB_SERVER_CREDENTIALS_SUBTEXT { get { @@ -40189,7 +41197,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Workload Balancing server name ähnelt. + /// Looks up a localized string similar to Workload Balancing server name. /// public static string WLB_SERVER_URL { get { @@ -40198,7 +41206,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Critical ähnelt. + /// Looks up a localized string similar to Critical. /// public static string WLB_SEVERITY_CRITICAL { get { @@ -40207,7 +41215,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die High ähnelt. + /// Looks up a localized string similar to High. /// public static string WLB_SEVERITY_HIGH { get { @@ -40216,7 +41224,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Low ähnelt. + /// Looks up a localized string similar to Low. /// public static string WLB_SEVERITY_LOW { get { @@ -40225,7 +41233,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Medium ähnelt. + /// Looks up a localized string similar to Medium. /// public static string WLB_SEVERITY_MEDIUM { get { @@ -40234,7 +41242,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Workload Balancing adjusts grooming history automatically for SQL Server Express databases. ähnelt. + /// Looks up a localized string similar to Workload Balancing adjusts grooming history automatically for SQL Server Express databases.. /// public static string WLB_SQLEXPRESS_GROOMING_BLURB { get { @@ -40243,7 +41251,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Workload Balancing status ähnelt. + /// Looks up a localized string similar to Workload Balancing status. /// public static string WLB_STATUS { get { @@ -40252,7 +41260,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Bcc ähnelt. + /// Looks up a localized string similar to Bcc. /// public static string WLB_SUBSCRIPTION_BCC { get { @@ -40261,7 +41269,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Cc ähnelt. + /// Looks up a localized string similar to Cc. /// public static string WLB_SUBSCRIPTION_CC { get { @@ -40270,7 +41278,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Comment ähnelt. + /// Looks up a localized string similar to Comment. /// public static string WLB_SUBSCRIPTION_COMMENT { get { @@ -40279,7 +41287,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Data Range ähnelt. + /// Looks up a localized string similar to Data Range. /// public static string WLB_SUBSCRIPTION_DATARANGE { get { @@ -40288,7 +41296,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Deliver On ähnelt. + /// Looks up a localized string similar to Deliver On. /// public static string WLB_SUBSCRIPTION_DELIVERON { get { @@ -40297,7 +41305,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Edited By ähnelt. + /// Looks up a localized string similar to Edited By. /// public static string WLB_SUBSCRIPTION_EDITED_BY { get { @@ -40306,7 +41314,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Edited On ähnelt. + /// Looks up a localized string similar to Edited On. /// public static string WLB_SUBSCRIPTION_EDITED_ON { get { @@ -40315,7 +41323,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Ending ähnelt. + /// Looks up a localized string similar to Ending. /// public static string WLB_SUBSCRIPTION_ENDING { get { @@ -40324,7 +41332,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An error occurred while saving subscription: {0} ähnelt. + /// Looks up a localized string similar to An error occurred while saving subscription: {0}. /// public static string WLB_SUBSCRIPTION_ERROR { get { @@ -40333,7 +41341,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Format ähnelt. + /// Looks up a localized string similar to Format. /// public static string WLB_SUBSCRIPTION_FORMAT { get { @@ -40342,7 +41350,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Last Sent ähnelt. + /// Looks up a localized string similar to Last Sent. /// public static string WLB_SUBSCRIPTION_LASTSENT { get { @@ -40351,7 +41359,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} at {1} ähnelt. + /// Looks up a localized string similar to {0} at {1}. /// public static string WLB_SUBSCRIPTION_LASTSENT_TIME { get { @@ -40360,7 +41368,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Reply-To ähnelt. + /// Looks up a localized string similar to Reply-To. /// public static string WLB_SUBSCRIPTION_REPLYTO { get { @@ -40369,7 +41377,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Run At ähnelt. + /// Looks up a localized string similar to Run At. /// public static string WLB_SUBSCRIPTION_RUNAT { get { @@ -40378,7 +41386,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Starting ähnelt. + /// Looks up a localized string similar to Starting. /// public static string WLB_SUBSCRIPTION_STARTING { get { @@ -40387,7 +41395,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Subject ähnelt. + /// Looks up a localized string similar to Subject. /// public static string WLB_SUBSCRIPTION_SUBJECT { get { @@ -40396,7 +41404,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die To ähnelt. + /// Looks up a localized string similar to To. /// public static string WLB_SUBSCRIPTION_TO { get { @@ -40405,7 +41413,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Subscriptions ähnelt. + /// Looks up a localized string similar to Subscriptions. /// public static string WLB_SUBSCRIPTIONS { get { @@ -40414,7 +41422,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The specified schedule conflicts with an existing schedule. ähnelt. + /// Looks up a localized string similar to The specified schedule conflicts with an existing schedule.. /// public static string WLB_TASK_SCHEDULE_CONFLICT_BLURB { get { @@ -40423,7 +41431,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Conflicting Schedule ähnelt. + /// Looks up a localized string similar to Conflicting Schedule. /// public static string WLB_TASK_SCHEDULE_CONFLICT_TITLE { get { @@ -40432,7 +41440,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Critical Thresholds ähnelt. + /// Looks up a localized string similar to Critical Thresholds. /// public static string WLB_THRESHOLDS { get { @@ -40441,7 +41449,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Adjust Critical thresholds for WLB metrics ähnelt. + /// Looks up a localized string similar to Adjust Critical thresholds for WLB metrics. /// public static string WLB_THRESHOLDS_SUBTEXT { get { @@ -40450,7 +41458,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Confirm Automated Power Management ähnelt. + /// Looks up a localized string similar to Confirm Automated Power Management. /// public static string WLB_UNTESTED_HOST_CAPTION { get { @@ -40459,9 +41467,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die This Host has either never been remotely powered on, or failed to power on correctly in the past. + /// Looks up a localized string similar to This Host has either never been remotely powered on, or failed to power on correctly in the past. /// - ///Are you sure you want to enable automated power management for this Host? ähnelt. + ///Are you sure you want to enable automated power management for this Host?. /// public static string WLB_UNTESTED_HOST_WARNING { get { @@ -40470,7 +41478,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Workload Balancing has been paused for pool '{0}'. ähnelt. + /// Looks up a localized string similar to Workload Balancing has been paused for pool '{0}'.. /// public static string WLB_WAS_DISABLED { get { @@ -40479,7 +41487,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Report exported successfully ähnelt. + /// Looks up a localized string similar to Report exported successfully. /// public static string WLBREPORT_EXPORT_SUCC { get { @@ -40488,7 +41496,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Host Health History ähnelt. + /// Looks up a localized string similar to Host Health History. /// public static string WLBREPORT_HOST_HEALTH_HISTORY { get { @@ -40497,7 +41505,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Optimization Performance History ähnelt. + /// Looks up a localized string similar to Optimization Performance History. /// public static string WLBREPORT_OPTIMIZATION_PERFORMANCE_HISTORY { get { @@ -40506,7 +41514,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool Audit Log History ähnelt. + /// Looks up a localized string similar to Pool Audit Log History. /// public static string WLBREPORT_POOL_AUDIT_HISTORY { get { @@ -40515,7 +41523,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool Connection Lost ähnelt. + /// Looks up a localized string similar to Pool Connection Lost. /// public static string WLBREPORT_POOL_CONNECTION_LOST_CAPTION { get { @@ -40524,7 +41532,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool Health ähnelt. + /// Looks up a localized string similar to Pool Health. /// public static string WLBREPORT_POOL_HEALTH { get { @@ -40533,7 +41541,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool Health History ähnelt. + /// Looks up a localized string similar to Pool Health History. /// public static string WLBREPORT_POOL_HEALTH_HISTORY { get { @@ -40542,7 +41550,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pool Optimization History ähnelt. + /// Looks up a localized string similar to Pool Optimization History. /// public static string WLBREPORT_POOL_OPTIMIZATION_HISTORY { get { @@ -40551,7 +41559,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die An error occurred when attempting to open the Workload Balancing report window. Please check the report configuration file. ähnelt. + /// Looks up a localized string similar to An error occurred when attempting to open the Workload Balancing report window. Please check the report configuration file.. /// public static string WLBREPORT_REPORT_CONFIG_ERROR { get { @@ -40560,7 +41568,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Machine Motion History ähnelt. + /// Looks up a localized string similar to Virtual Machine Motion History. /// public static string WLBREPORT_VM_MOTION_HISTORY { get { @@ -40569,7 +41577,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Machine Motion History ähnelt. + /// Looks up a localized string similar to Virtual Machine Motion History. /// public static string WLBREPORT_VM_MOVEMENT_HISTORY { get { @@ -40578,7 +41586,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Virtual Machine Performance History ähnelt. + /// Looks up a localized string similar to Virtual Machine Performance History. /// public static string WLBREPORT_VM_PERFORMANCE_HISTORY { get { @@ -40587,7 +41595,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Workload Balancing ähnelt. + /// Looks up a localized string similar to Workload Balancing. /// public static string WORKLOAD_BALANCING { get { @@ -40596,7 +41604,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are attempting an action which requires additional privileges to those granted by your current role. ähnelt. + /// Looks up a localized string similar to You are attempting an action which requires additional privileges to those granted by your current role.. /// public static string WRONG_ROLE_DESC { get { @@ -40605,7 +41613,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} (hidden) ähnelt. + /// Looks up a localized string similar to {0} (hidden). /// public static string X_HIDDEN { get { @@ -40614,7 +41622,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The {0} feature was deprecated in {1} and may be unavailable in future versions ähnelt. + /// Looks up a localized string similar to The {0} feature was deprecated in {1} and may be retired in future versions. /// public static string X_IS_DEPRECATED_IN_X { get { @@ -40623,7 +41631,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The {0} feature is not available in {1} and later versions ähnelt. + /// Looks up a localized string similar to The {0} feature is not available in {1} and later versions. /// public static string X_IS_REMOVED_IN_X { get { @@ -40632,7 +41640,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} with warning: {1} ähnelt. + /// Looks up a localized string similar to {0} with warning: {1}. /// public static string X_WITH_WARNING_X { get { @@ -40641,7 +41649,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] ähnelt. + /// Looks up a localized string similar to [XenCenter]. /// public static string XENCENTER { get { @@ -40650,7 +41658,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] Settings|*.config ähnelt. + /// Looks up a localized string similar to [XenCenter] Settings|*.config. /// public static string XENCENTER_CONFIG_FILTER { get { @@ -40659,7 +41667,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Newer [XenCenter] Available ähnelt. + /// Looks up a localized string similar to Newer [XenCenter] Available. /// public static string XENCENTER_NEWER_AVAILABLE { get { @@ -40668,7 +41676,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenCenter] version check ähnelt. + /// Looks up a localized string similar to [XenCenter] version check. /// public static string XENCENTER_VERSION_CHECK_DESCRIPTION { get { @@ -40677,7 +41685,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Saved Searches (*.{0})|*.{0} ähnelt. + /// Looks up a localized string similar to Saved Searches (*.{0})|*.{0}. /// public static string XENSEARCH_SAVED_SEARCH { get { @@ -40686,7 +41694,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] ähnelt. + /// Looks up a localized string similar to [XenServer]. /// public static string XENSERVER { get { @@ -40695,7 +41703,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] [BRANDING_VERSION_6_2] ähnelt. + /// Looks up a localized string similar to [XenServer] [BRANDING_VERSION_6_2]. /// public static string XENSERVER_6_2 { get { @@ -40704,7 +41712,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] [BRANDING_VERSION_6_5] ähnelt. + /// Looks up a localized string similar to [XenServer] [BRANDING_VERSION_6_5]. /// public static string XENSERVER_6_5 { get { @@ -40713,7 +41721,25 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] Templates ähnelt. + /// Looks up a localized string similar to [XenServer] [BRANDING_VERSION_8_1]. + /// + public static string XENSERVER_8_1 { + get { + return ResourceManager.GetString("XENSERVER_8_1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to [Legacy XenServer product]. + /// + public static string XENSERVER_LEGACY { + get { + return ResourceManager.GetString("XENSERVER_LEGACY", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to [XenServer] Templates. /// public static string XENSERVER_TEMPLATES { get { @@ -40722,7 +41748,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die License Upgrade Required ähnelt. + /// Looks up a localized string similar to License Upgrade Required. /// public static string XENSERVER_UPGRADE_REQUIRED { get { @@ -40731,7 +41757,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] Backup Files ähnelt. + /// Looks up a localized string similar to [XenServer] Backup Files. /// public static string XS_BACKUP_FILES { get { @@ -40740,7 +41766,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] License Files ähnelt. + /// Looks up a localized string similar to [XenServer] License Files. /// public static string XS_LICENSE_FILES { get { @@ -40749,9 +41775,9 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [Citrix VM Tools] DVDs will now be inserted into the DVD drive of each of the selected VMs. Any disks currently in the drives will be ejected. + /// Looks up a localized string similar to [Citrix VM Tools] DVDs will now be inserted into the DVD drive of each of the selected VMs. Any disks currently in the drives will be ejected. /// - ///You will need to navigate to the Console on each of the selected VMs to complete the installation. ähnelt. + ///You will need to navigate to the Console on each of the selected VMs to complete the installation.. /// public static string XS_TOOLS_MESSAGE_MORE_THAN_ONE_VM { get { @@ -40760,7 +41786,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die The [Citrix VM Tools] SR could not be found. ähnelt. + /// Looks up a localized string similar to The [Citrix VM Tools] SR could not be found.. /// public static string XS_TOOLS_SR_NOT_FOUND { get { @@ -40769,7 +41795,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die [XenServer] Update Files ({0})|{0}|All files ({1})|{1} ähnelt. + /// Looks up a localized string similar to [XenServer] Update Files ({0})|{0}|All files ({1})|{1}. /// public static string XSUPDATE { get { @@ -40778,7 +41804,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Yes ähnelt. + /// Looks up a localized string similar to Yes. /// public static string YES { get { @@ -40787,7 +41813,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die &Yes ähnelt. + /// Looks up a localized string similar to &Yes. /// public static string YES_BUTTON_CAPTION { get { @@ -40796,7 +41822,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die was yesterday ähnelt. + /// Looks up a localized string similar to was yesterday. /// public static string YESTERDAY { get { @@ -40805,7 +41831,7 @@ namespace XenAdmin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die You are here ähnelt. + /// Looks up a localized string similar to You are here. /// public static string YOU_ARE_HERE { get { diff --git a/XenModel/Messages.ja.resx b/XenModel/Messages.ja.resx index e0527e95b..e7252be80 100755 --- a/XenModel/Messages.ja.resx +++ b/XenModel/Messages.ja.resx @@ -643,7 +643,7 @@ 一時停止しています - ポーズ + 一時停止 Docker コンテナ {0} の一時停止 @@ -1851,15 +1851,9 @@ SR の物理使用量が {2} を超えるとアラートが送信されます。 コントロール ドメインのメモリ使用率が {1} 分間 {0} を超えたとき - - すべてをエクスポート(&A) - アラート一覧にフィルタが適用されています。すべての接続先サーバーのすべてのアラートをエクスポートしますか? それとも、現在のフィルタにより表示されているアラートのみをエクスポートしますか? - - 表示のみをエクスポート(&V) - ヘルプ @@ -2004,10 +1998,10 @@ SR の物理使用量が {2} を超えるとアラートが送信されます。 ライセンス詳細 - スナップショット スケジュールへの VM の割り当て(&O) + スナップショット スケジュールの割り当て(&L) - スナップショット スケジュールへの VM の割り当て + スナップショット スケジュールの割り当て(&L) スナップショット スケジュールへの VM の割り当て... @@ -2155,6 +2149,9 @@ SR の物理使用量が {2} を超えるとアラートが送信されます。 BIOS ブート + + BIOS ブート モードは現在選択したテンプレートでサポートされていません。 + BIOS 文字列のコピー @@ -2544,7 +2541,7 @@ SR の物理使用量が {2} を超えるとアラートが送信されます。 サーバーのパスワードの変更 - {0} - {0} のルート パスワードを入力してください。 + '{0}' のルート パスワードを入力してください: ポリシー '{0}' の状態の変更 @@ -2611,6 +2608,9 @@ SR の物理使用量が {2} を超えるとアラートが送信されます。 ホストのアップグレードの準備チェック + + ゲストの互換性を確認中 + 役割を確認しています... @@ -2710,6 +2710,9 @@ SR の物理使用量が {2} を超えるとアラートが送信されます。 アプライアンス ファイルを圧縮しています... + + 高可用性の構成 + 高可用性の構成(&C)... @@ -2723,7 +2726,7 @@ SR の物理使用量が {2} を超えるとアラートが送信されます。 確認 - 通知のクリアを確認 + 警告または通知のクリアを確認 コントロール ドメイン メモリを変更すると、サーバーが再起動されます。 @@ -3139,7 +3142,6 @@ VM {2} をエクスポートしてもよろしいですか? ほかの XE Express Server ({1}) に接続済みであるため、サーバー {0} への接続は制限されます - Message shown when user attempts to connect to a second XE Express host from the UI [Citrix XenServer] Express Edition サーバー ({1}) に接続済みであるため、サーバー {0} への接続は制限されます。 @@ -3147,7 +3149,7 @@ VM {2} をエクスポートしてもよろしいですか? 同時に複数の [Citrix XenServer] Express Edition サーバーに接続することはできません。ライセンスのアップグレードについては、下のリンクを参照してください。 - ライセンスによる制限のため、{0} に接続できません + サーバーのライセンス条件により、{0} に接続できません。 Title of notice shown when connection to a host is restricted by license @@ -3249,6 +3251,259 @@ VM {2} をエクスポートしてもよろしいですか? ホスト {0} 上のコントロール ドメイン + + この変換をキャンセルしてよろしいですか? + + + 変換をキャンセルできません。詳しくはログを参照してください。 + + + Conversion Manager 仮想アプライアンスが見つかりません。 + + + Conversion Manager 仮想アプライアンスの IPアドレスを取得できません。 + + + この操作により、すべての完了済みの変換が Conversion Manager 仮想アプライアンスの履歴からクリアされます。 + +この操作は元に戻せません。続行しますか? + + + 変換履歴をクリアできません。詳しくはログを参照してください。 + + + VMware サーバーに接続中... + + + VMware サーバーに接続できません。詳しくはログを参照してください。 + + + VMware サーバーに接続されました + + + Conversion Manager 仮想アプライアンスへの接続が失われました。{0} 秒以内に再接続します。 + + + Conversion Manager 仮想アプライアンスに接続しました。 + + + 新しい変換を開始できません。詳しくはログを参照してください。 + + + VMware サーバー + + + VMware サーバーに接続する + + + 変換 ID + + + 説明 + + + ディスク書き込み + + + 期間 + + + 終了時間 + + + 変換を更新できません。詳しくはログを参照してください。 + + + ネットワーク読み取り + + + {0} (圧縮) + + + 開始時間 + + + 状態 + + + ターゲット SR + + + 変換を {0} にエクスポートします + + + 変換を {0} にエクスポートしました + + + 変換を {0} にエクスポートしています... + + + 変換一覧にフィルタが適用されています。すべての変換をエクスポートしますか? それとも、現在のフィルタにより表示されている変換のみをエクスポートしますか? + + + Conversion Manager 仮想アプライアンスの初期化中... + + + Conversion Manager 仮想アプライアンスを初期化できません。詳しくはログを参照してください。 + + + 変換ログを {0} に保存します + + + 変換ログを {0} に保存しました + + + 変換ログの保存 + + + 変換ログを {0} に保存しています + + + 変換の管理 - {0} + + + 変換する VMware VM の仮想イーサネット アダプターを、変換先のプールまたはスタンドアロン サーバーのネットワークにマップします。 + + + VMware ネットワーク + + + ソース ネットワーク データを取得中... + + + ソース ネットワーク データを取得できませんでした + + + ネットワーク + + + VM を接続する [XenServer] ネットワークの選択 (オプション) + + + {0} ユーザーには、Conversion Manager を実行するための権限がありません。以下のいずれかの役割を持つアカウントを使用してログインしてください: + +{1} + + + 変換を再試行できません。詳しくはログを参照してください。 + + + Conversion Manager 仮想アプライアンスの選択 - {0} + + + キャンセル済み + + + 作成済み + + + 失敗 + + + 不完全 + + + 応答待ち + + + 進行中 + + + 完了 + + + 空き容量 {0} + + + 使用可能な SR を取得しています... + + + 変換された VM のディスクを格納できる SR の場所はありません + + + 使用可能な SR を取得できませんでした + + + 必要な容量 {0} + + + SR がオーバーコミットされました + + + この SR には十分な空き容量がありません + + + ストレージ + + + ターゲット ストレージの選択 + + + 使用済みスペース {0} + + + MAC アドレスを保持する: + + + ネットワーク: + + + ストレージ: + + + 変換する VM: + + + VMware サーバー: + + + 完了 + + + 変換設定の確認 + + + {0} (テンプレート) + + + 再試行する(&T) + + + Conversion Manager 仮想アプライアンスとの互換性を確認しています... + + + Conversion Manager 仮想アプライアンスのバージョンを取得できません。詳しくはログを参照してください。 + + + [XenCenter] は、このバージョンの Conversion Manager 仮想アプライアンスと互換性がありません。 + + + 使用中の Conversion Manager 仮想アプライアンスのバージョンは [BRANDING_VERSION_7_0] より前です。従来の Conversion Manager コンソールを使用して、変換をセットアップおよび制御できます。ただし、お使いの [XenServer] のバージョンに一致する Conversion Manager 仮想アプライアンスをインポートして構成することを強くお勧めします。 + + + 仮想マシン + + + 変換する VM の選択 + + + Conversion Manager 仮想アプライアンスの IPアドレスを取得しています... + + + Conversion Manager 仮想アプライアンスの再開中... + + + Conversion Manager 仮想アプライアンスの起動中... + + + Conversion Manager 仮想アプライアンスの電源状態を推測できません。 + + + Conversion Manager 仮想アプライアンスの一時停止の解除中... + + + 新しい変換 + 変換(&C) @@ -4231,8 +4486,11 @@ VM 移行処理のパフォーマンスや信頼性を向上させるため、 必要な空き容量がありません + + ディスク サイズは {0} 以内にする必要があります。 + - {0} {1} 以上のディスクが必要です + {0} 以上のディスクが必要です。 すべてのアラートをクリア(&A) @@ -4249,6 +4507,9 @@ VM 移行処理のパフォーマンスや信頼性を向上させるため、 表示オプション + + 動的メモリ制御 + サーバーのライセンス条件のため、動的メモリ制御 (DMC) は使用できません。 @@ -4617,7 +4878,7 @@ CD をイジェクトしてから再試行してください。 フェイルオーバーの事前チェックの実行: - フェイルオーバーの事前チェック完了: 問題は見つかりませんでした + フェイルオーバーの事前チェックが完了しました。問題は見つかりませんでした。 事前チェック @@ -4994,6 +5255,9 @@ CD をイジェクトしてから再試行してください。 仮想ディスクの非アクティブ化エラー + + エクスポート先ディレクトリが存在しません。 + 以下のストレージを破棄できません。 @@ -5276,6 +5540,9 @@ CD をイジェクトしてから再試行してください。 すべてをエクスポート + + すべてをエクスポート(&A) + OVF/OVA パッケージのエクスポート @@ -5288,9 +5555,6 @@ CD をイジェクトしてから再試行してください。 エクスポート先ディレクトリが無効です。 - - エクスポート先ディレクトリが存在しません。 - エクスポート先ディレクトリに対する書き込み許可がありません。 @@ -5330,6 +5594,9 @@ CD をイジェクトしてから再試行してください。 EULA の最大数 ({0}) に達しました。 + + 表示のみをエクスポート(&V) + 高度なオプション @@ -5981,6 +6248,9 @@ CD をイジェクトしてから再試行してください。 高可用性の構成... + + 高可用性ステート ファイル VDI がプール内に見つからないため、プール '{0}' の高可用性を構成できません。 + 現在、この VM は高可用性で保護されています。この VM を強制的にシャットダウンしてもよろしいですか? これにより、この VM に対して実行中のすべてのタスクがキャンセルされるため、データが失われることがあります。 @@ -6002,6 +6272,9 @@ CD をイジェクトしてから再試行してください。 現在の許容障害数: + + 高可用性ステート ファイル VDI がプール内に見つからないため、プール '{0}' の高可用性を無効にできません。 + プール '{0}' の高可用性を無効にしてもよろしいですか? @@ -6488,16 +6761,16 @@ VM の再起動優先度をクリアしてもよろしいですか? サーバーを復元するには、'{0}' を再起動する必要があります。 - {1} から {0} 個のクラッシュダンプが削除されました + {1} から {0} 個のクラッシュ ダンプが削除されました - {0} から 1 個のクラッシュダンプが削除されました + {0} から 1 個のクラッシュ ダンプが削除されました {2} から {1} 個のクラッシュ ダンプのうちの {0} 個を削除しています - {0} からのクラッシュダンプの削除 + {0} からのクラッシュ ダンプの削除 サーバー '{0}' が復元されました。 @@ -6520,6 +6793,60 @@ VM の再起動優先度をクリアしてもよろしいですか? Hotfix チェック + + {0} は {1} に製品終了 (EOL) となります。この日付以降、{2} はサポート対象外となり、このバージョン向けの Hotfix はリリースされません。サポートされている最新のバージョンにアップグレードしてください。 + + + {0} は {1} に製品終了 (EOL) となります。この日付以降、Hotfix はリリースされません。最新の CR にアップグレードしてください。 + + + {0} の新しい累積更新プログラムが利用可能です。{1} 以降、{2} の Hotfix はリリースされません。最新の累積更新プログラムに更新してください。 + + + {0} は {1} に製品終了 (EOL) となり、サポート対象外となりました。この日付以降、Hotfix はリリースされません。サポートされている最新のバージョンにアップグレードしてください。 + + + {0} は {1} に製品終了 (EOL) となりました。この日付以降、Hotfix はリリースされません。最新の CR にアップグレードしてください。 + + + Express ライセンスの顧客向け {0} は、{1} に製品終了 (EOL) となりました。この日付以降にリリースされた Hotfix の対象外になります。最新の CR にアップグレードしてください。 + + + {0} は {1} に製品終了 (EOL) となります + + + 新しい累積更新プログラムが利用可能です + + + {0} は製品終了 (EOL) となりました + + + Express ライセンスの顧客向け {0} は製品終了 (EOL) になりました + + + {0} 以降、Hotfix はリリースされません + + + 新しい累積更新プログラムが利用可能です + + + 製品終了 (EOL): {0}。サポート対象外となりました + + + 製品終了 (EOL): {0} + + + 製品終了 (EOL) + + + 製品終了 (EOL)。サポート対象外となりました + + + {0} 以降にリリースされた Hotfix の対象外です + + + Express ライセンスの顧客向け製品終了 (EOL) + 毎時 {0} 分過ぎ @@ -6607,6 +6934,9 @@ VM の再起動優先度をクリアしてもよろしいですか? エクスポートされたファイルが不完全であるか、形式を認識できません。 + + 選択した SR に Fixup ISO をコピーできません + [ISO SR を選択] @@ -6647,16 +6977,13 @@ VM の再起動優先度をクリアしてもよろしいですか? マニフェストの検証(&V) - アプライアンス ファイルのマニフェストを検証します。このオプションは、マニフェスト ファイルが追加されたアプライアンスでのみ使用可能です。 + このアプライアンスには、マニフェスト ファイルが追加されています。アプライアンス ファイルのマニフェストを検証するかを選択できます。 デジタル署名の検証(&V) - アプライアンスのデジタル署名が有効であることを検証します。このオプションは、デジタル署名が追加されたアプライアンスでのみ使用可能です。 - - - OVA ファイルが破損しているか、無効なデータを含んでいます。 + このアプライアンスには、デジタル署名が追加されています。アプライアンスのデジタル署名が有効であることを検証するかを選択できます。 パスに無効な文字が含まれています。 @@ -6719,7 +7046,7 @@ VM の再起動優先度をクリアしてもよろしいですか? vApp としてインポートできるのは OVF/OVA パッケージのみです。 - すべてのインポート オプション (*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;ova.xml)|*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;ova.xml|OVF/OVA パッケージ ファイル (*.ovf;*.ova;*.ova.gz)|*.ovf;*.ova*;*.ova.gz|仮想ハード ディスク イメージ (*.vhd;*.vmdk;)|*.vhd;*.vmdk;|XVA ファイル (*.xva)|*.xva|XVA Version 1|ova.xml + すべてのインポート オプション (*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;*.xva.gz;ova.xml)|*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;*.xva.gz;ova.xml|OVF/OVA パッケージ ファイル (*.ovf;*.ova;*.ova.gz)|*.ovf;*.ova*;*.ova.gz|仮想ハード ディスク イメージ (*.vhd;*.vmdk;)|*.vhd;*.vmdk;|XVA ファイル (*.xva;*.xva.gz)|*.xva;*.xva.gz|XVA Version 1|ova.xml OVF/OVA パッケージ (*.ovf;*.ova;*.ova.gz)|*.ovf;*.ova*;*.ova.gz @@ -6796,9 +7123,6 @@ VM の再起動優先度をクリアしてもよろしいですか? 新規 VM のホーム サーバーを選択してください - - 新規 VM の仮想ディスクを格納するストレージ リポジトリを選択してください - 新規 VM の仮想ネットワーク インターフェイスを構成してください @@ -6980,10 +7304,7 @@ VM の再起動優先度をクリアしてもよろしいですか? 無効なホスト名 - 無効な数 - - - これは有効な OVF ファイルではありません。 + 無効なディスク サイズ 無効なパラメーターです @@ -7088,9 +7409,6 @@ SCSI ID: {2} サーバーをドメイン '{0}' に追加するためのユーザー名およびパスワードを入力してください。 - - このまま待機(&K) - {0} への接続を試行しています... @@ -7115,6 +7433,9 @@ SCSI ID: {2} ライセンス マネージャ + + 詳細情報 + マシン アカウントを Active Directory ドメインから削除するためのユーザー名およびパスワードを入力します。マシン アカウントを削除できない場合でも、Active Directory 認証は無効になります。 @@ -7363,9 +7684,6 @@ Standard 機能のみ有効です このサーバーからアクセスできない、{0} のローカル ストレージが選択されています - - ローカルの SR 間で仮想ディスクを移動することはできません - 場所: @@ -7493,6 +7811,9 @@ SCSI ID: {2} {0} (アップデート中...) + + Conversion Manager(&E)... + テンプレートへの変換(&T)... @@ -7524,7 +7845,7 @@ SCSI ID: {2} Ctrl+Y - 削除(&L)... + 削除(&D)... スタンドアロン サーバーにする(&E) @@ -7538,9 +7859,6 @@ SCSI ID: {2} テンプレートの削除(&D)... - - VM の削除(&D)... - 破棄(&O)... @@ -7988,12 +8306,6 @@ SCSI ID: {2} 消去する(&Y) - - ヘルプ トピック {0} ({1}) を開いています。 - - - ヘルプ トピック {0} は存在しません。 - 保存した設定が破損している可能性があります。{0} への変更を元に戻すか、またはこのファイルを削除してデフォルト設定に戻してください。 @@ -8123,6 +8435,9 @@ SCSI ID: {2} {0} 項目の VM を選択 + + 詳細... + 移動されました @@ -8377,9 +8692,6 @@ SCSI ID: {2} VM が新しいディスクにアクセスする前に、シャットダウンして再起動してください。 - - ディスクが作成されました - [XenCenter] の最新バージョンがリリースされています。サポート担当者に連絡してください。 @@ -8917,14 +9229,26 @@ NFS ストレージ リポジトリを構成する場合は、NFS サーバー テンプレートによるプロビジョニング + + ホーム サーバーが設定されていない VM はデフォルトの SR '{0}' にディスクを持つことはできません。 + + + デフォルトの SR '{0}' には、新しい VM のディスクに必要な空き領域がありません。 + ストレージ + + ホームサーバーのない VM は、テンプレート ('{0}') が示す SR 上にディスクを持つことはできません。 + + + テンプレート ('{0}') が示す SR には、新しい VM のディスクに必要な空き領域がありません。 + <適切なストレージがありません> - SR '{0}' がオーバー コミットされました。空き容量が {1} しかありません。新規 VM では {2} 必要です。 + SR '{0}' がオーバーコミットされました。空き容量が {1} しかありません。新規 VM では {2} 必要です。 新規 VM のストレージを構成してください @@ -8932,6 +9256,9 @@ NFS ストレージ リポジトリを構成する場合は、NFS サーバー {0} {1} + + [XenCenter] は別の SR を選択しました。 + CentOS @@ -8986,6 +9313,12 @@ NFS ストレージ リポジトリを構成する場合は、NFS サーバー Windows + + 選択した仮想 GPU タイプは複数のインスタンスをサポートします。 + + + 選択した仮想 GPU タイプは複数のインスタンスをサポートしていません。 + 仮想 GPU の割り当て @@ -9016,9 +9349,6 @@ NFS ストレージ リポジトリを構成する場合は、NFS サーバー [Citrix VM Tools] のインストール先の仮想マシンに DVD ドライブがないものがあります。必要に応じて新しい DVD ドライブを作成してもよろしいですか? - - DVD ドライブが作成されました - VM {0} の新規 DVD ドライブの作成 @@ -9108,7 +9438,7 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 この操作をキャンセルして、すべてのサーバーに最新のサプリメンタル パックをインストールしてからプールを作成することを強くお勧めします。 - 新しいスケジュール(&N)... + 新規スナップショット スケジュール(&N)... 新しい検索 @@ -9319,7 +9649,7 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 空き領域を増やしてもう一度試してください。 - 必要な領域: {0} + 必要な容量: {0} アップデート '{1}' をアップロードするために十分な領域が '{0}' にありません。 @@ -9491,15 +9821,6 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 (平均/最大KB秒) - - [XenCenter] ディスク イメージのインポート機能により作成 - - - 仮想ディスク - - - 仮想ネットワーク - 親フォルダ @@ -9536,9 +9857,6 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 パスワードを入力してください - - マスター パスワードが設定されているため、[常に提供する] を選択することはできません。 - 入力したパスワードが間違っています @@ -9577,6 +9895,12 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 アップデートをアップロードしてインストールします + + 一部の自動アップデート プロセスは完了しましたが、警告があります。 + + + 自動アップデート プロセスは完了しましたが、警告があります。 + クリーン アップ... @@ -9604,9 +9928,6 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 アップデート モードの選択 - - 詳細... - プールの問題の解決 @@ -9659,7 +9980,7 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 ディスク空き容量の要件をチェックしています - 以下の問題が見つかりました。 + 事前チェックに失敗しました。 サーバーにアップデート "{0}" を適用できるかどうかを事前にチェックします。 @@ -9739,6 +10060,9 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 適用されないアップデート + + アップデートが適用されないか、ファイルに無効なデータが含まれています。 + アップデートする 1つまたは複数のプール、またはスタンドアロン サーバーを選択してください。 この一覧で無効と表示されたサーバーは自動アップデートでアップデートできません。 @@ -9779,6 +10103,9 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 アップデート {0} のインストール中に次のエラーが発生しました。 + + 下の一覧から、保留中のアップデート後のタスクを実行してください。 + 選択したすべてのサーバーでアップデート {0} のインストールが正常に完了しました。 @@ -9788,6 +10115,12 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 [XenCenter] はシステムにアップデート {0} をインストール中です。 + + アップデート {0} のインストールは完了しましたが、選択したサーバーの一部に関する警告があります。 + + + アップデート {0} のインストールは完了しましたが、警告があります。 + アップロード プロセスはキャンセルされました。 @@ -9817,6 +10150,12 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 [XenCenter] は、前の手順で指定したサーバーにアップデートをアップロードするために必要な操作を実行しています。操作が完了するまで待ってから [次へ] をクリックしインストールを続行してください。 + + アップデート {0} のアップロードは完了しましたが、選択したサーバーの一部に関する警告があります。 + + + アップデート {0} のアップロードは完了しましたが、警告があります。 + アップロード @@ -9985,12 +10324,18 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 エラー。 + + サーバー '{0}' は、このサーバーから移行されるすべての VM を格納できるサーバーがなかったため、退避できませんでした。アップデート インストール後に再起動を保留している他のサーバーを再起動してから、[再試行] をクリックしてプロセスを再開してください。 + このサーバーからすべての VM を移行するのに十分な空きメモリが他のサーバーになかったため、サーバー '{0}' を退避できませんでした。一部の VM を一時停止またはシャットダウンしてから、[再試行] を押してプロセスを再開してください。 '{0}' に [XenServer] をインストールしています... + + '{1}' に [XenServer] {0} をインストールしています... + ストレージを再接続しています... @@ -10134,6 +10479,12 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 このプールには共有ストレージがありません + + {0}: 準仮想化 (PV) されたゲストは、[XenServer] [BRANDING_VERSION_8_1] 以降サポートされません。サポートされるゲスト オペレーティング システムの一覧を表示するには、[詳細情報] をクリックしてください。 + + + {0}: 準仮想化 (PV) されたゲストは、[XenServer] [BRANDING_VERSION_8_1] 以降サポートされません。サポートされるゲスト オペレーティング システムの一覧を表示するには、[詳細情報] をクリックしてください。 + このプールは一部のみライセンスが適用されています @@ -10338,6 +10689,9 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 [Citrix VM Tools] の旧バージョン + + ゲストの互換性チェック + QoS 制限は 1 ~ 2147483647 (または空白) で指定してください。 @@ -10568,7 +10922,10 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 サーバーの削除(&R)... - プールからのサーバーの削除(&P) + プールから削除(&P) + + + サーバーの削除(&M) スナップショットの削除 @@ -10851,11 +11208,10 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 プールのローリングアップグレード プロセスは正常に完了しました。 - まだアップグレードの完了を待機中です。 - -サーバー コンソールでエラーが発生していないかを確認してください。 - -アップグレードが進行中であった場合は [このまま待機] を、エラーが発生していた場合は [キャンセル] を選択してください。 + まだ '{0}' への [XenServer] のインストールの完了を待機中です。サーバー コンソールでエラーが発生していないかを確認してください。インストールが進行中であった場合は、このまま待機してください... + + + まだ '{1}' への [XenServer] {0} のインストールの完了を待機中です。サーバー コンソールでエラーが発生していないかを確認してください。インストールが進行中であった場合は、このまま待機してください... アップグレード モード @@ -10875,6 +11231,12 @@ VM が再起動したら、[[Citrix VM Tools] をインストール] を再度 プールのローリング アップグレードが完了しませんでした。 + + プールのローリングアップグレード プロセスは完了しましたが、1 つまたは複数のプロセスに関する警告があります。 + + + プールのローリングアップグレード プロセスは完了しましたが、警告があります。 + {0} はスキップできます。 @@ -11461,6 +11823,9 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が 初回割り当て: {0} 増分割り当て: {1} + + この SR には、{0} を超えるサイズのディスクを作成できません。 + この SR をアップグレードする必要はありません。 @@ -11479,9 +11844,6 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が ホーム サーバーが設定されていない VM はローカル ストレージにディスクを持つことはできません - - この SR には、{0} を超えるサイズのディスクを作成できません。 - ディスク サイズ ({0}) が SR サイズ ({1}) を超過しています @@ -11566,7 +11928,7 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が シャットダウンした VM を起動します - 起動時間 + 開始時間 アップグレードの開始(&U) @@ -11589,9 +11951,15 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が エラー + + 不完全 + 進行中 + + 応答待ち + MyCitrix 資格情報を入力します ({0} 参照)。この資格情報は、[Citrix] Insight Services での認証に一度のみ使用され、このマシンやサーバーには格納されません。 @@ -11981,6 +12349,9 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が Transfer VM のネットワーク オプションの構成 + + テキスト ファイル + 種類 @@ -12141,7 +12512,7 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が {0}: VM '{1}' を移行できません - {0}: ライセンスによる制限のため仮想マシン '{1}' を移行できません。 + {0}: サーバーのライセンス条件により、仮想マシン '{1}' を移行できません。 {0}: VM '{1}' は仮想 GPU を使用し他のサーバーには適切な GPU がないため、VM '{0}' を移行できません。 @@ -12219,6 +12590,9 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が 設定を確認し、もう一度実行してください。 + + 選択した ISO ファイルが破損しているか、無効なデータを含んでいます。 + {0}: VM '{1}' のドライブには、ローカルの CD/DVD があります。 @@ -12280,7 +12654,7 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が {0}: 必要なアップデートが適用されていません: {1} - サーバー '{0}' の事前チェックの失敗 + サーバー '{0}' のアップデート事前チェック 再起動 @@ -12294,6 +12668,12 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が {0}: アップデートが適用された後、このサーバーを再起動する必要があります。 + + {0}: ライブ パッチが無効になっているため、アップデートの適用後このサーバーを再起動する必要があります。 + + + {0}: ライブ パッチのライセンスがないため、アップデートの適用後このサーバーを再起動する必要があります。 + {1} からアップデートのインストール ファイル {0} を削除しています... @@ -12488,6 +12868,9 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が アラートとレポート機能を使用するには、サーバー ライセンスをアップグレードしてください。パフォーマンス上の問題やエラー状態に関するメール アラートにより、管理者は、基幹サービスが影響を受ける前に潜在的な問題に対処することができます。 + + サーバーのライセンスをアップグレードして、Conversion Manager を有効にします。この機能では、VMware 仮想マシンのバッチをお使いの [XenServer] 環境に移動することで、ワークロードを VMware から [XenServer] に移行します。 + VM ライブ マイグレーション機能を使用するには、サーバー ライセンスをアップグレードしてください。この機能により、共有ストレージまたはローカル ストレージで実行中の VM を、同一プールまたは別のプールのサーバー間で移行できます。VM のダウンタイムは発生しません。 @@ -12629,7 +13012,7 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が kW - kBps + Kbps {0} MB @@ -12641,7 +13024,7 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が MHz - MBps + Mbps マイクロ秒 @@ -12668,10 +13051,10 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が - TiB + TB - TiBps + Tbps W @@ -12736,12 +13119,21 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が {0} 仮想 GPU ({1}/GPU、{2}、{3} ディスプレイ) + + {0} 個の仮想 GPU ({1} 個/GPU、{2}、{3} 個のディスプレイ、複数 vGPU サポート) + {0} 仮想 GPU ({1}/GPU、{2}、{3} ディスプレイ) + + {0} 個の仮想 GPU ({1} 個/GPU、{2}、{3} 個のディスプレイ、複数 vGPU サポート) + {0} 仮想 GPU ({1}/GPU) + + {0} 個の仮想 GPU ({1} 個/GPU、複数 vGPU サポート) + GPU 全体のパススルー @@ -12848,7 +13240,7 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が {0}。{1}: {2} - スナップショット スケジュール(&O)... + VM スナップショット スケジュール(&O)... スナップショット スケジュール ジョブのアラートをメールで送信する(&E) @@ -13989,6 +14381,12 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が [XenServer] [BRANDING_VERSION_6_5] + + [XenServer] [BRANDING_VERSION_8_1] + + + [Legacy XenServer product] + [XenServer] テンプレート @@ -14016,7 +14414,7 @@ SR-IOV ネットワークを有効にするには、サーバーの再起動が {0} (非表示) - {0} 機能は {1} で廃止され、今後のバージョンで使用できない可能性があります + {0} 機能は {1} で廃止され、今後のバージョンで削除される可能性があります {0} 機能は {1} 以降のバージョンでは使用できません diff --git a/XenModel/Messages.resx b/XenModel/Messages.resx index 30e8a6bce..844c9fc88 100755 --- a/XenModel/Messages.resx +++ b/XenModel/Messages.resx @@ -1853,15 +1853,9 @@ Note that if RBAC is enabled, only alerts which you have privileges to dismiss w When control domain memory usage exceeds {0} for {1} min(s) - - Export &all - You have applied filters to the list of alerts. Do you want to export all alerts from every connected server, or only the alerts you have chosen to view? - - Only export &visible - Help @@ -2006,10 +2000,10 @@ Warning: you must ensure that the SR is not in use by any server not connected t License Details - Assign VM to snapsh&ot schedule + Assign to Snapshot Schedu&le - Assign VM to snapshot schedule + Assign to Snapshot Schedu&le Assign VM to snapshot schedule... @@ -2157,6 +2151,9 @@ This is a potentially dangerous operation and is not allowed. BIOS Boot + + The BIOS boot mode is not supported with the selected template. + BIOS strings copied @@ -2549,7 +2546,7 @@ This will cancel compilation of the status report. Change Server Password - {0} - Please type the root password for {0}: + Please type the root password for '{0}': Change policy '{0}' status @@ -2616,6 +2613,9 @@ Do you want to assign it to the schedule '{2}' instead? Host upgrade readiness check + + Checking guest compatibility + Checking role... @@ -2715,6 +2715,9 @@ Do you want to assign it to the schedule '{2}' instead? Compressing appliance files... + + Configure HA + &Configure HA... @@ -2728,7 +2731,7 @@ Do you want to assign it to the schedule '{2}' instead? Confirmations - Confirm dismissal of notifications + Confirm dismissal of warnings or notifications Changing the Control Domain memory will cause the server to be rebooted. @@ -3156,7 +3159,6 @@ Would you like to carry out the operation at this time? Connection to Server {0} restricted because a connection already exists to another XE Express Server ({1}) - Message shown when user attempts to connect to a second XE Express host from the UI Connection to server {0} restricted - a connection to a [Citrix XenServer] Express Edition server ({1}) already exists. @@ -3164,7 +3166,7 @@ Would you like to carry out the operation at this time? You can only connect to a single [Citrix XenServer] Express Edition server at a time. To find out how to upgrade your license, follow the link below. - Cannot connect to {0} because of license restriction + Cannot connect to {0} due to license restrictions on the server Title of notice shown when connection to a host is restricted by license @@ -3266,6 +3268,259 @@ You can only connect to a single [Citrix XenServer] Express Edition server at a Control domain on host {0} + + Are you sure you want to cancel this conversion? + + + Cannot cancel the conversion. Please see logs for details. + + + Cannot find a Conversion Manager virtual appliance. + + + Cannot obtain an IP address for the Conversion Manager virtual appliance. + + + This action will clear all the completed conversions from the Conversion Manager virtual appliance history. + +This action cannot be undone. Are you sure you want to continue? + + + Cannot clear the conversion history. Please see logs for details. + + + Connecting to the VMware server... + + + Cannot connect to the VMware server. Please see logs for details. + + + Connected successfully to the VMware server + + + Lost connection to the Conversion Manager virtual appliance. Will reconnect in {0} sec. + + + Connected to the Conversion Manager virtual appliance. + + + Cannot start a new conversion. Please see logs for details. + + + VMware Server + + + Connect to VMware server + + + Conversion ID + + + Description + + + Disk write + + + Duration + + + Finish time + + + Cannot refresh the conversion. Please see logs for details. + + + Network read + + + {0} (compressed) + + + Start time + + + Status + + + Target SR + + + Export conversions to {0} + + + Exported conversions to {0} + + + Exporting conversions to {0}... + + + You have applied filters to the list of conversions. Do you want to export all conversions, or only the conversions you have chosen to view? + + + Initializing the Conversion Manager virtual appliance... + + + Cannot initialize the Conversion Manager virtual appliance. Please see logs for details. + + + Save conversion log to {0} + + + Saved conversion log to {0} + + + Save Conversion Log + + + Saving conversion log to {0} + + + Manage Conversions - {0} + + + Map the virtual ethernet adapters for the VMware VM(s) you are converting to networks in the destination pool or standalone server. + + + VMware Network + + + Retrieving source network data... + + + Failed to retrieve source network data + + + Networking + + + Optionally, select [XenServer] networks to connect the VMs + + + A {0} user does not have sufficient permissions to run the Conversion Manager. Please login using an account with one of the following roles: + +{1} + + + Cannot retry the conversion. Please see logs for details. + + + Select Conversion Manager Virtual Appliance - {0} + + + Canceled + + + Created + + + Failed + + + Incomplete + + + Queued + + + In progress + + + Complete + + + Free space {0} + + + Retrieving available SRs... + + + There are no SR locations that can accommodate the disks for the converted VMs + + + Failed to retrieve available SRs + + + Required space {0} + + + The SR is overcommitted + + + There is not enough available space on this SR + + + Storage + + + Select target storage + + + Used space {0} + + + Preserve MAC addresses: + + + Network: + + + Storage: + + + VM(s) to convert: + + + VMware server: + + + Finish + + + Review the conversion settings + + + {0} (Template) + + + &Try again + + + Checking compatibility with the Conversion Manager virtual appliance... + + + Cannot retrieve the Conversion Manager virtual appliance version. Please see logs for details. + + + [XenCenter] is incompatible with this version of the Conversion Manager virtual appliance. + + + The version of the Conversion Manager virtual appliance you are using is earlier than [BRANDING_VERSION_7_0]. You can use the legacy Conversion Manager console to set up and control conversions. However, it is strongly recommended that you import and configure the Conversion Manager virtual appliance matching your [XenServer] version. + + + Virtual Machines + + + Select the VMs to convert + + + Obtaining an IP address for the Conversion Manager virtual appliance... + + + Resuming the Conversion Manager virtual appliance... + + + Starting the Conversion Manager virtual appliance... + + + Cannot deduce the power state of the Conversion Manager virtual appliance. + + + Un-pausing the Conversion Manager virtual appliance... + + + New Conversion + &Convert @@ -4247,8 +4502,11 @@ This will also delete its subfolders. There is not enough available space for this disk + + Disk size cannot be more than {0}. + - Disk size needs to be at least {0} {1} + Disk size needs to be at least {0}. Dismiss &all @@ -4265,6 +4523,9 @@ This will also delete its subfolders. Display options + + Dynamic Memory Control + The Dynamic Memory Control (DMC) is not available due to license restrictions on the server. @@ -4627,13 +4888,13 @@ Eject the CD and try again. Resolve - Failover prechecks completed: {0} issues found + Failover pre-checks completed: {0} issues found Running failover pre-checks: - Failover prechecks completed: No issues found + Failover pre-checks completed: No issues found Pre-checks @@ -5010,6 +5271,9 @@ Would you like to eject these ISOs before continuing? Error Deactivating Virtual Disks + + Destination directory does not exist. + The following storage could not be destroyed: @@ -5292,6 +5556,9 @@ Warning: to prevent data loss you must ensure that the LUN is not in use by any Export All + + Export &all + Export OVF/OVA Package @@ -5304,9 +5571,6 @@ Warning: to prevent data loss you must ensure that the LUN is not in use by any Destination directory is invalid. - - Destination directory does not exist. - You do not have write permission on the destination directory. @@ -5346,6 +5610,9 @@ Warning: to prevent data loss you must ensure that the LUN is not in use by any Maximum number of EULAs ({0}) has been reached. + + Only export &visible + Advanced Options @@ -5413,16 +5680,16 @@ Warning: to prevent data loss you must ensure that the LUN is not in use by any External command exited with Exit Code: {0} - Plugin finished running + Plug-in finished running Running '{0}' - Run '{0}' from plugin '{1}' + Run '{0}' from plug-in '{1}' - Failed to run plugin executable. Please see the client log for details. + Failed to run plug-in executable. Please see the client log for details. Failed @@ -5623,7 +5890,7 @@ Warning: to prevent data loss you must ensure that the LUN is not in use by any &Force close - Plugin {0} has not yet responded to your cancel request. Would you like to force close the process or allow it to continue to run in the background? + Plug-in {0} has not yet responded to your cancel request. Would you like to force close the process or allow it to continue to run in the background? Would you like to configure this VM to accept Remote Desktop connections, and then connect to it over Remote Desktop? @@ -5833,10 +6100,10 @@ Warning: to prevent data loss you must ensure that the LUN is not in use by any You can improve graphics performance by assigning a dedicated graphics processing unit (GPU) to a VM. However, no GPUs have been detected in this server, so this option is not currently available. - Select which virtual GPU types are allowed on these GPUs: + Select which virtual GPU types are allowed on these GPUs. - Select which virtual GPU types are allowed on this GPU: + Select which virtual GPU types are allowed on this GPU. It is not possible to add new performance graphs on VM '{0}' because the VM is not running. @@ -5997,6 +6264,9 @@ not currently live: Configure HA now... + + Cannot configure HA for pool '{0}' because an HA Statefile VDI could not be found in the pool. + The selected VM is currently protected by HA. Are you sure you want to force the shut down of this VM? This operation will cancel all running tasks for the VM and can result in data loss. @@ -6021,6 +6291,9 @@ not currently live: Current failure capacity: + + Cannot disable HA for pool '{0}' because an HA Statefile VDI could not be found in the pool. + Are you sure you want to disable HA for pool '{0}'? @@ -6146,7 +6419,7 @@ Do you want to apply this HA configuration anyway? {0} - pool is overcommitted - When overcommited the pool cannot guarantee to tolerate the number of server failures specified. + When overcommitted the pool cannot guarantee to tolerate the number of server failures specified. Reduce protection levels, or bring more servers online to increase the maximum supported capacity. @@ -6489,7 +6762,7 @@ This might result in failure to migrate VMs to this server during the RPU or to Server is not reachable - No crashdumps to remove + No crash dumps to remove Server power on @@ -6507,16 +6780,16 @@ This might result in failure to migrate VMs to this server during the RPU or to You must reboot your server '{0}' to complete the restore process. - Removed {0} crashdumps from {1} + Removed {0} crash dumps from {1} - Removed 1 crashdump from {0} + Removed 1 crash dump from {0} - Removing crashdump {0} of {1} from {2} + Removing crash dump {0} of {1} from {2} - Removing crashdumps from {0} + Removing crash dumps from {0} Server '{0}' restored. @@ -6539,6 +6812,60 @@ This might result in failure to migrate VMs to this server during the RPU or to Hotfix check + + {0} will reach End of Life on {1}. After this date {2} will be no longer eligible for support and there will be no further hotfixes released for this version. Please upgrade to latest supported version. + + + {0} will reach End of Life on {1}. There will be no further hotfixes released after this date. Please upgrade to the latest CR. + + + A new Cumulative Update is available for {0}. After {1} there will be no further hotfixes released for {2}. Please update to the latest Cumulative Update. + + + {0} reached End of Life on {1} and is no longer eligible for support. There will be no further hotfixes released after this date. Please upgrade to the latest supported version. + + + {0} reached End of Life on {1}. There will be no further hotfixes released after this date. Please upgrade to the latest CR. + + + {0} reached End of Life for express customers on {1}. You are no longer eligible for hotfixes released after this date. Please upgrade to the latest CR. + + + {0} will reach End of Life on {1} + + + A new Cumulative Update is available + + + {0} has reached End of Life + + + {0} has reached End of Life for express customers + + + No further hotfixes released after {0} + + + A new Cumulative Update is available + + + End of Life on {0}. No longer eligible for support + + + End of Life on {0} + + + End of Life + + + End of Life. No longer eligible for support + + + Not eligible for hotfixes released after {0} + + + End of Life for express customers + Hourly; at {0} minutes past each hour @@ -6626,6 +6953,9 @@ This might result in failure to migrate VMs to this server during the RPU or to The exported files are incomplete or in an unrecognised format. + + The Fixup ISO cannot be copied to the selected SR + [Choose an ISO SR] @@ -6666,16 +6996,13 @@ This might result in failure to migrate VMs to this server during the RPU or to &Verify manifest content - Verify the manifest matches the appliance files. This option will only activate if the appliance has a manifest file. + The appliance has a manifest file. You can choose to verify the manifest matches the appliance files. &Verify digital signature - Verify the digital signature of the appliance is valid. This option will activate only if the appliance has been digitally signed. - - - OVA file is corrupt or contains invalid data. + The appliance has been digitally signed. You can choose to verify the digital signature of the appliance is valid. Path contains invalid characters. @@ -6738,7 +7065,7 @@ This might result in failure to migrate VMs to this server during the RPU or to Only OVF/OVA packages can be imported as vApps. - All import options (*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;ova.xml)|*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;ova.xml|OVF/OVA Package files (*.ovf;*.ova;*.ova.gz)|*.ovf;*.ova*;*.ova.gz|Virtual Hard Disk images (*.vhd;*.vmdk;)|*.vhd;*.vmdk;|XVA files (*.xva)|*.xva|XVA Version 1|ova.xml + All import options (*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;*.xva.gz;ova.xml)|*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;*.xva.gz;ova.xml|OVF/OVA Package files (*.ovf;*.ova;*.ova.gz)|*.ovf;*.ova*;*.ova.gz|Virtual Hard Disk images (*.vhd;*.vmdk;)|*.vhd;*.vmdk;|XVA files (*.xva;*.xva.gz)|*.xva;*.xva.gz|XVA Version 1|ova.xml OVF/OVA Package files (*.ovf;*.ova;*.ova.gz)|*.ovf;*.ova*;*.ova.gz @@ -6815,9 +7142,6 @@ This might result in failure to migrate VMs to this server during the RPU or to Select a home server for the new VM - - Select a storage repository where virtual disks for the new VM will be stored - Configure virtual network interfaces for the new VM @@ -6999,10 +7323,7 @@ This might result in failure to migrate VMs to this server during the RPU or to Invalid hostname - Invalid number - - - This does not appear to be a valid OVF file. + Invalid disk size Invalid parameter @@ -7107,9 +7428,6 @@ Size: {3} Please enter a user name and password with sufficient privileges to add servers to domain '{0}'. - - &Keep waiting - Attempting to connect to {0}... @@ -7134,6 +7452,9 @@ Size: {3} License Manager + + Learn more + Enter a user name and password with sufficient privileges to remove your machine account from AD. Authentication will be disabled even if the machine account cannot be removed. @@ -7382,9 +7703,6 @@ To complete the patch installation, please put the servers into maintenance mode You have selected storage local to {0} that cannot be seen from this server - - Cannot move virtual disks between local SRs - Location: @@ -7512,6 +7830,9 @@ This will permanently delete and reinitialize all local storage on the servers. {0} (Updating...) + + Conv&ersion Manager... + Convert to &Template... @@ -7543,7 +7864,7 @@ This will permanently delete and reinitialize all local storage on the servers. Ctrl+Y - De&lete... + &Delete... Mak&e into standalone server @@ -7557,9 +7878,6 @@ This will permanently delete and reinitialize all local storage on the servers. &Delete Template... - - &Delete VM... - Destr&oy... @@ -8010,12 +8328,6 @@ This action is final and unrecoverable. &Yes, Forget - - Launching help topic {0} ({1}). - - - Help topic {0} does not exist. - Your saved settings appear to be corrupt. Revert changes to {0} or delete the file to return to default values. @@ -8145,6 +8457,9 @@ Do you want to continue? {0} VMs selected + + More info... + Moved @@ -8399,9 +8714,6 @@ You should only proceed if you have verified that these settings are correct. You need to shut down and then restart the VM before it can access the new disk. - - Disk Created - There is a newer version of [XenCenter] available. Please contact your support representative. @@ -8943,14 +9255,26 @@ Review these settings, then click Previous if you need to change anything. Other Created by template provisioner + + VMs without a home server cannot have disks on the default SR '{0}'. + + + The default SR '{0}' does not have enough free space for the new VM's disks. + Storage + + VMs without a home server cannot have disks on the SR suggested by the template ('{0}'). + + + The SR suggested by the template ('{0}') does not have enough free space for the new VM's disks. + <no suitable storage> - The SR '{0}' is over committed. There is only {1} of free space and the new VM requires {2}. + The SR '{0}' is overcommitted. There is only {1} of free space and the new VM requires {2}. Configure storage for the new VM @@ -8958,6 +9282,9 @@ Review these settings, then click Previous if you need to change anything. Other {0} {1} + + [XenCenter] has selected a different SR for you. + CentOS @@ -9012,6 +9339,12 @@ Review these settings, then click Previous if you need to change anything. Other Windows + + The selected virtual GPU type supports multiple instances. + + + The selected virtual GPU type does not support multiple instances. + Assign a virtual GPU @@ -9042,9 +9375,6 @@ Review these settings, then click Previous if you need to change anything. Other At least one of the VMs you want to install [Citrix VM Tools] onto has no DVD drive. Would you like to create a new DVD drive for each of the VMs that requires one? - - DVD Drive Created - Creating new DVD drive on VM {0} @@ -9134,7 +9464,7 @@ It is strongly recommended that you Cancel and apply the latest version of the p It is strongly recommended that you Cancel and apply the latest version of the packs to all servers before creating the pool. - &New schedule... + &New Snapshot Schedule... New Search @@ -9517,15 +9847,6 @@ However, there is not enough space to perform the repartitioning, so the current (avg / max KBs) - - Created by [XenCenter] Disk Image Import - - - Virtual Disk - - - Virtual Network - Parent folder @@ -9562,9 +9883,6 @@ However, there is not enough space to perform the repartitioning, so the current Passwords cannot be empty - - You have set a master password, so "Give Passwords Always" is not available. - The password you typed was incorrect @@ -9636,9 +9954,6 @@ This will cancel the update process and may leave your system in an unstable sta Select the update mode - - More info... - Resolve pool problems @@ -9658,10 +9973,10 @@ This will cancel the update process and may leave your system in an unstable sta Reverting pool problems... - Revert resolved prechecks + Revert resolved pre-checks - Resolved prechecks reverted + Resolved pre-checks reverted Resolve server problems @@ -9691,16 +10006,16 @@ This will cancel the update process and may leave your system in an unstable sta Checking disk space requirements - Prechecks failed. + Pre-checks failed. - Update prechecks are performed to verify that the update "{0}" can be applied to the servers. + Update pre-checks are performed to verify that the update "{0}" can be applied to the servers. - Prechecks are performed to verify that automated updates can proceed. + Pre-checks are performed to verify that automated updates can proceed. - Update prechecks are performed to verify that the selected update can be applied to the servers. + Update pre-checks are performed to verify that the selected update can be applied to the servers. Resolve @@ -9709,10 +10024,10 @@ This will cancel the update process and may leave your system in an unstable sta Resolving issues... - Prechecks + Pre-checks - Perform update prechecks on selected servers + Perform update pre-checks on selected servers Deleted update installation files @@ -9814,6 +10129,9 @@ Servers where this update cannot be applied appear disabled in this list. The following error occurred while the installation of update {0} was in progress: + + Please carry out any pending post-update tasks from the list below: + The installation of update {0} on all selected servers was completed successfully. @@ -9830,7 +10148,7 @@ Servers where this update cannot be applied appear disabled in this list.The installation of update {0} was completed with warnings. - The upload process was cancelled. + The upload process was canceled. Are you sure you want to leave this page? @@ -9898,7 +10216,7 @@ This will cancel the upload process. {0} ... - Running prechecks... + Running pre-checks... Unable to resolve this issue:\n{0}\n\nPlease resolve this issue manually and then click Check Again. @@ -10032,12 +10350,18 @@ File not found error. + + Server '{0}' could not be evacuated because there were no servers available to accommodate all the VMs being migrated from this server. Please reboot the other servers that are pending a reboot following the update installation, and then press Retry to resume the process. + Server '{0}' could not be evacuated because there was not enough free memory on the other servers to migrate all the VMs from this server. Please suspend or shutdown some VMs and then press Retry to resume the process. Installing [XenServer] on '{0}'... + + Installing [XenServer] {0} on '{1}'... + Reconnecting storage... @@ -10050,10 +10374,10 @@ File not found Please reconnect the host and try again - Plugins + Plug-ins - Adjust settings for plugins to [XenCenter] + Adjust settings for plug-ins to [XenCenter] Menu item features must only have a single command XML node as a child @@ -10068,10 +10392,10 @@ Please reconnect the host and try again Copyright - {0} plugins enabled + {0} plug-ins enabled - 1 plugin enabled + 1 plug-in enabled Features @@ -10181,6 +10505,12 @@ Please reconnect the host and try again This pool has no shared storage + + {0}: Support for paravirtualized (PV) guests is dropped as of [XenServer] [BRANDING_VERSION_8_1]. Click "Learn more" to see the list of supported guest operating systems. + + + {0}: Support for paravirtualized (PV) guests is dropped as of [XenServer] [BRANDING_VERSION_8_1]. Click "Learn more" to see the list of supported guest operating systems. + The pool is partially licensed @@ -10385,6 +10715,9 @@ Press OK to continue the wizard and return to the server and follow the instruct [Citrix VM Tools] out of date + + Guest compatibility check + QoS limit must be between 1 and 2147483647 (or left empty). @@ -10615,7 +10948,10 @@ Click Server Status Report to open the Compile Server Status Report Wizard or cl &Remove Servers... - Remove Server from &Pool + Remove From &Pool + + + Re&move Server Remove Snapshot @@ -10792,10 +11128,10 @@ Click Server Status Report to open the Compile Server Status Report Wizard or cl Reverting the power state of {0} - Reverting resolved prechecks... + Reverting resolved pre-checks... - Reverting resolved prechecks in {0}... + Reverting resolved pre-checks in {0}... Reverting all changes done by this wizard @@ -10804,7 +11140,7 @@ Click Server Status Report to open the Compile Server Status Report Wizard or cl Revert pool state - Revert precheck actions + Revert pre-check actions Revert all changes done by this wizard @@ -10819,7 +11155,7 @@ Click Server Status Report to open the Compile Server Status Report Wizard or cl {0} on '{1}' - Upgrade prechecks are performed on all the pools you selected to ensure that all the servers can be upgraded. + Upgrade pre-checks are performed on all the pools you selected to ensure that all the servers can be upgraded. Rolling Pool Upgrade @@ -10898,11 +11234,10 @@ The master must be upgraded first, so if you skip the master, the rolling pool u The rolling pool upgrade process was completed successfully. - Still waiting for the upgrade to complete. - -Please check the server console for possible errors. - -Click Keep Waiting if the upgrade is still running or Cancel if an error occurred. + Still waiting for the installation of [XenServer] on '{0}' to complete. Please check the server console for possible errors. Keep waiting if the installation is still running... + + + Still waiting for the installation of [XenServer] {0} on '{1}' to complete. Please check the server console for possible errors. Keep waiting if the installation is still running... Upgrade Mode @@ -10950,7 +11285,7 @@ Click Keep Waiting if the upgrade is still running or Cancel if an error occurre Policy started - &Run Prechecks + &Run Pre-checks &Run Report @@ -11514,6 +11849,9 @@ You may need to reboot your server(s) to enable SR-IOV network. Initial allocation: {0} Incremental allocation: {1} + + You cannot create a disk greater than {0} on this SR. + This SR does not need to be upgraded. @@ -11532,9 +11870,6 @@ Incremental allocation: {1} VMs without a home server cannot have disks on local storage - - You cannot create a disk greater than {0} on this SR. - Disk size ({0}) exceeds SR size ({1}) @@ -11642,9 +11977,15 @@ The upper limit: SR size / {2} Error + + Incomplete + In progress + + Queued + Enter your MyCitrix credentials (see {0}). These credentials will only be used to authenticate with [Citrix] Insight Services once and will not be stored on this machine or on your server. @@ -12034,6 +12375,9 @@ Refer to the "[XenServer product] Administrator's Guide" for instructions on how Configure networking options for the Transfer VM + + Text Files + Type @@ -12082,7 +12426,7 @@ Verify that the file is a valid {1} export. Unlimited - Unrecognised plugin version '{0}' + Unrecognized plug-in version '{0}' Unsupported SR type @@ -12194,7 +12538,7 @@ Verify that the file is a valid {1} export. {0}: Cannot migrate VM '{1}' - {0}: Cannot migrate VM '{1}' due to license restrictions. + {0}: Cannot migrate VM '{1}' due to license restrictions on the server. {0}: Cannot migrate VM '{1}', because it has a virtual GPU attached and there is no suitable GPU available on other servers. @@ -12336,7 +12680,7 @@ Please check your settings and try again. {0}: Prerequisite update(s) are missing: {1} - Update precheck failed on server '{0}' + Update pre-check failed on server '{0}' Reboot @@ -12350,6 +12694,12 @@ Please check your settings and try again. {0}: This server needs to be rebooted after the update is applied. + + {0}: This server needs to be rebooted after the update is applied, because live patching is disabled. + + + {0}: This server needs to be rebooted after the update is applied, because it is not licensed for live patching. + Deleting update installation file {0} from {1}... @@ -12380,7 +12730,7 @@ Please check your settings and try again. Click here to resume this VM - Precheck for {0} in {1}... + Pre-check for {0} in {1}... {0}: The update needs to be applied on all servers in the pool. @@ -12464,10 +12814,10 @@ Note that if RBAC is enabled, only updates which you have privileges to dismiss Applying the upgrade to the pool. - Upgrade Prechecks + Upgrade Pre-checks - Problems encountered when performing upgrade prechecks. + Problems encountered when performing upgrade pre-checks. Error encountered when checking ability to download updates. @@ -12506,10 +12856,10 @@ Note that if RBAC is enabled, only updates which you have privileges to dismiss Upgrade pool master '{0}' - Prechecks + Pre-checks - Perform upgrade prechecks on selected pools + Perform upgrade pre-checks on selected pools Upgrade server '{0} @@ -12544,6 +12894,9 @@ Note that if RBAC is enabled, only updates which you have privileges to dismiss Upgrade your server license to enable Alerting and Reporting capabilities. Email based performance and error alerting will proactively notify administrators of error conditions or performance problems before they affect critical services. + + Upgrade your server license to enable the Conversion Manager. This feature helps you migrate workloads from VMware to [XenServer] by moving batches of VMware virtual machines to your [XenServer] environment. + Upgrade your server license to enable VM live migration. This feature enables you to migrate running VMs on shared or local storage between servers in the same pool or across pools with no VM downtime. @@ -12724,10 +13077,10 @@ To start a [XenServer] trial, click the button below. s - TiB + TB - TiBps + TBps W @@ -12792,12 +13145,21 @@ To start a [XenServer] trial, click the button below. {0} virtual GPU ({1} per GPU, {2}, {3} displays) + + {0} virtual GPU ({1} per GPU, {2}, {3} displays, multiple vGPU support) + {0} virtual GPU ({1} per GPU, {2}, {3} display) + + {0} virtual GPU ({1} per GPU, {2}, {3} display, multiple vGPU support) + {0} virtual GPU ({1} per GPU) + + {0} virtual GPU ({1} per GPU, multiple vGPU support) + Pass-through whole GPU @@ -12904,7 +13266,7 @@ To start a [XenServer] trial, click the button below. {0}. {1}: {2} - Snapsh&ot schedules ... + VM Snapsh&ot Schedules... Send &email notifications about snapshot schedule job alerts @@ -14045,6 +14407,12 @@ Are you sure you want to enable automated power management for this Host? [XenServer] [BRANDING_VERSION_6_5] + + [XenServer] [BRANDING_VERSION_8_1] + + + [Legacy XenServer product] + [XenServer] Templates @@ -14072,7 +14440,7 @@ You will need to navigate to the Console on each of the selected VMs to complete {0} (hidden) - The {0} feature was deprecated in {1} and may be unavailable in future versions + The {0} feature was deprecated in {1} and may be retired in future versions The {0} feature is not available in {1} and later versions diff --git a/XenModel/Messages.zh-CN.resx b/XenModel/Messages.zh-CN.resx index 06f10ce89..c9c6d3c64 100755 --- a/XenModel/Messages.zh-CN.resx +++ b/XenModel/Messages.zh-CN.resx @@ -1847,15 +1847,9 @@ 当控制域内存使用量 {1} 分钟内超过 {0} 时: - - 全部导出(&A) - 您已对警报列表应用过滤器。您想从每个已连接的服务器中导出所有警报,还是仅导出已选择查看的警报? - - 仅导出可见警报(&V) - 帮助 @@ -2000,10 +1994,10 @@ 许可证详细信息 - 将 VM 分配至快照计划(&O) + 分配给快照计划(&L) - 将 VM 分配至快照计划 + 分配给快照计划(&L) 将 VM 分配至快照计划... @@ -2151,6 +2145,9 @@ BIOS 引导 + + 选定模板不支持 BIOS 引导模式。 + 已复制 BIOS 字符串 @@ -2607,6 +2604,9 @@ 主机升级准备情况检查 + + 正在检查来宾兼容性 + 正在检查角色... @@ -2706,6 +2706,9 @@ 正在压缩设备文件... + + 配置高可用性 + 配置高可用性(&C)... @@ -2719,7 +2722,7 @@ 确认 - 确认消除通知 + 确认解除警告或通知 更改控制域内存将导致服务器重新启动。 @@ -3135,7 +3138,6 @@ 与服务器 {0} 的连接受到限制,因为已经与另一个 XE 速成版服务器({1})建立连接 - Message shown when user attempts to connect to a second XE Express host from the UI 与服务器 {0} 的连接受到限制 - 已与 [Citrix XenServer] Express Edition 服务器({1})建立连接。 @@ -3143,7 +3145,7 @@ 一次只能连接到一个 [Citrix XenServer] Express Edition 服务器。要了解许可证的升级方法,请单击下面的链接。 - 由于许可证限制,无法连接 {0} + 由于服务器上的许可证限制,无法连接到 {0} Title of notice shown when connection to a host is restricted by license @@ -3245,6 +3247,259 @@ 主机 {0} 上的控制域 + + 是否确实要取消此转换? + + + 无法取消转换。请参阅日志了解详细信息。 + + + 找不到 Conversion Manager 虚拟设备。 + + + 无法获取 Conversion Manager 虚拟设备的 IP 地址。 + + + 此操作将从 Conversion Manager 虚拟设备历史记录中清除所有已完成的转换。 + +此操作无法撤消。是否确实要继续? + + + 无法清除转换历史记录。请参阅日志了解详细信息。 + + + 正在连接到 VMware 服务器... + + + 无法连接到 VMware 服务器。请参阅日志了解详细信息。 + + + 已成功连接到 VMware 服务器 + + + 与 Conversion Manager 虚拟设备的连接已断开。将在 {0} 秒内重新连接。 + + + 已连接到 Conversion Manager 虚拟设备。 + + + 无法开始新转换。请参阅日志了解详细信息。 + + + VMware 服务器 + + + 连接到 VMware 服务器 + + + 转换 ID + + + 说明 + + + 磁盘写入 + + + 持续时间 + + + 完成时间 + + + 无法刷新转换。请参阅日志了解详细信息。 + + + 网络读取 + + + {0} (压缩后) + + + 开始时间 + + + 状态 + + + 目标 SR + + + 将转换导出到 {0} + + + 已将转换导出到 {0} + + + 正在将转换导出到 {0}... + + + 您已将过滤器应用到转换列表。要导出所有转换,还是仅导出您选择查看的转换? + + + 正在初始化 Conversion Manager 虚拟设备... + + + 无法初始化 Conversion Manager 虚拟设备。请查看日志了解详细信息。 + + + 将转换日志保存到 {0} + + + 已将转换日志保存到 {0} + + + 保存转换日志 + + + 正在将转换日志保存到 {0} + + + 管理转换 - {0} + + + 映射要转换为目标池或独立服务器中的网络的 VMware VM 的虚拟以太网适配器。 + + + VMware 网络 + + + 正在检索源网络数据... + + + 检索源网络数据失败 + + + 网络连接 + + + (可选)选择 [XenServer] 网络以连接 VM + + + 用户 {0} 的权限不足,无法运行 Conversion Manager。请使用具有以下角色之一的帐户登录: + +{1} + + + 无法重试转换。请参阅日志了解详细信息。 + + + 选择 Conversion Manager 虚拟设备 - {0} + + + 已取消 + + + 已创建 + + + 失败 + + + 未完成 + + + 已排队 + + + 进行中 + + + 完成 + + + 可用空间 {0} + + + 正在检索可用 SR... + + + 没有可以容纳转换后的 VM 的磁盘的 SR 位置 + + + 无法检索可用 SR + + + 所需空间 {0} + + + SR 过度使用 + + + 此 SR 上的可用空间不足 + + + 存储 + + + 选择目标存储 + + + 已用空间 {0} + + + 保留 MAC 地址: + + + 网络: + + + 存储: + + + 要转换的 VM: + + + VMware 服务器: + + + 完成 + + + 查看转换设置 + + + {0} (模板) + + + 重试(&T) + + + 正在检查与 Conversion Manager 虚拟设备的兼容性... + + + 无法检索 Conversion Manager 虚拟设备版本。请查看日志了解详细信息。 + + + [XenCenter] 与此版本的 Conversion Manager 虚拟设备不兼容。 + + + 您正在使用的 Conversion Manager 虚拟设备的版本早于 [BRANDING_VERSION_7_0]。可以使用旧版 Conversion Manager 控制台来设置和控制转换。但是,强烈建议您导入并配置与您的 [XenServer] 版本匹配的 Conversion Manager 虚拟设备。 + + + 虚拟机 + + + 选择要转换的 VM + + + 正在获取 Conversion Manager 虚拟设备的 IP 地址... + + + 正在恢复 Conversion Manager 虚拟设备... + + + 正在启动 Conversion Manager 虚拟设备... + + + 无法推断 Conversion Manager 虚拟设备的电源状态。 + + + 正在取消暂停 Conversion Manager 虚拟设备... + + + 新转换 + 转换(&C) @@ -4225,8 +4480,11 @@ 可用空间不足,无法供此磁盘使用 + + 磁盘大小不能超过 {0}。 + - 磁盘大小至少需要达到 {0} {1} + 磁盘大小至少需要达到 {0}。 全部消除(&A) @@ -4243,6 +4501,9 @@ 显示选项 + + 动态内存控制 + 由于服务器上存在许可证限制,因此,动态内存控制(DMC)不可用。 @@ -4988,6 +5249,9 @@ 停用虚拟磁盘时出错 + + 目标目录不存在。 + 无法销毁以下存储: @@ -5270,6 +5534,9 @@ 全部导出 + + 全部导出(&A) + 导出 OVF/OVA 包 @@ -5282,9 +5549,6 @@ 目标目录无效。 - - 目标目录不存在。 - 您没有目标目录的写权限。 @@ -5324,6 +5588,9 @@ 已达到最大 EULA 数({0})。 + + 仅导出可见警报(&V) + 高级选项 @@ -5811,10 +6078,10 @@ 通过为 VM 分配专用的图形处理器(GPU)可以提高图形性能。但在该服务器中未检测到 GPU,因此,此选项当前不可用。 - 选择允许在这些 GPU 上使用的虚拟 GPU 类型: + 选择允许在这些 GPU 上使用的虚拟 GPU 类型。 - 选择允许在此 GPU 上使用的虚拟 GPU 类型: + 选择允许在此 GPU 上使用的虚拟 GPU 类型。 无法在 VM“{0}”上添加新的性能图表,因为该 VM 未运行。 @@ -5975,6 +6242,9 @@ 立即配置高可用性... + + 无法为池“{0}”配置高可用性,因为在池中找不到高可用性状态文件 VDI。 + 所选 VM 当前受高可用性保护。是否确实要强制关闭该 VM? 该操作将取消该 VM 的所有运行中的任务,并会导致数据丢失。 @@ -5996,6 +6266,9 @@ 当前故障容量: + + 无法为池“{0}”禁用高可用性,因为在池中找不到高可用性状态文件 VDI。 + 是否确实要为池“{0}”禁用高可用性? @@ -6121,7 +6394,7 @@ {0} - 池被过度使用 - 如果池被过度使用,将无法保证容许指定的服务器故障数。 + 如果过度使用,池将无法保证容许指定的服务器故障数量。 请降低保护级别,或者将更多服务器联机以增加支持的容错量。 @@ -6482,16 +6755,16 @@ 必须重新启动服务器“{0}”以完成还原进程。 - 已从 {1} 删除 {0} 个故障转储 + 已从 {1} 中删除 {0} 个故障转储 - 已从 {0} 删除 1 个故障转储 + 已从 {0} 中删除 1 个故障转储 - 正在从 {2} 删除 {1} 个故障转储中的第 {0} 个 + 正在从 {2} 中删除 {0} 个故障转储,共 {1} 个 - 正在从 {0} 删除故障转储 + 正在从 {0} 中删除故障转储 服务器“{0}”已还原。 @@ -6514,6 +6787,60 @@ 修补程序检查 + + {0} 将于 {1} 达到生命周期已结束状态。在此日期之后,{2} 将不再有资格获得支持,并且我们不会再为此版本发布更多修补程序。请升级到受支持的最新版本。 + + + {0} 将于 {1} 达到生命周期已结束状态。在此日期之后将不再发布更多修补程序。请升级到最新的 CR。 + + + 新的累积更新可用于 {0}。在 {1} 之后,将不会有更多的修补程序面向 {2} 发布。请更新到最新的累积更新。 + + + {0} 已于 {1} 达到生命周期已结束状态,并且不再有资格获得支持。在此日期之后将不再发布更多修补程序。请升级到受支持的最新版本。 + + + {0} 已于 {1} 达到生命周期已结束状态。在此日期之后将不再发布更多修补程序。请升级到最新的 CR。 + + + {0} 已于 {1} 达到速成版客户的生命周期已结束状态。您不再有资格获得此日期之后发布的修补程序。请升级到最新的 CR。 + + + {0} 将于 {1} 达到生命周期已结束状态 + + + 新的累积更新可用 + + + {0} 已达到生命周期已结束状态 + + + {0} 已达到速成版客户的生命周期已结束状态 + + + 在 {0} 之后不再发布更多修补程序 + + + 新的累积更新可用 + + + {0} 生命周期已结束。不再有资格获得支持 + + + {0} 生命周期已结束 + + + 生命周期已结束 + + + 生命周期已结束。不再有资格获得支持 + + + 没有资格获得 {0} 之后发布的修补程序 + + + 速成版客户的生命周期已结束 + 每小时;在每小时的第 {0} 分钟 @@ -6601,6 +6928,9 @@ 导出的文件不完整,或格式无法识别。 + + 修复 ISO 无法复制到选定的 SR + [选择一个 ISO SR] @@ -6641,16 +6971,13 @@ 验证清单文件内容(&V) - 验证清单文件与设备文件是否匹配。仅当设备具有清单文件时才会激活该选项。 + 设备具有清单文件。您可以选择验证清单是否与设备文件匹配。 验证数字签名(&V) - 验证设备的数字签名是否有效。仅当设备已经过数字签名后才会激活该选项。 - - - OVA 文件已破坏或包含无效数据。 + 已对设备进行数字签名。您可以选择验证设备的数字签名是否有效。 路径包含无效字符。 @@ -6713,7 +7040,8 @@ 只有 OVF/OVA 包可以作为 vApp 导入。 - 所有导入选项(*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;ova.xml)|*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;ova.xml|OVF/OVA 包文件(*.ovf;*.ova;*.ova.gz)|*.ovf;*.ova*;*.ova.gz|虚拟硬盘映像(*.vhd;*.vmdk;)|*.vhd;*.vmdk;|XVA 文件(*.xva)|*.xva|XVA 版本 1|ova.xml + 所有导入选项 +(*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;*.xva.gz;ova.xml)|*.ovf;*.ova;*.ova.gz;*.vhd;*.vmdk;*.xva;*.xva.gz;ova.xml|OVF/OVA 包文件(*.ovf;*.ova;*.ova.gz)|*.ovf;*.ova*;*.ova.gz|虚拟硬盘图像(*.vhd;*.vmdk;)|*.vhd;*.vmdk;|XVA 文件(*.xva;*.xva.gz)|*.xva;*.xva.gz|XVA 版本 1|ova.xml OVF/OVA 包文件(*.ovf;*.ova;*.ova.gz)|*.ovf;*.ova*;*.ova.gz @@ -6790,9 +7118,6 @@ 为新 VM 选择主服务器 - - 选择将用来为新 VM 存储虚拟磁盘的存储库 - 为新 VM 配置虚拟网络接口 @@ -6830,13 +7155,13 @@ 无法解压缩文件 {0}。请参阅日志了解详细信息。 - 将所导入 VM 中的虚拟网络接口映射到目标池或独立服务器中的网络。 + 将要导入的 VM 中的虚拟网络接口映射到目标池或独立服务器中的网络。 将导入的虚拟磁盘放在指定的目标 SR 上(&S): - 将所导入 VM 中的虚拟磁盘放在目标池或独立服务器中的存储库(SR)上。 + 将要导入的 VM 中的虚拟磁盘放在目标池或独立服务器中的存储库(SR)上。 为导入模板选择存储库。 @@ -6845,7 +7170,7 @@ 正在解压缩文件 {0},请稍候... - 所导入 VM 中的虚拟网络接口(&V): + 所导入的 VM 中的虚拟网络接口(&V): 为导入的虚拟机选择存储库。 @@ -6974,10 +7299,7 @@ 主机名无效 - 数值无效 - - - 这似乎不是有效的 OVF 文件。 + 磁盘大小无效 参数无效 @@ -7082,9 +7404,6 @@ SCSI ID: {2} 请输入具有足够的向域“{0}”中添加服务器权限的用户名和密码。 - - 继续等待(&K) - 正在尝试连接 {0}... @@ -7109,6 +7428,9 @@ SCSI ID: {2} 许可证管理器 + + 了解更多 + 输入具有足够的从 AD 中删除计算机帐户权限的用户名和密码。即使无法删除计算机帐户,也将禁用身份验证。 @@ -7357,9 +7679,6 @@ Premium 功能已启用 从该服务器无法看到您选择的 {0} 本地的存储 - - 无法在本地 SR 之间移动虚拟磁盘 - 位置: @@ -7487,6 +7806,9 @@ SCSI ID: {2} {0} (正在更新...) + + Conversion Manager(&E)... + 转换为模板(&T)... @@ -7518,7 +7840,7 @@ SCSI ID: {2} Ctrl+Y - 删除(&L)... + 删除(&D)... 拆分为独立服务器(&E) @@ -7532,9 +7854,6 @@ SCSI ID: {2} 删除模板(&D)... - - 删除 VM(&D)... - 销毁(&O)... @@ -7982,12 +8301,6 @@ SCSI ID: {2} 是,忘记(&Y) - - 正在启动帮助主题 {0} ({1})。 - - - 帮助主题 {0} 不存在。 - 您所保存的设置可能已损坏。请将更改还原为 {0} 或删除该文件以返回默认值。 @@ -8117,6 +8430,9 @@ SCSI ID: {2} 已选择 {0} 个 VM + + 更多信息... + 已移动 @@ -8371,9 +8687,6 @@ SCSI ID: {2} 需要先关闭并重新启动 VM 才能访问新磁盘。 - - 已创建磁盘 - 有更新版本的 [XenCenter] 可用。请与支持代表联系。 @@ -8915,9 +9228,21 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 由模板设置程序创建 + + 没有主服务器的 VM 在默认 SR“{0}”上不能有磁盘。 + + + 默认 SR“{0}”的可用空间不足,无法存储新 VM 的磁盘。 + 存储 + + 没有主服务器的 VM 在模板({0})建议的 SR 上不能有磁盘。 + + + 模板({0})建议的 SR 的可用空间不足,无法存储新 VM 的磁盘。 + <没有合适的存储> @@ -8930,6 +9255,9 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 {0} {1} + + [XenCenter] 为您选择了不同的 SR。 + CentOS @@ -8984,6 +9312,12 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 Windows + + 选定的虚拟 GPU 类型支持多个实例。 + + + 选定的虚拟 GPU 类型不支持多个实例。 + 分配虚拟 GPU @@ -9014,9 +9348,6 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 在要安装 [Citrix VM Tools] 的 VM 中,至少有一个 VM 没有 DVD 驱动器。是否要为需要 DVD 驱动器的每个 VM 创建新 DVD 驱动器? - - 已创建 DVD 驱动器 - 正在 VM {0} 上创建新 DVD 驱动器 @@ -9106,7 +9437,7 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 强烈建议您首先单击“取消”并将最新版本的软件包应用到所有服务器,然后再创建池。 - 新建计划(&N)... + 新建快照计划(&N)... 新搜索 @@ -9489,15 +9820,6 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 (平均/最大KB/秒) - - 由 [XenCenter] 磁盘映像导入创建 - - - 虚拟磁盘 - - - 虚拟网络 - 父文件夹 @@ -9534,9 +9856,6 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 密码不能为空 - - 已设置主密码,因此“始终提供密码”不可用。 - 键入的密码不正确 @@ -9575,6 +9894,12 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 上载并安装更新 + + 某些自动更新过程已完成,但出现警告。 + + + 自动更新过程已完成,但出现警告。 + 清理... @@ -9602,9 +9927,6 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 选择更新模式 - - 更多信息... - 解决池问题 @@ -9660,7 +9982,7 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 预检查失败。 - 执行更新预检查是为了确认更新 {0} 能够在服务器上应用。 + 执行更新预检查是为了确认更新“{0}”可以应用于服务器。 已执行预检查,以验证自动更新是否能够继续。 @@ -9737,6 +10059,9 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 更新不适用 + + 更新不适用或文件包含无效数据。 + 选择要更新的一个或多个池或独立服务器。 无法通过自动更新更新的服务器在此列表中显示为已禁用。 @@ -9777,6 +10102,9 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 安装更新 {0} 过程中出现以下错误: + + 请执行以下列表中所有待处理的更新后任务: + 已成功在所有选定的服务器上安装更新 {0}。 @@ -9786,6 +10114,12 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 [XenCenter] 现在正在您的系统中安装更新 {0}。 + + 更新 {0} 的安装已完成,但在某些选定的服务器上出现警告。 + + + 更新 {0} 的安装已完成,但出现警告。 + 上载过程已取消。 @@ -9815,6 +10149,12 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 [XenCenter] 现在正在执行将您的更新上载到上一步骤中指定的服务器所需的操作。请等待完成这些操作,然后单击“下一步”继续进行安装。 + + 更新 {0} 的上载已完成,但在某些选定的服务器上出现警告。 + + + 更新 {0} 的上载已完成,但出现警告。 + 上载 @@ -9983,12 +10323,18 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 错误。 + + 无法撤消服务器“{0}”,因为没有可用的服务器来容纳从此服务器迁移的所有 VM。请在安装更新后重新启动等待重新启动的其他服务器,然后按“重试”继续执行此过程。 + 服务器“{0}”无法撤离,因为其他服务器上没有足够的可用内存以迁移此服务器中的所有 VM。请暂停或关闭某些 VM,然后按“重试”以恢复该过程。 正在“{0}”上安装 [XenServer]... + + 正在“{1}”上安装 [XenServer]... + 正在重新连接存储... @@ -10004,7 +10350,7 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 插件 - 调整 [XenCenter] 插件的设置 + 调整 [XenCenter] 的插件的设置 菜单项功能必须只有一个命令 XML 节点作为子项 @@ -10132,6 +10478,12 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 该池无共享存储 + + {0}: 截至 [XenServer] [BRANDING_VERSION_8_1],已放弃对半虚拟化的(PV)来宾的支持。单击“了解更多”可查看支持的来宾操作系统列表。 + + + {0}: 截至 [XenServer] [BRANDING_VERSION_8_1],已放弃对半虚拟化的(PV)来宾的支持。单击“了解更多”可查看支持的来宾操作系统列表。 + 池获得部分许可 @@ -10336,6 +10688,9 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 [Citrix VM Tools] 已过期 + + 来宾兼容性检查 + QoS 限制必须介于 1 和 2147483647 之间(或者留空)。 @@ -10566,7 +10921,10 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 删除服务器(&R)... - 从池中删除服务器(&P) + 从池中删除(&P) + + + 删除服务器(&M) 删除快照 @@ -10849,11 +11207,10 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 滚动池升级过程已成功完成。 - 仍在等待升级完成。 - -请检查服务器控制台是否存在错误。 - -如果升级仍在运行,请单击“继续等待”,如果出现错误,请单击“取消”。 + 仍在等待“{0}”上的 [XenServer] 完成安装。请检查服务器控制台中是否存在错误。如果安装仍在运行,请继续等待... + + + 仍在等待“{1}”上的 [XenServer] {0} 完成安装。请检查服务器控制台中是否存在错误。如果安装仍在运行,请继续等待... 升级模式 @@ -10873,6 +11230,12 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 滚动池升级未完成。 + + 一个或多个滚动池升级过程已完成,但出现警告。 + + + 滚动池升级过程已完成,但出现警告。 + 可能已跳过 {0}。 @@ -11459,6 +11822,9 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 初始分配: {0} 增量分配: {1} + + 无法在此 SR 上创建大于 {0} 的磁盘。 + 该 SR 不需要升级。 @@ -11477,9 +11843,6 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 没有主服务器的 VM 不能在本地存储中包含磁盘 - - 无法在此 SR 上创建大于 {0} 的磁盘。 - 磁盘大小({0})超过 SR 大小({1}) @@ -11564,7 +11927,7 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 启动关闭的 VM - 启动时间 + 开始时间 开始升级(&U) @@ -11587,9 +11950,15 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 错误 + + 未完成 + 进行中 + + 已排队 + 输入您的 MyCitrix 凭据(请参阅 {0})。这些凭据将仅用于在 [Citrix] Insight Services 中进行一次身份验证,不会存储在此计算机或您的服务器上。 @@ -11979,6 +12348,9 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 配置传输 VM 的网络连接选项 + + 文本文件 + 类型 @@ -12139,7 +12511,7 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 {0}: 无法迁移 VM“{1}” - {0}: 由于许可证限制,无法迁移 VM“{1}”。 + {0}: 由于服务器上的许可证限制,无法迁移 VM“{1}”。 {0}: 无法迁移 VM“{1}”,因为该 VM 连接了虚拟 GPU,并且其他服务器上没有合适的 GPU 可用。 @@ -12215,6 +12587,9 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 此文件不是有效的更新文件。 + + 选定的 ISO 文件已损坏或包含无效数据。 + {0}: VM“{1}”的驱动器中有本地 CD/DVD。 @@ -12290,6 +12665,12 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 {0}: 需要在应用更新后重新启动此服务器。 + + {0}: 应用更新后需要重新启动此服务器,因为实时修补功能处于禁用状态。 + + + {0}: 应用更新后需要重新启动此服务器,因为它未获得实时修补许可。 + 正在从 {1} 中删除更新安装文件 {0}... @@ -12484,6 +12865,9 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 升级您的服务器许可证以启用警报和报告功能。基于电子邮件的性能和错误警报将在错误情况或性能问题对关键服务产生影响之前,抢先将这些情况或问题通知给管理员。 + + 升级您的服务器许可证以启用 Conversion Manager。此功能通过将 VMware 虚拟机成批移动到 [XenServer] 环境,帮助您将工作负载从 VMware 迁移到 [XenServer]。 + 升级您的服务器许可证以启用 VM 实时迁移。通过此功能,您能够在同一池中的服务器之间或跨池迁移共享存储或本地存储上正在运行的 VM,而不会导致 VM 停机。 @@ -12664,10 +13048,10 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 s - TiB + TB - TiBps + TBps W @@ -12732,12 +13116,21 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 {0} 虚拟 GPU (每个 GPU {1} 个,{2},{3} 个显示器) + + {0} 虚拟 GPU (每个 GPU {1},{2},{3} 个显示器,支持多 vGPU) + {0} 虚拟 GPU (每个 GPU {1} 个,{2},{3} 个显示器) + + {0} 虚拟 GPU (每个 GPU {1},{2},{3} 个显示器,支持多 vGPU) + {0} 虚拟 GPU (每个 GPU {1} 个) + + {0} 虚拟 GPU (每个 GPU {1},支持多 vGPU) + 在整个 GPU 中直通 @@ -12844,7 +13237,7 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 {0}。{1}: {2} - 快照计划(&O)... + VM 快照计划(&O)... 发送与快照计划作业警报有关的电子邮件通知(&E) @@ -13985,6 +14378,12 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 [XenServer] [BRANDING_VERSION_6_5] + + [XenServer] [BRANDING_VERSION_8_1] + + + [Legacy XenServer product] + [XenServer] 模板 @@ -14012,7 +14411,7 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并 {0} (隐藏) - “{0}”功能在 {1} 中已弃用,在将来的版本中可能不提供 + {0} 功能在 {1} 中已弃用,并且可能会在将来的版本中停用 “{0}”功能在 {1} 及更高版本中不提供 diff --git a/XenModel/Network/HTTPHelper.cs b/XenModel/Network/HTTPHelper.cs index 88c40d31c..6e8c5284e 100644 --- a/XenModel/Network/HTTPHelper.cs +++ b/XenModel/Network/HTTPHelper.cs @@ -154,8 +154,7 @@ namespace XenAPI } catch (Exception e) { - log.DebugFormat("Caught exception doing HTTP PUT from {0} to {1}", path, hostname); - log.Debug(e, e); + log.Debug($"Caught exception doing HTTP PUT from {path} to {hostname}", e); PollTaskForResult(connection, ref session, cancellingDelegate2, task, true); if (e is CancelledException || e.InnerException is CancelledException) throw new XenAdmin.CancelledException(); @@ -252,8 +251,7 @@ namespace XenAPI } catch (Exception e) { - log.DebugFormat("Caught exception doing HTTP GET from {0} to {1}", hostname, path); - log.Debug(e, e); + log.Debug($"Caught exception doing HTTP GET from {hostname} to {path}", e); if (e is WebException && e.InnerException is IOException && Win32.GetHResult(e.InnerException as IOException) == Win32.ERROR_DISK_FULL) throw e.InnerException; @@ -309,25 +307,19 @@ namespace XenAPI } } - public static Stream CONNECT(Uri uri, IXenConnection connection, string session, bool timeout, bool do_log) + public static Stream CONNECT(Uri uri, IXenConnection connection, string session, bool timeout) { - if (do_log) - log.DebugFormat("HTTP CONNECTING to {0}", uri); return HTTP.CONNECT(uri, XenAdminConfigManager.Provider.GetProxyFromSettings(connection), session, XenAdminConfigManager.Provider.GetProxyTimeout(timeout)); } - public static Stream PUT(Uri uri, long ContentLength, bool timeout, bool do_log) + public static Stream PUT(Uri uri, long ContentLength, bool timeout) { - if (do_log) - log.DebugFormat("HTTP PUTTING file to {0}", uri); return HTTP.PUT(uri, XenAdminConfigManager.Provider.GetProxyFromSettings(null), ContentLength, XenAdminConfigManager.Provider.GetProxyTimeout(timeout)); } - public static Stream GET(Uri uri, IXenConnection connection, bool timeout, bool do_log, bool isForXenServer = true) + public static Stream GET(Uri uri, IXenConnection connection, bool timeout) { - if (do_log) - log.DebugFormat("HTTP GETTING file from {0}", uri); - return HTTP.GET(uri, XenAdminConfigManager.Provider.GetProxyFromSettings(connection, isForXenServer), XenAdminConfigManager.Provider.GetProxyTimeout(timeout)); + return HTTP.GET(uri, XenAdminConfigManager.Provider.GetProxyFromSettings(connection, true), XenAdminConfigManager.Provider.GetProxyTimeout(timeout)); } } } diff --git a/XenModel/Network/IXenConnection.cs b/XenModel/Network/IXenConnection.cs index 8e54a2ee5..d63768130 100644 --- a/XenModel/Network/IXenConnection.cs +++ b/XenModel/Network/IXenConnection.cs @@ -32,6 +32,7 @@ using System; using XenAPI; using System.Collections.Generic; +using System.Net; namespace XenAdmin.Network @@ -46,18 +47,18 @@ namespace XenAdmin.Network bool ExpectDisruption { get; set; } int Port { get; set; } string FriendlyName { get; set; } - event EventHandler BeforeConnectionEnd; bool CacheIsPopulated { get; } - event EventHandler CachePopulated; - event EventHandler ClearingCache; - event EventHandler ConnectionClosed; - event EventHandler ConnectionLost; - event EventHandler ConnectionReconnecting; + event Action CachePopulated; + event Action ClearingCache; + event Action BeforeConnectionEnd; + event Action ConnectionClosed; + event Action ConnectionLost; + event Action ConnectionReconnecting; event EventHandler ConnectionResult; - event EventHandler ConnectionStateChanged; - event EventHandler ConnectionMessageChanged; - event EventHandler BeforeMajorChange; - event EventHandler AfterMajorChange; + event Action ConnectionStateChanged; + event Action ConnectionMessageChanged; + event Action BeforeMajorChange; + event Action AfterMajorChange; Session DuplicateSession(); Session DuplicateSession(int timeout); void EndConnect(bool resetState = true, bool exiting = false); @@ -65,7 +66,7 @@ namespace XenAdmin.Network Session Connect(string user, string password); List PoolMembers { get; set; } void LoadCache(Session session); - bool SupressErrors { get; set; } + bool SuppressErrors { get; set; } bool MasterMayChange { get; set; } bool SaveDisconnected { get; set; } string HostnameWithPort { get; } @@ -86,6 +87,7 @@ namespace XenAdmin.Network string UriScheme { get; } string Version { get; set; } event EventHandler XenObjectsUpdated; + NetworkCredential NetworkCredential { get; set; } /// /// Try to logout the given session. This will cause any threads blocking on Event.next() to get @@ -119,24 +121,4 @@ namespace XenAdmin.Network this.Error = error; } } - - public class ConnectionMessageChangedEventArgs : EventArgs - { - public string Message; - - public ConnectionMessageChangedEventArgs(string message) - { - this.Message = message; - } - } - - public class ConnectionMajorChangeEventArgs : EventArgs - { - public bool Background; - - public ConnectionMajorChangeEventArgs(bool background) - { - this.Background = background; - } - } } diff --git a/XenModel/Network/NetworkingHelper.cs b/XenModel/Network/NetworkingHelper.cs index 371f846c5..0ea15d1a8 100644 --- a/XenModel/Network/NetworkingHelper.cs +++ b/XenModel/Network/NetworkingHelper.cs @@ -39,8 +39,6 @@ namespace XenAdmin.Network { public class NetworkingHelper { - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - /// /// Returns the bond that the master is using as its management interface, or null if /// such a thing cannot be found. diff --git a/XenModel/Network/XenConnection.cs b/XenModel/Network/XenConnection.cs index d07beee74..e2aadfc70 100644 --- a/XenModel/Network/XenConnection.cs +++ b/XenModel/Network/XenConnection.cs @@ -88,10 +88,14 @@ namespace XenAdmin.Network public bool ExpectPasswordIsCorrect { get; set; } /// - /// Used by the patch wizard, supress any errors coming from reconnect attempts + /// Used by the patch wizard, suppress any errors coming from reconnect attempts /// - private volatile bool _supressErrors = false; - public bool SupressErrors { get { return _supressErrors; } set { _supressErrors = value; } } + private volatile bool _suppressErrors; + public bool SuppressErrors + { + get => _suppressErrors; + set => _suppressErrors = value; + } /// /// Indicates whether we are expecting the pool master to change soon (e.g. when explicitly designating a new master). @@ -320,22 +324,24 @@ namespace XenAdmin.Network /// /// Fired just before the cache is cleared (i.e. the cache is still populated). /// - public event EventHandler ClearingCache; - public event EventHandler CachePopulated; + public event Action ClearingCache; + public event Action CachePopulated; public event EventHandler ConnectionResult; - public event EventHandler ConnectionStateChanged; - public event EventHandler ConnectionLost; - public event EventHandler ConnectionClosed; - public event EventHandler ConnectionReconnecting; - public event EventHandler BeforeConnectionEnd; - public event EventHandler ConnectionMessageChanged; - public event EventHandler BeforeMajorChange; - public event EventHandler AfterMajorChange; + public event Action ConnectionStateChanged; + public event Action ConnectionLost; + public event Action ConnectionClosed; + public event Action ConnectionReconnecting; + public event Action BeforeConnectionEnd; + public event Action ConnectionMessageChanged; + public event Action BeforeMajorChange; + public event Action AfterMajorChange; /// /// Fired on the UI thread, once per batch of events in CacheUpdater. /// public event EventHandler XenObjectsUpdated; + + public NetworkCredential NetworkCredential { get; set; } public event EventHandler TimeSkewUpdated; public bool IsConnected @@ -426,6 +432,7 @@ namespace XenAdmin.Network try { session.login_with_password(uname, pwd, !string.IsNullOrEmpty(Version) ? Version : Helper.APIVersionString(API_Version.LATEST), Session.UserAgent); + NetworkCredential = new NetworkCredential(uname, pwd); return session; } catch (Failure f) @@ -857,9 +864,7 @@ namespace XenAdmin.Network heartbeat.Start(); } - if (CachePopulated != null) - CachePopulated(this, EventArgs.Empty); - + CachePopulated?.Invoke(this); MarkConnectActionComplete(); } @@ -945,7 +950,7 @@ namespace XenAdmin.Network : string.Format("{0} ({1})", FriendlyName, taskHostname); string title = string.Format(Messages.CONNECTING_NOTICE_TITLE, name); string msg = string.Format(Messages.CONNECTING_NOTICE_TEXT, name); - log.Info(msg); + log.Info($"Connecting to {name} in progress."); ConnectAction = new ActionBase(title, msg, false, false); @@ -1081,7 +1086,6 @@ namespace XenAdmin.Network catch (Exception e) { log.Error("Exception updating cache.", e); - log.Debug(e, e); #if DEBUG if (System.Diagnostics.Debugger.IsAttached) throw; @@ -1100,7 +1104,6 @@ namespace XenAdmin.Network catch (Exception e) { log.Error("Exception calling OnCachePopulated.", e); - log.Debug(e, e); #if DEBUG if (System.Diagnostics.Debugger.IsAttached) throw; @@ -1119,7 +1122,7 @@ namespace XenAdmin.Network { string title = string.Format(Messages.CONNECTION_OK_NOTICE_TITLE, Hostname); string msg = string.Format(Messages.CONNECTION_OK_NOTICE_TEXT, Hostname); - log.Info(msg); + log.Info($"Connection to {Hostname} successful."); ConnectAction.Title = title; ConnectAction.Description = msg; SetPoolAndHostInAction(ConnectAction); @@ -1412,9 +1415,9 @@ namespace XenAdmin.Network EndConnect(true, task, false); ExpressRestriction e = (ExpressRestriction)error; + // This can happen when the user attempts to connect to a second XE Express host from the UI string msg = string.Format(Messages.CONNECTION_RESTRICTED_MESSAGE, e.HostName, e.ExistingHostName); - // Add an informational log message saying why the connection attempt failed - log.Info(msg); + log.Info($"Connection to Server {e.HostName} restricted because a connection already exists to another XE Express Server ({e.ExistingHostName})"); string title = string.Format(Messages.CONNECTION_RESTRICTED_NOTICE_TITLE, e.HostName); ActionBase action = new ActionBase(title, msg, false, true, msg); SetPoolAndHostInAction(action, pool, PoolOpaqueRef); @@ -1724,18 +1727,6 @@ namespace XenAdmin.Network } } - /*void XenConnection_CachePopulated(object sender, EventArgs e) - { - CachePopulated -= new EventHandler(XenConnection_CachePopulated); - Program.MainWindow.CommandInterface.TrySelectNewObjectInTree(this, false, true, false); - } - - void XenConnection_ConnectionResult(object sender, ConnectionResultEventArgs e) - { - if (!e.Connected) - CachePopulated -= new EventHandler(XenConnection_CachePopulated); - }*/ - private void ReconnectMasterTimer(object state) { if (IsConnected || !ConnectionsManager.XenConnectionsContains(this)) @@ -1792,8 +1783,7 @@ namespace XenAdmin.Network private void OnClearingCache() { - if (ClearingCache != null) - ClearingCache(this, new EventArgs()); + ClearingCache?.Invoke(this); } private void OnConnectionResult(bool connected, string reason, Exception error) @@ -1805,53 +1795,45 @@ namespace XenAdmin.Network private void OnConnectionClosed() { - if (ConnectionClosed != null) - ConnectionClosed(this, null); + ConnectionClosed?.Invoke(this); OnConnectionStateChanged(); } private void OnConnectionLost() { - if (ConnectionLost != null) - ConnectionLost(this, null); + ConnectionLost?.Invoke(this); OnConnectionStateChanged(); } private void OnConnectionReconnecting() { - if (ConnectionReconnecting != null) - ConnectionReconnecting(this, null); + ConnectionReconnecting?.Invoke(this); OnConnectionStateChanged(); } private void OnBeforeConnectionEnd() { - if (BeforeConnectionEnd != null) - BeforeConnectionEnd(this, null); + BeforeConnectionEnd?.Invoke(this); } private void OnConnectionStateChanged() { - if (ConnectionStateChanged != null) - ConnectionStateChanged(this, null); + ConnectionStateChanged?.Invoke(this); } private void OnConnectionMessageChanged(string message) { - if (ConnectionMessageChanged != null) - ConnectionMessageChanged(this, new ConnectionMessageChangedEventArgs(message)); + ConnectionMessageChanged?.Invoke(this, message); } public void OnBeforeMajorChange(bool background) { - if (BeforeMajorChange != null) - BeforeMajorChange(this, new ConnectionMajorChangeEventArgs(background)); + BeforeMajorChange?.Invoke(this, background); } public void OnAfterMajorChange(bool background) { - if (AfterMajorChange != null) - AfterMajorChange(this, new ConnectionMajorChangeEventArgs(background)); + AfterMajorChange?.Invoke(this, background); } private void OnXenObjectsUpdated() diff --git a/XenModel/OtherConfigWatcher.cs b/XenModel/OtherConfigWatcher.cs index 30b36aade..d72c5fca2 100644 --- a/XenModel/OtherConfigWatcher.cs +++ b/XenModel/OtherConfigWatcher.cs @@ -195,7 +195,7 @@ namespace XenAdmin MarkEventsReadyToFire(false); } - private static void connection_ConnectionStateChanged(object sender, EventArgs e) + private static void connection_ConnectionStateChanged(IXenConnection conn) { InvokeHelper.Invoke(delegate { diff --git a/XenModel/ServerDBs/Db.cs b/XenModel/ServerDBs/Db.cs index 3fcca9af2..787d158db 100644 --- a/XenModel/ServerDBs/Db.cs +++ b/XenModel/ServerDBs/Db.cs @@ -53,7 +53,9 @@ namespace XenAdmin.ServerDBs { _tables = new TableDictionary(this); - using (StreamReader stream = url.StartsWith("http") ? new StreamReader(HTTPHelper.GET(new Uri(url), connection, true, true)) : new StreamReader(url)) + using (StreamReader stream = url.StartsWith("http") + ? new StreamReader(HTTPHelper.GET(new Uri(url), connection, true)) + : new StreamReader(url)) { StatusReportXmlDocReader reader = new StatusReportXmlDocReader(); XmlDocument doc = new XmlDocument(); diff --git a/XenModel/Tags.cs b/XenModel/Tags.cs index f10507006..0f26b7b4a 100644 --- a/XenModel/Tags.cs +++ b/XenModel/Tags.cs @@ -105,28 +105,11 @@ namespace XenAdmin.Model o.Do("remove_tags", session, o.opaque_ref, tag); } - private static void BeforeMajorChange(bool background) - { - var conn = (XenConnection)ConnectionsManager.XenConnectionsCopy[0]; - if (conn != null) - { - conn.OnBeforeMajorChange(background); - } - } - - private static void AfterMajorChange(bool background) - { - var conn = (XenConnection)ConnectionsManager.XenConnectionsCopy[0]; - if (conn != null) - { - conn.OnAfterMajorChange(background); - } - } - public static void RemoveTagGlobally(string tag) { - //Program.AssertOffEventThread(); - BeforeMajorChange(true); + var conn = ConnectionsManager.XenConnectionsCopy[0] as XenConnection; + conn?.OnBeforeMajorChange(true); + try { foreach (IXenConnection connection in ConnectionsManager.XenConnectionsCopy) @@ -150,14 +133,15 @@ namespace XenAdmin.Model } finally { - AfterMajorChange(true); + conn?.OnAfterMajorChange(true); } } public static void RenameTagGlobally(string oldTag, string newTag) { - //Program.AssertOffEventThread(); - BeforeMajorChange(true); + var conn = ConnectionsManager.XenConnectionsCopy[0] as XenConnection; + conn?.OnBeforeMajorChange(true); + try { foreach (IXenConnection connection in ConnectionsManager.XenConnectionsCopy) @@ -181,7 +165,7 @@ namespace XenAdmin.Model } finally { - AfterMajorChange(true); + conn?.OnAfterMajorChange(true); } } diff --git a/XenModel/Utils/AsyncServerTime.cs b/XenModel/Utils/AsyncServerTime.cs deleted file mode 100644 index f73ebdf4f..000000000 --- a/XenModel/Utils/AsyncServerTime.cs +++ /dev/null @@ -1,106 +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.Threading; -using XenAPI; - -namespace XenAdmin.Utils -{ - /// - /// Get the UTC server time in an async fashion - /// - /// - Updated server time is not guaranteed - /// - No retry - /// - Default return time is the time at which the class is constructed - /// - public class AsyncServerTime - { - /// - /// Event triggered when the server time is obtained - /// - public event Action ServerTimeObtained; - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - - /// - /// Server time (UTC) - updated by thread and user is informed via the ServerTimeEventHandler - /// Default = DateTime.UtcNow - /// - public DateTime ServerTime { get; private set; } - - /// - /// Constructs the class but doesn't trigger the fetch of the server time - /// - public AsyncServerTime() - { - ServerTime = DateTime.UtcNow; - } - - /// - /// Get the server time for given host on a background thread - /// - /// Connect to the ServerTimeEventHandler for updates otherwise you'll get the current UTC time - /// and it won't be updated - /// - /// - public void Fetch(Host host) - { - ThreadPool.QueueUserWorkItem(GetServerTime, host); - } - - private void TriggerEvent() - { - if (ServerTimeObtained != null) - ServerTimeObtained(); - } - - private void GetServerTime(object state) - { - Host host = state as Host; - if (host == null || host.Connection == null) - { - log.ErrorFormat("Will not fetch server time: host or connection could not be resolved"); - return; - } - - try - { - //Note we're using the get_servertime call which returns the UTC time - ServerTime = Host.get_servertime(host.Connection.Session, host.opaque_ref); - TriggerEvent(); - } - catch (Exception e) - { - log.ErrorFormat("Failed to fetch server time for host {0}: {1}", host.name_label, e); - } - } - } -} diff --git a/XenModel/Utils/Helpers.cs b/XenModel/Utils/Helpers.cs index 9e2e3b46e..8f6f12207 100755 --- a/XenModel/Utils/Helpers.cs +++ b/XenModel/Utils/Helpers.cs @@ -446,17 +446,14 @@ namespace XenAdmin.Core /// May be null, in which case true is returned. public static bool NaplesOrGreater(IXenConnection conn) { - return conn == null || NaplesOrGreater(Helpers.GetMaster(conn)); + return conn == null || NaplesOrGreater(GetMaster(conn)); } /// Naples is ver. 3.0.0 /// May be null, in which case true is returned. public static bool NaplesOrGreater(Host host) { - if (host == null) - return true; - - return NaplesOrGreater(HostPlatformVersion(host)); + return host == null || NaplesOrGreater(HostPlatformVersion(host)); } public static bool NaplesOrGreater(string platformVersion) @@ -465,20 +462,39 @@ namespace XenAdmin.Core } /// May be null, in which case true is returned. - public static bool PlymouthOrGreater(IXenConnection conn) + public static bool QuebecOrGreater(IXenConnection conn) { - return conn == null || PlymouthOrGreater(GetMaster(conn)); + return conn == null || QuebecOrGreater(GetMaster(conn)); } - /// Plymouth platform version is 3.1.0 + /// Quebec platform version is 3.1.0 /// May be null, in which case true is returned. - public static bool PlymouthOrGreater(Host host) + public static bool QuebecOrGreater(Host host) { - if (host == null) - return true; + return host == null || QuebecOrGreater(HostPlatformVersion(host)); + } - string platform_version = HostPlatformVersion(host); - return platform_version != null && productVersionCompare(platform_version, "3.0.50") >= 0; + public static bool QuebecOrGreater(string platformVersion) + { + return platformVersion != null && productVersionCompare(platformVersion, "3.0.50") >= 0; + } + + /// May be null, in which case true is returned. + public static bool StockholmOrGreater(IXenConnection conn) + { + return conn == null || StockholmOrGreater(Helpers.GetMaster(conn)); + } + + /// May be null, in which case true is returned. + public static bool StockholmOrGreater(Host host) + { + return host == null || StockholmOrGreater(HostPlatformVersion(host)); + } + + /// Stockholm is ver. 3.2.0 + public static bool StockholmOrGreater(string platformVersion) + { + return platformVersion != null && productVersionCompare(platformVersion, "3.1.50") >= 0; } // CP-3435: Disable Check for Updates in Common Criteria Certification project @@ -869,12 +885,10 @@ namespace XenAdmin.Core /// The parsed double. public static double ParseStringToDouble(string toParse, double defaultValue) { - double doubleValue; - if (!double.TryParse(toParse, NumberStyles.Any, _nfi, out doubleValue)) - { - doubleValue = defaultValue; - } - return doubleValue; + if (double.TryParse(toParse, NumberStyles.Any, _nfi, out var doubleValue)) + return doubleValue; + + return defaultValue; } /// @@ -958,7 +972,7 @@ namespace XenAdmin.Core static Regex SrIORegex = new Regex("^(io_throughput|iops)_(read|write|total)_([a-f0-9]{8})$"); static Regex SrOtherRegex = new Regex("^(latency|avgqu_sz|inflight|iowait)_([a-f0-9]{8})$"); static Regex SrReadWriteRegex = new Regex("^((read|write)(_latency)?)_([a-f0-9]{8})$"); - static Regex GpuRegex = new Regex(@"^gpu_((memory_(free|used))|power_usage|temperature|(utilisation_(compute|memory_io)))_(([a-fA-F0-9]{4}\/)?[a-fA-F0-9]{2}\/[0-1][a-fA-F0-9].[0-7])$"); + static Regex GpuRegex = new Regex(@"^gpu_((memory_(free|used))|power_usage|temperature|(utilisation_(compute|memory_io)))_((([a-fA-F0-9]{4}\/)|([a-fA-F0-9]{8}\/))?[a-fA-F0-9]{2}\/[0-1][a-fA-F0-9].[0-7])$"); public static string GetFriendlyDataSourceName(string name, IXenObject iXenObject) { @@ -1120,10 +1134,16 @@ namespace XenAdmin.Core { string pciId = m.Groups[6].Value.Replace(@"/", ":"); PGPU gpu = FindGpu(iXenObject, pciId); + + if (gpu == null && string.IsNullOrEmpty(m.Groups[8].Value)) + { + pciId = pciId.Substring(4); + gpu = FindGpu(iXenObject, pciId); + } return gpu == null - ? null - : FormatFriendly(string.Format("Label-performance.gpu_{0}", m.Groups[1].Value), - gpu.Name(), pciId); + ? null + : FormatFriendly(string.Format("Label-performance.gpu_{0}", m.Groups[1].Value), + gpu.Name(), pciId); } if (NetworkLatencyRegex.IsMatch(name)) @@ -1462,161 +1482,96 @@ namespace XenAdmin.Core return ""; } - public static string GetStringXmlAttribute(XmlNode Node, string AttributeName) + /// + /// Retrieves a float value from an XML attribute. + /// Returns defaultValue if the attribute doesn't exist. + /// + public static string GetStringXmlAttribute(XmlNode node, string attributeName, string defaultValue = null) { - if (Node.Attributes[AttributeName] == null) - return null; - return Node.Attributes[AttributeName].Value; - } + if (node == null || node.Attributes == null || node.Attributes[attributeName] == null) + return defaultValue; - public static string GetStringXmlAttribute(XmlNode Node, string AttributeName, string Default) - { - if (Node.Attributes[AttributeName] == null) - return Default; - return Node.Attributes[AttributeName].Value; + return node.Attributes[attributeName].Value; } /// - /// Retrieves a true of false value from an XML attribute. Returns null-bool if the attribute doesnt exist or the - /// value is malformed. + /// Retrieves a true of false value from an XML attribute. + /// Returns defaultValue if the attribute doesn't exist or the value is malformed. /// - /// - /// - /// - public static bool? GetBoolXmlAttribute(XmlNode Node, string AttributeName) + public static bool GetBoolXmlAttribute(XmlNode node, string attributeName, bool defaultValue = false) { - bool b; - if (Node.Attributes[AttributeName] == null) - return null; + if (node == null || node.Attributes == null || node.Attributes[attributeName] == null) + return defaultValue; - if (bool.TryParse(Node.Attributes[AttributeName].Value, out b)) + if (bool.TryParse(node.Attributes[attributeName].Value, out bool b)) return b; - return null; + return defaultValue; } /// - /// Retrieves a true of false value from an XML attribute. Returns Default if the attribute doesnt exist or the - /// value is malformed. + /// Retrieves a float value from an XML attribute. + /// Returns defaultValue if the attribute doesn't exist or the value is malformed. /// - /// - /// - /// - public static bool GetBoolXmlAttribute(XmlNode Node, string AttributeName, bool Default) + public static float GetFloatXmlAttribute(XmlNode node, string attributeName, float defaultValue) { - bool? b = GetBoolXmlAttribute(Node, AttributeName); - if (!b.HasValue) - return Default; + if (node == null || node.Attributes == null || node.Attributes[attributeName] == null) + return defaultValue; - return b.Value; - } - - /// - /// Retrieves a float value from an XML attribute. Defaults to null-float if the attribute doesnt exist or the - /// value is malformed. - /// - /// - /// - /// - public static float? GetFloatXmlAttribute(XmlNode Node, string AttributeName) - { - float f; - if (Node.Attributes[AttributeName] == null) - return null; - - if (float.TryParse(Node.Attributes[AttributeName].Value, out f)) + if (float.TryParse(node.Attributes[attributeName].Value, out float f)) return f; - return null; + return defaultValue; } /// - /// Retrieves a float value from an XML attribute. Returns Default if the attribute doesnt exist or the - /// value is malformed. + /// Retrieves an int value from an XML attribute. + /// Returns defaultValue if the attribute doesn't exist or the value is malformed. /// - /// - /// - /// - public static float GetFloatXmlAttribute(XmlNode Node, string AttributeName, float Default) + public static int GetIntXmlAttribute(XmlNode node, string attributeName, int defaultValue) { - float? f = GetFloatXmlAttribute(Node, AttributeName); - if (!f.HasValue) - return Default; + if (node == null || node.Attributes == null || node.Attributes[attributeName] == null) + return defaultValue; - return f.Value; - } - - /// - /// Retrieves an int value from an XML attribute. Defaults to null-int if the attribute doesnt exist or the - /// value is malformed. - /// - /// - /// - /// - public static int? GetIntXmlAttribute(XmlNode Node, string AttributeName) - { - int i; - if (Node.Attributes[AttributeName] == null) - return null; - - if (int.TryParse(Node.Attributes[AttributeName].Value, out i)) + if (int.TryParse(node.Attributes[attributeName].Value, out int i)) return i; - return null; + return defaultValue; } /// - /// Retrieves an int value from an XML attribute. Returns Default if the attribute doesnt exist or the - /// value is malformed. + /// Retrieves the string content of an XmlNode attribute. /// - /// - /// - /// - public static int GetIntXmlAttribute(XmlNode Node, string AttributeName, int Default) + /// Thrown if the attribute is missing + public static string GetXmlAttribute(XmlNode node, string attributeName) { - int? i = GetIntXmlAttribute(Node, AttributeName); - if (!i.HasValue) - return Default; + if (node == null) + throw new I18NException(I18NExceptionType.XmlAttributeMissing, attributeName); - return i.Value; + if (node.Attributes == null || node.Attributes[attributeName] == null) + throw new I18NException(I18NExceptionType.XmlAttributeMissing, attributeName, node.Name); + + return node.Attributes[attributeName].Value; } /// - /// Retrieves the string content of an XmlNode attribute or throws an I18NException if it missing. + /// Retrieves the enum content of an XmlNode attribute or defaultValue if it is missing. /// - /// - /// - /// - public static string GetXmlAttribute(XmlNode Node, string Attribute) + public static T GetEnumXmlAttribute(XmlNode node, string attributeName, T defaultValue) { - if (Node.Attributes[Attribute] == null) - throw new I18NException(I18NExceptionType.XmlAttributeMissing, Attribute, Node.Name); - return Node.Attributes[Attribute].Value; - } + if (node == null || node.Attributes == null || node.Attributes[attributeName] == null) + return defaultValue; - /// - /// Retrieves the enum content of an XmlNode attribute or Default if it is missing. - /// - /// WARNING: Runtime check that typeof(T).IsEnum (Sorry! C# doesnt support Enum generics very well). - /// - /// - /// - /// - public static T GetEnumXmlAttribute(XmlNode Node, string Attribute, T Default) - { - if (Node.Attributes[Attribute] == null) - return Default; - - System.Diagnostics.Trace.Assert(typeof(T).IsEnum, "Supplied type to GetEnumXmlAttribute is not an enum"); + if (!typeof(T).IsEnum) + return defaultValue; try { - T result = (T)Enum.Parse(typeof(T), Node.Attributes[Attribute].Value); - return result; + return (T)Enum.Parse(typeof(T), node.Attributes[attributeName].Value); } catch { - return Default; + return defaultValue; } } @@ -1849,21 +1804,6 @@ namespace XenAdmin.Core return master != null && master.AppliedUpdates().Any(update => update.Name().ToLower().StartsWith("pvsaccelerator")); } - /// - /// This method returns the disk space required (bytes) on the provided SR for the provided VDI. - /// - /// Disk size required in bytes. - public static long GetRequiredSpaceToCreateVdiOnSr(SR sr, VDI vdi) - { - if (sr == null) - throw new ArgumentNullException("sr"); - - if (vdi == null) - throw new ArgumentNullException("vdi"); - - return vdi.virtual_size; - } - public static string UrlEncode(this string str) { if (string.IsNullOrEmpty(str)) diff --git a/XenModel/Utils/Util.cs b/XenModel/Utils/Util.cs index 972f0c0cc..32768e7b1 100644 --- a/XenModel/Utils/Util.cs +++ b/XenModel/Utils/Util.cs @@ -52,6 +52,7 @@ namespace XenAdmin public const long BINARY_MEGA = BINARY_KILO * BINARY_KILO; public const long BINARY_GIGA = BINARY_KILO * BINARY_MEGA; public const long BINARY_TERA = BINARY_KILO * BINARY_GIGA; + public const long BINARY_PETA = BINARY_KILO * BINARY_TERA; public const long DEC_KILO = 1000; public const long DEC_MEGA = DEC_KILO * DEC_KILO; @@ -110,7 +111,7 @@ namespace XenAdmin /// public static string MemorySizeStringSuitableUnits(double bytes, bool showPoint0Decimal, string formatStringWhenZero) { - if(bytes == 0) + if (bytes == 0) { return string.Format(formatStringWhenZero, bytes); } @@ -134,8 +135,7 @@ namespace XenAdmin public static string DiskSizeString(ulong bytes) { - string unit; - string value = ByteSizeString(bytes, 1, false, out unit); + string value = ByteSizeString(bytes, 1, false, out var unit); return string.Format(Messages.VAL_FORMAT, value, unit); } @@ -154,8 +154,7 @@ namespace XenAdmin public static string DiskSizeStringWithoutUnits(long bytes) { - string unit; - return ByteSizeString(bytes, 1, false, out unit); + return ByteSizeString(bytes, 1, false, out _); } public static string MemorySizeStringVariousUnits(double bytes) @@ -268,36 +267,39 @@ namespace XenAdmin return t.ToString("0"); } - public static double ToGB(double bytes, int dp, RoundingBehaviour rounding) + private static double DecimalAdjustment(double value, RoundingBehaviour rounding, int decimalPlaces) { - double value = (double)bytes / BINARY_GIGA; - int decimalsAdjustment = (int)Math.Pow(10, dp); + int decimalsAdjustment = (int)Math.Pow(10, decimalPlaces); switch (rounding) { case RoundingBehaviour.None: return value; case RoundingBehaviour.Down: - return (Math.Floor(value * decimalsAdjustment) / decimalsAdjustment); + return Math.Floor(value * decimalsAdjustment) / decimalsAdjustment; case RoundingBehaviour.Up: - return (Math.Ceiling(value * decimalsAdjustment) / decimalsAdjustment); - default: // case RoundingBehaviour.Nearest: - return (Math.Round(value, 1, MidpointRounding.AwayFromZero)); - } + return Math.Ceiling(value * decimalsAdjustment) / decimalsAdjustment; + case RoundingBehaviour.Nearest: + default: + return (Math.Round(value, decimalPlaces, MidpointRounding.AwayFromZero)); + } } - public static double ToMB(double bytes, RoundingBehaviour rounding) + public static double ToTB(double bytes, RoundingBehaviour rounding, int decimalPlaces) { - switch (rounding) - { - case RoundingBehaviour.None: - return bytes / BINARY_MEGA; - case RoundingBehaviour.Down: - return Math.Floor(bytes / BINARY_MEGA); - case RoundingBehaviour.Up: - return Math.Ceiling(bytes / BINARY_MEGA); - default: // case RoundingBehaviour.Nearest: - return Math.Round(bytes / BINARY_MEGA, MidpointRounding.AwayFromZero); - } + double value = bytes / BINARY_TERA; + return DecimalAdjustment(value, rounding, decimalPlaces); + } + + public static double ToGB(double bytes, RoundingBehaviour rounding, int decimalPlaces) + { + double value = bytes / BINARY_GIGA; + return DecimalAdjustment(value, rounding, decimalPlaces); + } + + public static double ToMB(double bytes, RoundingBehaviour rounding, int decimalPlaces = 0) + { + double value = bytes / BINARY_MEGA; + return DecimalAdjustment(value, rounding, decimalPlaces); } public static double CorrectRoundingErrors(double amount) @@ -305,7 +307,7 @@ namespace XenAdmin // Special case to cope with choosing an amount that's a multiple of 0.1G but not 0.5G -- // sending it to the server as the nearest byte and getting it back later -- // and finding it's fractionally changed, messing up our spinner permitted ranges. - double amountRounded = ToGB(amount, 1, RoundingBehaviour.Nearest) * BINARY_GIGA; + double amountRounded = ToGB(amount, RoundingBehaviour.Nearest, 1) * BINARY_GIGA; double roundingDiff = amountRounded - amount; if (roundingDiff > -1.0 && roundingDiff < 1.0) // within 1 byte: although I think it will always be positive in the case we want to correct return amountRounded; @@ -501,7 +503,7 @@ namespace XenAdmin } /// - /// Get the first node with name 'value' and returns its innerText. Used for gettings results of CGSL async actions. + /// Get the first node with name 'value' and returns its innerText. Used for getting results of CGSL async actions. /// /// The XML. /// The contents of the first node with name 'value'. diff --git a/XenModel/WLB/WlbReportAction.cs b/XenModel/WLB/WlbReportAction.cs index ffffb343f..e013b660b 100644 --- a/XenModel/WLB/WlbReportAction.cs +++ b/XenModel/WLB/WlbReportAction.cs @@ -96,7 +96,7 @@ namespace XenAdmin.Actions.Wlb uriBuilder.Query = uriBuilder.Query.Substring(1) + string.Format("&{0}={1}", k, v); } - log.DebugFormat("Downloading report {0} from {1}", report, uriBuilder.ToString()); + log.DebugFormat("Downloading report {0}.", report); // The DownloadFile call will block, so we need a separate thread to poll for task status. Thread taskThread = new Thread((ThreadStart)progressPoll); @@ -175,7 +175,7 @@ namespace XenAdmin.Actions.Wlb byte[] buf = new byte[BUFSIZE]; using (MemoryStream ms = new MemoryStream()) { - using (Stream http = HTTPHelper.GET(uri, Connection, false, true)) + using (Stream http = HTTPHelper.GET(uri, Connection, false)) { while (true) { diff --git a/XenModel/XCM/ConversionClient.cs b/XenModel/XCM/ConversionClient.cs new file mode 100644 index 000000000..f3ca2a128 --- /dev/null +++ b/XenModel/XCM/ConversionClient.cs @@ -0,0 +1,154 @@ +/* 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.Net; +using CookComputing.XmlRpc; +using XenAdmin.Network; + + +namespace XenAdmin.XCM +{ + public class ConversionClient + { + private readonly IConversionProxy _conversionProxy; + private readonly NetworkCredential _credential; + + public ConversionClient(IXenConnection connection, string vpxIp, bool useSsl) + { + Connection = connection; + _credential = connection.NetworkCredential; + var session = connection.Session; + + _conversionProxy = XmlRpcProxyGen.Create(); + _conversionProxy.Url = string.Format(useSsl ? "https://{0}" : "http://{0}", vpxIp); + + if (session.JsonRpcClient != null) + { + _conversionProxy.Timeout = session.JsonRpcClient.Timeout; + _conversionProxy.NonStandard = XmlRpcNonStandard.All; + _conversionProxy.UseIndentation = false; + _conversionProxy.UserAgent = session.JsonRpcClient.UserAgent; + _conversionProxy.KeepAlive = session.JsonRpcClient.KeepAlive; + _conversionProxy.Proxy = session.JsonRpcClient.WebProxy; + } + else + { + _conversionProxy.Timeout = session.proxy.Timeout; + _conversionProxy.NonStandard = session.proxy.NonStandard; + _conversionProxy.UseIndentation = session.proxy.UseIndentation; + _conversionProxy.UserAgent = session.proxy.UserAgent; + _conversionProxy.KeepAlive = session.proxy.KeepAlive; + _conversionProxy.Proxy = session.proxy.Proxy; + } + } + + private ServiceCredentials ServiceCredentials => new ServiceCredentials {Username = _credential.UserName, Password = _credential.Password}; + + public IXenConnection Connection { get; } + + public string GetVpxVersion() + { + return _conversionProxy.GetVpxVersion(); + } + + public VmInstance[] GetSourceVMs(ServerInfo vmWareServer) + { + return _conversionProxy.GetSourceVMs(ServiceCredentials, vmWareServer); + } + + public Conversion CreateConversion(ConversionConfig config) + { + return _conversionProxy.CreateConversion(ServiceCredentials, config); + } + + public Conversion RetryConversion(Conversion conversion) + { + return _conversionProxy.RetryConversion(ServiceCredentials, conversion.Id); + } + + public void CancelConversion(Conversion conversion) + { + _conversionProxy.CancelConversion(ServiceCredentials, conversion.Id); + } + + public void ClearConversionHistory() + { + _conversionProxy.ClearConversionHistory(ServiceCredentials); + } + + public Conversion[] GetConversionHistory() + { + return _conversionProxy.GetConversionHistory(ServiceCredentials); + } + + public Conversion GetConversionDetails(Conversion conversion) + { + return _conversionProxy.GetConversionDetails(ServiceCredentials, conversion.Id); + } + + public long GetReservedDiskSpace(string srUuid) + { + return _conversionProxy.GetReservedDiskSpace(ServiceCredentials, srUuid); + } + + public string GetVpxLogs() + { + return _conversionProxy.GetVpxLogs(ServiceCredentials); + } + + public string GetConversionLog(Conversion conversion) + { + return _conversionProxy.GetConversionLog(ServiceCredentials, conversion.Id); + } + + public void LogMessage(int level, string msg) + { + _conversionProxy.LogMessage(ServiceCredentials, level, msg); + } + + public NetworkInstance[] GetNetworks(ServerInfo targetServer) + { + return _conversionProxy.GetSourceNetworks(ServiceCredentials, targetServer); + } + + public void ApplyVmFixups(string vmUuid) + { + _conversionProxy.ApplyVmFixups(ServiceCredentials, vmUuid); + } + + public void UpdateConversionProgress(Conversion conversion, ConversionProgressData progressData) + { + _conversionProxy.UpdateConversionProgress(conversion.Id, progressData); + } + } +} diff --git a/XenModel/XCM/ConversionDescriptors.cs b/XenModel/XCM/ConversionDescriptors.cs new file mode 100644 index 000000000..da193ff52 --- /dev/null +++ b/XenModel/XCM/ConversionDescriptors.cs @@ -0,0 +1,328 @@ +/* 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 CookComputing.XmlRpc; +using XenAdmin.Actions; +using XenCenterLib; + + +namespace XenAdmin.XCM +{ + public struct ServiceCredentials + { + public string Username; + public string Password; + } + + public struct Conversion : IStatus + { + #region Constructors + + public Conversion(string id) + { + Configuration = new ConversionConfig(); + + Id = id; + Name = ""; + Description = ""; + + XenServerName = ""; + SRName = ""; + + CreatedTime = DateTime.Now; + StartTime = DateTime.MaxValue; + CompletedTime = DateTime.MinValue; + + PercentComplete = 0; + Status = (int)ConversionStatus.Created; + CompressedBytesRead = UncompressedBytesWritten = 0; + StatusDetail = ""; + Error = ""; + ClientIpEndPoint = ""; + XenServerVMUuid = ""; + } + + public Conversion(ConversionConfig config, long id, string conversionName, string conversionDescription) + : this(id.ToString()) + { + Configuration = config; + Name = conversionName; + Description = conversionDescription; + } + + #endregion + + public string Id; + + [XmlRpcMember("JobName")] + public string Name; + + [XmlRpcMember("JobDesc")] + public string Description; + + public string XenServerName; + public string SRName; + public DateTime CreatedTime; + public DateTime StartTime; + public DateTime CompletedTime; + + public long CompressedBytesRead; + public long UncompressedBytesWritten; + public long PercentComplete; + + [XmlRpcMember("State")] + public int Status; + + [XmlRpcMember("StateDesc")] + public string StatusDetail; + + [XmlRpcMember("ErrorString")] + public string Error; + + /// + /// Set by the server. + /// + public string ClientIpEndPoint; + + [XmlRpcMissingMapping(MappingAction.Ignore)] + public string XenServerVMUuid; + + [XmlRpcMember("JobInfo")] + public ConversionConfig Configuration; + + + [XmlRpcMissingMapping(MappingAction.Ignore)] + public bool InProgress => Status == (int)ConversionStatus.Running; + + [XmlRpcMissingMapping(MappingAction.Ignore)] + public bool IsCompleted => + !(Status == (int)ConversionStatus.Created || Status == (int)ConversionStatus.Queued || Status == (int)ConversionStatus.Running); + + [XmlRpcMissingMapping(MappingAction.Ignore)] + public bool Succeeded => Status == (int)ConversionStatus.Successful; + + [XmlRpcMissingMapping(MappingAction.Ignore)] + public bool IsCancelled => Status == (int)ConversionStatus.Cancelled; + + [XmlRpcMissingMapping(MappingAction.Ignore)] + public bool IsError => Status == (int)ConversionStatus.Failed; + + [XmlRpcMissingMapping(MappingAction.Ignore)] + public bool IsIncomplete => Status == (int)ConversionStatus.Incomplete; + + [XmlRpcMissingMapping(MappingAction.Ignore)] + public bool IsQueued => Status == (int)ConversionStatus.Created || Status == (int)ConversionStatus.Queued; + + + [XmlRpcMissingMapping(MappingAction.Ignore)] + public bool CanCancel => Status == (int)ConversionStatus.Queued || Status == (int)ConversionStatus.Running; + + [XmlRpcMissingMapping(MappingAction.Ignore)] + public bool CanRetry => Status == (int)ConversionStatus.Cancelled || Status == (int)ConversionStatus.Failed; + + + public string GetStatusString() + { + switch (Status) + { + case (int)ConversionStatus.Created: + return Messages.CONVERSION_STATUS_CREATED; + case (int)ConversionStatus.Queued: + return Messages.CONVERSION_STATUS_QUEUED; + case (int)ConversionStatus.Running: + return Messages.CONVERSION_STATUS_RUNNING; + case (int)ConversionStatus.Successful: + return Messages.CONVERSION_STATUS_SUCCESSFUL; + case (int)ConversionStatus.Failed: + return Messages.CONVERSION_STATUS_FAILED; + case (int)ConversionStatus.Cancelled: + return Messages.CONVERSION_STATUS_CANCELLED; + case (int)ConversionStatus.Incomplete: + return Messages.CONVERSION_STATUS_INCOMPLETE; + default: + throw new ArgumentOutOfRangeException(nameof(Status), "Unknown Conversion Status"); + } + } + + #region Sorting methods + + public static int CompareOnVm(Conversion conv1, Conversion conv2) + { + var result = StringUtility.NaturalCompare(conv1.Configuration.SourceVmName, conv2.Configuration.SourceVmName); + return result == 0 ? CompareOnId(conv1, conv2) : result; + } + + public static int CompareOnServer(Conversion conv1, Conversion conv2) + { + var result = StringUtility.NaturalCompare(conv1.Configuration.SourceServer.Hostname, conv2.Configuration.SourceServer.Hostname); + return result == 0 ? CompareOnId(conv1, conv2) : result; + } + + public static int CompareOnStatus(Conversion conv1, Conversion conv2) + { + var result = conv1.Status.CompareTo(conv2.Status); + return result == 0 ? CompareOnId(conv1, conv2) : result; + } + + public static int CompareOnId(Conversion conv1, Conversion conv2) + { + return StringUtility.NaturalCompare(conv1.Id, conv2.Id); + } + + public static int CompareOnStartTime(Conversion conv1, Conversion conv2) + { + var result = DateTime.Compare(conv1.StartTime, conv2.StartTime); + return result == 0 ? CompareOnId(conv1, conv2) : result; + } + + public static int CompareOnCompletedTime(Conversion conv1, Conversion conv2) + { + var result = DateTime.Compare(conv1.CompletedTime, conv2.CompletedTime); + return result == 0 ? CompareOnId(conv1, conv2) : result; + } + + #endregion + } + + public struct NetworkInstance + { + public string Name; + public string Id; + } + + public struct VmInstance + { + public string UUID; + public string Name; + public int PowerState; + public string OSType; + public long CommittedStorage; + public long UncommittedStorage; + public bool Template; + } + + public struct ServerInfo + { + public int ServerType; + public string Hostname; + public string Username; + public string Password; + } + + + public enum VmPowerState + { + Off, + Running, + Suspended + } + + public enum ServerType + { + XenServer, + ESXServer, + VirtualCenter, + HyperVServer + } + + public enum ConversionStatus + { + Created = 0, + Queued = 1, + Running = 2, + Successful = 3, + Failed = 4, + Cancelled = 5, + Incomplete = 6, + } + + + public struct StorageMapping + { + /// + /// The target SR where the converted VM's disks will be placed + /// + public string SRuuid; + } + + public struct ConversionConfig + { + /// + /// ESX/vCenter server with the source VMs + /// + [XmlRpcMember("Source")] + public ServerInfo SourceServer; + + /// + /// ESX/vCenter VM to convert + /// + public string SourceVmUUID; + public string SourceVmName; + + [XmlRpcMember("ImportInfo")] + public StorageMapping StorageMapping; + + [XmlRpcMissingMapping(MappingAction.Ignore)] + public object NetworkMappings; + + [XmlRpcMissingMapping(MappingAction.Ignore)] + public bool? PreserveMAC; + + public static object DictionaryToStruct(Dictionary dict) + { + var theStruct = new XmlRpcStruct(); + if (dict == null) + return theStruct; + + foreach (var kvp in dict) + theStruct.Add(kvp.Key, kvp.Value); + + return theStruct; + } + } + + public struct ConversionProgressData + { + [XmlRpcMissingMapping(MappingAction.Ignore)] + public long BytesRead; + + [XmlRpcMissingMapping(MappingAction.Ignore)] + public long BytesWritten; + + public ConversionProgressData(long bytesRead, long bytesWritten) + { + BytesRead = bytesRead; + BytesWritten = bytesWritten; + } + } +} diff --git a/XenModel/XCM/IConversion.cs b/XenModel/XCM/IConversion.cs new file mode 100644 index 000000000..4f21c80e6 --- /dev/null +++ b/XenModel/XCM/IConversion.cs @@ -0,0 +1,84 @@ +/* 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 CookComputing.XmlRpc; + +namespace XenAdmin.XCM +{ + public interface IConversionProxy : IXmlRpcProxy + { + [XmlRpcMethod("svc.get_version")] + string GetVpxVersion(); + + [XmlRpcMethod("svc.get_vmlist")] + VmInstance[] GetSourceVMs(ServiceCredentials cred, ServerInfo source); + + [XmlRpcMethod("svc.get_networks")] + NetworkInstance[] GetSourceNetworks(ServiceCredentials cred, ServerInfo source); + + [XmlRpcMethod("svc.vm_fixups")] + void ApplyVmFixups(ServiceCredentials cred, string vmUuid); + + [XmlRpcMethod("svc.getlog")] + string GetVpxLogs(ServiceCredentials cred); + + [XmlRpcMethod("svc.log")] + void LogMessage(ServiceCredentials cred, int level, string msg); + + + [XmlRpcMethod("job.create")] + Conversion CreateConversion(ServiceCredentials cred, ConversionConfig configuration); + + [XmlRpcMethod("job.retry")] + Conversion RetryConversion(ServiceCredentials cred, string conversionId); + + [XmlRpcMethod("job.delete")] + void CancelConversion(ServiceCredentials cred, string conversionId); + + [XmlRpcMethod("job.clear")] + void ClearConversionHistory(ServiceCredentials cred); + + [XmlRpcMethod("job.get_all")] + Conversion[] GetConversionHistory(ServiceCredentials cred); + + [XmlRpcMethod("job.get")] + Conversion GetConversionDetails(ServiceCredentials cred, string conversionId); + + [XmlRpcMethod("job.get_reserveddiskspace")] + long GetReservedDiskSpace(ServiceCredentials cred, string srUuid); + + [XmlRpcMethod("job.getlog")] + string GetConversionLog(ServiceCredentials cred, string conversionId); + + [XmlRpcMethod("job.update_progress")] + void UpdateConversionProgress(string conversionId, ConversionProgressData progressData); + } +} \ No newline at end of file diff --git a/XenModel/XenAPI-Extensions/Blob.cs b/XenModel/XenAPI-Extensions/Blob.cs index c04ca0726..5e5f03b5b 100644 --- a/XenModel/XenAPI-Extensions/Blob.cs +++ b/XenModel/XenAPI-Extensions/Blob.cs @@ -41,8 +41,6 @@ namespace XenAPI public void Save(Stream inStream, Session session) { - //Program.AssertOffEventThread(); - if (session == null) throw new IOException(); UriBuilder uri = new UriBuilder(); @@ -53,16 +51,14 @@ namespace XenAPI uri.Query = String.Format("ref={0}&session_id={1}", opaque_ref, Uri.EscapeDataString(session.opaque_ref)); - using (Stream outStream = HTTPHelper.PUT(uri.Uri, inStream.Length, true, true)) + using (Stream outStream = HTTPHelper.PUT(uri.Uri, inStream.Length, true)) { - HTTP.CopyStream(inStream, outStream, null, delegate() { return XenAdminConfigManager.Provider.ForcedExiting; }); + HTTP.CopyStream(inStream, outStream, null, () => XenAdminConfigManager.Provider.ForcedExiting); } } public Stream Load() { - //Program.AssertOffEventThread(); - Session session = Connection.Session; if (session == null) throw new IOException(); @@ -74,7 +70,7 @@ namespace XenAPI uri.Query = String.Format("ref={0}&session_id={1}", opaque_ref, Uri.EscapeDataString(session.opaque_ref)); - return HTTPHelper.GET(uri.Uri, Connection, true, true); + return HTTPHelper.GET(uri.Uri, Connection, true); } } } diff --git a/XenModel/XenAPI-Extensions/Failure.cs b/XenModel/XenAPI-Extensions/Failure.cs index d117617fd..80adb0d9d 100644 --- a/XenModel/XenAPI-Extensions/Failure.cs +++ b/XenModel/XenAPI-Extensions/Failure.cs @@ -95,8 +95,6 @@ namespace XenAPI public const string UPDATE_ALREADY_EXISTS = "UPDATE_ALREADY_EXISTS"; public const string MEMORY_CONSTRAINT_VIOLATION = "MEMORY_CONSTRAINT_VIOLATION"; - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - /// /// Changes a techy RBAC Failure into a pretty print one that shows the roles that would be required to complete the failed action. /// Requires context such as the the connection and current session to populate these fields. diff --git a/XenModel/XenAPI-Extensions/Host.cs b/XenModel/XenAPI-Extensions/Host.cs index 8a9a906c4..bc4038447 100644 --- a/XenModel/XenAPI-Extensions/Host.cs +++ b/XenModel/XenAPI-Extensions/Host.cs @@ -274,6 +274,11 @@ namespace XenAPI return BoolKeyPreferTrue(h.license_params, "restrict_dr"); } + public static bool RestrictConversion(Host h) + { + return BoolKeyPreferTrue(h.license_params, "restrict_xcm"); + } + public static bool RestrictCrossPoolMigrate(Host h) { return BoolKeyPreferTrue(h.license_params, "restrict_storage_xen_motion"); diff --git a/XenModel/XenAPI-Extensions/Role.cs b/XenModel/XenAPI-Extensions/Role.cs index 90e76cee7..a4c9cefa3 100644 --- a/XenModel/XenAPI-Extensions/Role.cs +++ b/XenModel/XenAPI-Extensions/Role.cs @@ -38,7 +38,7 @@ namespace XenAPI { // Note that the Role object represents both the high-level roles (such as "VM Operator" etc.) // and their subroles, i.e., the individual calls they are allowed to make (such as "vm.create"). - public partial class Role : IComparable + public partial class Role { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); public const string MR_ROLE_READ_ONLY = "read-only"; @@ -50,7 +50,12 @@ namespace XenAPI public string FriendlyName() { - return FriendlyNameManager.GetFriendlyName(String.Format("Role.{0}.NameLabel", this.name_label.ToLowerInvariant())); + return FriendlyNameManager.GetFriendlyName(string.Format("Role.{0}.NameLabel", name_label.ToLowerInvariant())); + } + + public static string FriendlyName(string role) + { + return FriendlyNameManager.GetFriendlyName(string.Format("Role.{0}.NameLabel", role.ToLowerInvariant())); } public string FriendlyDescription() diff --git a/XenModel/XenAPI-Extensions/SR.cs b/XenModel/XenAPI-Extensions/SR.cs index 09e08900a..f9f5d727b 100644 --- a/XenModel/XenAPI-Extensions/SR.cs +++ b/XenModel/XenAPI-Extensions/SR.cs @@ -152,11 +152,6 @@ namespace XenAPI return SM.GetByType(Connection, GetSRType(true).ToString()); } - public string ConfigType() - { - return Get(sm_config, "type"); - } - private string I18N(string field_name, string field_value, bool with_host) { if (!other_config.ContainsKey("i18n-key")) @@ -211,7 +206,6 @@ namespace XenAPI /// Iterating through the PBDs, this will return the storage host of the first PBD that is currently_attached. /// This will return null if there are no PBDs or none of them is currently_attached /// - /// public Host GetFirstAttachedStorageHost() { if (PBDs.Count == 0) @@ -262,11 +256,6 @@ namespace XenAPI || typ == SRTypes.xfs; } - public bool ShowForgetWarning() - { - return GetSRType(false) != SRTypes.iso; - } - /// /// Internal helper function. True if all the PBDs for this SR are currently_attached. /// @@ -279,7 +268,6 @@ namespace XenAPI /// /// Internal helper function. True if any of the PBDs for this SR is currently_attached. /// - /// private bool AnyPBDAttached() { return Connection.ResolveAll(this.PBDs).Any(pbd => pbd.currently_attached); @@ -288,8 +276,6 @@ namespace XenAPI /// /// Returns true if there are any Running or Suspended VMs attached to VDIs on this SR. /// - /// - /// public bool HasRunningVMs() { foreach (VDI vdi in Connection.ResolveAll(VDIs)) @@ -449,7 +435,6 @@ namespace XenAPI /// /// Returns true if a new VM may be created on this SR: the SR supports VDI_CREATE, has the right number of PBDs, and is not full. /// - /// The IXenConnection whose cache this XenObject belongs to. May not be null. /// public bool CanCreateVmOn() { @@ -462,7 +447,6 @@ namespace XenAPI /// /// Whether the underlying SR backend supports VDI_CREATE. Will return true even if the SR is full. /// - /// public virtual bool SupportsVdiCreate() { // ISO SRs are deemed not to support VDI create in the GUI, even though the back end @@ -581,10 +565,6 @@ namespace XenAPI } } results.Add(new SRInfo(uuid, size, aggr, name_label, name_description, pool_metadata_detected)); - /*if (aggr != "") - results.Add(new SRInfo(uuid, size, aggr)); - else - results.Add(new SRInfo(uuid, size));*/ } return results; } @@ -824,14 +804,6 @@ namespace XenAPI return current >= max; } - public Dictionary GetDeviceConfig(IXenConnection connection) - { - foreach (PBD pbd in connection.ResolveAll(PBDs)) - return pbd.device_config; - - return null; - } - public class SRInfo : IComparable, IEquatable { public readonly string UUID; @@ -842,22 +814,8 @@ namespace XenAPI public readonly bool PoolMetadataDetected; public Dictionary Configuration; - public SRInfo(string uuid) - : this(uuid, 0, "", "", "", false) - { - } - - public SRInfo(string uuid, long size) - : this(uuid, size, "", "", "", false) - { - } - - public SRInfo(string uuid, long size, string aggr) - : this(uuid, size, aggr, "", "", false) - { - } - - public SRInfo(string uuid, long size, string aggr, string name, string description, bool poolMetadataDetected, Dictionary configuration = null) + public SRInfo(string uuid, long size = 0, string aggr = "", string name = "", string description = "", + bool poolMetadataDetected = false, Dictionary configuration = null) { UUID = uuid; Size = size; @@ -984,10 +942,8 @@ namespace XenAPI } /// - /// Is an iSL type or legacy iSl adpater type + /// Is an iSL type or legacy iSl adapter type /// - /// - /// public static bool IsIslOrIslLegacy(SR sr) { SRTypes currentType = sr.GetSRType(true); @@ -997,7 +953,6 @@ namespace XenAPI /// /// Whether the underlying SR backend supports SR_TRIM /// - /// public bool SupportsTrim() { System.Diagnostics.Trace.Assert(Connection != null, "Connection must not be null"); @@ -1006,11 +961,6 @@ namespace XenAPI return sm != null && sm.features != null && sm.features.ContainsKey("SR_TRIM"); } - public long PercentageCommitted() - { - return (long)Math.Round(virtual_allocation/(double)physical_size*100.0); - } - #region IEquatable Members /// diff --git a/XenModel/XenAPI-Extensions/Session.cs b/XenModel/XenAPI-Extensions/Session.cs index 54ac36bad..fda8be8b8 100644 --- a/XenModel/XenAPI-Extensions/Session.cs +++ b/XenModel/XenAPI-Extensions/Session.cs @@ -51,7 +51,9 @@ namespace XenAPI { Connection = connection; proxy.RequestEvent += LogRequest; +#if DEBUG proxy.ResponseEvent += LogResponse; +#endif } public Session(Proxy proxy, IXenConnection connection) @@ -90,7 +92,9 @@ namespace XenAPI else if (session.proxy != null) { proxy.RequestEvent += LogRequest; +#if DEBUG proxy.ResponseEvent += LogResponse; +#endif } } @@ -164,7 +168,11 @@ namespace XenAPI if (CanLogCall(methodName)) { +#if DEBUG log.DebugFormat("Invoking XML-RPC method {0}: {1}", methodName, xml); +#else + log.DebugFormat("Invoking XML-RPC method {0}", methodName); +#endif } else { @@ -172,11 +180,13 @@ namespace XenAPI } } +#if DEBUG private void LogResponse(object o, XmlRpcResponseEventArgs args) { if(log.IsDebugEnabled) log.DebugFormat(DumpStream(args.ResponseStream, "XML-RPC response: ")); } +#endif private string DumpStream(Stream s, string header) { @@ -206,10 +216,10 @@ namespace XenAPI if (IsLocalSuperuser) return Messages.AD_LOCAL_ROOT_ACCOUNT; - if (!string.IsNullOrEmpty(CurrentUserDetails.UserDisplayName)) + if (CurrentUserDetails != null && !string.IsNullOrEmpty(CurrentUserDetails.UserDisplayName)) return CurrentUserDetails.UserDisplayName.Ellipsise(50); - if (!string.IsNullOrEmpty(CurrentUserDetails.UserName)) + if (CurrentUserDetails != null && !string.IsNullOrEmpty(CurrentUserDetails.UserName)) return CurrentUserDetails.UserName.Ellipsise(50); return Messages.UNKNOWN_AD_USER; @@ -223,7 +233,7 @@ namespace XenAPI if (IsLocalSuperuser) return Messages.AD_LOCAL_ROOT_ACCOUNT; - if (!string.IsNullOrEmpty(CurrentUserDetails.UserName)) + if (CurrentUserDetails != null && !string.IsNullOrEmpty(CurrentUserDetails.UserName)) return CurrentUserDetails.UserName; return UserSid; diff --git a/XenModel/XenAPI-Extensions/Task.cs b/XenModel/XenAPI-Extensions/Task.cs index c8b7a1a50..4e5ae8577 100644 --- a/XenModel/XenAPI-Extensions/Task.cs +++ b/XenModel/XenAPI-Extensions/Task.cs @@ -85,16 +85,14 @@ namespace XenAPI } catch (WebException we) { - log.ErrorFormat("WebException in DoWithSessionRetry, retry {0}", retries); - log.Error(we, we); + log.Error($"WebException in DoWithSessionRetry, retry {retries}: ", we); if (retries <= 0) throw; } catch (Failure failure) { - log.ErrorFormat("Failure in DoWithSessionRetry, retry {0}", retries); - log.Error(failure, failure); + log.Error($"Failure in DoWithSessionRetry, retry {retries}", failure); if (retries <= 0) throw; diff --git a/XenModel/XenAPI-Extensions/VGPU.cs b/XenModel/XenAPI-Extensions/VGPU.cs index 72a96bf9d..2305c379f 100644 --- a/XenModel/XenAPI-Extensions/VGPU.cs +++ b/XenModel/XenAPI-Extensions/VGPU.cs @@ -38,5 +38,33 @@ namespace XenAPI var vGPUType = Connection.Resolve(type); return vGPUType == null || vGPUType.IsPassthrough(); } + + public bool IsExperimental() + { + var vGpuType = Connection.Resolve(type); + return vGpuType != null && vGpuType.experimental; + } + + public string VGpuTypeDescription() + { + var gpuGroup = Connection.Resolve(GPU_group); + if (gpuGroup != null) + { + if (gpuGroup.HasVGpu()) + { + var vGpuType = Connection.Resolve(type); + if (vGpuType != null) + { + return vGpuType.Description(); + } + } + else + { + return gpuGroup.Name(); + } + } + + return string.Empty; + } } } diff --git a/XenModel/XenAPI-Extensions/VGPU_type.cs b/XenModel/XenAPI-Extensions/VGPU_type.cs index 797036da8..8b9a3f5fc 100644 --- a/XenModel/XenAPI-Extensions/VGPU_type.cs +++ b/XenModel/XenAPI-Extensions/VGPU_type.cs @@ -49,11 +49,16 @@ namespace XenAPI if (IsPassthrough()) return Messages.VGPU_PASSTHRU_TOSTRING; + bool multipleVgpuSupport = compatible_types_in_vm.Count > 0; + var maxRes = MaxResolution(); if ((maxRes == "0x0" || string.IsNullOrEmpty(maxRes)) && max_heads < 1) - return string.Format(Messages.VGPU_DESCRIPTION_ZEROES, model_name, Capacity()); + return multipleVgpuSupport ? string.Format(Messages.VGPU_DESCRIPTION_ZEROES_MULTIPLE_VGPU_SUPPORT, model_name, Capacity()) : + string.Format(Messages.VGPU_DESCRIPTION_ZEROES, model_name, Capacity()); - return string.Format(max_heads == 1 ? Messages.VGPU_DESCRIPTION_ONE : Messages.VGPU_DESCRIPTION_MANY, + return string.Format(max_heads == 1 ? + (multipleVgpuSupport ? Messages.VGPU_DESCRIPTION_ONE_MULTIPLE_VGPU_SUPPORT : Messages.VGPU_DESCRIPTION_ONE) : + (multipleVgpuSupport ? Messages.VGPU_DESCRIPTION_MANY_MULTIPLE_VGPU_SUPPORT : Messages.VGPU_DESCRIPTION_MANY), model_name, Capacity(), maxRes, max_heads); } diff --git a/XenModel/XenAPI-Extensions/VM.cs b/XenModel/XenAPI-Extensions/VM.cs index 4738f0afc..0abdd2444 100644 --- a/XenModel/XenAPI-Extensions/VM.cs +++ b/XenModel/XenAPI-Extensions/VM.cs @@ -331,6 +331,11 @@ namespace XenAPI HVM_boot_params = SetDictionaryKey(HVM_boot_params, "order", value.ToLower()); } + public bool IsPvVm() + { + return is_a_real_vm() && !IsHVM() && !other_config.ContainsKey("pvcheckpass"); + } + public bool IsUEFIEnabled() { if (!IsHVM()) @@ -1467,6 +1472,11 @@ namespace XenAPI return BoolKey(other_config, "instant"); } + public bool IsConversionVM() + { + return is_a_real_vm() && BoolKey(other_config, "conversionvm"); + } + public override string ToString() { return name_label; @@ -1909,6 +1919,13 @@ namespace XenAPI platform.ContainsKey("device-model") && platform["device-model"] == "qemu-upstream-compat"; } + /// + /// Whether the VM's boot mode can be changed. A VM's boot mode cannot be changed once the VM has been started. + /// + public bool CanChangeBootMode() + { + return last_boot_CPU_flags == null || last_boot_CPU_flags.Count == 0; + } } public struct VMStartupOptions diff --git a/XenModel/XenAPI/ApiVersion.cs b/XenModel/XenAPI/ApiVersion.cs index fd34884f7..15a194113 100644 --- a/XenModel/XenAPI/ApiVersion.cs +++ b/XenModel/XenAPI/ApiVersion.cs @@ -61,7 +61,7 @@ namespace XenAPI API_2_11 = 22, //XenServer 7.6 (lima) API_2_12 = 23, //Citrix Hypervisor 8.0 (naples) API_2_13 = 24, //Unreleased (oslo) - API_2_14 = 25, //Unreleased (plymouth) + API_2_14 = 25, //Unreleased (quebec) LATEST = 25, UNKNOWN = 99 } diff --git a/XenModel/XenAPI/Auth.cs b/XenModel/XenAPI/Auth.cs index d562aecb6..1455f140c 100644 --- a/XenModel/XenAPI/Auth.cs +++ b/XenModel/XenAPI/Auth.cs @@ -45,19 +45,35 @@ namespace XenAPI /// public partial class Auth : XenObject { + #region Constructors + public Auth() { } + /// + /// Creates a new Auth from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Auth(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Auth from a Proxy_Auth. /// /// public Auth(Proxy_Auth proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Auth. @@ -66,7 +82,7 @@ namespace XenAPI { } - internal void UpdateFromProxy(Proxy_Auth proxy) + internal void UpdateFrom(Proxy_Auth proxy) { } @@ -76,17 +92,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Auth from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Auth(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Auth /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Blob.cs b/XenModel/XenAPI/Blob.cs index f7104630b..01a62021b 100644 --- a/XenModel/XenAPI/Blob.cs +++ b/XenModel/XenAPI/Blob.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Blob : XenObject { + #region Constructors + public Blob() { } @@ -66,15 +68,29 @@ namespace XenAPI this.mime_type = mime_type; } + /// + /// Creates a new Blob from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Blob(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Blob from a Proxy_Blob. /// /// public Blob(Proxy_Blob proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Blob. @@ -90,7 +106,7 @@ namespace XenAPI mime_type = update.mime_type; } - internal void UpdateFromProxy(Proxy_Blob proxy) + internal void UpdateFrom(Proxy_Blob proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -114,17 +130,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Blob from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Blob(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Blob /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Bond.cs b/XenModel/XenAPI/Bond.cs index bf890a10d..14a224190 100644 --- a/XenModel/XenAPI/Bond.cs +++ b/XenModel/XenAPI/Bond.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Bond : XenObject { + #region Constructors + public Bond() { } @@ -56,7 +58,8 @@ namespace XenAPI XenRef primary_slave, bond_mode mode, Dictionary properties, - long links_up) + long links_up, + bool auto_update_mac) { this.uuid = uuid; this.master = master; @@ -66,6 +69,19 @@ namespace XenAPI this.mode = mode; this.properties = properties; this.links_up = links_up; + this.auto_update_mac = auto_update_mac; + } + + /// + /// Creates a new Bond from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Bond(Hashtable table) + : this() + { + UpdateFrom(table); } /// @@ -74,9 +90,11 @@ namespace XenAPI /// public Bond(Proxy_Bond proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Bond. @@ -91,9 +109,10 @@ namespace XenAPI mode = update.mode; properties = update.properties; links_up = update.links_up; + auto_update_mac = update.auto_update_mac; } - internal void UpdateFromProxy(Proxy_Bond proxy) + internal void UpdateFrom(Proxy_Bond proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; master = proxy.master == null ? null : XenRef.Create(proxy.master); @@ -103,6 +122,7 @@ namespace XenAPI mode = proxy.mode == null ? (bond_mode) 0 : (bond_mode)Helper.EnumParseDefault(typeof(bond_mode), (string)proxy.mode); properties = proxy.properties == null ? null : Maps.convert_from_proxy_string_string(proxy.properties); links_up = proxy.links_up == null ? 0 : long.Parse(proxy.links_up); + auto_update_mac = (bool)proxy.auto_update_mac; } public Proxy_Bond ToProxy() @@ -116,20 +136,10 @@ namespace XenAPI result_.mode = bond_mode_helper.ToString(mode); result_.properties = Maps.convert_to_proxy_string_string(properties); result_.links_up = links_up.ToString(); + result_.auto_update_mac = auto_update_mac; return result_; } - /// - /// Creates a new Bond from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Bond(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Bond /// with the values listed in the Hashtable. Note that only the fields contained @@ -154,6 +164,8 @@ namespace XenAPI properties = Maps.convert_from_proxy_string_string(Marshalling.ParseHashTable(table, "properties")); if (table.ContainsKey("links_up")) links_up = Marshalling.ParseLong(table, "links_up"); + if (table.ContainsKey("auto_update_mac")) + auto_update_mac = Marshalling.ParseBool(table, "auto_update_mac"); } public bool DeepEquals(Bond other) @@ -170,7 +182,8 @@ namespace XenAPI Helper.AreEqual2(this._primary_slave, other._primary_slave) && Helper.AreEqual2(this._mode, other._mode) && Helper.AreEqual2(this._properties, other._properties) && - Helper.AreEqual2(this._links_up, other._links_up); + Helper.AreEqual2(this._links_up, other._links_up) && + Helper.AreEqual2(this._auto_update_mac, other._auto_update_mac); } internal static List ProxyArrayToObjectList(Proxy_Bond[] input) @@ -339,6 +352,20 @@ namespace XenAPI return long.Parse(session.proxy.bond_get_links_up(session.opaque_ref, _bond ?? "").parse()); } + /// + /// Get the auto_update_mac field of the given Bond. + /// First published in Unreleased. + /// + /// The session + /// The opaque_ref of the given bond + public static bool get_auto_update_mac(Session session, string _bond) + { + if (session.JsonRpcClient != null) + return session.JsonRpcClient.bond_get_auto_update_mac(session.opaque_ref, _bond); + else + return (bool)session.proxy.bond_get_auto_update_mac(session.opaque_ref, _bond ?? "").parse(); + } + /// /// Set the other_config field of the given Bond. /// First published in XenServer 4.1. @@ -756,5 +783,24 @@ namespace XenAPI } } private long _links_up = 0; + + /// + /// true if the MAC was taken from the primary slave when the bond was created, and false if the client specified the MAC + /// First published in Unreleased. + /// + public virtual bool auto_update_mac + { + get { return _auto_update_mac; } + set + { + if (!Helper.AreEqual(value, _auto_update_mac)) + { + _auto_update_mac = value; + Changed = true; + NotifyPropertyChanged("auto_update_mac"); + } + } + } + private bool _auto_update_mac = true; } } diff --git a/XenModel/XenAPI/Cluster.cs b/XenModel/XenAPI/Cluster.cs index 263e588bd..17a2a1933 100644 --- a/XenModel/XenAPI/Cluster.cs +++ b/XenModel/XenAPI/Cluster.cs @@ -44,6 +44,8 @@ namespace XenAPI /// public partial class Cluster : XenObject { + #region Constructors + public Cluster() { } @@ -75,15 +77,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new Cluster from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Cluster(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Cluster from a Proxy_Cluster. /// /// public Cluster(Proxy_Cluster proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Cluster. @@ -104,7 +120,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_Cluster proxy) + internal void UpdateFrom(Proxy_Cluster proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; cluster_hosts = proxy.cluster_hosts == null ? null : XenRef.Create(proxy.cluster_hosts); @@ -138,17 +154,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Cluster from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Cluster(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Cluster /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Cluster_host.cs b/XenModel/XenAPI/Cluster_host.cs index 2456cb22d..03ce643bb 100644 --- a/XenModel/XenAPI/Cluster_host.cs +++ b/XenModel/XenAPI/Cluster_host.cs @@ -44,6 +44,8 @@ namespace XenAPI /// public partial class Cluster_host : XenObject { + #region Constructors + public Cluster_host() { } @@ -69,15 +71,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new Cluster_host from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Cluster_host(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Cluster_host from a Proxy_Cluster_host. /// /// public Cluster_host(Proxy_Cluster_host proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Cluster_host. @@ -95,7 +111,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_Cluster_host proxy) + internal void UpdateFrom(Proxy_Cluster_host proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; cluster = proxy.cluster == null ? null : XenRef.Create(proxy.cluster); @@ -123,17 +139,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Cluster_host from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Cluster_host(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Cluster_host /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Console.cs b/XenModel/XenAPI/Console.cs index 1be0f1d9c..6083608c0 100644 --- a/XenModel/XenAPI/Console.cs +++ b/XenModel/XenAPI/Console.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Console : XenObject { + #region Constructors + public Console() { } @@ -62,15 +64,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new Console from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Console(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Console from a Proxy_Console. /// /// public Console(Proxy_Console proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Console. @@ -84,7 +100,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_Console proxy) + internal void UpdateFrom(Proxy_Console proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; protocol = proxy.protocol == null ? (console_protocol) 0 : (console_protocol)Helper.EnumParseDefault(typeof(console_protocol), (string)proxy.protocol); @@ -104,17 +120,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Console from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Console(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Console /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Crashdump.cs b/XenModel/XenAPI/Crashdump.cs index c46a714fc..e2925c8b6 100644 --- a/XenModel/XenAPI/Crashdump.cs +++ b/XenModel/XenAPI/Crashdump.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Crashdump : XenObject { + #region Constructors + public Crashdump() { } @@ -60,15 +62,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new Crashdump from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Crashdump(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Crashdump from a Proxy_Crashdump. /// /// public Crashdump(Proxy_Crashdump proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Crashdump. @@ -81,7 +97,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_Crashdump proxy) + internal void UpdateFrom(Proxy_Crashdump proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; VM = proxy.VM == null ? null : XenRef.Create(proxy.VM); @@ -99,17 +115,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Crashdump from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Crashdump(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Crashdump /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/DR_task.cs b/XenModel/XenAPI/DR_task.cs index 062db1496..db6986a9e 100644 --- a/XenModel/XenAPI/DR_task.cs +++ b/XenModel/XenAPI/DR_task.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class DR_task : XenObject { + #region Constructors + public DR_task() { } @@ -56,15 +58,29 @@ namespace XenAPI this.introduced_SRs = introduced_SRs; } + /// + /// Creates a new DR_task from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public DR_task(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new DR_task from a Proxy_DR_task. /// /// public DR_task(Proxy_DR_task proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given DR_task. @@ -75,7 +91,7 @@ namespace XenAPI introduced_SRs = update.introduced_SRs; } - internal void UpdateFromProxy(Proxy_DR_task proxy) + internal void UpdateFrom(Proxy_DR_task proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; introduced_SRs = proxy.introduced_SRs == null ? null : XenRef.Create(proxy.introduced_SRs); @@ -89,17 +105,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new DR_task from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public DR_task(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this DR_task /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Data_source.cs b/XenModel/XenAPI/Data_source.cs index 3db92aa65..82d11c0ad 100644 --- a/XenModel/XenAPI/Data_source.cs +++ b/XenModel/XenAPI/Data_source.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Data_source : XenObject { + #region Constructors + public Data_source() { } @@ -68,15 +70,29 @@ namespace XenAPI this.value = value; } + /// + /// Creates a new Data_source from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Data_source(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Data_source from a Proxy_Data_source. /// /// public Data_source(Proxy_Data_source proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Data_source. @@ -93,7 +109,7 @@ namespace XenAPI value = update.value; } - internal void UpdateFromProxy(Proxy_Data_source proxy) + internal void UpdateFrom(Proxy_Data_source proxy) { name_label = proxy.name_label == null ? null : proxy.name_label; name_description = proxy.name_description == null ? null : proxy.name_description; @@ -119,17 +135,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Data_source from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Data_source(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Data_source /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Event.cs b/XenModel/XenAPI/Event.cs index 3b47690ea..e76c1cd5c 100644 --- a/XenModel/XenAPI/Event.cs +++ b/XenModel/XenAPI/Event.cs @@ -45,10 +45,10 @@ namespace XenAPI internal Event(Proxy_Event proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } - internal void UpdateFromProxy(Proxy_Event proxy) + internal void UpdateFrom(Proxy_Event proxy) { id = long.Parse(proxy.id); } @@ -178,6 +178,14 @@ namespace XenAPI public string token; } + [XmlRpcMissingMapping(MappingAction.Ignore)] + public class Events : IEventCollection + { + public Proxy_Event[] events; + public Object valid_ref_counts; + public string token; + } + public interface IEventCollection { } diff --git a/XenModel/XenAPI/EventHelpers.cs b/XenModel/XenAPI/EventHelpers.cs deleted file mode 100644 index e1eb80d3f..000000000 --- a/XenModel/XenAPI/EventHelpers.cs +++ /dev/null @@ -1,60 +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: - * - * 1) Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2) Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using System.Text; - -using CookComputing.XmlRpc; - -namespace XenAPI -{ - [XmlRpcMissingMapping(MappingAction.Ignore)] - public class Proxy_Event - { - public string id; - public string timestamp; - [XmlRpcMember("class")] - public string class_; - public string operation; - [XmlRpcMember("ref")] - public string opaqueRef; - [XmlRpcMember("snapshot")] - public object snapshot; - } - - [XmlRpcMissingMapping(MappingAction.Ignore)] - public class Events : IEventCollection - { - public Proxy_Event[] events; - public Object valid_ref_counts; - public string token; - } -} diff --git a/XenModel/XenAPI/Feature.cs b/XenModel/XenAPI/Feature.cs index 83c340046..f46672e5e 100644 --- a/XenModel/XenAPI/Feature.cs +++ b/XenModel/XenAPI/Feature.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Feature : XenObject { + #region Constructors + public Feature() { } @@ -66,15 +68,29 @@ namespace XenAPI this.host = host; } + /// + /// Creates a new Feature from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Feature(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Feature from a Proxy_Feature. /// /// public Feature(Proxy_Feature proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Feature. @@ -90,7 +106,7 @@ namespace XenAPI host = update.host; } - internal void UpdateFromProxy(Proxy_Feature proxy) + internal void UpdateFrom(Proxy_Feature proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -114,17 +130,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Feature from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Feature(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Feature /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/FriendlyErrorNames.Designer.cs b/XenModel/XenAPI/FriendlyErrorNames.Designer.cs index fa18dd173..6cf92b7b1 100755 --- a/XenModel/XenAPI/FriendlyErrorNames.Designer.cs +++ b/XenModel/XenAPI/FriendlyErrorNames.Designer.cs @@ -1591,7 +1591,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to You tried to create a VLAN or tunnel on top of a tunnel access PIF - use the underlying transport PIF instead.. + /// Looks up a localized string similar to Cannot create a VLAN or tunnel on top of a tunnel access PIF - use the underlying transport PIF instead.. /// public static string IS_TUNNEL_ACCESS_PIF { get { @@ -2032,7 +2032,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The host does not have a Cluster_host with a compatible cluster stack.. + /// Looks up a localized string similar to Clustering is not enabled on this host or pool.. /// public static string NO_COMPATIBLE_CLUSTER_HOST { get { @@ -2184,15 +2184,6 @@ namespace XenAPI { } } - /// - /// Looks up a localized string similar to The passthrough_enabled must be true before passthrough usb to vm.. - /// - public static string PASSTHROUGH_NOT_ENABLED { - get { - return ResourceManager.GetString("PASSTHROUGH_NOT_ENABLED", resourceCulture); - } - } - /// /// Looks up a localized string similar to The update {0} has already been applied. /// @@ -2248,7 +2239,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The patch precheck stage failed: the server does not have enough space.. + /// Looks up a localized string similar to The patch pre-check stage failed: the server does not have enough space.. /// public static string PATCH_PRECHECK_FAILED_OUT_OF_SPACE { get { @@ -2257,7 +2248,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The update precheck stage failed: prerequisite updates are missing.. + /// Looks up a localized string similar to The update pre-check stage failed: prerequisite updates are missing.. /// public static string PATCH_PRECHECK_FAILED_PREREQUISITE_MISSING { get { @@ -2266,7 +2257,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The update precheck stage failed with an unknown error.. + /// Looks up a localized string similar to The update pre-check stage failed with an unknown error.. /// public static string PATCH_PRECHECK_FAILED_UNKNOWN_ERROR { get { @@ -2275,7 +2266,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The update precheck stage failed: there are one or more VMs still running on the server. All VMs must be shut down or suspended before the update can be applied.. + /// Looks up a localized string similar to The update pre-check stage failed: there are one or more VMs still running on the server. All VMs must be shut down or suspended before the update can be applied.. /// public static string PATCH_PRECHECK_FAILED_VM_RUNNING { get { @@ -3009,7 +3000,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The SM plugin did not respond to a query.. + /// Looks up a localized string similar to The SM plug-in did not respond to a query.. /// public static string SM_PLUGIN_COMMUNICATION_FAILURE { get { @@ -3683,6 +3674,15 @@ namespace XenAPI { } } + /// + /// Looks up a localized string similar to Gave up on leaf coalesce after leaf grew bigger than before snapshot taken. + /// + public static string SR_BACKEND_FAILURE_204 { + get { + return ResourceManager.GetString("SR_BACKEND_FAILURE_204", resourceCulture); + } + } + /// /// Looks up a localized string similar to The device configuration request is missing the Location parameter. /// @@ -4665,7 +4665,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The iScsi target and received IQNs do not match. + /// Looks up a localized string similar to The iSCSI target and received IQNs do not match. /// public static string SR_BACKEND_FAILURE_84 { get { @@ -4683,7 +4683,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The attempt to query the iSCSi daemon failed. + /// Looks up a localized string similar to The attempt to query the iSCSI daemon failed. /// public static string SR_BACKEND_FAILURE_86 { get { @@ -5016,7 +5016,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The request was asynchronously cancelled.. + /// Looks up a localized string similar to The request was asynchronously canceled.. /// public static string TASK_CANCELLED { get { @@ -5151,7 +5151,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The update precheck stage failed: conflicting update(s) are present.. + /// Looks up a localized string similar to The update pre-check stage failed: conflicting update(s) are present.. /// public static string UPDATE_PRECHECK_FAILED_CONFLICT_PRESENT { get { @@ -5160,7 +5160,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The update precheck stage failed: RPM package validation requires a GPG key that is not present on the host.. + /// Looks up a localized string similar to The update pre-check stage failed: RPM package validation requires a GPG key that is not present on the host.. /// public static string UPDATE_PRECHECK_FAILED_GPGKEY_NOT_IMPORTED { get { @@ -5169,7 +5169,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The update precheck stage failed: the server does not have enough space.. + /// Looks up a localized string similar to The update pre-check stage failed: the server does not have enough space.. /// public static string UPDATE_PRECHECK_FAILED_OUT_OF_SPACE { get { @@ -5178,7 +5178,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The update precheck stage failed: prerequisite update(s) are missing.. + /// Looks up a localized string similar to The update pre-check stage failed: prerequisite update(s) are missing.. /// public static string UPDATE_PRECHECK_FAILED_PREREQUISITE_MISSING { get { @@ -5187,7 +5187,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The update precheck stage failed with an unknown error.. + /// Looks up a localized string similar to The update pre-check stage failed with an unknown error.. /// public static string UPDATE_PRECHECK_FAILED_UNKNOWN_ERROR { get { @@ -5196,7 +5196,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The update precheck stage failed: the server is of an incorrect version.. + /// Looks up a localized string similar to The update pre-check stage failed: the server is of an incorrect version.. /// public static string UPDATE_PRECHECK_FAILED_WRONG_SERVER_VERSION { get { @@ -5475,7 +5475,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to You attempted to migrate a VDI which is not attached to a running VM.. + /// Looks up a localized string similar to Cannot migrate a VDI which is not attached to a running VM.. /// public static string VDI_NEEDS_VM_FOR_MIGRATE { get { @@ -5573,6 +5573,24 @@ namespace XenAPI { } } + /// + /// Looks up a localized string similar to The guest driver does not support VGPU migration.. + /// + public static string VGPU_GUEST_DRIVER_LIMIT { + get { + return ResourceManager.GetString("VGPU_GUEST_DRIVER_LIMIT", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot create a virtual GPU that is incompatible with the existing types on the VM.. + /// + public static string VGPU_TYPE_NOT_COMPATIBLE { + get { + return ResourceManager.GetString("VGPU_TYPE_NOT_COMPATIBLE", resourceCulture); + } + } + /// /// Looks up a localized string similar to The VM cannot start because all GPUs are fully used or are running other types of virtual GPU. /// @@ -5700,7 +5718,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to There is a minimal interval required between consecutive plugin calls made on the same VM, please wait before retry.. + /// Looks up a localized string similar to There is a minimal interval required between consecutive plug-in calls made on the same VM, please wait before retry.. /// public static string VM_CALL_PLUGIN_RATE_LIMIT { get { @@ -5781,7 +5799,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to You attempted to migrate a VM which has a checkpoint.. + /// Looks up a localized string similar to Cannot migrate a VM which has a checkpoint.. /// public static string VM_HAS_CHECKPOINT { get { @@ -5817,7 +5835,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to You attempted to migrate a VM with more than one snapshot.. + /// Looks up a localized string similar to Cannot migrate a VM with more than one snapshot.. /// public static string VM_HAS_TOO_MANY_SNAPSHOTS { get { @@ -5853,7 +5871,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to You attempted to migrate a VM to a destination host which is older than the source host.. + /// Looks up a localized string similar to Cannot migrate a VM to a destination host which is older than the source host.. /// public static string VM_HOST_INCOMPATIBLE_VERSION_MIGRATE { get { @@ -5934,7 +5952,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to This operation is illegal because the VM is using nested virtualisation.. + /// Looks up a localized string similar to This operation is illegal because the VM is using nested virtualization.. /// public static string VM_IS_USING_NESTED_VIRT { get { @@ -6024,7 +6042,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to This VM does not have a crashdump SR specified.. + /// Looks up a localized string similar to This VM does not have a crash dump SR specified.. /// public static string VM_NO_CRASHDUMP_SR { get { @@ -6077,6 +6095,15 @@ namespace XenAPI { } } + /// + /// Looks up a localized string similar to The VM does not have any free PCI slots. + /// + public static string VM_PCI_BUS_FULL { + get { + return ResourceManager.GetString("VM_PCI_BUS_FULL", resourceCulture); + } + } + /// /// Looks up a localized string similar to VM PV drivers still in use. /// @@ -6402,7 +6429,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The WLB URL is invalid. Ensure it is in format: <ipaddress>:<port>. The configured/given URL is returned.. + /// Looks up a localized string similar to The WLB URL is invalid. Ensure it is in the format: <ipaddress>:<port>. The configured/given URL is returned.. /// public static string WLB_URL_INVALID { get { @@ -6464,6 +6491,15 @@ namespace XenAPI { } } + /// + /// Looks up a localized string similar to The current version of Xen or its control libraries is incompatible with the Toolstack.. + /// + public static string XEN_INCOMPATIBLE { + get { + return ResourceManager.GetString("XEN_INCOMPATIBLE", resourceCulture); + } + } + /// /// Looks up a localized string similar to Some volumes to be snapshot could not be added to the VSS snapshot set. /// @@ -6501,7 +6537,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to Could not find any volumes supported by the Vss Provider. + /// Looks up a localized string similar to Could not find any volumes supported by the VSS Provider. /// public static string XEN_VSS_REQ_ERROR_NO_VOLUMES_SUPPORTED { get { @@ -6519,7 +6555,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The Vss Provider is not loaded. + /// Looks up a localized string similar to The VSS Provider is not loaded. /// public static string XEN_VSS_REQ_ERROR_PROV_NOT_LOADED { get { @@ -6537,7 +6573,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to The requested plugin could not be found.. + /// Looks up a localized string similar to The requested plug-in could not be found.. /// public static string XENAPI_MISSING_PLUGIN { get { @@ -6546,7 +6582,7 @@ namespace XenAPI { } /// - /// Looks up a localized string similar to There was a failure communicating with the plugin.. + /// Looks up a localized string similar to There was a failure communicating with the plug-in.. /// public static string XENAPI_PLUGIN_FAILURE { get { diff --git a/XenModel/XenAPI/FriendlyErrorNames.ja.resx b/XenModel/XenAPI/FriendlyErrorNames.ja.resx index 0c66e6a4c..14d187b4e 100644 --- a/XenModel/XenAPI/FriendlyErrorNames.ja.resx +++ b/XenModel/XenAPI/FriendlyErrorNames.ja.resx @@ -1,17 +1,17 @@ - + --> @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 アクティブ化キーを適用するには、エディションの設定が free である必要があります。 @@ -628,7 +628,7 @@ 値 '{1}' はフィールド '{0}' に対して無効です。 - トンネル アクセス PIF 上に VLAN またはトンネルを作成しようとしました。代わりにトランスポート PIF を使用してください。 + トンネル アクセス PIF 上に VLAN またはトンネルを作成できません。代わりにトランスポート PIF を使用してください。 ほかのプールのマスターとして動作するサーバーを別のプールに追加することはできません。 @@ -790,7 +790,7 @@ 参加時にアクセスできる他のクラスター ホストがありません - ホストに、互換性のあるクラスター スタックを持つ Cluster_host がありません。 + クラスタリングがこのホストまたはプールで有効になっていません。 指定された処理を完了するためのサーバーがありません。 @@ -825,9 +825,6 @@ アップデートをアップロードするために必要な空き容量がありません。 - - USB を VM にパススルーする前に、passthrough_enabled を true に設定する必要があります。 - アップデート {0} は適用済みです。 @@ -1328,6 +1325,9 @@ アクティブな FIST ポイントに達したため、プロセスが異常終了しました。 + + スナップショット作成前よりもリーフが大きくなったため、リーフを結合できませんでした + デバイス構成要求に Location パラメーターがありません。 @@ -1926,7 +1926,7 @@ 指定した仮想ディスクが見つからないため、この処理を実行できません。 - 実行中の VM に接続されていない VDI を移行しようとしました。 + 実行中の VM に接続されていない VDI は移行できません。 VDI {0} を VM に正しく接続できないため、この処理を実行できません。 @@ -1958,6 +1958,12 @@ この仮想 GPU は対象の物理 GPU と互換性がありません。 + + ゲストドライバーは、仮想 GPU の移行をサポートしていません。 + + + 仮想 GPU が VM 上の既存の種類と互換性がない場合、作成できません。 + すべての GPU が使用中か、ほかの種類の仮想 GPU を実行しているため、VM を起動できません。 @@ -2040,7 +2046,7 @@ VM が予期せず停止しました。 - チェックポイントが作成された VM を移行しようとしています。 + チェックポイントが作成された VM は移行できません。 一時停止 VDI がないため、仮想マシンを再開できません @@ -2052,7 +2058,7 @@ VM に 1 つまたは複数の SR-IOV VIF が割り当てられているため、この処理を実行できません。 - 複数のスナップショットを持つ VM を移行しようとしました。 + 複数のスナップショットを持つ VM は移行できません。 VM に 仮想 GPU が割り当てられているため、この処理を実行できません。 @@ -2064,7 +2070,7 @@ 古いバージョンのホストをアップグレードするときにこの VM 処理は実行できません。 - 移行元ホストより古いバージョンの移行先ホストに VM を移行しようとしました。 + 移行元ホストより古い移行先ホストに VM を移行することはできません。 VM のこのバージョンの仮想ハードウェア プラットフォームには、このホストとの互換性がありません。 @@ -2124,7 +2130,7 @@ 現在、この VM は指定したサーバー上に配置されていません。 - この VM にはクラッシュダンプ用の SR が指定されていません。 + この VM にはクラッシュ ダンプ用の SR が指定されていません。 VM に空の CD ドライブ (VBD) がありません。 @@ -2138,6 +2144,9 @@ VM で処理を実行しようとしましたが、最新バージョンの PV ドライバーが必要です。PV ドライバーをアップグレードしてください。 + + VM には空き PCI スロットがありません + VM PV ドライバーは使用中です @@ -2261,6 +2270,9 @@ プラグインとの通信に失敗しました。 + + Xen またはそのコントロール ライブラリの現在のバージョンは、ツールスタックと互換性がありません。 + スナップショット対象の一部のボリュームを VSS スナップショット セットに追加できません。 @@ -2274,13 +2286,13 @@ VSS リクエスタの初期化に失敗しました。 - Vss Provider でサポートされるボリュームが見つかりません + VSS Provider でサポートされるボリュームが見つかりません スナップショットの VSS ライタの準備に失敗しました。 - Vss Provider が読み込まれていません + VSS Provider が読み込まれていません 新規 VSS スナップショットの開始に失敗しました。 diff --git a/XenModel/XenAPI/FriendlyErrorNames.resx b/XenModel/XenAPI/FriendlyErrorNames.resx index dc7f5649a..54833fe68 100755 --- a/XenModel/XenAPI/FriendlyErrorNames.resx +++ b/XenModel/XenAPI/FriendlyErrorNames.resx @@ -628,7 +628,7 @@ The value '{1}' is invalid for field '{0}'. - You tried to create a VLAN or tunnel on top of a tunnel access PIF - use the underlying transport PIF instead. + Cannot create a VLAN or tunnel on top of a tunnel access PIF - use the underlying transport PIF instead. The server joining the pool cannot already be a master of another pool. @@ -790,7 +790,7 @@ No other cluster host was reachable when joining - The host does not have a Cluster_host with a compatible cluster stack. + Clustering is not enabled on this host or pool. There were no servers available to complete the specified operation. @@ -825,9 +825,6 @@ There is not enough space to upload the update - - The passthrough_enabled must be true before passthrough usb to vm. - The update {0} has already been applied @@ -847,16 +844,16 @@ The Tools ISO must be ejected from all running VMs in the pool. - The patch precheck stage failed: the server does not have enough space. + The patch pre-check stage failed: the server does not have enough space. - The update precheck stage failed: prerequisite updates are missing. + The update pre-check stage failed: prerequisite updates are missing. - The update precheck stage failed with an unknown error. + The update pre-check stage failed with an unknown error. - The update precheck stage failed: there are one or more VMs still running on the server. All VMs must be shut down or suspended before the update can be applied. + The update pre-check stage failed: there are one or more VMs still running on the server. All VMs must be shut down or suspended before the update can be applied. The current build number ({1}) is incompatible with the update build number ({2}). @@ -1104,7 +1101,7 @@ Authorized Roles: {1} The management interface on a slave cannot be disabled because the slave would enter emergency mode. - The SM plugin did not respond to a query. + The SM plug-in did not respond to a query. Attaching this SR failed. @@ -1328,6 +1325,9 @@ Authorized Roles: {1} An active FIST point was reached that causes the process to exit abnormally + + Gave up on leaf coalesce after leaf grew bigger than before snapshot taken + The device configuration request is missing the Location parameter @@ -1656,13 +1656,13 @@ Authorized Roles: {1} The attempt to discover the iSCSI target/device failed - The iScsi target and received IQNs do not match + The iSCSI target and received IQNs do not match The attempt to detach the iSCSI failed - The attempt to query the iSCSi daemon failed + The attempt to query the iSCSI daemon failed Either LUNid or LUNserial value must be provided @@ -1773,7 +1773,7 @@ Authorized Roles: {1} Retrieving system status from the server failed. - The request was asynchronously cancelled. + The request was asynchronously canceled. Cannot contact the other host using TLS on the specified address and port @@ -1818,22 +1818,22 @@ Authorized Roles: {1} The update cannot be applied for the following host(s). - The update precheck stage failed: conflicting update(s) are present. + The update pre-check stage failed: conflicting update(s) are present. - The update precheck stage failed: RPM package validation requires a GPG key that is not present on the host. + The update pre-check stage failed: RPM package validation requires a GPG key that is not present on the host. - The update precheck stage failed: the server does not have enough space. + The update pre-check stage failed: the server does not have enough space. - The update precheck stage failed: prerequisite update(s) are missing. + The update pre-check stage failed: prerequisite update(s) are missing. - The update precheck stage failed with an unknown error. + The update pre-check stage failed with an unknown error. - The update precheck stage failed: the server is of an incorrect version. + The update pre-check stage failed: the server is of an incorrect version. The USB device is currently attached to a VM. @@ -1926,7 +1926,7 @@ Authorized Roles: {1} This operation cannot be performed because the specified virtual disk could not be found - You attempted to migrate a VDI which is not attached to a running VM. + Cannot migrate a VDI which is not attached to a running VM. This operation cannot be performed because VDI {0} could not be properly attached to the VM. @@ -1958,6 +1958,12 @@ Authorized Roles: {1} The VGPU is not compatible with any PGPU in the destination. + + The guest driver does not support VGPU migration. + + + Cannot create a virtual GPU that is incompatible with the existing types on the VM. + The VM cannot start because all GPUs are fully used or are running other types of virtual GPU @@ -2013,7 +2019,7 @@ Authorized Roles: {1} The BIOS strings for this VM have already been set and cannot be changed. - There is a minimal interval required between consecutive plugin calls made on the same VM, please wait before retry. + There is a minimal interval required between consecutive plug-in calls made on the same VM, please wait before retry. You cannot delete the specified default template. @@ -2040,7 +2046,7 @@ Authorized Roles: {1} The VM unexpectedly halted - You attempted to migrate a VM which has a checkpoint. + Cannot migrate a VM which has a checkpoint. VM cannot be resumed because it has no suspend VDI @@ -2052,7 +2058,7 @@ Authorized Roles: {1} This operation could not be performed, because the VM has one or more SR-IOV VIFs. - You attempted to migrate a VM with more than one snapshot. + Cannot migrate a VM with more than one snapshot. This operation could not be performed, because the VM has one or more virtual GPUs. @@ -2064,7 +2070,7 @@ Authorized Roles: {1} This VM operation cannot be performed on an older-versioned host during an upgrade. - You attempted to migrate a VM to a destination host which is older than the source host. + Cannot migrate a VM to a destination host which is older than the source host. The VM's Virtual Hardware Platform version is incompatible with this host. @@ -2091,7 +2097,7 @@ Authorized Roles: {1} The operation attempted is not valid for templates - This operation is illegal because the VM is using nested virtualisation. + This operation is illegal because the VM is using nested virtualization. You attempted an operation on a VM which lacks the feature. @@ -2124,7 +2130,7 @@ Authorized Roles: {1} The specified VM is not currently resident on the specified server. - This VM does not have a crashdump SR specified. + This VM does not have a crash dump SR specified. The VM has no empty CD drive (VBD). @@ -2138,6 +2144,9 @@ Authorized Roles: {1} You attempted an operation on a VM which requires a more recent version of the PV drivers. Please upgrade your PV drivers. + + The VM does not have any free PCI slots + VM PV drivers still in use @@ -2235,7 +2244,7 @@ Authorized Roles: {1} The configured WLB server name failed to resolve in DNS. - The WLB URL is invalid. Ensure it is in format: <ipaddress>:<port>. The configured/given URL is returned. + The WLB URL is invalid. Ensure it is in the format: <ipaddress>:<port>. The configured/given URL is returned. WLB reported that the server rejected its configured authentication details. @@ -2256,10 +2265,13 @@ Authorized Roles: {1} 3rd party xapi hook failed - The requested plugin could not be found. + The requested plug-in could not be found. - There was a failure communicating with the plugin. + There was a failure communicating with the plug-in. + + + The current version of Xen or its control libraries is incompatible with the Toolstack. Some volumes to be snapshot could not be added to the VSS snapshot set @@ -2274,13 +2286,13 @@ Authorized Roles: {1} Initialization of the VSS requester failed - Could not find any volumes supported by the Vss Provider + Could not find any volumes supported by the VSS Provider An attempt to prepare VSS writers for the snapshot failed - The Vss Provider is not loaded + The VSS Provider is not loaded An attempt to start a new VSS snapshot failed diff --git a/XenModel/XenAPI/FriendlyErrorNames.zh-CN.resx b/XenModel/XenAPI/FriendlyErrorNames.zh-CN.resx index 7f49d2004..dcddbdfa4 100644 --- a/XenModel/XenAPI/FriendlyErrorNames.zh-CN.resx +++ b/XenModel/XenAPI/FriendlyErrorNames.zh-CN.resx @@ -1,17 +1,17 @@ - + --> @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 仅当版本设置为“免费”时,才能应用激活密钥。 @@ -628,7 +628,7 @@ 值“{1}”对于字段“{0}”无效。 - 您尝试在隧道访问 PIF 之上创建 VLAN 或隧道 - 请改用基础传输 PIF。 + 无法在隧道访问 PIF 之上创建 VLAN 或隧道 - 请改为使用基础传输 PIF。 加入池的服务器不能已经是另一个池的主服务器。 @@ -790,7 +790,7 @@ 加入时无法访问任何其他群集主机 - 主机没有具有兼容群集堆栈的 Cluster_host。 + 未在此主机或池上启用群集。 没有可用于完成指定操作的服务器。 @@ -825,9 +825,6 @@ 空间不足,无法上载更新 - - 将 USB 直通连接到 VM 之前,必须将 passthrough_enabled 设置为 true。 - 已应用更新 {0} @@ -1328,6 +1325,9 @@ 已达到活动的 FIST 点,导致进程异常退出 + + 在叶子生长到超过快照拍摄之前的大小后放弃叶子合并 + 设备配置请求缺少位置参数 @@ -1656,13 +1656,13 @@ 尝试检测 iSCSI 目标/设备失败 - iScsi 目标与收到的 IQN 不匹配 + iSCSI 目标与收到的 IQN 不匹配 尝试分离 iSCSI 失败 - 尝试查询 iSCSi 守护程序失败 + 尝试查询 iSCSI 守护程序失败 必须提供 LUNid 或 LUNserial 值 @@ -1773,7 +1773,7 @@ 从服务器检索系统状态失败。 - 以异步方式取消了请求。 + 请求已异步取消。 在指定的地址和端口上无法使用 TLS 联系其他主机 @@ -1926,7 +1926,7 @@ 无法执行该操作,因为找不到指定的虚拟磁盘 - 您尝试迁移的 VDI 未连接到正在运行的 VM。 + 无法迁移未连接到正在运行的 VM 的 VDI。 无法执行该操作,因为 VDI {0} 无法正确连接到 VM。 @@ -1958,6 +1958,12 @@ VGPU 与目标中的任何 PGPU 都不兼容。 + + 来宾驱动程序不支持 VGPU 迁移。 + + + 无法创建与 VM 上的现有类型不兼容的虚拟 GPU。 + VM 无法启动,因为所有 GPU 已全部使用或者正在运行其他类型的虚拟 GPU @@ -2040,7 +2046,7 @@ VM 意外终止 - 您尝试迁移的 VM 具有一个检查点。 + 无法迁移具有检查点的 VM。 无法恢复 VM,因为该 VM 没有挂起的 VDI @@ -2052,7 +2058,7 @@ 无法执行此操作,因为 VM 具有一个或多个 SR-IOV VIF。 - 您尝试迁移的 VM 具有多个快照。 + 无法迁移具有多个快照的 VM。 无法执行此操作,因为 VM 具有一个或多个虚拟 GPU。 @@ -2064,7 +2070,7 @@ 在升级期间无法对旧版本的主机执行该 VM 操作。 - 您尝试将 VM 迁移到比源主机更早的目标主机。 + 无法将 VM 迁移到早于源主机的目标主机。 VM 的虚拟硬件平台版本与此主机不兼容。 @@ -2138,6 +2144,9 @@ 尝试执行操作的 VM 需要更高版本的 PV Drivers。请升级 PV Drivers。 + + VM 没有任何空闲的 PCI 插槽 + VM PV Drivers 仍在使用中 @@ -2235,7 +2244,7 @@ 配置的 WLB 服务器名称无法在 DNS 中解析。 - WLB URL 无效。请确保其格式为: <ipaddress>:<port>。将返回配置/指定的 URL。 + WLB URL 无效。请确保其格式为: <ipaddress>:<port>。将返回配置的/指定的 URL。 WLB 报告服务器拒绝了所配置的身份验证详细信息。 @@ -2259,7 +2268,10 @@ 找不到请求的插件。 - 与该插件出现通信故障。 + 与插件通信时出现故障。 + + + Xen 的当前版本或其控制库与 Toolstack 不兼容。 要建立快照的一些卷无法添加到 VSS 快照集 diff --git a/XenModel/XenAPI/GPU_group.cs b/XenModel/XenAPI/GPU_group.cs index dc0c294e5..661b08032 100644 --- a/XenModel/XenAPI/GPU_group.cs +++ b/XenModel/XenAPI/GPU_group.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class GPU_group : XenObject { + #region Constructors + public GPU_group() { } @@ -72,15 +74,29 @@ namespace XenAPI this.enabled_VGPU_types = enabled_VGPU_types; } + /// + /// Creates a new GPU_group from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public GPU_group(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new GPU_group from a Proxy_GPU_group. /// /// public GPU_group(Proxy_GPU_group proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given GPU_group. @@ -99,7 +115,7 @@ namespace XenAPI enabled_VGPU_types = update.enabled_VGPU_types; } - internal void UpdateFromProxy(Proxy_GPU_group proxy) + internal void UpdateFrom(Proxy_GPU_group proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -129,17 +145,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new GPU_group from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public GPU_group(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this GPU_group /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Host.cs b/XenModel/XenAPI/Host.cs index 94cfb8e3d..a70e70145 100755 --- a/XenModel/XenAPI/Host.cs +++ b/XenModel/XenAPI/Host.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Host : XenObject { + #region Constructors + public Host() { } @@ -106,7 +108,8 @@ namespace XenAPI List> updates_requiring_reboot, List> features, string iscsi_iqn, - bool multipathing) + bool multipathing, + string uefi_certificates) { this.uuid = uuid; this.name_label = name_label; @@ -166,6 +169,19 @@ namespace XenAPI this.features = features; this.iscsi_iqn = iscsi_iqn; this.multipathing = multipathing; + this.uefi_certificates = uefi_certificates; + } + + /// + /// Creates a new Host from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Host(Hashtable table) + : this() + { + UpdateFrom(table); } /// @@ -174,9 +190,11 @@ namespace XenAPI /// public Host(Proxy_Host proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Host. @@ -241,9 +259,10 @@ namespace XenAPI features = update.features; iscsi_iqn = update.iscsi_iqn; multipathing = update.multipathing; + uefi_certificates = update.uefi_certificates; } - internal void UpdateFromProxy(Proxy_Host proxy) + internal void UpdateFrom(Proxy_Host proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -303,6 +322,7 @@ namespace XenAPI features = proxy.features == null ? null : XenRef.Create(proxy.features); iscsi_iqn = proxy.iscsi_iqn == null ? null : proxy.iscsi_iqn; multipathing = (bool)proxy.multipathing; + uefi_certificates = proxy.uefi_certificates == null ? null : proxy.uefi_certificates; } public Proxy_Host ToProxy() @@ -366,20 +386,10 @@ namespace XenAPI result_.features = features == null ? new string[] {} : Helper.RefListToStringArray(features); result_.iscsi_iqn = iscsi_iqn ?? ""; result_.multipathing = multipathing; + result_.uefi_certificates = uefi_certificates ?? ""; return result_; } - /// - /// Creates a new Host from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Host(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Host /// with the values listed in the Hashtable. Note that only the fields contained @@ -504,6 +514,8 @@ namespace XenAPI iscsi_iqn = Marshalling.ParseString(table, "iscsi_iqn"); if (table.ContainsKey("multipathing")) multipathing = Marshalling.ParseBool(table, "multipathing"); + if (table.ContainsKey("uefi_certificates")) + uefi_certificates = Marshalling.ParseString(table, "uefi_certificates"); } public bool DeepEquals(Host other, bool ignoreCurrentOperations) @@ -572,7 +584,8 @@ namespace XenAPI Helper.AreEqual2(this._updates_requiring_reboot, other._updates_requiring_reboot) && Helper.AreEqual2(this._features, other._features) && Helper.AreEqual2(this._iscsi_iqn, other._iscsi_iqn) && - Helper.AreEqual2(this._multipathing, other._multipathing); + Helper.AreEqual2(this._multipathing, other._multipathing) && + Helper.AreEqual2(this._uefi_certificates, other._uefi_certificates); } internal static List ProxyArrayToObjectList(Proxy_Host[] input) @@ -653,6 +666,10 @@ namespace XenAPI { Host.set_multipathing(session, opaqueRef, _multipathing); } + if (!Helper.AreEqual2(_uefi_certificates, server._uefi_certificates)) + { + Host.set_uefi_certificates(session, opaqueRef, _uefi_certificates); + } return null; } @@ -1513,6 +1530,20 @@ namespace XenAPI return (bool)session.proxy.host_get_multipathing(session.opaque_ref, _host ?? "").parse(); } + /// + /// Get the uefi_certificates field of the given host. + /// First published in Unreleased. + /// + /// The session + /// The opaque_ref of the given host + public static string get_uefi_certificates(Session session, string _host) + { + if (session.JsonRpcClient != null) + return session.JsonRpcClient.host_get_uefi_certificates(session.opaque_ref, _host); + else + return session.proxy.host_get_uefi_certificates(session.opaque_ref, _host ?? "").parse(); + } + /// /// Set the name/label field of the given host. /// First published in XenServer 4.0. @@ -3337,6 +3368,36 @@ namespace XenAPI return XenRef.Create(session.proxy.async_host_set_multipathing(session.opaque_ref, _host ?? "", _value).parse()); } + /// + /// Sets the UEFI certificates on a host + /// First published in Unreleased. + /// + /// The session + /// The opaque_ref of the given host + /// The certificates to apply to a host + public static void set_uefi_certificates(Session session, string _host, string _value) + { + if (session.JsonRpcClient != null) + session.JsonRpcClient.host_set_uefi_certificates(session.opaque_ref, _host, _value); + else + session.proxy.host_set_uefi_certificates(session.opaque_ref, _host ?? "", _value ?? "").parse(); + } + + /// + /// Sets the UEFI certificates on a host + /// First published in Unreleased. + /// + /// The session + /// The opaque_ref of the given host + /// The certificates to apply to a host + public static XenRef async_set_uefi_certificates(Session session, string _host, string _value) + { + if (session.JsonRpcClient != null) + return session.JsonRpcClient.async_host_set_uefi_certificates(session.opaque_ref, _host, _value); + else + return XenRef.Create(session.proxy.async_host_set_uefi_certificates(session.opaque_ref, _host ?? "", _value ?? "").parse()); + } + /// /// Return a list of all the hosts known to the system. /// First published in XenServer 4.0. @@ -4466,5 +4527,24 @@ namespace XenAPI } } private bool _multipathing = false; + + /// + /// The UEFI certificates allowing Secure Boot + /// First published in Unreleased. + /// + public virtual string uefi_certificates + { + get { return _uefi_certificates; } + set + { + if (!Helper.AreEqual(value, _uefi_certificates)) + { + _uefi_certificates = value; + Changed = true; + NotifyPropertyChanged("uefi_certificates"); + } + } + } + private string _uefi_certificates = ""; } } diff --git a/XenModel/XenAPI/Host_cpu.cs b/XenModel/XenAPI/Host_cpu.cs index 336d621d3..2f25c1ea7 100644 --- a/XenModel/XenAPI/Host_cpu.cs +++ b/XenModel/XenAPI/Host_cpu.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Host_cpu : XenObject { + #region Constructors + public Host_cpu() { } @@ -78,15 +80,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new Host_cpu from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Host_cpu(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Host_cpu from a Proxy_Host_cpu. /// /// public Host_cpu(Proxy_Host_cpu proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Host_cpu. @@ -108,7 +124,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_Host_cpu proxy) + internal void UpdateFrom(Proxy_Host_cpu proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; host = proxy.host == null ? null : XenRef.Create(proxy.host); @@ -144,17 +160,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Host_cpu from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Host_cpu(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Host_cpu /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Host_crashdump.cs b/XenModel/XenAPI/Host_crashdump.cs index 67422ee7b..bda3a3e06 100644 --- a/XenModel/XenAPI/Host_crashdump.cs +++ b/XenModel/XenAPI/Host_crashdump.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Host_crashdump : XenObject { + #region Constructors + public Host_crashdump() { } @@ -62,15 +64,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new Host_crashdump from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Host_crashdump(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Host_crashdump from a Proxy_Host_crashdump. /// /// public Host_crashdump(Proxy_Host_crashdump proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Host_crashdump. @@ -84,7 +100,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_Host_crashdump proxy) + internal void UpdateFrom(Proxy_Host_crashdump proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; host = proxy.host == null ? null : XenRef.Create(proxy.host); @@ -104,17 +120,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Host_crashdump from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Host_crashdump(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Host_crashdump /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Host_metrics.cs b/XenModel/XenAPI/Host_metrics.cs index d06f53a50..01fe22266 100644 --- a/XenModel/XenAPI/Host_metrics.cs +++ b/XenModel/XenAPI/Host_metrics.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Host_metrics : XenObject { + #region Constructors + public Host_metrics() { } @@ -64,15 +66,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new Host_metrics from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Host_metrics(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Host_metrics from a Proxy_Host_metrics. /// /// public Host_metrics(Proxy_Host_metrics proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Host_metrics. @@ -87,7 +103,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_Host_metrics proxy) + internal void UpdateFrom(Proxy_Host_metrics proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; memory_total = proxy.memory_total == null ? 0 : long.Parse(proxy.memory_total); @@ -109,17 +125,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Host_metrics from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Host_metrics(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Host_metrics /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Host_patch.cs b/XenModel/XenAPI/Host_patch.cs index 524855f6e..623203b99 100644 --- a/XenModel/XenAPI/Host_patch.cs +++ b/XenModel/XenAPI/Host_patch.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Host_patch : XenObject { + #region Constructors + public Host_patch() { } @@ -72,15 +74,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new Host_patch from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Host_patch(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Host_patch from a Proxy_Host_patch. /// /// public Host_patch(Proxy_Host_patch proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Host_patch. @@ -99,7 +115,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_Host_patch proxy) + internal void UpdateFrom(Proxy_Host_patch proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -129,17 +145,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Host_patch from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Host_patch(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Host_patch /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/IMockWebProxy.cs b/XenModel/XenAPI/IMockWebProxy.cs index b59b588f1..d0903541e 100644 --- a/XenModel/XenAPI/IMockWebProxy.cs +++ b/XenModel/XenAPI/IMockWebProxy.cs @@ -34,7 +34,9 @@ using System.Net; namespace XenAPI { - // An interface to allow mocking a web proxy + /// + /// An interface to allow mocking a web proxy + /// public interface IMockWebProxy : IWebProxy { Stream GetStream(Uri uri); diff --git a/XenModel/XenAPI/JsonRpcClient.cs b/XenModel/XenAPI/JsonRpcClient.cs index 380704669..504d42bc4 100755 --- a/XenModel/XenAPI/JsonRpcClient.cs +++ b/XenModel/XenAPI/JsonRpcClient.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using System; using System.Collections.Generic; using Newtonsoft.Json; @@ -1027,6 +1026,13 @@ namespace XenAPI return Rpc("pool.get_igmp_snooping_enabled", new JArray(session, _pool ?? ""), serializer); } + public string pool_get_uefi_certificates(string session, string _pool) + { + var converters = new List {}; + var serializer = CreateSerializer(converters); + return Rpc("pool.get_uefi_certificates", new JArray(session, _pool ?? ""), serializer); + } + public void pool_set_name_label(string session, string _pool, string _name_label) { var converters = new List {}; @@ -1181,6 +1187,13 @@ namespace XenAPI Rpc("pool.set_live_patching_disabled", new JArray(session, _pool ?? "", _live_patching_disabled), serializer); } + public void pool_set_uefi_certificates(string session, string _pool, string _uefi_certificates) + { + var converters = new List {}; + var serializer = CreateSerializer(converters); + Rpc("pool.set_uefi_certificates", new JArray(session, _pool ?? "", _uefi_certificates ?? ""), serializer); + } + public void pool_join(string session, string _master_address, string _master_username, string _master_password) { var converters = new List {}; @@ -5857,6 +5870,13 @@ namespace XenAPI return Rpc("host.get_multipathing", new JArray(session, _host ?? ""), serializer); } + public string host_get_uefi_certificates(string session, string _host) + { + var converters = new List {}; + var serializer = CreateSerializer(converters); + return Rpc("host.get_uefi_certificates", new JArray(session, _host ?? ""), serializer); + } + public void host_set_name_label(string session, string _host, string _label) { var converters = new List {}; @@ -6725,6 +6745,20 @@ namespace XenAPI return Rpc>("Async.host.set_multipathing", new JArray(session, _host ?? "", _value), serializer); } + public void host_set_uefi_certificates(string session, string _host, string _value) + { + var converters = new List {}; + var serializer = CreateSerializer(converters); + Rpc("host.set_uefi_certificates", new JArray(session, _host ?? "", _value ?? ""), serializer); + } + + public XenRef async_host_set_uefi_certificates(string session, string _host, string _value) + { + var converters = new List {new XenRefConverter()}; + var serializer = CreateSerializer(converters); + return Rpc>("Async.host.set_uefi_certificates", new JArray(session, _host ?? "", _value ?? ""), serializer); + } + public List> host_get_all(string session) { var converters = new List {new XenRefListConverter()}; @@ -8860,6 +8894,13 @@ namespace XenAPI return Rpc("Bond.get_links_up", new JArray(session, _bond ?? ""), serializer); } + public bool bond_get_auto_update_mac(string session, string _bond) + { + var converters = new List {}; + var serializer = CreateSerializer(converters); + return Rpc("Bond.get_auto_update_mac", new JArray(session, _bond ?? ""), serializer); + } + public void bond_set_other_config(string session, string _bond, Dictionary _other_config) { var converters = new List {new StringStringMapConverter()}; @@ -11772,6 +11813,7 @@ namespace XenAPI return Rpc, Message>>("message.get_all_records_where", new JArray(session, _expr ?? ""), serializer); } + public Secret secret_get_record(string session, string _secret) { var converters = new List {}; @@ -12745,6 +12787,20 @@ namespace XenAPI return Rpc>("VGPU.get_compatibility_metadata", new JArray(session, _vgpu ?? ""), serializer); } + public string vgpu_get_extra_args(string session, string _vgpu) + { + var converters = new List {}; + var serializer = CreateSerializer(converters); + return Rpc("VGPU.get_extra_args", new JArray(session, _vgpu ?? ""), serializer); + } + + public XenRef vgpu_get_pci(string session, string _vgpu) + { + var converters = new List {new XenRefConverter()}; + var serializer = CreateSerializer(converters); + return Rpc>("VGPU.get_PCI", new JArray(session, _vgpu ?? ""), serializer); + } + public void vgpu_set_other_config(string session, string _vgpu, Dictionary _other_config) { var converters = new List {new StringStringMapConverter()}; @@ -12766,6 +12822,13 @@ namespace XenAPI Rpc("VGPU.remove_from_other_config", new JArray(session, _vgpu ?? "", _key ?? ""), serializer); } + public void vgpu_set_extra_args(string session, string _vgpu, string _extra_args) + { + var converters = new List {}; + var serializer = CreateSerializer(converters); + Rpc("VGPU.set_extra_args", new JArray(session, _vgpu ?? "", _extra_args ?? ""), serializer); + } + public XenRef vgpu_create(string session, string _vm, string _gpu_group, string _device, Dictionary _other_config) { var converters = new List {new XenRefConverter(), new XenRefConverter(), new XenRefConverter(), new StringStringMapConverter()}; @@ -12941,6 +13004,13 @@ namespace XenAPI return Rpc("VGPU_type.get_experimental", new JArray(session, _vgpu_type ?? ""), serializer); } + public List> vgpu_type_get_compatible_types_in_vm(string session, string _vgpu_type) + { + var converters = new List {new XenRefListConverter()}; + var serializer = CreateSerializer(converters); + return Rpc>>("VGPU_type.get_compatible_types_in_vm", new JArray(session, _vgpu_type ?? ""), serializer); + } + public List> vgpu_type_get_all(string session) { var converters = new List {new XenRefListConverter()}; @@ -14389,6 +14459,5 @@ namespace XenAPI var serializer = CreateSerializer(converters); return Rpc, Cluster_host>>("Cluster_host.get_all_records", new JArray(session), serializer); } - } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/LVHD.cs b/XenModel/XenAPI/LVHD.cs index 9dadcb4ad..01aa081bb 100644 --- a/XenModel/XenAPI/LVHD.cs +++ b/XenModel/XenAPI/LVHD.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class LVHD : XenObject { + #region Constructors + public LVHD() { } @@ -54,15 +56,29 @@ namespace XenAPI this.uuid = uuid; } + /// + /// Creates a new LVHD from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public LVHD(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new LVHD from a Proxy_LVHD. /// /// public LVHD(Proxy_LVHD proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given LVHD. @@ -72,7 +88,7 @@ namespace XenAPI uuid = update.uuid; } - internal void UpdateFromProxy(Proxy_LVHD proxy) + internal void UpdateFrom(Proxy_LVHD proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; } @@ -84,17 +100,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new LVHD from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public LVHD(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this LVHD /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Message.cs b/XenModel/XenAPI/Message.cs index 60ef52efe..65781d20b 100644 --- a/XenModel/XenAPI/Message.cs +++ b/XenModel/XenAPI/Message.cs @@ -213,6 +213,8 @@ namespace XenAPI } } + #region Constructors + public Message() { } @@ -234,15 +236,29 @@ namespace XenAPI this.body = body; } + /// + /// Creates a new Message from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Message(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Message from a Proxy_Message. /// /// public Message(Proxy_Message proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Message. @@ -258,7 +274,7 @@ namespace XenAPI body = update.body; } - internal void UpdateFromProxy(Proxy_Message proxy) + internal void UpdateFrom(Proxy_Message proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name = proxy.name == null ? null : proxy.name; @@ -282,17 +298,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Message from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Message(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Message /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Network.cs b/XenModel/XenAPI/Network.cs index 6006c037c..6aad3d8cb 100644 --- a/XenModel/XenAPI/Network.cs +++ b/XenModel/XenAPI/Network.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Network : XenObject { + #region Constructors + public Network() { } @@ -84,15 +86,29 @@ namespace XenAPI this.purpose = purpose; } + /// + /// Creates a new Network from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Network(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Network from a Proxy_Network. /// /// public Network(Proxy_Network proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Network. @@ -117,7 +133,7 @@ namespace XenAPI purpose = update.purpose; } - internal void UpdateFromProxy(Proxy_Network proxy) + internal void UpdateFrom(Proxy_Network proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -159,17 +175,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Network from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Network(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Network /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Network_sriov.cs b/XenModel/XenAPI/Network_sriov.cs index bedfe2c8b..07e6d90f0 100755 --- a/XenModel/XenAPI/Network_sriov.cs +++ b/XenModel/XenAPI/Network_sriov.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Network_sriov : XenObject { + #region Constructors + public Network_sriov() { } @@ -62,15 +64,29 @@ namespace XenAPI this.configuration_mode = configuration_mode; } + /// + /// Creates a new Network_sriov from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Network_sriov(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Network_sriov from a Proxy_Network_sriov. /// /// public Network_sriov(Proxy_Network_sriov proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Network_sriov. @@ -84,7 +100,7 @@ namespace XenAPI configuration_mode = update.configuration_mode; } - internal void UpdateFromProxy(Proxy_Network_sriov proxy) + internal void UpdateFrom(Proxy_Network_sriov proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; physical_PIF = proxy.physical_PIF == null ? null : XenRef.Create(proxy.physical_PIF); @@ -104,17 +120,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Network_sriov from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Network_sriov(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Network_sriov /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/PBD.cs b/XenModel/XenAPI/PBD.cs index 7038996f7..6045ea91b 100644 --- a/XenModel/XenAPI/PBD.cs +++ b/XenModel/XenAPI/PBD.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class PBD : XenObject { + #region Constructors + public PBD() { } @@ -64,15 +66,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new PBD from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public PBD(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new PBD from a Proxy_PBD. /// /// public PBD(Proxy_PBD proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given PBD. @@ -87,7 +103,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_PBD proxy) + internal void UpdateFrom(Proxy_PBD proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; host = proxy.host == null ? null : XenRef.Create(proxy.host); @@ -109,17 +125,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new PBD from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public PBD(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this PBD /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/PCI.cs b/XenModel/XenAPI/PCI.cs index f341c158a..8e6f9f29b 100755 --- a/XenModel/XenAPI/PCI.cs +++ b/XenModel/XenAPI/PCI.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class PCI : XenObject { + #region Constructors + public PCI() { } @@ -74,15 +76,29 @@ namespace XenAPI this.driver_name = driver_name; } + /// + /// Creates a new PCI from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public PCI(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new PCI from a Proxy_PCI. /// /// public PCI(Proxy_PCI proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given PCI. @@ -102,7 +118,7 @@ namespace XenAPI driver_name = update.driver_name; } - internal void UpdateFromProxy(Proxy_PCI proxy) + internal void UpdateFrom(Proxy_PCI proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; class_name = proxy.class_name == null ? null : proxy.class_name; @@ -134,17 +150,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new PCI from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public PCI(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this PCI /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/PGPU.cs b/XenModel/XenAPI/PGPU.cs index f582842c0..27928730d 100644 --- a/XenModel/XenAPI/PGPU.cs +++ b/XenModel/XenAPI/PGPU.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class PGPU : XenObject { + #region Constructors + public PGPU() { } @@ -76,15 +78,29 @@ namespace XenAPI this.compatibility_metadata = compatibility_metadata; } + /// + /// Creates a new PGPU from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public PGPU(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new PGPU from a Proxy_PGPU. /// /// public PGPU(Proxy_PGPU proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given PGPU. @@ -105,7 +121,7 @@ namespace XenAPI compatibility_metadata = update.compatibility_metadata; } - internal void UpdateFromProxy(Proxy_PGPU proxy) + internal void UpdateFrom(Proxy_PGPU proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; PCI = proxy.PCI == null ? null : XenRef.Create(proxy.PCI); @@ -139,17 +155,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new PGPU from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public PGPU(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this PGPU /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/PIF.cs b/XenModel/XenAPI/PIF.cs index 50b602098..d39f58c1b 100755 --- a/XenModel/XenAPI/PIF.cs +++ b/XenModel/XenAPI/PIF.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class PIF : XenObject { + #region Constructors + public PIF() { } @@ -122,15 +124,29 @@ namespace XenAPI this.PCI = PCI; } + /// + /// Creates a new PIF from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public PIF(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new PIF from a Proxy_PIF. /// /// public PIF(Proxy_PIF proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given PIF. @@ -174,7 +190,7 @@ namespace XenAPI PCI = update.PCI; } - internal void UpdateFromProxy(Proxy_PIF proxy) + internal void UpdateFrom(Proxy_PIF proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; device = proxy.device == null ? null : proxy.device; @@ -254,17 +270,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new PIF from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public PIF(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this PIF /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/PIF_metrics.cs b/XenModel/XenAPI/PIF_metrics.cs index 5abf87dc4..702e6ea8e 100644 --- a/XenModel/XenAPI/PIF_metrics.cs +++ b/XenModel/XenAPI/PIF_metrics.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class PIF_metrics : XenObject { + #region Constructors + public PIF_metrics() { } @@ -78,15 +80,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new PIF_metrics from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public PIF_metrics(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new PIF_metrics from a Proxy_PIF_metrics. /// /// public PIF_metrics(Proxy_PIF_metrics proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given PIF_metrics. @@ -108,7 +124,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_PIF_metrics proxy) + internal void UpdateFrom(Proxy_PIF_metrics proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; io_read_kbs = Convert.ToDouble(proxy.io_read_kbs); @@ -144,17 +160,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new PIF_metrics from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public PIF_metrics(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this PIF_metrics /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/PUSB.cs b/XenModel/XenAPI/PUSB.cs index 789691ed4..3aff70967 100644 --- a/XenModel/XenAPI/PUSB.cs +++ b/XenModel/XenAPI/PUSB.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class PUSB : XenObject { + #region Constructors + public PUSB() { } @@ -78,15 +80,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new PUSB from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public PUSB(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new PUSB from a Proxy_PUSB. /// /// public PUSB(Proxy_PUSB proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given PUSB. @@ -108,7 +124,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_PUSB proxy) + internal void UpdateFrom(Proxy_PUSB proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; USB_group = proxy.USB_group == null ? null : XenRef.Create(proxy.USB_group); @@ -144,17 +160,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new PUSB from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public PUSB(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this PUSB /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/PVS_cache_storage.cs b/XenModel/XenAPI/PVS_cache_storage.cs index 9c3c6b935..ee764f170 100644 --- a/XenModel/XenAPI/PVS_cache_storage.cs +++ b/XenModel/XenAPI/PVS_cache_storage.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class PVS_cache_storage : XenObject { + #region Constructors + public PVS_cache_storage() { } @@ -64,15 +66,29 @@ namespace XenAPI this.VDI = VDI; } + /// + /// Creates a new PVS_cache_storage from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public PVS_cache_storage(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new PVS_cache_storage from a Proxy_PVS_cache_storage. /// /// public PVS_cache_storage(Proxy_PVS_cache_storage proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given PVS_cache_storage. @@ -87,7 +103,7 @@ namespace XenAPI VDI = update.VDI; } - internal void UpdateFromProxy(Proxy_PVS_cache_storage proxy) + internal void UpdateFrom(Proxy_PVS_cache_storage proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; host = proxy.host == null ? null : XenRef.Create(proxy.host); @@ -109,17 +125,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new PVS_cache_storage from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public PVS_cache_storage(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this PVS_cache_storage /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/PVS_proxy.cs b/XenModel/XenAPI/PVS_proxy.cs index 0776a946c..1c83d55ef 100644 --- a/XenModel/XenAPI/PVS_proxy.cs +++ b/XenModel/XenAPI/PVS_proxy.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class PVS_proxy : XenObject { + #region Constructors + public PVS_proxy() { } @@ -62,15 +64,29 @@ namespace XenAPI this.status = status; } + /// + /// Creates a new PVS_proxy from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public PVS_proxy(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new PVS_proxy from a Proxy_PVS_proxy. /// /// public PVS_proxy(Proxy_PVS_proxy proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given PVS_proxy. @@ -84,7 +100,7 @@ namespace XenAPI status = update.status; } - internal void UpdateFromProxy(Proxy_PVS_proxy proxy) + internal void UpdateFrom(Proxy_PVS_proxy proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; site = proxy.site == null ? null : XenRef.Create(proxy.site); @@ -104,17 +120,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new PVS_proxy from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public PVS_proxy(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this PVS_proxy /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/PVS_server.cs b/XenModel/XenAPI/PVS_server.cs index f0e5e0bd6..e5eb0faf4 100644 --- a/XenModel/XenAPI/PVS_server.cs +++ b/XenModel/XenAPI/PVS_server.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class PVS_server : XenObject { + #region Constructors + public PVS_server() { } @@ -62,15 +64,29 @@ namespace XenAPI this.site = site; } + /// + /// Creates a new PVS_server from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public PVS_server(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new PVS_server from a Proxy_PVS_server. /// /// public PVS_server(Proxy_PVS_server proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given PVS_server. @@ -84,7 +100,7 @@ namespace XenAPI site = update.site; } - internal void UpdateFromProxy(Proxy_PVS_server proxy) + internal void UpdateFrom(Proxy_PVS_server proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; addresses = proxy.addresses == null ? new string[] {} : (string [])proxy.addresses; @@ -104,17 +120,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new PVS_server from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public PVS_server(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this PVS_server /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/PVS_site.cs b/XenModel/XenAPI/PVS_site.cs index 823b1c0cd..85962c161 100644 --- a/XenModel/XenAPI/PVS_site.cs +++ b/XenModel/XenAPI/PVS_site.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class PVS_site : XenObject { + #region Constructors + public PVS_site() { } @@ -66,15 +68,29 @@ namespace XenAPI this.proxies = proxies; } + /// + /// Creates a new PVS_site from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public PVS_site(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new PVS_site from a Proxy_PVS_site. /// /// public PVS_site(Proxy_PVS_site proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given PVS_site. @@ -90,7 +106,7 @@ namespace XenAPI proxies = update.proxies; } - internal void UpdateFromProxy(Proxy_PVS_site proxy) + internal void UpdateFrom(Proxy_PVS_site proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -114,17 +130,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new PVS_site from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public PVS_site(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this PVS_site /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Pool.cs b/XenModel/XenAPI/Pool.cs index 790e5ea1e..8b6cc7952 100644 --- a/XenModel/XenAPI/Pool.cs +++ b/XenModel/XenAPI/Pool.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Pool : XenObject { + #region Constructors + public Pool() { } @@ -84,7 +86,8 @@ namespace XenAPI Dictionary cpu_info, bool policy_no_vendor_device, bool live_patching_disabled, - bool igmp_snooping_enabled) + bool igmp_snooping_enabled, + string uefi_certificates) { this.uuid = uuid; this.name_label = name_label; @@ -122,6 +125,19 @@ namespace XenAPI this.policy_no_vendor_device = policy_no_vendor_device; this.live_patching_disabled = live_patching_disabled; this.igmp_snooping_enabled = igmp_snooping_enabled; + this.uefi_certificates = uefi_certificates; + } + + /// + /// Creates a new Pool from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Pool(Hashtable table) + : this() + { + UpdateFrom(table); } /// @@ -130,9 +146,11 @@ namespace XenAPI /// public Pool(Proxy_Pool proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Pool. @@ -175,9 +193,10 @@ namespace XenAPI policy_no_vendor_device = update.policy_no_vendor_device; live_patching_disabled = update.live_patching_disabled; igmp_snooping_enabled = update.igmp_snooping_enabled; + uefi_certificates = update.uefi_certificates; } - internal void UpdateFromProxy(Proxy_Pool proxy) + internal void UpdateFrom(Proxy_Pool proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -215,6 +234,7 @@ namespace XenAPI policy_no_vendor_device = (bool)proxy.policy_no_vendor_device; live_patching_disabled = (bool)proxy.live_patching_disabled; igmp_snooping_enabled = (bool)proxy.igmp_snooping_enabled; + uefi_certificates = proxy.uefi_certificates == null ? null : proxy.uefi_certificates; } public Proxy_Pool ToProxy() @@ -256,20 +276,10 @@ namespace XenAPI result_.policy_no_vendor_device = policy_no_vendor_device; result_.live_patching_disabled = live_patching_disabled; result_.igmp_snooping_enabled = igmp_snooping_enabled; + result_.uefi_certificates = uefi_certificates ?? ""; return result_; } - /// - /// Creates a new Pool from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Pool(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Pool /// with the values listed in the Hashtable. Note that only the fields contained @@ -350,6 +360,8 @@ namespace XenAPI live_patching_disabled = Marshalling.ParseBool(table, "live_patching_disabled"); if (table.ContainsKey("igmp_snooping_enabled")) igmp_snooping_enabled = Marshalling.ParseBool(table, "igmp_snooping_enabled"); + if (table.ContainsKey("uefi_certificates")) + uefi_certificates = Marshalling.ParseString(table, "uefi_certificates"); } public bool DeepEquals(Pool other, bool ignoreCurrentOperations) @@ -396,7 +408,8 @@ namespace XenAPI Helper.AreEqual2(this._cpu_info, other._cpu_info) && Helper.AreEqual2(this._policy_no_vendor_device, other._policy_no_vendor_device) && Helper.AreEqual2(this._live_patching_disabled, other._live_patching_disabled) && - Helper.AreEqual2(this._igmp_snooping_enabled, other._igmp_snooping_enabled); + Helper.AreEqual2(this._igmp_snooping_enabled, other._igmp_snooping_enabled) && + Helper.AreEqual2(this._uefi_certificates, other._uefi_certificates); } internal static List ProxyArrayToObjectList(Proxy_Pool[] input) @@ -473,6 +486,10 @@ namespace XenAPI { Pool.set_live_patching_disabled(session, opaqueRef, _live_patching_disabled); } + if (!Helper.AreEqual2(_uefi_certificates, server._uefi_certificates)) + { + Pool.set_uefi_certificates(session, opaqueRef, _uefi_certificates); + } return null; } @@ -1011,6 +1028,20 @@ namespace XenAPI return (bool)session.proxy.pool_get_igmp_snooping_enabled(session.opaque_ref, _pool ?? "").parse(); } + /// + /// Get the uefi_certificates field of the given pool. + /// First published in Unreleased. + /// + /// The session + /// The opaque_ref of the given pool + public static string get_uefi_certificates(Session session, string _pool) + { + if (session.JsonRpcClient != null) + return session.JsonRpcClient.pool_get_uefi_certificates(session.opaque_ref, _pool); + else + return session.proxy.pool_get_uefi_certificates(session.opaque_ref, _pool ?? "").parse(); + } + /// /// Set the name_label field of the given pool. /// First published in XenServer 4.0. @@ -1344,6 +1375,21 @@ namespace XenAPI session.proxy.pool_set_live_patching_disabled(session.opaque_ref, _pool ?? "", _live_patching_disabled).parse(); } + /// + /// Set the uefi_certificates field of the given pool. + /// First published in Unreleased. + /// + /// The session + /// The opaque_ref of the given pool + /// New value to set + public static void set_uefi_certificates(Session session, string _pool, string _uefi_certificates) + { + if (session.JsonRpcClient != null) + session.JsonRpcClient.pool_set_uefi_certificates(session.opaque_ref, _pool, _uefi_certificates); + else + session.proxy.pool_set_uefi_certificates(session.opaque_ref, _pool ?? "", _uefi_certificates ?? "").parse(); + } + /// /// Instruct host to join a new pool /// First published in XenServer 4.0. @@ -3377,5 +3423,24 @@ namespace XenAPI } } private bool _igmp_snooping_enabled = false; + + /// + /// The UEFI certificates allowing Secure Boot + /// First published in Unreleased. + /// + public virtual string uefi_certificates + { + get { return _uefi_certificates; } + set + { + if (!Helper.AreEqual(value, _uefi_certificates)) + { + _uefi_certificates = value; + Changed = true; + NotifyPropertyChanged("uefi_certificates"); + } + } + } + private string _uefi_certificates = ""; } } diff --git a/XenModel/XenAPI/Pool_patch.cs b/XenModel/XenAPI/Pool_patch.cs index 1996f2671..3bea69bbb 100644 --- a/XenModel/XenAPI/Pool_patch.cs +++ b/XenModel/XenAPI/Pool_patch.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Pool_patch : XenObject { + #region Constructors + public Pool_patch() { } @@ -72,15 +74,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new Pool_patch from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Pool_patch(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Pool_patch from a Proxy_Pool_patch. /// /// public Pool_patch(Proxy_Pool_patch proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Pool_patch. @@ -99,7 +115,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_Pool_patch proxy) + internal void UpdateFrom(Proxy_Pool_patch proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -129,17 +145,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Pool_patch from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Pool_patch(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Pool_patch /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Pool_update.cs b/XenModel/XenAPI/Pool_update.cs index 334a957af..c05856985 100644 --- a/XenModel/XenAPI/Pool_update.cs +++ b/XenModel/XenAPI/Pool_update.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Pool_update : XenObject { + #region Constructors + public Pool_update() { } @@ -74,15 +76,29 @@ namespace XenAPI this.enforce_homogeneity = enforce_homogeneity; } + /// + /// Creates a new Pool_update from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Pool_update(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Pool_update from a Proxy_Pool_update. /// /// public Pool_update(Proxy_Pool_update proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Pool_update. @@ -102,7 +118,7 @@ namespace XenAPI enforce_homogeneity = update.enforce_homogeneity; } - internal void UpdateFromProxy(Proxy_Pool_update proxy) + internal void UpdateFrom(Proxy_Pool_update proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -134,17 +150,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Pool_update from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Pool_update(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Pool_update /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Probe_result.cs b/XenModel/XenAPI/Probe_result.cs index d002ad295..8de0be513 100644 --- a/XenModel/XenAPI/Probe_result.cs +++ b/XenModel/XenAPI/Probe_result.cs @@ -44,6 +44,8 @@ namespace XenAPI /// public partial class Probe_result : XenObject { + #region Constructors + public Probe_result() { } @@ -59,15 +61,29 @@ namespace XenAPI this.extra_info = extra_info; } + /// + /// Creates a new Probe_result from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Probe_result(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Probe_result from a Proxy_Probe_result. /// /// public Probe_result(Proxy_Probe_result proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Probe_result. @@ -80,7 +96,7 @@ namespace XenAPI extra_info = update.extra_info; } - internal void UpdateFromProxy(Proxy_Probe_result proxy) + internal void UpdateFrom(Proxy_Probe_result proxy) { configuration = proxy.configuration == null ? null : Maps.convert_from_proxy_string_string(proxy.configuration); complete = (bool)proxy.complete; @@ -98,17 +114,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Probe_result from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Probe_result(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Probe_result /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Proxy.cs b/XenModel/XenAPI/Proxy.cs index 9375bae33..121170a5e 100755 --- a/XenModel/XenAPI/Proxy.cs +++ b/XenModel/XenAPI/Proxy.cs @@ -28,11 +28,9 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using System; using System.Collections; using System.Collections.Generic; - using CookComputing.XmlRpc; @@ -608,6 +606,10 @@ namespace XenAPI Response pool_get_igmp_snooping_enabled(string session, string _pool); + [XmlRpcMethod("pool.get_uefi_certificates")] + Response + pool_get_uefi_certificates(string session, string _pool); + [XmlRpcMethod("pool.set_name_label")] Response pool_set_name_label(string session, string _pool, string _name_label); @@ -696,6 +698,10 @@ namespace XenAPI Response pool_set_live_patching_disabled(string session, string _pool, bool _live_patching_disabled); + [XmlRpcMethod("pool.set_uefi_certificates")] + Response + pool_set_uefi_certificates(string session, string _pool, string _uefi_certificates); + [XmlRpcMethod("pool.join")] Response pool_join(string session, string _master_address, string _master_username, string _master_password); @@ -3368,6 +3374,10 @@ namespace XenAPI Response host_get_multipathing(string session, string _host); + [XmlRpcMethod("host.get_uefi_certificates")] + Response + host_get_uefi_certificates(string session, string _host); + [XmlRpcMethod("host.set_name_label")] Response host_set_name_label(string session, string _host, string _label); @@ -3864,6 +3874,14 @@ namespace XenAPI Response async_host_set_multipathing(string session, string _host, bool _value); + [XmlRpcMethod("host.set_uefi_certificates")] + Response + host_set_uefi_certificates(string session, string _host, string _value); + + [XmlRpcMethod("Async.host.set_uefi_certificates")] + Response + async_host_set_uefi_certificates(string session, string _host, string _value); + [XmlRpcMethod("host.get_all")] Response host_get_all(string session); @@ -5084,6 +5102,10 @@ namespace XenAPI Response bond_get_links_up(string session, string _bond); + [XmlRpcMethod("Bond.get_auto_update_mac")] + Response + bond_get_auto_update_mac(string session, string _bond); + [XmlRpcMethod("Bond.set_other_config")] Response bond_set_other_config(string session, string _bond, Object _other_config); @@ -6748,6 +6770,7 @@ namespace XenAPI Response message_get_all_records_where(string session, string _expr); + [XmlRpcMethod("secret.get_record")] Response secret_get_record(string session, string _secret); @@ -7304,6 +7327,14 @@ namespace XenAPI Response vgpu_get_compatibility_metadata(string session, string _vgpu); + [XmlRpcMethod("VGPU.get_extra_args")] + Response + vgpu_get_extra_args(string session, string _vgpu); + + [XmlRpcMethod("VGPU.get_PCI")] + Response + vgpu_get_pci(string session, string _vgpu); + [XmlRpcMethod("VGPU.set_other_config")] Response vgpu_set_other_config(string session, string _vgpu, Object _other_config); @@ -7316,6 +7347,10 @@ namespace XenAPI Response vgpu_remove_from_other_config(string session, string _vgpu, string _key); + [XmlRpcMethod("VGPU.set_extra_args")] + Response + vgpu_set_extra_args(string session, string _vgpu, string _extra_args); + [XmlRpcMethod("VGPU.create")] Response vgpu_create(string session, string _vm, string _gpu_group, string _device, Object _other_config); @@ -7416,6 +7451,10 @@ namespace XenAPI Response vgpu_type_get_experimental(string session, string _vgpu_type); + [XmlRpcMethod("VGPU_type.get_compatible_types_in_vm")] + Response + vgpu_type_get_compatible_types_in_vm(string session, string _vgpu_type); + [XmlRpcMethod("VGPU_type.get_all")] Response vgpu_type_get_all(string session); @@ -8245,6 +8284,20 @@ namespace XenAPI cluster_host_get_all_records(string session); } + [XmlRpcMissingMapping(MappingAction.Ignore)] + public class Proxy_Event + { + public string id; + public string timestamp; + [XmlRpcMember("class")] + public string class_; + public string operation; + [XmlRpcMember("ref")] + public string opaqueRef; + [XmlRpcMember("snapshot")] + public object snapshot; + } + [XmlRpcMissingMapping(MappingAction.Ignore)] public class Proxy_Session { @@ -8349,6 +8402,7 @@ namespace XenAPI public bool policy_no_vendor_device; public bool live_patching_disabled; public bool igmp_snooping_enabled; + public string uefi_certificates; } [XmlRpcMissingMapping(MappingAction.Ignore)] @@ -8631,6 +8685,7 @@ namespace XenAPI public string [] features; public string iscsi_iqn; public bool multipathing; + public string uefi_certificates; } [XmlRpcMissingMapping(MappingAction.Ignore)] @@ -8819,6 +8874,7 @@ namespace XenAPI public string mode; public Object properties; public string links_up; + public bool auto_update_mac; } [XmlRpcMissingMapping(MappingAction.Ignore)] @@ -9150,6 +9206,8 @@ namespace XenAPI public string resident_on; public string scheduled_to_be_resident_on; public Object compatibility_metadata; + public string extra_args; + public string PCI; } [XmlRpcMissingMapping(MappingAction.Ignore)] @@ -9170,6 +9228,7 @@ namespace XenAPI public string implementation; public string identifier; public bool experimental; + public string [] compatible_types_in_vm; } [XmlRpcMissingMapping(MappingAction.Ignore)] @@ -9317,5 +9376,4 @@ namespace XenAPI public Object current_operations; public Object other_config; } - -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/Role.cs b/XenModel/XenAPI/Role.cs index 0c27fe097..736a6eb26 100644 --- a/XenModel/XenAPI/Role.cs +++ b/XenModel/XenAPI/Role.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Role : XenObject { + #region Constructors + public Role() { } @@ -60,15 +62,29 @@ namespace XenAPI this.subroles = subroles; } + /// + /// Creates a new Role from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Role(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Role from a Proxy_Role. /// /// public Role(Proxy_Role proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Role. @@ -81,7 +97,7 @@ namespace XenAPI subroles = update.subroles; } - internal void UpdateFromProxy(Proxy_Role proxy) + internal void UpdateFrom(Proxy_Role proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -99,17 +115,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Role from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Role(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Role /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/SDN_controller.cs b/XenModel/XenAPI/SDN_controller.cs index 88a86f146..ac2413254 100644 --- a/XenModel/XenAPI/SDN_controller.cs +++ b/XenModel/XenAPI/SDN_controller.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class SDN_controller : XenObject { + #region Constructors + public SDN_controller() { } @@ -60,15 +62,29 @@ namespace XenAPI this.port = port; } + /// + /// Creates a new SDN_controller from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public SDN_controller(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new SDN_controller from a Proxy_SDN_controller. /// /// public SDN_controller(Proxy_SDN_controller proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given SDN_controller. @@ -81,7 +97,7 @@ namespace XenAPI port = update.port; } - internal void UpdateFromProxy(Proxy_SDN_controller proxy) + internal void UpdateFrom(Proxy_SDN_controller proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; protocol = proxy.protocol == null ? (sdn_controller_protocol) 0 : (sdn_controller_protocol)Helper.EnumParseDefault(typeof(sdn_controller_protocol), (string)proxy.protocol); @@ -99,17 +115,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new SDN_controller from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public SDN_controller(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this SDN_controller /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/SM.cs b/XenModel/XenAPI/SM.cs index 415178bb0..62adf73e2 100644 --- a/XenModel/XenAPI/SM.cs +++ b/XenModel/XenAPI/SM.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class SM : XenObject { + #region Constructors + public SM() { } @@ -80,15 +82,29 @@ namespace XenAPI this.required_cluster_stack = required_cluster_stack; } + /// + /// Creates a new SM from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public SM(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new SM from a Proxy_SM. /// /// public SM(Proxy_SM proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given SM. @@ -111,7 +127,7 @@ namespace XenAPI required_cluster_stack = update.required_cluster_stack; } - internal void UpdateFromProxy(Proxy_SM proxy) + internal void UpdateFrom(Proxy_SM proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -149,17 +165,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new SM from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public SM(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this SM /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/SR.cs b/XenModel/XenAPI/SR.cs index 02866d969..7899fc4e2 100644 --- a/XenModel/XenAPI/SR.cs +++ b/XenModel/XenAPI/SR.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class SR : XenObject { + #region Constructors + public SR() { } @@ -94,15 +96,29 @@ namespace XenAPI this.is_tools_sr = is_tools_sr; } + /// + /// Creates a new SR from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public SR(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new SR from a Proxy_SR. /// /// public SR(Proxy_SR proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given SR. @@ -132,7 +148,7 @@ namespace XenAPI is_tools_sr = update.is_tools_sr; } - internal void UpdateFromProxy(Proxy_SR proxy) + internal void UpdateFrom(Proxy_SR proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -184,17 +200,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new SR from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public SR(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this SR /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Secret.cs b/XenModel/XenAPI/Secret.cs index 4a2fc1391..180aa845d 100644 --- a/XenModel/XenAPI/Secret.cs +++ b/XenModel/XenAPI/Secret.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Secret : XenObject { + #region Constructors + public Secret() { } @@ -58,15 +60,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new Secret from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Secret(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Secret from a Proxy_Secret. /// /// public Secret(Proxy_Secret proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Secret. @@ -78,7 +94,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_Secret proxy) + internal void UpdateFrom(Proxy_Secret proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; value = proxy.value == null ? null : proxy.value; @@ -94,17 +110,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Secret from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Secret(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Secret /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Sr_stat.cs b/XenModel/XenAPI/Sr_stat.cs index e82411c1d..8501163a9 100644 --- a/XenModel/XenAPI/Sr_stat.cs +++ b/XenModel/XenAPI/Sr_stat.cs @@ -44,6 +44,8 @@ namespace XenAPI /// public partial class Sr_stat : XenObject { + #region Constructors + public Sr_stat() { } @@ -65,15 +67,29 @@ namespace XenAPI this.health = health; } + /// + /// Creates a new Sr_stat from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Sr_stat(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Sr_stat from a Proxy_Sr_stat. /// /// public Sr_stat(Proxy_Sr_stat proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Sr_stat. @@ -89,7 +105,7 @@ namespace XenAPI health = update.health; } - internal void UpdateFromProxy(Proxy_Sr_stat proxy) + internal void UpdateFrom(Proxy_Sr_stat proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -113,17 +129,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Sr_stat from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Sr_stat(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Sr_stat /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Subject.cs b/XenModel/XenAPI/Subject.cs index b347c2203..4c064d53b 100644 --- a/XenModel/XenAPI/Subject.cs +++ b/XenModel/XenAPI/Subject.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Subject : XenObject { + #region Constructors + public Subject() { } @@ -60,15 +62,29 @@ namespace XenAPI this.roles = roles; } + /// + /// Creates a new Subject from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Subject(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Subject from a Proxy_Subject. /// /// public Subject(Proxy_Subject proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Subject. @@ -81,7 +97,7 @@ namespace XenAPI roles = update.roles; } - internal void UpdateFromProxy(Proxy_Subject proxy) + internal void UpdateFrom(Proxy_Subject proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; subject_identifier = proxy.subject_identifier == null ? null : proxy.subject_identifier; @@ -99,17 +115,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Subject from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Subject(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Subject /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Task.cs b/XenModel/XenAPI/Task.cs index 6451fb898..904c7aa32 100644 --- a/XenModel/XenAPI/Task.cs +++ b/XenModel/XenAPI/Task.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Task : XenObject { + #region Constructors + public Task() { } @@ -86,15 +88,29 @@ namespace XenAPI this.backtrace = backtrace; } + /// + /// Creates a new Task from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Task(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Task from a Proxy_Task. /// /// public Task(Proxy_Task proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Task. @@ -120,7 +136,7 @@ namespace XenAPI backtrace = update.backtrace; } - internal void UpdateFromProxy(Proxy_Task proxy) + internal void UpdateFrom(Proxy_Task proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -164,17 +180,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Task from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Task(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Task /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Tunnel.cs b/XenModel/XenAPI/Tunnel.cs index 38e6af676..dd1f3be8b 100644 --- a/XenModel/XenAPI/Tunnel.cs +++ b/XenModel/XenAPI/Tunnel.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Tunnel : XenObject { + #region Constructors + public Tunnel() { } @@ -62,15 +64,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new Tunnel from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Tunnel(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Tunnel from a Proxy_Tunnel. /// /// public Tunnel(Proxy_Tunnel proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Tunnel. @@ -84,7 +100,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_Tunnel proxy) + internal void UpdateFrom(Proxy_Tunnel proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; access_PIF = proxy.access_PIF == null ? null : XenRef.Create(proxy.access_PIF); @@ -104,17 +120,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Tunnel from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Tunnel(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Tunnel /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/USB_group.cs b/XenModel/XenAPI/USB_group.cs index 10f67da06..285201254 100644 --- a/XenModel/XenAPI/USB_group.cs +++ b/XenModel/XenAPI/USB_group.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class USB_group : XenObject { + #region Constructors + public USB_group() { } @@ -64,15 +66,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new USB_group from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public USB_group(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new USB_group from a Proxy_USB_group. /// /// public USB_group(Proxy_USB_group proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given USB_group. @@ -87,7 +103,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_USB_group proxy) + internal void UpdateFrom(Proxy_USB_group proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -109,17 +125,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new USB_group from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public USB_group(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this USB_group /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/User.cs b/XenModel/XenAPI/User.cs index f194c0059..c47203df3 100644 --- a/XenModel/XenAPI/User.cs +++ b/XenModel/XenAPI/User.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class User : XenObject { + #region Constructors + public User() { } @@ -60,15 +62,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new User from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public User(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new User from a Proxy_User. /// /// public User(Proxy_User proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given User. @@ -81,7 +97,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_User proxy) + internal void UpdateFrom(Proxy_User proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; short_name = proxy.short_name == null ? null : proxy.short_name; @@ -99,17 +115,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new User from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public User(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this User /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VBD.cs b/XenModel/XenAPI/VBD.cs index c9b36e9b1..0e2d188a4 100644 --- a/XenModel/XenAPI/VBD.cs +++ b/XenModel/XenAPI/VBD.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VBD : XenObject { + #region Constructors + public VBD() { } @@ -96,15 +98,29 @@ namespace XenAPI this.metrics = metrics; } + /// + /// Creates a new VBD from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VBD(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VBD from a Proxy_VBD. /// /// public VBD(Proxy_VBD proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VBD. @@ -135,7 +151,7 @@ namespace XenAPI metrics = update.metrics; } - internal void UpdateFromProxy(Proxy_VBD proxy) + internal void UpdateFrom(Proxy_VBD proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; allowed_operations = proxy.allowed_operations == null ? null : Helper.StringArrayToEnumList(proxy.allowed_operations); @@ -189,17 +205,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VBD from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VBD(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VBD /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VBD_metrics.cs b/XenModel/XenAPI/VBD_metrics.cs index 98d97f5cb..10ae599f4 100644 --- a/XenModel/XenAPI/VBD_metrics.cs +++ b/XenModel/XenAPI/VBD_metrics.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VBD_metrics : XenObject { + #region Constructors + public VBD_metrics() { } @@ -62,15 +64,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new VBD_metrics from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VBD_metrics(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VBD_metrics from a Proxy_VBD_metrics. /// /// public VBD_metrics(Proxy_VBD_metrics proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VBD_metrics. @@ -84,7 +100,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_VBD_metrics proxy) + internal void UpdateFrom(Proxy_VBD_metrics proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; io_read_kbs = Convert.ToDouble(proxy.io_read_kbs); @@ -104,17 +120,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VBD_metrics from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VBD_metrics(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VBD_metrics /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VDI.cs b/XenModel/XenAPI/VDI.cs index 7cf8715fb..9633e4936 100644 --- a/XenModel/XenAPI/VDI.cs +++ b/XenModel/XenAPI/VDI.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VDI : XenObject { + #region Constructors + public VDI() { } @@ -116,15 +118,29 @@ namespace XenAPI this.cbt_enabled = cbt_enabled; } + /// + /// Creates a new VDI from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VDI(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VDI from a Proxy_VDI. /// /// public VDI(Proxy_VDI proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VDI. @@ -165,7 +181,7 @@ namespace XenAPI cbt_enabled = update.cbt_enabled; } - internal void UpdateFromProxy(Proxy_VDI proxy) + internal void UpdateFrom(Proxy_VDI proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -239,17 +255,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VDI from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VDI(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VDI /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VGPU.cs b/XenModel/XenAPI/VGPU.cs index 02b327c39..ddf5479db 100644 --- a/XenModel/XenAPI/VGPU.cs +++ b/XenModel/XenAPI/VGPU.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VGPU : XenObject { + #region Constructors + public VGPU() { } @@ -58,7 +60,9 @@ namespace XenAPI XenRef type, XenRef resident_on, XenRef scheduled_to_be_resident_on, - Dictionary compatibility_metadata) + Dictionary compatibility_metadata, + string extra_args, + XenRef PCI) { this.uuid = uuid; this.VM = VM; @@ -70,6 +74,20 @@ namespace XenAPI this.resident_on = resident_on; this.scheduled_to_be_resident_on = scheduled_to_be_resident_on; this.compatibility_metadata = compatibility_metadata; + this.extra_args = extra_args; + this.PCI = PCI; + } + + /// + /// Creates a new VGPU from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VGPU(Hashtable table) + : this() + { + UpdateFrom(table); } /// @@ -78,9 +96,11 @@ namespace XenAPI /// public VGPU(Proxy_VGPU proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VGPU. @@ -97,9 +117,11 @@ namespace XenAPI resident_on = update.resident_on; scheduled_to_be_resident_on = update.scheduled_to_be_resident_on; compatibility_metadata = update.compatibility_metadata; + extra_args = update.extra_args; + PCI = update.PCI; } - internal void UpdateFromProxy(Proxy_VGPU proxy) + internal void UpdateFrom(Proxy_VGPU proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; VM = proxy.VM == null ? null : XenRef.Create(proxy.VM); @@ -111,6 +133,8 @@ namespace XenAPI resident_on = proxy.resident_on == null ? null : XenRef.Create(proxy.resident_on); scheduled_to_be_resident_on = proxy.scheduled_to_be_resident_on == null ? null : XenRef.Create(proxy.scheduled_to_be_resident_on); compatibility_metadata = proxy.compatibility_metadata == null ? null : Maps.convert_from_proxy_string_string(proxy.compatibility_metadata); + extra_args = proxy.extra_args == null ? null : proxy.extra_args; + PCI = proxy.PCI == null ? null : XenRef.Create(proxy.PCI); } public Proxy_VGPU ToProxy() @@ -126,20 +150,11 @@ namespace XenAPI result_.resident_on = resident_on ?? ""; result_.scheduled_to_be_resident_on = scheduled_to_be_resident_on ?? ""; result_.compatibility_metadata = Maps.convert_to_proxy_string_string(compatibility_metadata); + result_.extra_args = extra_args ?? ""; + result_.PCI = PCI ?? ""; return result_; } - /// - /// Creates a new VGPU from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VGPU(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VGPU /// with the values listed in the Hashtable. Note that only the fields contained @@ -168,6 +183,10 @@ namespace XenAPI scheduled_to_be_resident_on = Marshalling.ParseRef(table, "scheduled_to_be_resident_on"); if (table.ContainsKey("compatibility_metadata")) compatibility_metadata = Maps.convert_from_proxy_string_string(Marshalling.ParseHashTable(table, "compatibility_metadata")); + if (table.ContainsKey("extra_args")) + extra_args = Marshalling.ParseString(table, "extra_args"); + if (table.ContainsKey("PCI")) + PCI = Marshalling.ParseRef(table, "PCI"); } public bool DeepEquals(VGPU other) @@ -186,7 +205,9 @@ namespace XenAPI Helper.AreEqual2(this._type, other._type) && Helper.AreEqual2(this._resident_on, other._resident_on) && Helper.AreEqual2(this._scheduled_to_be_resident_on, other._scheduled_to_be_resident_on) && - Helper.AreEqual2(this._compatibility_metadata, other._compatibility_metadata); + Helper.AreEqual2(this._compatibility_metadata, other._compatibility_metadata) && + Helper.AreEqual2(this._extra_args, other._extra_args) && + Helper.AreEqual2(this._PCI, other._PCI); } internal static List ProxyArrayToObjectList(Proxy_VGPU[] input) @@ -211,6 +232,10 @@ namespace XenAPI { VGPU.set_other_config(session, opaqueRef, _other_config); } + if (!Helper.AreEqual2(_extra_args, server._extra_args)) + { + VGPU.set_extra_args(session, opaqueRef, _extra_args); + } return null; } @@ -383,6 +408,34 @@ namespace XenAPI return Maps.convert_from_proxy_string_string(session.proxy.vgpu_get_compatibility_metadata(session.opaque_ref, _vgpu ?? "").parse()); } + /// + /// Get the extra_args field of the given VGPU. + /// First published in Unreleased. + /// + /// The session + /// The opaque_ref of the given vgpu + public static string get_extra_args(Session session, string _vgpu) + { + if (session.JsonRpcClient != null) + return session.JsonRpcClient.vgpu_get_extra_args(session.opaque_ref, _vgpu); + else + return session.proxy.vgpu_get_extra_args(session.opaque_ref, _vgpu ?? "").parse(); + } + + /// + /// Get the PCI field of the given VGPU. + /// First published in Unreleased. + /// + /// The session + /// The opaque_ref of the given vgpu + public static XenRef get_PCI(Session session, string _vgpu) + { + if (session.JsonRpcClient != null) + return session.JsonRpcClient.vgpu_get_pci(session.opaque_ref, _vgpu); + else + return XenRef.Create(session.proxy.vgpu_get_pci(session.opaque_ref, _vgpu ?? "").parse()); + } + /// /// Set the other_config field of the given VGPU. /// First published in XenServer 6.0. @@ -429,6 +482,21 @@ namespace XenAPI session.proxy.vgpu_remove_from_other_config(session.opaque_ref, _vgpu ?? "", _key ?? "").parse(); } + /// + /// Set the extra_args field of the given VGPU. + /// First published in Unreleased. + /// + /// The session + /// The opaque_ref of the given vgpu + /// New value to set + public static void set_extra_args(Session session, string _vgpu, string _extra_args) + { + if (session.JsonRpcClient != null) + session.JsonRpcClient.vgpu_set_extra_args(session.opaque_ref, _vgpu, _extra_args); + else + session.proxy.vgpu_set_extra_args(session.opaque_ref, _vgpu ?? "", _extra_args ?? "").parse(); + } + /// /// /// First published in XenServer 6.0. @@ -743,5 +811,44 @@ namespace XenAPI } } private Dictionary _compatibility_metadata = new Dictionary() {}; + + /// + /// Extra arguments for vGPU and passed to demu + /// First published in Unreleased. + /// + public virtual string extra_args + { + get { return _extra_args; } + set + { + if (!Helper.AreEqual(value, _extra_args)) + { + _extra_args = value; + Changed = true; + NotifyPropertyChanged("extra_args"); + } + } + } + private string _extra_args = ""; + + /// + /// Device passed trough to VM, either as full device or SR-IOV virtual function + /// First published in Unreleased. + /// + [JsonConverter(typeof(XenRefConverter))] + public virtual XenRef PCI + { + get { return _PCI; } + set + { + if (!Helper.AreEqual(value, _PCI)) + { + _PCI = value; + Changed = true; + NotifyPropertyChanged("PCI"); + } + } + } + private XenRef _PCI = new XenRef("OpaqueRef:NULL"); } } diff --git a/XenModel/XenAPI/VGPU_type.cs b/XenModel/XenAPI/VGPU_type.cs index 5650379cb..7d95f02fc 100644 --- a/XenModel/XenAPI/VGPU_type.cs +++ b/XenModel/XenAPI/VGPU_type.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VGPU_type : XenObject { + #region Constructors + public VGPU_type() { } @@ -63,7 +65,8 @@ namespace XenAPI List> enabled_on_GPU_groups, vgpu_type_implementation implementation, string identifier, - bool experimental) + bool experimental, + List> compatible_types_in_vm) { this.uuid = uuid; this.vendor_name = vendor_name; @@ -80,6 +83,19 @@ namespace XenAPI this.implementation = implementation; this.identifier = identifier; this.experimental = experimental; + this.compatible_types_in_vm = compatible_types_in_vm; + } + + /// + /// Creates a new VGPU_type from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VGPU_type(Hashtable table) + : this() + { + UpdateFrom(table); } /// @@ -88,9 +104,11 @@ namespace XenAPI /// public VGPU_type(Proxy_VGPU_type proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VGPU_type. @@ -112,9 +130,10 @@ namespace XenAPI implementation = update.implementation; identifier = update.identifier; experimental = update.experimental; + compatible_types_in_vm = update.compatible_types_in_vm; } - internal void UpdateFromProxy(Proxy_VGPU_type proxy) + internal void UpdateFrom(Proxy_VGPU_type proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; vendor_name = proxy.vendor_name == null ? null : proxy.vendor_name; @@ -131,6 +150,7 @@ namespace XenAPI implementation = proxy.implementation == null ? (vgpu_type_implementation) 0 : (vgpu_type_implementation)Helper.EnumParseDefault(typeof(vgpu_type_implementation), (string)proxy.implementation); identifier = proxy.identifier == null ? null : proxy.identifier; experimental = (bool)proxy.experimental; + compatible_types_in_vm = proxy.compatible_types_in_vm == null ? null : XenRef.Create(proxy.compatible_types_in_vm); } public Proxy_VGPU_type ToProxy() @@ -151,20 +171,10 @@ namespace XenAPI result_.implementation = vgpu_type_implementation_helper.ToString(implementation); result_.identifier = identifier ?? ""; result_.experimental = experimental; + result_.compatible_types_in_vm = compatible_types_in_vm == null ? new string[] {} : Helper.RefListToStringArray(compatible_types_in_vm); return result_; } - /// - /// Creates a new VGPU_type from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VGPU_type(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VGPU_type /// with the values listed in the Hashtable. Note that only the fields contained @@ -203,6 +213,8 @@ namespace XenAPI identifier = Marshalling.ParseString(table, "identifier"); if (table.ContainsKey("experimental")) experimental = Marshalling.ParseBool(table, "experimental"); + if (table.ContainsKey("compatible_types_in_vm")) + compatible_types_in_vm = Marshalling.ParseSetRef(table, "compatible_types_in_vm"); } public bool DeepEquals(VGPU_type other) @@ -226,7 +238,8 @@ namespace XenAPI Helper.AreEqual2(this._enabled_on_GPU_groups, other._enabled_on_GPU_groups) && Helper.AreEqual2(this._implementation, other._implementation) && Helper.AreEqual2(this._identifier, other._identifier) && - Helper.AreEqual2(this._experimental, other._experimental); + Helper.AreEqual2(this._experimental, other._experimental) && + Helper.AreEqual2(this._compatible_types_in_vm, other._compatible_types_in_vm); } internal static List ProxyArrayToObjectList(Proxy_VGPU_type[] input) @@ -488,6 +501,20 @@ namespace XenAPI return (bool)session.proxy.vgpu_type_get_experimental(session.opaque_ref, _vgpu_type ?? "").parse(); } + /// + /// Get the compatible_types_in_vm field of the given VGPU_type. + /// First published in Unreleased. + /// + /// The session + /// The opaque_ref of the given vgpu_type + public static List> get_compatible_types_in_vm(Session session, string _vgpu_type) + { + if (session.JsonRpcClient != null) + return session.JsonRpcClient.vgpu_type_get_compatible_types_in_vm(session.opaque_ref, _vgpu_type); + else + return XenRef.Create(session.proxy.vgpu_type_get_compatible_types_in_vm(session.opaque_ref, _vgpu_type ?? "").parse()); + } + /// /// Return a list of all the VGPU_types known to the system. /// First published in XenServer 6.2 SP1 Tech-Preview. @@ -796,5 +823,25 @@ namespace XenAPI } } private bool _experimental = false; + + /// + /// List of VGPU types which are compatible in one VM + /// First published in Unreleased. + /// + [JsonConverter(typeof(XenRefListConverter))] + public virtual List> compatible_types_in_vm + { + get { return _compatible_types_in_vm; } + set + { + if (!Helper.AreEqual(value, _compatible_types_in_vm)) + { + _compatible_types_in_vm = value; + Changed = true; + NotifyPropertyChanged("compatible_types_in_vm"); + } + } + } + private List> _compatible_types_in_vm = new List>() {}; } } diff --git a/XenModel/XenAPI/VIF.cs b/XenModel/XenAPI/VIF.cs index feaaffbab..b7b920764 100644 --- a/XenModel/XenAPI/VIF.cs +++ b/XenModel/XenAPI/VIF.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VIF : XenObject { + #region Constructors + public VIF() { } @@ -106,15 +108,29 @@ namespace XenAPI this.ipv6_gateway = ipv6_gateway; } + /// + /// Creates a new VIF from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VIF(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VIF from a Proxy_VIF. /// /// public VIF(Proxy_VIF proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VIF. @@ -150,7 +166,7 @@ namespace XenAPI ipv6_gateway = update.ipv6_gateway; } - internal void UpdateFromProxy(Proxy_VIF proxy) + internal void UpdateFrom(Proxy_VIF proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; allowed_operations = proxy.allowed_operations == null ? null : Helper.StringArrayToEnumList(proxy.allowed_operations); @@ -214,17 +230,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VIF from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VIF(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VIF /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VIF_metrics.cs b/XenModel/XenAPI/VIF_metrics.cs index 636e52b20..e1b49cc1f 100644 --- a/XenModel/XenAPI/VIF_metrics.cs +++ b/XenModel/XenAPI/VIF_metrics.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VIF_metrics : XenObject { + #region Constructors + public VIF_metrics() { } @@ -62,15 +64,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new VIF_metrics from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VIF_metrics(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VIF_metrics from a Proxy_VIF_metrics. /// /// public VIF_metrics(Proxy_VIF_metrics proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VIF_metrics. @@ -84,7 +100,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_VIF_metrics proxy) + internal void UpdateFrom(Proxy_VIF_metrics proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; io_read_kbs = Convert.ToDouble(proxy.io_read_kbs); @@ -104,17 +120,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VIF_metrics from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VIF_metrics(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VIF_metrics /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VLAN.cs b/XenModel/XenAPI/VLAN.cs index d38d165f5..527813ec2 100644 --- a/XenModel/XenAPI/VLAN.cs +++ b/XenModel/XenAPI/VLAN.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VLAN : XenObject { + #region Constructors + public VLAN() { } @@ -62,15 +64,29 @@ namespace XenAPI this.other_config = other_config; } + /// + /// Creates a new VLAN from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VLAN(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VLAN from a Proxy_VLAN. /// /// public VLAN(Proxy_VLAN proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VLAN. @@ -84,7 +100,7 @@ namespace XenAPI other_config = update.other_config; } - internal void UpdateFromProxy(Proxy_VLAN proxy) + internal void UpdateFrom(Proxy_VLAN proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; tagged_PIF = proxy.tagged_PIF == null ? null : XenRef.Create(proxy.tagged_PIF); @@ -104,17 +120,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VLAN from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VLAN(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VLAN /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VM.cs b/XenModel/XenAPI/VM.cs index 3318d3a5a..25b71d0b1 100755 --- a/XenModel/XenAPI/VM.cs +++ b/XenModel/XenAPI/VM.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VM : XenObject { + #region Constructors + public VM() { } @@ -222,15 +224,29 @@ namespace XenAPI this.NVRAM = NVRAM; } + /// + /// Creates a new VM from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VM(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VM from a Proxy_VM. /// /// public VM(Proxy_VM proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VM. @@ -324,7 +340,7 @@ namespace XenAPI NVRAM = update.NVRAM; } - internal void UpdateFromProxy(Proxy_VM proxy) + internal void UpdateFrom(Proxy_VM proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; allowed_operations = proxy.allowed_operations == null ? null : Helper.StringArrayToEnumList(proxy.allowed_operations); @@ -504,17 +520,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VM from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VM(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VM /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VMPP.cs b/XenModel/XenAPI/VMPP.cs index f4bb3052c..29cb61212 100644 --- a/XenModel/XenAPI/VMPP.cs +++ b/XenModel/XenAPI/VMPP.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VMPP : XenObject { + #region Constructors + public VMPP() { } @@ -92,15 +94,29 @@ namespace XenAPI this.recent_alerts = recent_alerts; } + /// + /// Creates a new VMPP from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VMPP(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VMPP from a Proxy_VMPP. /// /// public VMPP(Proxy_VMPP proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VMPP. @@ -129,7 +145,7 @@ namespace XenAPI recent_alerts = update.recent_alerts; } - internal void UpdateFromProxy(Proxy_VMPP proxy) + internal void UpdateFrom(Proxy_VMPP proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -179,17 +195,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VMPP from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VMPP(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VMPP /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VMSS.cs b/XenModel/XenAPI/VMSS.cs index a2255fae8..d553fad8d 100644 --- a/XenModel/XenAPI/VMSS.cs +++ b/XenModel/XenAPI/VMSS.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VMSS : XenObject { + #region Constructors + public VMSS() { } @@ -72,15 +74,29 @@ namespace XenAPI this.VMs = VMs; } + /// + /// Creates a new VMSS from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VMSS(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VMSS from a Proxy_VMSS. /// /// public VMSS(Proxy_VMSS proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VMSS. @@ -99,7 +115,7 @@ namespace XenAPI VMs = update.VMs; } - internal void UpdateFromProxy(Proxy_VMSS proxy) + internal void UpdateFrom(Proxy_VMSS proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -129,17 +145,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VMSS from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VMSS(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VMSS /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VM_appliance.cs b/XenModel/XenAPI/VM_appliance.cs index caa53794b..70b5e990d 100644 --- a/XenModel/XenAPI/VM_appliance.cs +++ b/XenModel/XenAPI/VM_appliance.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VM_appliance : XenObject { + #region Constructors + public VM_appliance() { } @@ -64,15 +66,29 @@ namespace XenAPI this.VMs = VMs; } + /// + /// Creates a new VM_appliance from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VM_appliance(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VM_appliance from a Proxy_VM_appliance. /// /// public VM_appliance(Proxy_VM_appliance proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VM_appliance. @@ -87,7 +103,7 @@ namespace XenAPI VMs = update.VMs; } - internal void UpdateFromProxy(Proxy_VM_appliance proxy) + internal void UpdateFrom(Proxy_VM_appliance proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; name_label = proxy.name_label == null ? null : proxy.name_label; @@ -109,17 +125,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VM_appliance from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VM_appliance(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VM_appliance /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VM_guest_metrics.cs b/XenModel/XenAPI/VM_guest_metrics.cs index bde9ae805..77e5265a3 100644 --- a/XenModel/XenAPI/VM_guest_metrics.cs +++ b/XenModel/XenAPI/VM_guest_metrics.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VM_guest_metrics : XenObject { + #region Constructors + public VM_guest_metrics() { } @@ -80,15 +82,29 @@ namespace XenAPI this.PV_drivers_detected = PV_drivers_detected; } + /// + /// Creates a new VM_guest_metrics from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VM_guest_metrics(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VM_guest_metrics from a Proxy_VM_guest_metrics. /// /// public VM_guest_metrics(Proxy_VM_guest_metrics proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VM_guest_metrics. @@ -111,7 +127,7 @@ namespace XenAPI PV_drivers_detected = update.PV_drivers_detected; } - internal void UpdateFromProxy(Proxy_VM_guest_metrics proxy) + internal void UpdateFrom(Proxy_VM_guest_metrics proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; os_version = proxy.os_version == null ? null : Maps.convert_from_proxy_string_string(proxy.os_version); @@ -149,17 +165,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VM_guest_metrics from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VM_guest_metrics(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VM_guest_metrics /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VM_metrics.cs b/XenModel/XenAPI/VM_metrics.cs index 463d8885f..3f6c36ac4 100755 --- a/XenModel/XenAPI/VM_metrics.cs +++ b/XenModel/XenAPI/VM_metrics.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VM_metrics : XenObject { + #region Constructors + public VM_metrics() { } @@ -84,15 +86,29 @@ namespace XenAPI this.current_domain_type = current_domain_type; } + /// + /// Creates a new VM_metrics from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VM_metrics(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VM_metrics from a Proxy_VM_metrics. /// /// public VM_metrics(Proxy_VM_metrics proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VM_metrics. @@ -117,7 +133,7 @@ namespace XenAPI current_domain_type = update.current_domain_type; } - internal void UpdateFromProxy(Proxy_VM_metrics proxy) + internal void UpdateFrom(Proxy_VM_metrics proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; memory_actual = proxy.memory_actual == null ? 0 : long.Parse(proxy.memory_actual); @@ -159,17 +175,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VM_metrics from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VM_metrics(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VM_metrics /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VTPM.cs b/XenModel/XenAPI/VTPM.cs index 73e320f94..03de47323 100644 --- a/XenModel/XenAPI/VTPM.cs +++ b/XenModel/XenAPI/VTPM.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VTPM : XenObject { + #region Constructors + public VTPM() { } @@ -58,15 +60,29 @@ namespace XenAPI this.backend = backend; } + /// + /// Creates a new VTPM from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VTPM(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VTPM from a Proxy_VTPM. /// /// public VTPM(Proxy_VTPM proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VTPM. @@ -78,7 +94,7 @@ namespace XenAPI backend = update.backend; } - internal void UpdateFromProxy(Proxy_VTPM proxy) + internal void UpdateFrom(Proxy_VTPM proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; VM = proxy.VM == null ? null : XenRef.Create(proxy.VM); @@ -94,17 +110,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VTPM from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VTPM(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VTPM /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/VUSB.cs b/XenModel/XenAPI/VUSB.cs index 18b1aaab0..30907c1d6 100644 --- a/XenModel/XenAPI/VUSB.cs +++ b/XenModel/XenAPI/VUSB.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class VUSB : XenObject { + #region Constructors + public VUSB() { } @@ -66,15 +68,29 @@ namespace XenAPI this.currently_attached = currently_attached; } + /// + /// Creates a new VUSB from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public VUSB(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new VUSB from a Proxy_VUSB. /// /// public VUSB(Proxy_VUSB proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given VUSB. @@ -90,7 +106,7 @@ namespace XenAPI currently_attached = update.currently_attached; } - internal void UpdateFromProxy(Proxy_VUSB proxy) + internal void UpdateFrom(Proxy_VUSB proxy) { uuid = proxy.uuid == null ? null : proxy.uuid; allowed_operations = proxy.allowed_operations == null ? null : Helper.StringArrayToEnumList(proxy.allowed_operations); @@ -114,17 +130,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new VUSB from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public VUSB(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this VUSB /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/Vdi_nbd_server_info.cs b/XenModel/XenAPI/Vdi_nbd_server_info.cs index 438d99460..3f4aec5b7 100644 --- a/XenModel/XenAPI/Vdi_nbd_server_info.cs +++ b/XenModel/XenAPI/Vdi_nbd_server_info.cs @@ -45,6 +45,8 @@ namespace XenAPI /// public partial class Vdi_nbd_server_info : XenObject { + #region Constructors + public Vdi_nbd_server_info() { } @@ -62,15 +64,29 @@ namespace XenAPI this.subject = subject; } + /// + /// Creates a new Vdi_nbd_server_info from a Hashtable. + /// Note that the fields not contained in the Hashtable + /// will be created with their default values. + /// + /// + public Vdi_nbd_server_info(Hashtable table) + : this() + { + UpdateFrom(table); + } + /// /// Creates a new Vdi_nbd_server_info from a Proxy_Vdi_nbd_server_info. /// /// public Vdi_nbd_server_info(Proxy_Vdi_nbd_server_info proxy) { - this.UpdateFromProxy(proxy); + UpdateFrom(proxy); } + #endregion + /// /// Updates each field of this instance with the value of /// the corresponding field of a given Vdi_nbd_server_info. @@ -84,7 +100,7 @@ namespace XenAPI subject = update.subject; } - internal void UpdateFromProxy(Proxy_Vdi_nbd_server_info proxy) + internal void UpdateFrom(Proxy_Vdi_nbd_server_info proxy) { exportname = proxy.exportname == null ? null : proxy.exportname; address = proxy.address == null ? null : proxy.address; @@ -104,17 +120,6 @@ namespace XenAPI return result_; } - /// - /// Creates a new Vdi_nbd_server_info from a Hashtable. - /// Note that the fields not contained in the Hashtable - /// will be created with their default values. - /// - /// - public Vdi_nbd_server_info(Hashtable table) : this() - { - UpdateFrom(table); - } - /// /// Given a Hashtable with field-value pairs, it updates the fields of this Vdi_nbd_server_info /// with the values listed in the Hashtable. Note that only the fields contained diff --git a/XenModel/XenAPI/after_apply_guidance.cs b/XenModel/XenAPI/after_apply_guidance.cs index 6fed908ce..81fdcfc64 100644 --- a/XenModel/XenAPI/after_apply_guidance.cs +++ b/XenModel/XenAPI/after_apply_guidance.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,23 @@ namespace XenAPI [JsonConverter(typeof(after_apply_guidanceConverter))] public enum after_apply_guidance { - restartHVM, restartPV, restartHost, restartXAPI, unknown + /// + /// This patch requires HVM guests to be restarted once applied. + /// + restartHVM, + /// + /// This patch requires PV guests to be restarted once applied. + /// + restartPV, + /// + /// This patch requires the host to be restarted once applied. + /// + restartHost, + /// + /// This patch requires XAPI to be restarted once applied. + /// + restartXAPI, + unknown } public static class after_apply_guidance_helper @@ -75,4 +90,4 @@ namespace XenAPI writer.WriteValue(((after_apply_guidance)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/allocation_algorithm.cs b/XenModel/XenAPI/allocation_algorithm.cs index 57d838b63..2cce7af93 100644 --- a/XenModel/XenAPI/allocation_algorithm.cs +++ b/XenModel/XenAPI/allocation_algorithm.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(allocation_algorithmConverter))] public enum allocation_algorithm { - breadth_first, depth_first, unknown + /// + /// vGPUs of a given type are allocated evenly across supporting pGPUs. + /// + breadth_first, + /// + /// vGPUs of a given type are allocated on supporting pGPUs until they are full. + /// + depth_first, + unknown } public static class allocation_algorithm_helper @@ -71,4 +78,4 @@ namespace XenAPI writer.WriteValue(((allocation_algorithm)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/bond_mode.cs b/XenModel/XenAPI/bond_mode.cs index 1558b4830..1a284dd6e 100644 --- a/XenModel/XenAPI/bond_mode.cs +++ b/XenModel/XenAPI/bond_mode.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(bond_modeConverter))] public enum bond_mode { - balance_slb, active_backup, lacp, unknown + /// + /// Source-level balancing + /// + balance_slb, + /// + /// Active/passive bonding: only one NIC is carrying traffic + /// + active_backup, + /// + /// Link aggregation control protocol + /// + lacp, + unknown } public static class bond_mode_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((bond_mode)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/cls.cs b/XenModel/XenAPI/cls.cs index f162a942e..0b2819a96 100644 --- a/XenModel/XenAPI/cls.cs +++ b/XenModel/XenAPI/cls.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,39 @@ namespace XenAPI [JsonConverter(typeof(clsConverter))] public enum cls { - VM, Host, SR, Pool, VMPP, VMSS, PVS_proxy, VDI, unknown + /// + /// VM + /// + VM, + /// + /// Host + /// + Host, + /// + /// SR + /// + SR, + /// + /// Pool + /// + Pool, + /// + /// VMPP + /// + VMPP, + /// + /// VMSS + /// + VMSS, + /// + /// PVS_proxy + /// + PVS_proxy, + /// + /// VDI + /// + VDI, + unknown } public static class cls_helper @@ -83,4 +114,4 @@ namespace XenAPI writer.WriteValue(((cls)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/cluster_host_operation.cs b/XenModel/XenAPI/cluster_host_operation.cs index 7b4594612..6a9f79501 100644 --- a/XenModel/XenAPI/cluster_host_operation.cs +++ b/XenModel/XenAPI/cluster_host_operation.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(cluster_host_operationConverter))] public enum cluster_host_operation { - enable, disable, destroy, unknown + /// + /// enabling cluster membership on a particular host + /// + enable, + /// + /// disabling cluster membership on a particular host + /// + disable, + /// + /// completely destroying a cluster host + /// + destroy, + unknown } public static class cluster_host_operation_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((cluster_host_operation)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/cluster_operation.cs b/XenModel/XenAPI/cluster_operation.cs index 907f5fdfb..b24b89742 100644 --- a/XenModel/XenAPI/cluster_operation.cs +++ b/XenModel/XenAPI/cluster_operation.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,27 @@ namespace XenAPI [JsonConverter(typeof(cluster_operationConverter))] public enum cluster_operation { - add, remove, enable, disable, destroy, unknown + /// + /// adding a new member to the cluster + /// + add, + /// + /// removing a member from the cluster + /// + remove, + /// + /// enabling any cluster member + /// + enable, + /// + /// disabling any cluster member + /// + disable, + /// + /// completely destroying a cluster + /// + destroy, + unknown } public static class cluster_operation_helper @@ -77,4 +96,4 @@ namespace XenAPI writer.WriteValue(((cluster_operation)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/console_protocol.cs b/XenModel/XenAPI/console_protocol.cs index 84b404d4c..8d19e668f 100644 --- a/XenModel/XenAPI/console_protocol.cs +++ b/XenModel/XenAPI/console_protocol.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(console_protocolConverter))] public enum console_protocol { - vt100, rfb, rdp, unknown + /// + /// VT100 terminal + /// + vt100, + /// + /// Remote FrameBuffer protocol (as used in VNC) + /// + rfb, + /// + /// Remote Desktop Protocol + /// + rdp, + unknown } public static class console_protocol_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((console_protocol)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/domain_type.cs b/XenModel/XenAPI/domain_type.cs index e7ea8c948..092260b04 100644 --- a/XenModel/XenAPI/domain_type.cs +++ b/XenModel/XenAPI/domain_type.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,23 @@ namespace XenAPI [JsonConverter(typeof(domain_typeConverter))] public enum domain_type { - hvm, pv, pv_in_pvh, unspecified, unknown + /// + /// HVM; Fully Virtualised + /// + hvm, + /// + /// PV: Paravirtualised + /// + pv, + /// + /// PV inside a PVH container + /// + pv_in_pvh, + /// + /// Not specified or unknown domain type + /// + unspecified, + unknown } public static class domain_type_helper @@ -75,4 +90,4 @@ namespace XenAPI writer.WriteValue(((domain_type)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/host_allowed_operations.cs b/XenModel/XenAPI/host_allowed_operations.cs index 451a159a4..023866149 100644 --- a/XenModel/XenAPI/host_allowed_operations.cs +++ b/XenModel/XenAPI/host_allowed_operations.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,39 @@ namespace XenAPI [JsonConverter(typeof(host_allowed_operationsConverter))] public enum host_allowed_operations { - provision, evacuate, shutdown, reboot, power_on, vm_start, vm_resume, vm_migrate, unknown + /// + /// Indicates this host is able to provision another VM + /// + provision, + /// + /// Indicates this host is evacuating + /// + evacuate, + /// + /// Indicates this host is in the process of shutting itself down + /// + shutdown, + /// + /// Indicates this host is in the process of rebooting + /// + reboot, + /// + /// Indicates this host is in the process of being powered on + /// + power_on, + /// + /// This host is starting a VM + /// + vm_start, + /// + /// This host is resuming a VM + /// + vm_resume, + /// + /// This host is the migration target of a VM + /// + vm_migrate, + unknown } public static class host_allowed_operations_helper @@ -83,4 +114,4 @@ namespace XenAPI writer.WriteValue(((host_allowed_operations)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/host_display.cs b/XenModel/XenAPI/host_display.cs index 4e222cd21..ddf010771 100644 --- a/XenModel/XenAPI/host_display.cs +++ b/XenModel/XenAPI/host_display.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,23 @@ namespace XenAPI [JsonConverter(typeof(host_displayConverter))] public enum host_display { - enabled, disable_on_reboot, disabled, enable_on_reboot, unknown + /// + /// This host is outputting its console to a physical display device + /// + enabled, + /// + /// The host will stop outputting its console to a physical display device on next boot + /// + disable_on_reboot, + /// + /// This host is not outputting its console to a physical display device + /// + disabled, + /// + /// The host will start outputting its console to a physical display device on next boot + /// + enable_on_reboot, + unknown } public static class host_display_helper @@ -75,4 +90,4 @@ namespace XenAPI writer.WriteValue(((host_display)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/ip_configuration_mode.cs b/XenModel/XenAPI/ip_configuration_mode.cs index 0347b05c9..d5fc8cc40 100644 --- a/XenModel/XenAPI/ip_configuration_mode.cs +++ b/XenModel/XenAPI/ip_configuration_mode.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(ip_configuration_modeConverter))] public enum ip_configuration_mode { - None, DHCP, Static, unknown + /// + /// Do not acquire an IP address + /// + None, + /// + /// Acquire an IP address by DHCP + /// + DHCP, + /// + /// Static IP address configuration + /// + Static, + unknown } public static class ip_configuration_mode_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((ip_configuration_mode)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/ipv6_configuration_mode.cs b/XenModel/XenAPI/ipv6_configuration_mode.cs index 0cd510447..f7a0bb1a2 100644 --- a/XenModel/XenAPI/ipv6_configuration_mode.cs +++ b/XenModel/XenAPI/ipv6_configuration_mode.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,23 @@ namespace XenAPI [JsonConverter(typeof(ipv6_configuration_modeConverter))] public enum ipv6_configuration_mode { - None, DHCP, Static, Autoconf, unknown + /// + /// Do not acquire an IPv6 address + /// + None, + /// + /// Acquire an IPv6 address by DHCP + /// + DHCP, + /// + /// Static IPv6 address configuration + /// + Static, + /// + /// Router assigned prefix delegation IPv6 allocation + /// + Autoconf, + unknown } public static class ipv6_configuration_mode_helper @@ -75,4 +90,4 @@ namespace XenAPI writer.WriteValue(((ipv6_configuration_mode)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/livepatch_status.cs b/XenModel/XenAPI/livepatch_status.cs index 32cb87b62..561431ae9 100644 --- a/XenModel/XenAPI/livepatch_status.cs +++ b/XenModel/XenAPI/livepatch_status.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(livepatch_statusConverter))] public enum livepatch_status { - ok_livepatch_complete, ok_livepatch_incomplete, ok, unknown + /// + /// An applicable live patch exists for every required component + /// + ok_livepatch_complete, + /// + /// An applicable live patch exists but it is not sufficient + /// + ok_livepatch_incomplete, + /// + /// There is no applicable live patch + /// + ok, + unknown } public static class livepatch_status_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((livepatch_status)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/network_default_locking_mode.cs b/XenModel/XenAPI/network_default_locking_mode.cs index 466b04947..8352dea4e 100644 --- a/XenModel/XenAPI/network_default_locking_mode.cs +++ b/XenModel/XenAPI/network_default_locking_mode.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(network_default_locking_modeConverter))] public enum network_default_locking_mode { - unlocked, disabled, unknown + /// + /// Treat all VIFs on this network with locking_mode = 'default' as if they have locking_mode = 'unlocked' + /// + unlocked, + /// + /// Treat all VIFs on this network with locking_mode = 'default' as if they have locking_mode = 'disabled' + /// + disabled, + unknown } public static class network_default_locking_mode_helper @@ -71,4 +78,4 @@ namespace XenAPI writer.WriteValue(((network_default_locking_mode)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/network_operations.cs b/XenModel/XenAPI/network_operations.cs index e70d418a1..e561d1945 100644 --- a/XenModel/XenAPI/network_operations.cs +++ b/XenModel/XenAPI/network_operations.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,11 @@ namespace XenAPI [JsonConverter(typeof(network_operationsConverter))] public enum network_operations { - attaching, unknown + /// + /// Indicates this network is attaching to a VIF or PIF + /// + attaching, + unknown } public static class network_operations_helper @@ -69,4 +72,4 @@ namespace XenAPI writer.WriteValue(((network_operations)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/network_purpose.cs b/XenModel/XenAPI/network_purpose.cs index f55351925..12ca4f093 100644 --- a/XenModel/XenAPI/network_purpose.cs +++ b/XenModel/XenAPI/network_purpose.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(network_purposeConverter))] public enum network_purpose { - nbd, insecure_nbd, unknown + /// + /// Network Block Device service using TLS + /// + nbd, + /// + /// Network Block Device service without integrity or confidentiality: NOT RECOMMENDED + /// + insecure_nbd, + unknown } public static class network_purpose_helper @@ -71,4 +78,4 @@ namespace XenAPI writer.WriteValue(((network_purpose)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/on_boot.cs b/XenModel/XenAPI/on_boot.cs index 80372c891..94c1f7b99 100644 --- a/XenModel/XenAPI/on_boot.cs +++ b/XenModel/XenAPI/on_boot.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(on_bootConverter))] public enum on_boot { - reset, persist, unknown + /// + /// When a VM containing this VDI is started, the contents of the VDI are reset to the state they were in when this flag was last set. + /// + reset, + /// + /// Standard behaviour. + /// + persist, + unknown } public static class on_boot_helper @@ -71,4 +78,4 @@ namespace XenAPI writer.WriteValue(((on_boot)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/on_crash_behaviour.cs b/XenModel/XenAPI/on_crash_behaviour.cs index 050a6db17..4910e6f1d 100644 --- a/XenModel/XenAPI/on_crash_behaviour.cs +++ b/XenModel/XenAPI/on_crash_behaviour.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,31 @@ namespace XenAPI [JsonConverter(typeof(on_crash_behaviourConverter))] public enum on_crash_behaviour { - destroy, coredump_and_destroy, restart, coredump_and_restart, preserve, rename_restart, unknown + /// + /// destroy the VM state + /// + destroy, + /// + /// record a coredump and then destroy the VM state + /// + coredump_and_destroy, + /// + /// restart the VM + /// + restart, + /// + /// record a coredump and then restart the VM + /// + coredump_and_restart, + /// + /// leave the crashed VM paused + /// + preserve, + /// + /// rename the crashed VM and start a new copy + /// + rename_restart, + unknown } public static class on_crash_behaviour_helper @@ -79,4 +102,4 @@ namespace XenAPI writer.WriteValue(((on_crash_behaviour)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/on_normal_exit.cs b/XenModel/XenAPI/on_normal_exit.cs index 5b53fe9fc..3e46dfaf2 100644 --- a/XenModel/XenAPI/on_normal_exit.cs +++ b/XenModel/XenAPI/on_normal_exit.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(on_normal_exitConverter))] public enum on_normal_exit { - destroy, restart, unknown + /// + /// destroy the VM state + /// + destroy, + /// + /// restart the VM + /// + restart, + unknown } public static class on_normal_exit_helper @@ -71,4 +78,4 @@ namespace XenAPI writer.WriteValue(((on_normal_exit)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/pgpu_dom0_access.cs b/XenModel/XenAPI/pgpu_dom0_access.cs index 31ef476d1..9e0c62e15 100644 --- a/XenModel/XenAPI/pgpu_dom0_access.cs +++ b/XenModel/XenAPI/pgpu_dom0_access.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,23 @@ namespace XenAPI [JsonConverter(typeof(pgpu_dom0_accessConverter))] public enum pgpu_dom0_access { - enabled, disable_on_reboot, disabled, enable_on_reboot, unknown + /// + /// dom0 can access this device as normal + /// + enabled, + /// + /// On host reboot dom0 will be blocked from accessing this device + /// + disable_on_reboot, + /// + /// dom0 cannot access this device + /// + disabled, + /// + /// On host reboot dom0 will be allowed to access this device + /// + enable_on_reboot, + unknown } public static class pgpu_dom0_access_helper @@ -75,4 +90,4 @@ namespace XenAPI writer.WriteValue(((pgpu_dom0_access)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/pif_igmp_status.cs b/XenModel/XenAPI/pif_igmp_status.cs index e624c7fc0..0651a42ca 100644 --- a/XenModel/XenAPI/pif_igmp_status.cs +++ b/XenModel/XenAPI/pif_igmp_status.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(pif_igmp_statusConverter))] public enum pif_igmp_status { - enabled, disabled, unknown + /// + /// IGMP Snooping is enabled in the corresponding backend bridge.' + /// + enabled, + /// + /// IGMP Snooping is disabled in the corresponding backend bridge.' + /// + disabled, + unknown } public static class pif_igmp_status_helper @@ -58,8 +65,6 @@ namespace XenAPI return "enabled"; case pif_igmp_status.disabled: return "disabled"; - case pif_igmp_status.unknown: - return "unknown"; default: return "unknown"; } @@ -73,4 +78,4 @@ namespace XenAPI writer.WriteValue(((pif_igmp_status)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/pool_allowed_operations.cs b/XenModel/XenAPI/pool_allowed_operations.cs index c7f94903c..95f73feef 100644 --- a/XenModel/XenAPI/pool_allowed_operations.cs +++ b/XenModel/XenAPI/pool_allowed_operations.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(pool_allowed_operationsConverter))] public enum pool_allowed_operations { - ha_enable, ha_disable, cluster_create, unknown + /// + /// Indicates this pool is in the process of enabling HA + /// + ha_enable, + /// + /// Indicates this pool is in the process of disabling HA + /// + ha_disable, + /// + /// Indicates this pool is in the process of creating a cluster + /// + cluster_create, + unknown } public static class pool_allowed_operations_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((pool_allowed_operations)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/primary_address_type.cs b/XenModel/XenAPI/primary_address_type.cs index 356eab9dc..690ecb94b 100644 --- a/XenModel/XenAPI/primary_address_type.cs +++ b/XenModel/XenAPI/primary_address_type.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(primary_address_typeConverter))] public enum primary_address_type { - IPv4, IPv6, unknown + /// + /// Primary address is the IPv4 address + /// + IPv4, + /// + /// Primary address is the IPv6 address + /// + IPv6, + unknown } public static class primary_address_type_helper @@ -71,4 +78,4 @@ namespace XenAPI writer.WriteValue(((primary_address_type)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/pvs_proxy_status.cs b/XenModel/XenAPI/pvs_proxy_status.cs index d55af8807..bc4d13d21 100644 --- a/XenModel/XenAPI/pvs_proxy_status.cs +++ b/XenModel/XenAPI/pvs_proxy_status.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,27 @@ namespace XenAPI [JsonConverter(typeof(pvs_proxy_statusConverter))] public enum pvs_proxy_status { - stopped, initialised, caching, incompatible_write_cache_mode, incompatible_protocol_version, unknown + /// + /// The proxy is not currently running + /// + stopped, + /// + /// The proxy is setup but has not yet cached anything + /// + initialised, + /// + /// The proxy is currently caching data + /// + caching, + /// + /// The PVS device is configured to use an incompatible write-cache mode + /// + incompatible_write_cache_mode, + /// + /// The PVS protocol in use is not compatible with the PVS proxy + /// + incompatible_protocol_version, + unknown } public static class pvs_proxy_status_helper @@ -77,4 +96,4 @@ namespace XenAPI writer.WriteValue(((pvs_proxy_status)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/sdn_controller_protocol.cs b/XenModel/XenAPI/sdn_controller_protocol.cs index ae50f91da..a2db35a95 100644 --- a/XenModel/XenAPI/sdn_controller_protocol.cs +++ b/XenModel/XenAPI/sdn_controller_protocol.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(sdn_controller_protocolConverter))] public enum sdn_controller_protocol { - ssl, pssl, unknown + /// + /// Active ssl connection + /// + ssl, + /// + /// Passive ssl connection + /// + pssl, + unknown } public static class sdn_controller_protocol_helper @@ -71,4 +78,4 @@ namespace XenAPI writer.WriteValue(((sdn_controller_protocol)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/sr_health.cs b/XenModel/XenAPI/sr_health.cs index a6ace1111..a9c9ca4b2 100644 --- a/XenModel/XenAPI/sr_health.cs +++ b/XenModel/XenAPI/sr_health.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(sr_healthConverter))] public enum sr_health { - healthy, recovering, unknown + /// + /// Storage is fully available + /// + healthy, + /// + /// Storage is busy recovering, e.g. rebuilding mirrors. + /// + recovering, + unknown } public static class sr_health_helper @@ -71,4 +78,4 @@ namespace XenAPI writer.WriteValue(((sr_health)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/sriov_configuration_mode.cs b/XenModel/XenAPI/sriov_configuration_mode.cs index 9863c7edb..b99ab1656 100644 --- a/XenModel/XenAPI/sriov_configuration_mode.cs +++ b/XenModel/XenAPI/sriov_configuration_mode.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(sriov_configuration_modeConverter))] public enum sriov_configuration_mode { - sysfs, modprobe, unknown + /// + /// Configure network sriov by sysfs, do not need reboot + /// + sysfs, + /// + /// Configure network sriov by modprobe, need reboot + /// + modprobe, + unknown } public static class sriov_configuration_mode_helper @@ -58,8 +65,6 @@ namespace XenAPI return "sysfs"; case sriov_configuration_mode.modprobe: return "modprobe"; - case sriov_configuration_mode.unknown: - return "unknown"; default: return "unknown"; } @@ -73,4 +78,4 @@ namespace XenAPI writer.WriteValue(((sriov_configuration_mode)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/storage_operations.cs b/XenModel/XenAPI/storage_operations.cs index a91eea3db..32a2f85d9 100644 --- a/XenModel/XenAPI/storage_operations.cs +++ b/XenModel/XenAPI/storage_operations.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,87 @@ namespace XenAPI [JsonConverter(typeof(storage_operationsConverter))] public enum storage_operations { - scan, destroy, forget, plug, unplug, update, vdi_create, vdi_introduce, vdi_destroy, vdi_resize, vdi_clone, vdi_snapshot, vdi_mirror, vdi_enable_cbt, vdi_disable_cbt, vdi_data_destroy, vdi_list_changed_blocks, vdi_set_on_boot, pbd_create, pbd_destroy, unknown + /// + /// Scanning backends for new or deleted VDIs + /// + scan, + /// + /// Destroying the SR + /// + destroy, + /// + /// Forgetting about SR + /// + forget, + /// + /// Plugging a PBD into this SR + /// + plug, + /// + /// Unplugging a PBD from this SR + /// + unplug, + /// + /// Refresh the fields on the SR + /// + update, + /// + /// Creating a new VDI + /// + vdi_create, + /// + /// Introducing a new VDI + /// + vdi_introduce, + /// + /// Destroying a VDI + /// + vdi_destroy, + /// + /// Resizing a VDI + /// + vdi_resize, + /// + /// Cloneing a VDI + /// + vdi_clone, + /// + /// Snapshotting a VDI + /// + vdi_snapshot, + /// + /// Mirroring a VDI + /// + vdi_mirror, + /// + /// Enabling changed block tracking for a VDI + /// + vdi_enable_cbt, + /// + /// Disabling changed block tracking for a VDI + /// + vdi_disable_cbt, + /// + /// Deleting the data of the VDI + /// + vdi_data_destroy, + /// + /// Exporting a bitmap that shows the changed blocks between two VDIs + /// + vdi_list_changed_blocks, + /// + /// Setting the on_boot field of the VDI + /// + vdi_set_on_boot, + /// + /// Creating a PBD for this SR + /// + pbd_create, + /// + /// Destroying one of this SR's PBDs + /// + pbd_destroy, + unknown } public static class storage_operations_helper @@ -107,4 +186,4 @@ namespace XenAPI writer.WriteValue(((storage_operations)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/task_allowed_operations.cs b/XenModel/XenAPI/task_allowed_operations.cs index ff128887e..8789d00fd 100644 --- a/XenModel/XenAPI/task_allowed_operations.cs +++ b/XenModel/XenAPI/task_allowed_operations.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(task_allowed_operationsConverter))] public enum task_allowed_operations { - cancel, destroy, unknown + /// + /// refers to the operation "cancel" + /// + cancel, + /// + /// refers to the operation "destroy" + /// + destroy, + unknown } public static class task_allowed_operations_helper @@ -71,4 +78,4 @@ namespace XenAPI writer.WriteValue(((task_allowed_operations)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/task_status_type.cs b/XenModel/XenAPI/task_status_type.cs index bf99d0c1c..8fde908b9 100644 --- a/XenModel/XenAPI/task_status_type.cs +++ b/XenModel/XenAPI/task_status_type.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,27 @@ namespace XenAPI [JsonConverter(typeof(task_status_typeConverter))] public enum task_status_type { - pending, success, failure, cancelling, cancelled, unknown + /// + /// task is in progress + /// + pending, + /// + /// task was completed successfully + /// + success, + /// + /// task has failed + /// + failure, + /// + /// task is being cancelled + /// + cancelling, + /// + /// task has been cancelled + /// + cancelled, + unknown } public static class task_status_type_helper @@ -77,4 +96,4 @@ namespace XenAPI writer.WriteValue(((task_status_type)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/tristate_type.cs b/XenModel/XenAPI/tristate_type.cs index 99e6bfd1f..f73cf4e42 100644 --- a/XenModel/XenAPI/tristate_type.cs +++ b/XenModel/XenAPI/tristate_type.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(tristate_typeConverter))] public enum tristate_type { - yes, no, unspecified, unknown + /// + /// Known to be true + /// + yes, + /// + /// Known to be false + /// + no, + /// + /// Unknown or unspecified + /// + unspecified, + unknown } public static class tristate_type_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((tristate_type)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/update_after_apply_guidance.cs b/XenModel/XenAPI/update_after_apply_guidance.cs index 7f2ef51e9..b7f0f124e 100644 --- a/XenModel/XenAPI/update_after_apply_guidance.cs +++ b/XenModel/XenAPI/update_after_apply_guidance.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,23 @@ namespace XenAPI [JsonConverter(typeof(update_after_apply_guidanceConverter))] public enum update_after_apply_guidance { - restartHVM, restartPV, restartHost, restartXAPI, unknown + /// + /// This update requires HVM guests to be restarted once applied. + /// + restartHVM, + /// + /// This update requires PV guests to be restarted once applied. + /// + restartPV, + /// + /// This update requires the host to be restarted once applied. + /// + restartHost, + /// + /// This update requires XAPI to be restarted once applied. + /// + restartXAPI, + unknown } public static class update_after_apply_guidance_helper @@ -75,4 +90,4 @@ namespace XenAPI writer.WriteValue(((update_after_apply_guidance)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vbd_mode.cs b/XenModel/XenAPI/vbd_mode.cs index 3b041041c..7ef685059 100644 --- a/XenModel/XenAPI/vbd_mode.cs +++ b/XenModel/XenAPI/vbd_mode.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(vbd_modeConverter))] public enum vbd_mode { - RO, RW, unknown + /// + /// only read-only access will be allowed + /// + RO, + /// + /// read-write access will be allowed + /// + RW, + unknown } public static class vbd_mode_helper @@ -71,4 +78,4 @@ namespace XenAPI writer.WriteValue(((vbd_mode)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vbd_operations.cs b/XenModel/XenAPI/vbd_operations.cs index f3212dfe7..46b3757cb 100644 --- a/XenModel/XenAPI/vbd_operations.cs +++ b/XenModel/XenAPI/vbd_operations.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,39 @@ namespace XenAPI [JsonConverter(typeof(vbd_operationsConverter))] public enum vbd_operations { - attach, eject, insert, plug, unplug, unplug_force, pause, unpause, unknown + /// + /// Attempting to attach this VBD to a VM + /// + attach, + /// + /// Attempting to eject the media from this VBD + /// + eject, + /// + /// Attempting to insert new media into this VBD + /// + insert, + /// + /// Attempting to hotplug this VBD + /// + plug, + /// + /// Attempting to hot unplug this VBD + /// + unplug, + /// + /// Attempting to forcibly unplug this VBD + /// + unplug_force, + /// + /// Attempting to pause a block device backend + /// + pause, + /// + /// Attempting to unpause a block device backend + /// + unpause, + unknown } public static class vbd_operations_helper @@ -83,4 +114,4 @@ namespace XenAPI writer.WriteValue(((vbd_operations)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vbd_type.cs b/XenModel/XenAPI/vbd_type.cs index 041eec7e8..fc316196d 100644 --- a/XenModel/XenAPI/vbd_type.cs +++ b/XenModel/XenAPI/vbd_type.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(vbd_typeConverter))] public enum vbd_type { - CD, Disk, Floppy, unknown + /// + /// VBD will appear to guest as CD + /// + CD, + /// + /// VBD will appear to guest as disk + /// + Disk, + /// + /// VBD will appear as a floppy + /// + Floppy, + unknown } public static class vbd_type_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((vbd_type)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vdi_operations.cs b/XenModel/XenAPI/vdi_operations.cs index 7cd5fd5e7..4d89ed60d 100644 --- a/XenModel/XenAPI/vdi_operations.cs +++ b/XenModel/XenAPI/vdi_operations.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,75 @@ namespace XenAPI [JsonConverter(typeof(vdi_operationsConverter))] public enum vdi_operations { - clone, copy, resize, resize_online, snapshot, mirror, destroy, forget, update, force_unlock, generate_config, enable_cbt, disable_cbt, data_destroy, list_changed_blocks, set_on_boot, blocked, unknown + /// + /// Cloning the VDI + /// + clone, + /// + /// Copying the VDI + /// + copy, + /// + /// Resizing the VDI + /// + resize, + /// + /// Resizing the VDI which may or may not be online + /// + resize_online, + /// + /// Snapshotting the VDI + /// + snapshot, + /// + /// Mirroring the VDI + /// + mirror, + /// + /// Destroying the VDI + /// + destroy, + /// + /// Forget about the VDI + /// + forget, + /// + /// Refreshing the fields of the VDI + /// + update, + /// + /// Forcibly unlocking the VDI + /// + force_unlock, + /// + /// Generating static configuration + /// + generate_config, + /// + /// Enabling changed block tracking for a VDI + /// + enable_cbt, + /// + /// Disabling changed block tracking for a VDI + /// + disable_cbt, + /// + /// Deleting the data of the VDI + /// + data_destroy, + /// + /// Exporting a bitmap that shows the changed blocks between two VDIs + /// + list_changed_blocks, + /// + /// Setting the on_boot field of the VDI + /// + set_on_boot, + /// + /// Operations on this VDI are temporarily blocked + /// + blocked, + unknown } public static class vdi_operations_helper @@ -101,4 +168,4 @@ namespace XenAPI writer.WriteValue(((vdi_operations)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vdi_type.cs b/XenModel/XenAPI/vdi_type.cs index c2d32823c..82d8cb282 100644 --- a/XenModel/XenAPI/vdi_type.cs +++ b/XenModel/XenAPI/vdi_type.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,51 @@ namespace XenAPI [JsonConverter(typeof(vdi_typeConverter))] public enum vdi_type { - system, user, ephemeral, suspend, crashdump, ha_statefile, metadata, redo_log, rrd, pvs_cache, cbt_metadata, unknown + /// + /// a disk that may be replaced on upgrade + /// + system, + /// + /// a disk that is always preserved on upgrade + /// + user, + /// + /// a disk that may be reformatted on upgrade + /// + ephemeral, + /// + /// a disk that stores a suspend image + /// + suspend, + /// + /// a disk that stores VM crashdump information + /// + crashdump, + /// + /// a disk used for HA storage heartbeating + /// + ha_statefile, + /// + /// a disk used for HA Pool metadata + /// + metadata, + /// + /// a disk used for a general metadata redo-log + /// + redo_log, + /// + /// a disk that stores SR-level RRDs + /// + rrd, + /// + /// a disk that stores PVS cache data + /// + pvs_cache, + /// + /// Metadata about a snapshot VDI that has been deleted: the set of blocks that changed between some previous version of the disk and the version tracked by the snapshot. + /// + cbt_metadata, + unknown } public static class vdi_type_helper @@ -89,4 +132,4 @@ namespace XenAPI writer.WriteValue(((vdi_type)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vgpu_type_implementation.cs b/XenModel/XenAPI/vgpu_type_implementation.cs index c79ea1c8c..30d588c37 100644 --- a/XenModel/XenAPI/vgpu_type_implementation.cs +++ b/XenModel/XenAPI/vgpu_type_implementation.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,27 @@ namespace XenAPI [JsonConverter(typeof(vgpu_type_implementationConverter))] public enum vgpu_type_implementation { - passthrough, nvidia, gvt_g, mxgpu, unknown + /// + /// Pass through an entire physical GPU to a guest + /// + passthrough, + /// + /// vGPU using NVIDIA hardware + /// + nvidia, + /// + /// vGPU using NVIDIA hardware with SR-IOV + /// + nvidia_sriov, + /// + /// vGPU using Intel GVT-g + /// + gvt_g, + /// + /// vGPU using AMD MxGPU + /// + mxgpu, + unknown } public static class vgpu_type_implementation_helper @@ -58,6 +77,8 @@ namespace XenAPI return "passthrough"; case vgpu_type_implementation.nvidia: return "nvidia"; + case vgpu_type_implementation.nvidia_sriov: + return "nvidia_sriov"; case vgpu_type_implementation.gvt_g: return "gvt_g"; case vgpu_type_implementation.mxgpu: @@ -75,4 +96,4 @@ namespace XenAPI writer.WriteValue(((vgpu_type_implementation)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vif_ipv4_configuration_mode.cs b/XenModel/XenAPI/vif_ipv4_configuration_mode.cs index 8228cbcd8..025866fc1 100644 --- a/XenModel/XenAPI/vif_ipv4_configuration_mode.cs +++ b/XenModel/XenAPI/vif_ipv4_configuration_mode.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(vif_ipv4_configuration_modeConverter))] public enum vif_ipv4_configuration_mode { - None, Static, unknown + /// + /// Follow the default IPv4 configuration of the guest (this is guest-dependent) + /// + None, + /// + /// Static IPv4 address configuration + /// + Static, + unknown } public static class vif_ipv4_configuration_mode_helper @@ -71,4 +78,4 @@ namespace XenAPI writer.WriteValue(((vif_ipv4_configuration_mode)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vif_ipv6_configuration_mode.cs b/XenModel/XenAPI/vif_ipv6_configuration_mode.cs index 8258ebf54..6e929c081 100644 --- a/XenModel/XenAPI/vif_ipv6_configuration_mode.cs +++ b/XenModel/XenAPI/vif_ipv6_configuration_mode.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(vif_ipv6_configuration_modeConverter))] public enum vif_ipv6_configuration_mode { - None, Static, unknown + /// + /// Follow the default IPv6 configuration of the guest (this is guest-dependent) + /// + None, + /// + /// Static IPv6 address configuration + /// + Static, + unknown } public static class vif_ipv6_configuration_mode_helper @@ -71,4 +78,4 @@ namespace XenAPI writer.WriteValue(((vif_ipv6_configuration_mode)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vif_locking_mode.cs b/XenModel/XenAPI/vif_locking_mode.cs index 526f24e0f..01c8e268a 100644 --- a/XenModel/XenAPI/vif_locking_mode.cs +++ b/XenModel/XenAPI/vif_locking_mode.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,23 @@ namespace XenAPI [JsonConverter(typeof(vif_locking_modeConverter))] public enum vif_locking_mode { - network_default, locked, unlocked, disabled, unknown + /// + /// No specific configuration set - default network policy applies + /// + network_default, + /// + /// Only traffic to a specific MAC and a list of IPv4 or IPv6 addresses is permitted + /// + locked, + /// + /// All traffic is permitted + /// + unlocked, + /// + /// No traffic is permitted + /// + disabled, + unknown } public static class vif_locking_mode_helper @@ -75,4 +90,4 @@ namespace XenAPI writer.WriteValue(((vif_locking_mode)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vif_operations.cs b/XenModel/XenAPI/vif_operations.cs index 1f6deb9d7..062813b55 100644 --- a/XenModel/XenAPI/vif_operations.cs +++ b/XenModel/XenAPI/vif_operations.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(vif_operationsConverter))] public enum vif_operations { - attach, plug, unplug, unknown + /// + /// Attempting to attach this VIF to a VM + /// + attach, + /// + /// Attempting to hotplug this VIF + /// + plug, + /// + /// Attempting to hot unplug this VIF + /// + unplug, + unknown } public static class vif_operations_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((vif_operations)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vm_appliance_operation.cs b/XenModel/XenAPI/vm_appliance_operation.cs index 8901d69ff..f9cf51873 100644 --- a/XenModel/XenAPI/vm_appliance_operation.cs +++ b/XenModel/XenAPI/vm_appliance_operation.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,23 @@ namespace XenAPI [JsonConverter(typeof(vm_appliance_operationConverter))] public enum vm_appliance_operation { - start, clean_shutdown, hard_shutdown, shutdown, unknown + /// + /// Start + /// + start, + /// + /// Clean shutdown + /// + clean_shutdown, + /// + /// Hard shutdown + /// + hard_shutdown, + /// + /// Shutdown + /// + shutdown, + unknown } public static class vm_appliance_operation_helper @@ -75,4 +90,4 @@ namespace XenAPI writer.WriteValue(((vm_appliance_operation)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vm_operations.cs b/XenModel/XenAPI/vm_operations.cs index 321d24dc6..cebf3ee2f 100644 --- a/XenModel/XenAPI/vm_operations.cs +++ b/XenModel/XenAPI/vm_operations.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,199 @@ namespace XenAPI [JsonConverter(typeof(vm_operationsConverter))] public enum vm_operations { - snapshot, clone, copy, create_template, revert, checkpoint, snapshot_with_quiesce, provision, start, start_on, pause, unpause, clean_shutdown, clean_reboot, hard_shutdown, power_state_reset, hard_reboot, suspend, csvm, resume, resume_on, pool_migrate, migrate_send, get_boot_record, send_sysrq, send_trigger, query_services, shutdown, call_plugin, changing_memory_live, awaiting_memory_live, changing_dynamic_range, changing_static_range, changing_memory_limits, changing_shadow_memory, changing_shadow_memory_live, changing_VCPUs, changing_VCPUs_live, changing_NVRAM, assert_operation_valid, data_source_op, update_allowed_operations, make_into_template, import, export, metadata_export, reverting, destroy, unknown + /// + /// refers to the operation "snapshot" + /// + snapshot, + /// + /// refers to the operation "clone" + /// + clone, + /// + /// refers to the operation "copy" + /// + copy, + /// + /// refers to the operation "create_template" + /// + create_template, + /// + /// refers to the operation "revert" + /// + revert, + /// + /// refers to the operation "checkpoint" + /// + checkpoint, + /// + /// refers to the operation "snapshot_with_quiesce" + /// + snapshot_with_quiesce, + /// + /// refers to the operation "provision" + /// + provision, + /// + /// refers to the operation "start" + /// + start, + /// + /// refers to the operation "start_on" + /// + start_on, + /// + /// refers to the operation "pause" + /// + pause, + /// + /// refers to the operation "unpause" + /// + unpause, + /// + /// refers to the operation "clean_shutdown" + /// + clean_shutdown, + /// + /// refers to the operation "clean_reboot" + /// + clean_reboot, + /// + /// refers to the operation "hard_shutdown" + /// + hard_shutdown, + /// + /// refers to the operation "power_state_reset" + /// + power_state_reset, + /// + /// refers to the operation "hard_reboot" + /// + hard_reboot, + /// + /// refers to the operation "suspend" + /// + suspend, + /// + /// refers to the operation "csvm" + /// + csvm, + /// + /// refers to the operation "resume" + /// + resume, + /// + /// refers to the operation "resume_on" + /// + resume_on, + /// + /// refers to the operation "pool_migrate" + /// + pool_migrate, + /// + /// refers to the operation "migrate_send" + /// + migrate_send, + /// + /// refers to the operation "get_boot_record" + /// + get_boot_record, + /// + /// refers to the operation "send_sysrq" + /// + send_sysrq, + /// + /// refers to the operation "send_trigger" + /// + send_trigger, + /// + /// refers to the operation "query_services" + /// + query_services, + /// + /// refers to the operation "shutdown" + /// + shutdown, + /// + /// refers to the operation "call_plugin" + /// + call_plugin, + /// + /// Changing the memory settings + /// + changing_memory_live, + /// + /// Waiting for the memory settings to change + /// + awaiting_memory_live, + /// + /// Changing the memory dynamic range + /// + changing_dynamic_range, + /// + /// Changing the memory static range + /// + changing_static_range, + /// + /// Changing the memory limits + /// + changing_memory_limits, + /// + /// Changing the shadow memory for a halted VM. + /// + changing_shadow_memory, + /// + /// Changing the shadow memory for a running VM. + /// + changing_shadow_memory_live, + /// + /// Changing VCPU settings for a halted VM. + /// + changing_VCPUs, + /// + /// Changing VCPU settings for a running VM. + /// + changing_VCPUs_live, + /// + /// Changing NVRAM for a halted VM. + /// + changing_NVRAM, + /// + /// + /// + assert_operation_valid, + /// + /// Add, remove, query or list data sources + /// + data_source_op, + /// + /// + /// + update_allowed_operations, + /// + /// Turning this VM into a template + /// + make_into_template, + /// + /// importing a VM from a network stream + /// + import, + /// + /// exporting a VM to a network stream + /// + export, + /// + /// exporting VM metadata to a network stream + /// + metadata_export, + /// + /// Reverting the VM to a previous snapshotted state + /// + reverting, + /// + /// refers to the act of uninstalling the VM + /// + destroy, + unknown } public static class vm_operations_helper @@ -163,4 +354,4 @@ namespace XenAPI writer.WriteValue(((vm_operations)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vm_power_state.cs b/XenModel/XenAPI/vm_power_state.cs index 9bad63c06..3a7f4c71c 100644 --- a/XenModel/XenAPI/vm_power_state.cs +++ b/XenModel/XenAPI/vm_power_state.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,23 @@ namespace XenAPI [JsonConverter(typeof(vm_power_stateConverter))] public enum vm_power_state { - Halted, Paused, Running, Suspended, unknown + /// + /// VM is offline and not using any resources + /// + Halted, + /// + /// All resources have been allocated but the VM itself is paused and its vCPUs are not running + /// + Paused, + /// + /// Running + /// + Running, + /// + /// VM state has been saved to disk and it is nolonger running. Note that disks remain in-use while the VM is suspended. + /// + Suspended, + unknown } public static class vm_power_state_helper @@ -75,4 +90,4 @@ namespace XenAPI writer.WriteValue(((vm_power_state)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vmpp_archive_frequency.cs b/XenModel/XenAPI/vmpp_archive_frequency.cs index 0b5af238d..e24fa2b64 100644 --- a/XenModel/XenAPI/vmpp_archive_frequency.cs +++ b/XenModel/XenAPI/vmpp_archive_frequency.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,23 @@ namespace XenAPI [JsonConverter(typeof(vmpp_archive_frequencyConverter))] public enum vmpp_archive_frequency { - never, always_after_backup, daily, weekly, unknown + /// + /// Never archive + /// + never, + /// + /// Archive after backup + /// + always_after_backup, + /// + /// Daily archives + /// + daily, + /// + /// Weekly backups + /// + weekly, + unknown } public static class vmpp_archive_frequency_helper @@ -75,4 +90,4 @@ namespace XenAPI writer.WriteValue(((vmpp_archive_frequency)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vmpp_archive_target_type.cs b/XenModel/XenAPI/vmpp_archive_target_type.cs index deb6d7392..11003ff81 100644 --- a/XenModel/XenAPI/vmpp_archive_target_type.cs +++ b/XenModel/XenAPI/vmpp_archive_target_type.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(vmpp_archive_target_typeConverter))] public enum vmpp_archive_target_type { - none, cifs, nfs, unknown + /// + /// No target config + /// + none, + /// + /// CIFS target config + /// + cifs, + /// + /// NFS target config + /// + nfs, + unknown } public static class vmpp_archive_target_type_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((vmpp_archive_target_type)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vmpp_backup_frequency.cs b/XenModel/XenAPI/vmpp_backup_frequency.cs index 83ac07da4..3009dc0d1 100644 --- a/XenModel/XenAPI/vmpp_backup_frequency.cs +++ b/XenModel/XenAPI/vmpp_backup_frequency.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(vmpp_backup_frequencyConverter))] public enum vmpp_backup_frequency { - hourly, daily, weekly, unknown + /// + /// Hourly backups + /// + hourly, + /// + /// Daily backups + /// + daily, + /// + /// Weekly backups + /// + weekly, + unknown } public static class vmpp_backup_frequency_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((vmpp_backup_frequency)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vmpp_backup_type.cs b/XenModel/XenAPI/vmpp_backup_type.cs index 57f1a7098..04a6c67b2 100644 --- a/XenModel/XenAPI/vmpp_backup_type.cs +++ b/XenModel/XenAPI/vmpp_backup_type.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,15 @@ namespace XenAPI [JsonConverter(typeof(vmpp_backup_typeConverter))] public enum vmpp_backup_type { - snapshot, checkpoint, unknown + /// + /// The backup is a snapshot + /// + snapshot, + /// + /// The backup is a checkpoint + /// + checkpoint, + unknown } public static class vmpp_backup_type_helper @@ -71,4 +78,4 @@ namespace XenAPI writer.WriteValue(((vmpp_backup_type)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vmss_frequency.cs b/XenModel/XenAPI/vmss_frequency.cs index 27f273944..2b2124a77 100644 --- a/XenModel/XenAPI/vmss_frequency.cs +++ b/XenModel/XenAPI/vmss_frequency.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(vmss_frequencyConverter))] public enum vmss_frequency { - hourly, daily, weekly, unknown + /// + /// Hourly snapshots + /// + hourly, + /// + /// Daily snapshots + /// + daily, + /// + /// Weekly snapshots + /// + weekly, + unknown } public static class vmss_frequency_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((vmss_frequency)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vmss_type.cs b/XenModel/XenAPI/vmss_type.cs index ff1785693..c096fc1ba 100644 --- a/XenModel/XenAPI/vmss_type.cs +++ b/XenModel/XenAPI/vmss_type.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(vmss_typeConverter))] public enum vmss_type { - snapshot, checkpoint, snapshot_with_quiesce, unknown + /// + /// The snapshot is a disk snapshot + /// + snapshot, + /// + /// The snapshot is a checkpoint + /// + checkpoint, + /// + /// Support for VSS has been removed. + /// + snapshot_with_quiesce, + unknown } public static class vmss_type_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((vmss_type)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenAPI/vusb_operations.cs b/XenModel/XenAPI/vusb_operations.cs index f633e18b8..688a7ec7e 100644 --- a/XenModel/XenAPI/vusb_operations.cs +++ b/XenModel/XenAPI/vusb_operations.cs @@ -28,7 +28,6 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ - using Newtonsoft.Json; @@ -37,7 +36,19 @@ namespace XenAPI [JsonConverter(typeof(vusb_operationsConverter))] public enum vusb_operations { - attach, plug, unplug, unknown + /// + /// Attempting to attach this VUSB to a VM + /// + attach, + /// + /// Attempting to plug this VUSB into a VM + /// + plug, + /// + /// Attempting to hot unplug this VUSB + /// + unplug, + unknown } public static class vusb_operations_helper @@ -73,4 +84,4 @@ namespace XenAPI writer.WriteValue(((vusb_operations)value).StringOf()); } } -} +} \ No newline at end of file diff --git a/XenModel/XenModel.csproj b/XenModel/XenModel.csproj index 64d71a542..d18f7a03c 100755 --- a/XenModel/XenModel.csproj +++ b/XenModel/XenModel.csproj @@ -23,6 +23,7 @@ prompt 4 false + true pdbonly @@ -45,7 +46,7 @@ False - ..\packages\Newtonsoft.Json.dll + ..\packages\Newtonsoft.Json.CH.dll @@ -55,7 +56,6 @@ - @@ -158,8 +158,12 @@ + + + + @@ -225,7 +229,6 @@ - @@ -239,7 +242,6 @@ - @@ -487,7 +489,6 @@ - @@ -611,7 +612,7 @@ - - + \ No newline at end of file diff --git a/XenOvfTransport/XenOvfTransportBase.cs b/XenOvfTransport/XenOvfTransportBase.cs index 149dedff0..7ad45e159 100644 --- a/XenOvfTransport/XenOvfTransportBase.cs +++ b/XenOvfTransport/XenOvfTransportBase.cs @@ -30,10 +30,6 @@ */ using System; -using System.Collections.Generic; -using System.Net; -using System.Net.Security; -using System.Security.Cryptography.X509Certificates; using XenAPI; @@ -41,36 +37,27 @@ namespace XenOvfTransport { public class XenOvfTransportBase { - public Action UpdateHandler { get; set; } + public Action UpdateHandler { private get; set; } protected string m_networkUuid; protected bool m_isTvmIpStatic; protected string m_tvmIpAddress; protected string m_tvmSubnetMask; protected string m_tvmGateway; - - protected void OnUpdate(XenOvfTranportEventArgs e) - { - if (UpdateHandler != null) - UpdateHandler.Invoke(e); - } - protected readonly Session XenSession; - internal Uri _XenServer; - + protected readonly Uri _uri; protected iSCSI m_iscsi; private bool m_cancel; - protected XenOvfTransportBase() + protected XenOvfTransportBase(Uri uri, Session session) { - ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate; + _uri = uri; + XenSession = session; } - protected XenOvfTransportBase(Uri xenserver, Session session) - : this() + protected void OnUpdate(XenOvfTransportEventArgs e) { - _XenServer = xenserver; - XenSession = session; + UpdateHandler?.Invoke(e); } public bool Cancel @@ -92,28 +79,5 @@ namespace XenOvfTransport m_tvmSubnetMask = tvmSubnetMask; m_tvmGateway = tvmGateway; } - - public static bool ValidateServerCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors sslPolicyErrors) - { - return true; - } - - public static VM FindiSCSI(XenAPI.Session xenSession) - { - Dictionary,VM> iSCSIDict = VM.get_all_records(xenSession); - - foreach (XenRef key in iSCSIDict.Keys) - { - if (iSCSIDict[key].is_a_template) - { - if (iSCSIDict[key].other_config.ContainsKey("transfervm") && - iSCSIDict[key].other_config["transfervm"] == "true") - { - return iSCSIDict[key]; - } - } - } - return null; - } } } diff --git a/XenOvfTransport/XenOvfTransportEvent.cs b/XenOvfTransport/XenOvfTransportEvent.cs index 11a08c37b..5ac9c0155 100644 --- a/XenOvfTransport/XenOvfTransportEvent.cs +++ b/XenOvfTransport/XenOvfTransportEvent.cs @@ -30,97 +30,41 @@ */ using System; -using System.Collections.Generic; -using System.Text; namespace XenOvfTransport { - public enum XenOvfTranportEventType + public class XenOvfTransportEventArgs : EventArgs { - FileStart, - FileProgress, - FileComplete, - FileCancelled, - ImportStart, - ImportProgress, - ImportThreadComplete, - ImportComplete, - ImportCancelled, - ExportStart, - ExportProgress, - ExportThreadComplete, - ExportComplete, - ExportCancelled, - Progress, - MarqueeOn, - MarqueeOff, - Failure, - Unknown + public XenOvfTransportEventArgs(TransportStep step, string message) + { + Step = step; + Message = message; + } + + public XenOvfTransportEventArgs(TransportStep step, string message, ulong transferred, ulong total) + : this(step, message) + { + Total = total; + Transferred = transferred; + } + + public TransportStep Step { get; } + + public string Message { get; } + + public ulong Total { get; } + + public ulong Transferred { get; } } - public class XenOvfTranportEventArgs : EventArgs + public enum TransportStep { - private XenOvfTranportEventType _type = XenOvfTranportEventType.Unknown; - private ulong _total; - private ulong _transfered; - private string _target; - private string _message; - private Exception _exception; - - public XenOvfTranportEventArgs(XenOvfTranportEventType type, string target, string message) - { - _type = type; - _target = target; - _message = message; - } - public XenOvfTranportEventArgs(XenOvfTranportEventType type, string target, string message, Exception exception) - { - _type = type; - _target = target; - _message = message; - _exception = exception; - } - - public XenOvfTranportEventArgs(XenOvfTranportEventType type, string target, string message, ulong transfered, ulong total) - { - _type = type; - _target = target; - _message = message; - _total = total; - _transfered = transfered; - } - - public string Target - { - get { return _target; } - } - - public string Message - { - get { return _message; } - } - - public ulong Total - { - get { return _total; } - } - - public ulong Transfered - { - get { return _transfered; } - } - - public XenOvfTranportEventType Type - { - get { return _type; } - } - - public Exception exception - { - get - { - return _exception; - } - } + Export, + Import, + Security, + Compression, + CdDvdDrive, + SendData, + Download } } diff --git a/XenOvfTransport/app.config b/XenOvfTransport/app.config index 22dc5567a..a7d69729f 100644 --- a/XenOvfTransport/app.config +++ b/XenOvfTransport/app.config @@ -8,9 +8,6 @@ - - [XenServer product] P2V (Orela) Server - P2V Automatically created. @@ -35,9 +32,6 @@ /var/opt/xen/iso_import - - [Citrix VM Tools] - xenserver-linuxfixup-disk.iso @@ -61,7 +55,8 @@ - + Pool-wide network associated with eth0 Network 0 @@ -73,9 +68,6 @@ Transfer VM for VDI {0} - - [XenServer product] Transfer - iSCSI @@ -84,7 +76,8 @@ - + network_config=auto #REQUIRED: MUST BE FIRST Values: "auto" "manual" network_mode=dhcp #REQUIRED: MUST BE SECOND Values: "dhcp" "manual" network_port=3260 #OPTIONAL: port for config is manual @@ -100,7 +93,8 @@ - + \PAGEFILE.SYS \HIBERFIL.SYS \SYSTEM VOLUME INFORMATION @@ -120,7 +114,7 @@ True - + 256 @@ -131,6 +125,15 @@ 1000 + + [XenServer product] P2V (Orela) Server + + + [Citrix VM Tools] + + + [XenServer product] Transfer + diff --git a/XenOvfTransport/iSCSI.cs b/XenOvfTransport/iSCSI.cs index 04e350491..eb5d3d205 100644 --- a/XenOvfTransport/iSCSI.cs +++ b/XenOvfTransport/iSCSI.cs @@ -63,7 +63,7 @@ namespace XenOvfTransport public bool Cancel { get; set; } - public Action UpdateHandler { get; set; } + public Action UpdateHandler { get; set; } public Disk ScsiDisk { @@ -119,7 +119,7 @@ namespace XenOvfTransport try { - log.DebugFormat(Messages.FILES_TRANSPORT_SETUP, vdiuuid); + log.DebugFormat("Connecting virtual disk {0}... ", vdiuuid); TargetAddress ta = new TargetAddress(ipaddress, ipport, targetGroupTag); TargetInfo[] targets = initiator.GetTargets(ta); log.InfoFormat("iSCSI.Connect found {0} targets, connecting to: {1}", targets.Length, targets[0].Name); @@ -128,7 +128,7 @@ namespace XenOvfTransport } catch (Exception ex) { - log.ErrorFormat("{0} {1}", Messages.ISCSI_ERROR, ex.Message); + log.Error($"Failed to connect to VDI {vdiuuid} over iSCSI.", ex); Thread.Sleep(new TimeSpan(0, 0, 5)); iSCSIConnectRetry--; } @@ -163,9 +163,9 @@ namespace XenOvfTransport } } } - catch (Exception) + catch (Exception e) { - log.Error("Could not determin LUN"); + log.Error("Could not determine LUN", e); throw; } @@ -179,7 +179,7 @@ namespace XenOvfTransport } catch (Exception ex) { - log.ErrorFormat("{0} {1}", Messages.ISCSI_ERROR_CANNOT_OPEN_DISK, ex.Message); + log.Error("Failed to open virtual disk.", ex); throw new Exception(Messages.ISCSI_ERROR_CANNOT_OPEN_DISK, ex); } } @@ -195,7 +195,7 @@ namespace XenOvfTransport } catch (Exception exn) { - log.DebugFormat("Failed to dispose iDisk: {0}. Continuing.", exn); + log.Debug("Failed to dispose iDisk. Continuing.", exn); } try @@ -206,7 +206,7 @@ namespace XenOvfTransport } catch (Exception exn) { - log.DebugFormat("Failed to dispose iScsiSession: {0}. Continuing.", exn); + log.Debug("Failed to dispose iScsiSession. Continuing.", exn); } StopiScsiTarget(xenSession); @@ -223,7 +223,7 @@ namespace XenOvfTransport _bytestotal = (ulong)source.Length; string updatemsg = string.Format(Messages.ISCSI_COPY_PROGRESS, filename); - OnUpdate(new XenOvfTranportEventArgs(XenOvfTranportEventType.FileStart, "SendData Start", updatemsg, 0, _bytestotal)); + OnUpdate(new XenOvfTransportEventArgs(TransportStep.SendData, updatemsg, 0, _bytestotal)); // Create a hash algorithm to compute the hash from separate blocks during the copy. using (var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(_hashAlgorithmName)) @@ -232,7 +232,7 @@ namespace XenOvfTransport { if (Cancel) { - log.InfoFormat(Messages.ISCSI_COPY_CANCELLED, filename); + log.InfoFormat("Canceled transfer of virtual disk {0}.", filename); throw new OperationCanceledException(string.Format(Messages.ISCSI_COPY_CANCELLED, filename)); } @@ -264,12 +264,12 @@ namespace XenOvfTransport _bytescopied = (ulong)offset; - OnUpdate(new XenOvfTranportEventArgs(XenOvfTranportEventType.FileProgress, "SendData Start", updatemsg, _bytescopied, _bytestotal)); + OnUpdate(new XenOvfTransportEventArgs(TransportStep.SendData, updatemsg, _bytescopied, _bytestotal)); } catch (Exception ex) { + log.Warn("Failed to transfer virtual disk.", ex); var message = string.Format(Messages.ISCSI_COPY_ERROR, filename); - log.Warn(message); throw new Exception(message, ex); } } @@ -283,14 +283,14 @@ namespace XenOvfTransport hashAlgorithm.TransformBlock(_buffer, 0, bytesRead / 2, _buffer, 0); // Compute the final hash. - hashAlgorithm.TransformFinalBlock(_buffer, bytesRead / 2, bytesRead / 2); + hashAlgorithm.TransformFinalBlock(_buffer, bytesRead / 2, bytesRead / 2 + bytesRead % 2); _copyHash = hashAlgorithm.Hash; } } destination.Flush(); - OnUpdate(new XenOvfTranportEventArgs(XenOvfTranportEventType.FileComplete, "SendData Completed", updatemsg, _bytescopied, _bytestotal)); + OnUpdate(new XenOvfTransportEventArgs(TransportStep.SendData, updatemsg, _bytescopied, _bytestotal)); log.InfoFormat("Finished copying {0} bytes to {1} via iSCSI.", source.Length, filename); } @@ -305,7 +305,7 @@ namespace XenOvfTransport long limit = (long)_bytescopied; string updatemsg = string.Format(Messages.ISCSI_VERIFY_PROGRESS, filename); - OnUpdate(new XenOvfTranportEventArgs(XenOvfTranportEventType.FileStart, "SendData Start", updatemsg, 0, (ulong)limit)); + OnUpdate(new XenOvfTransportEventArgs(TransportStep.SendData, updatemsg, 0, (ulong)limit)); // Create a hash algorithm to compute the hash from separate blocks in the same way as Copy(). using (var hashAlgorithm = System.Security.Cryptography.HashAlgorithm.Create(_hashAlgorithmName)) @@ -314,7 +314,7 @@ namespace XenOvfTransport { if (Cancel) { - log.Info(Messages.ISCSI_VERIFY_CANCELLED); + log.Info("Canceled virtual disk verification after export."); throw new OperationCanceledException(Messages.ISCSI_VERIFY_CANCELLED); } @@ -337,12 +337,12 @@ namespace XenOvfTransport offset += bytesRead; - OnUpdate(new XenOvfTranportEventArgs(XenOvfTranportEventType.FileProgress, "SendData Start", updatemsg, (ulong)offset, (ulong)limit)); + OnUpdate(new XenOvfTransportEventArgs(TransportStep.SendData, updatemsg, (ulong)offset, (ulong)limit)); } catch (Exception ex) { + log.Warn($"Failed to verify virtual disk {filename}.", ex); var message = string.Format(Messages.ISCSI_VERIFY_ERROR, filename); - log.WarnFormat("{0} {1}", message, ex.Message); throw new Exception(message, ex); } } @@ -354,17 +354,17 @@ namespace XenOvfTransport hashAlgorithm.TransformBlock(_buffer, 0, bytesRead / 2, _buffer, 0); // Compute the final hash. - hashAlgorithm.TransformFinalBlock(_buffer, bytesRead / 2, bytesRead / 2); + hashAlgorithm.TransformFinalBlock(_buffer, bytesRead / 2, bytesRead / 2 + bytesRead % 2); // Compare targetHash with copyHash. if (!System.Linq.Enumerable.SequenceEqual(_copyHash, hashAlgorithm.Hash)) { - log.Error(Messages.ISCSI_VERIFY_INVALID); + log.Error("The exported virtual disk does not match the source."); throw new Exception(Messages.ISCSI_VERIFY_INVALID); } } - OnUpdate(new XenOvfTranportEventArgs(XenOvfTranportEventType.FileComplete, "SendData Completed", updatemsg, (ulong)offset, (ulong)limit)); + OnUpdate(new XenOvfTransportEventArgs(TransportStep.SendData, updatemsg, (ulong)offset, (ulong)limit)); log.InfoFormat("Finished verifying {0} bytes in {1} after copy via iSCSI.", target.Length, filename); } @@ -378,7 +378,7 @@ namespace XenOvfTransport ulong p = 0; string updatemsg = string.Format(Messages.ISCSI_WIM_PROGRESS_FORMAT, fileindex, filecount, filename); - OnUpdate(new XenOvfTranportEventArgs(XenOvfTranportEventType.FileStart, "SendData Start", updatemsg, 0, _bytestotal)); + OnUpdate(new XenOvfTransportEventArgs(TransportStep.SendData, updatemsg, 0, _bytestotal)); while (true) { @@ -398,21 +398,21 @@ namespace XenOvfTransport } if (Cancel) { - log.WarnFormat(Messages.ISCSI_COPY_CANCELLED, filename); + log.WarnFormat("Cancelled transfer of virtual disk {0}.", filename); throw new OperationCanceledException(string.Format(Messages.ISCSI_COPY_CANCELLED, filename)); } p += (ulong)n; _bytescopied = p; if (p >= (ulong)source.Length) break; - OnUpdate(new XenOvfTranportEventArgs(XenOvfTranportEventType.FileProgress, "SendData Start", updatemsg, _bytescopied, _bytestotal)); + OnUpdate(new XenOvfTransportEventArgs(TransportStep.SendData, updatemsg, _bytescopied, _bytestotal)); } catch (Exception ex) { if (ex is OperationCanceledException) throw; + log.Warn($"Failed to transfer virtual disk {filename}.", ex); var message = string.Format(Messages.ISCSI_COPY_ERROR, filename); - log.Warn(message); throw new Exception(message, ex); } } @@ -422,7 +422,7 @@ namespace XenOvfTransport if (source != null) source.Close(); if (destination != null) destination.Close(); } - OnUpdate(new XenOvfTranportEventArgs(XenOvfTranportEventType.FileComplete, "SendData Completed", updatemsg, _bytescopied, _bytestotal)); + OnUpdate(new XenOvfTransportEventArgs(TransportStep.SendData, updatemsg, _bytescopied, _bytestotal)); log.Info("iSCSI.Copy done with copy."); } @@ -473,7 +473,7 @@ namespace XenOvfTransport #region PRIVATE - private void OnUpdate(XenOvfTranportEventArgs e) + private void OnUpdate(XenOvfTransportEventArgs e) { if (UpdateHandler != null) UpdateHandler.Invoke(e); @@ -505,7 +505,7 @@ namespace XenOvfTransport } catch (Exception ex) { - log.ErrorFormat("{0} {1}", Messages.ISCSI_START_ERROR, ex.Message); + log.Error("Failed to start Transfer VM.", ex); throw new Exception(Messages.ISCSI_START_ERROR, ex); } } @@ -531,7 +531,7 @@ namespace XenOvfTransport } catch (Exception ex) { - log.WarnFormat("{0} {1}", Messages.ISCSI_SHUTDOWN_ERROR, ex.Message); + log.Warn("Failed to shutdown Transfer VM.", ex); throw new Exception(Messages.ISCSI_SHUTDOWN_ERROR, ex); } } @@ -560,9 +560,9 @@ namespace XenOvfTransport return true; } } - catch (System.Xml.XmlException) + catch (System.Xml.XmlException ex) { - log.DebugFormat("Failed to parse the plugin record: '{0}'", rec); + log.Debug("Failed to parse the transfer plugin record.", ex); } return false; } diff --git a/XenServerHealthCheck/CredentialReceiver.cs b/XenServerHealthCheck/CredentialReceiver.cs index bf6bc6893..0340003b9 100755 --- a/XenServerHealthCheck/CredentialReceiver.cs +++ b/XenServerHealthCheck/CredentialReceiver.cs @@ -32,7 +32,6 @@ using System; using System.Text; using System.Security.Principal; using System.IO.Pipes; -using XenAPI; using XenAdmin.Model; namespace XenServerHealthCheck @@ -133,7 +132,7 @@ namespace XenServerHealthCheck } catch (Exception exp) { - log.ErrorFormat("Receive credential with error {0}", exp.Message); + log.Error("Receive credential with error:", exp); break; } } while (pipeServer.IsConnected); @@ -142,7 +141,7 @@ namespace XenServerHealthCheck } catch (Exception exp) { - log.Error(exp.Message); + log.Error(exp, exp); } } } diff --git a/XenServerHealthCheck/Registry.cs b/XenServerHealthCheck/Registry.cs index 95ae4f41a..690c65ad9 100755 --- a/XenServerHealthCheck/Registry.cs +++ b/XenServerHealthCheck/Registry.cs @@ -61,8 +61,7 @@ namespace XenServerHealthCheck } catch (Exception e) { - log.DebugFormat(@"Failed to read {0}\{1} from registry", HEALTH_CHECK_LOCAL_KEYS, k); - log.Debug(e, e); + log.Debug($"Failed to read {HEALTH_CHECK_LOCAL_KEYS}\\{k} from registry", e); return null; } } @@ -95,8 +94,7 @@ namespace XenServerHealthCheck } catch (Exception e) { - log.DebugFormat(@"Failed to read {0}\{1} from registry}.", HEALTH_CHECK_LOCAL_KEYS, k); - log.Debug(e, e); + log.Debug($"Failed to read {HEALTH_CHECK_LOCAL_KEYS}\\{k} from registry.", e); return 0; } } diff --git a/XenServerHealthCheck/RequestUploadTask.cs b/XenServerHealthCheck/RequestUploadTask.cs index 3fde1a0f9..caaf5b055 100755 --- a/XenServerHealthCheck/RequestUploadTask.cs +++ b/XenServerHealthCheck/RequestUploadTask.cs @@ -150,7 +150,7 @@ namespace XenServerHealthCheck if ((!haveSuccessfulUpload) || (DateTime.Compare(lastSuccessfulUpload, LastFailedUpload) < 0)) { - log.InfoFormat("Retry since retryInterval{0} - {1} > {2} meeted", LastFailedUpload, DateTime.UtcNow, retryInterval); + log.InfoFormat("Retry since retryInterval{0} - {1} > {2} met", LastFailedUpload, DateTime.UtcNow, retryInterval); needRetry = true; } } diff --git a/XenServerHealthCheck/XenServerHealthCheck.csproj b/XenServerHealthCheck/XenServerHealthCheck.csproj index 2e7c3429c..92fddb147 100755 --- a/XenServerHealthCheck/XenServerHealthCheck.csproj +++ b/XenServerHealthCheck/XenServerHealthCheck.csproj @@ -24,6 +24,7 @@ prompt 4 false + true pdbonly @@ -47,12 +48,6 @@ - - - - - - diff --git a/XenServerHealthCheck/XenServerHealthCheckBugTool.cs b/XenServerHealthCheck/XenServerHealthCheckBugTool.cs index 7b750e20e..75115d87b 100644 --- a/XenServerHealthCheck/XenServerHealthCheckBugTool.cs +++ b/XenServerHealthCheck/XenServerHealthCheckBugTool.cs @@ -213,7 +213,7 @@ namespace XenServerHealthCheck } catch (Exception e) { - log.ErrorFormat("Exception while writing {0} file: {1}", fileName, e); + log.Error($"Exception while writing {fileName} file:", e); } finally { diff --git a/XenServerHealthCheck/XenServerHealthCheckConfigProvider.cs b/XenServerHealthCheck/XenServerHealthCheckConfigProvider.cs index 418d8fd35..26eae88b3 100644 --- a/XenServerHealthCheck/XenServerHealthCheckConfigProvider.cs +++ b/XenServerHealthCheck/XenServerHealthCheckConfigProvider.cs @@ -48,42 +48,24 @@ namespace XenServerHealthCheck { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public Func, IXenConnection, string, AsyncAction.SudoElevationResult> SudoDialogDelegate { get { return FakeSudoDialog; } } + public Func, IXenConnection, string, AsyncAction.SudoElevationResult> SudoDialogDelegate => FakeSudoDialog; - public int ConnectionTimeout - { - get { return Properties.Settings.Default.ConnectionTimeout; } - } + public int ConnectionTimeout => Properties.Settings.Default.ConnectionTimeout; public Session CreateActionSession(Session session, IXenConnection connection) { return SessionFactory.DuplicateSession(session, connection, ConnectionTimeout); } - public bool Exiting - { - get { return false; } - } + public bool Exiting => false; - public bool ForcedExiting - { - get { return false; } - } + public bool ForcedExiting => false; - public string XenCenterUUID - { - get { return ""; } - } + public string XenCenterUUID => ""; - public bool DontSudo - { - get { return false; } - } + public bool DontSudo => false; - public bool ShowHiddenVMs - { - get { return false; } - } + public bool ShowHiddenVMs => false; public string GetXenCenterMetadata(bool isForXenCenter) { diff --git a/devtools/ResxCheck/Properties/AssemblyInfo.cs b/devtools/ResxCheck/Properties/AssemblyInfo.cs deleted file mode 100644 index f08959cab..000000000 --- a/devtools/ResxCheck/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,67 +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.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ResxCheck")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ResxCheck")] -[assembly: AssemblyCopyright("Copyright © 2012")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("8c91561e-914f-4514-91a7-42c22ea012bc")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/devtools/ResxCheck/ResxCheck.cs b/devtools/ResxCheck/ResxCheck.cs deleted file mode 100644 index 1f7f41050..000000000 --- a/devtools/ResxCheck/ResxCheck.cs +++ /dev/null @@ -1,441 +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.IO; -using System.Linq; -using System.Reflection; -using System.Text.RegularExpressions; -using System.Text; -using System.Xml; - - -namespace ResxCheck -{ - static class ResxCheck - { - /// - /// Produces a list of unused resources in Messages and FriendlyNames. - /// - /// If true, will actually purge unused messages from the Messages.resx file - public static void FindUnusedMessages(string rootDir, bool removeUnused) - { - Assembly assembly = Assembly.LoadFrom(Path.Combine(rootDir, @"XenModel\bin\Debug\XenModel.dll")); - - int totalMessages = 0, totalFriendlyErrorNames = 0; - var resources = new List(); - - Type messagesType = assembly.GetType("XenAdmin.Messages"); - Type friendlyNamesType = assembly.GetType("XenAdmin.FriendlyNames"); - - foreach (PropertyInfo property in messagesType.GetProperties(BindingFlags.Static | BindingFlags.NonPublic)) - { - resources.Add("Messages." + property.Name.Trim()); - totalMessages++; - } - foreach (PropertyInfo property in friendlyNamesType.GetProperties(BindingFlags.Static | BindingFlags.NonPublic)) - { - resources.Add("FriendlyNames." + property.Name.Trim()); - totalFriendlyErrorNames++; - } - - // Build file list for project - List files = new List(); - RecursiveGetCsFiles(new DirectoryInfo(rootDir), files); - files.RemoveAll(f => f.Name.StartsWith("Messages.") || f.Name.StartsWith("FriendlyNames.")); - Console.WriteLine(string.Format("Looking in {0} files", files.Count)); - - // Now remove resources from the list if they appear in source files - foreach (FileInfo fileinfo in files) - { - string[] lines = File.ReadAllLines(fileinfo.FullName); - foreach (string line in lines) - { - string curLine = line; - resources.RemoveAll(resource => curLine.Contains(resource)); - } - } - - int messages = 0, friendlyErrorNames = 0; - foreach (string unused in resources) - { - if (unused.StartsWith("Messages.")) - { - messages++; - } - else if (unused.StartsWith("FriendlyNames.")) - { - friendlyErrorNames++; - } - Console.WriteLine(unused); - } - Console.WriteLine(string.Format("Messages.resx: {0}/{1} are unused", messages, totalMessages)); - Console.WriteLine(string.Format("FriendlyNames.resx: {0}/{1} are unused", friendlyErrorNames, totalFriendlyErrorNames)); - - // Remove unused messages from Messages.rex. Note that this method is extremely - // crude and depends on the exact format of the XML. - if (removeUnused) - { - Console.WriteLine("Removing unused messages from Messages.resx"); - - List unusedFromMessages = new List(); - foreach (string line in resources) - { - if (line.StartsWith("Messages.")) - { - unusedFromMessages.Add(line.Substring(9)); - } - } - - string path = Path.Combine(rootDir, "Messages.resx"); - XmlDocument doc = new XmlDocument(); - doc.LoadXml(File.ReadAllText(path)); - - List nodesToRemove = new List(); - foreach (XmlNode node in doc.GetElementsByTagName("data")) - { - if (unusedFromMessages.Contains(node.Attributes["name"].Value)) - { - nodesToRemove.Add(node); - } - } - - foreach (XmlNode node in nodesToRemove) - { - doc.ChildNodes[1].RemoveChild(node); - } - - doc.Save(path); - } - } - - private static void RecursiveGetCsFiles(DirectoryInfo dir, List files) - { - files.AddRange(dir.GetFiles("*.cs")); - foreach (DirectoryInfo subdir in dir.GetDirectories()) - { - RecursiveGetCsFiles(subdir, files); - } - } - - private static void RecursiveGetResxFiles(DirectoryInfo dir, List files) - { - files.AddRange(dir.GetFiles("*.resx")); - foreach (DirectoryInfo subdir in dir.GetDirectories()) - { - if (subdir.Name == "i18n") - continue; - RecursiveGetResxFiles(subdir, files); - } - } - - private static void FindNodesInJaButNotEn(string rootDir) - { - // Find all english resxs - List enResxFiles = new List(); - RecursiveGetResxFiles(new DirectoryInfo(rootDir), enResxFiles); - - foreach (FileInfo enResxFile in enResxFiles) - { - string enResxPath = enResxFile.FullName; - XmlDocument enXml = new XmlDocument(); - enXml.LoadXml(File.ReadAllText(enResxPath)); - - string jaFilename = enResxPath.Substring(rootDir.Length); - jaFilename = jaFilename.Insert(jaFilename.Length - 5, ".ja"); - string jaResxPath = rootDir + "\\i18n\\ja" + jaFilename; - XmlDocument jaXml = new XmlDocument(); - if (!File.Exists(jaResxPath)) - { - continue; - } - jaXml.LoadXml(File.ReadAllText(jaResxPath)); - - XmlNodeList enDataNodes = enXml.GetElementsByTagName("data"); - XmlNodeList jaDataNodes = jaXml.GetElementsByTagName("data"); - - List jaDataNodeList = new List(); - foreach (XmlNode jaNode in jaDataNodes) - { - jaDataNodeList.Add(jaNode); - } - - List inJaButNotEn = jaDataNodeList.FindAll((Predicate)delegate(XmlNode jaNode) - { - string jaDataName = jaNode.Attributes["name"].Value; - foreach (XmlNode enNode in enDataNodes) - { - if (enNode.Attributes["name"].Value == jaDataName) - { - return enNode.InnerXml != jaNode.InnerXml; - } - } - return true; - }); - - foreach (XmlNode node in inJaButNotEn) - { - System.Console.WriteLine(string.Format("'{0}' is in '{1}' but not in '{2}'", - node.Attributes["name"].Value, - jaResxPath, - enResxFile.Name)); - } - } - } - - private static readonly string[] i18nYes = new string[] { "Text", "ToolTipText", "HeaderText", "AccessibleDescription", "ToolTip", "Filter" }; - private static readonly string[] i18nNo = new string[] { "ZOrder", "Size", "Location", "Anchor", "Type", "MinimumSize", "ClientSize", - "Font", "TabIndex", "Parent", "LayoutSettings", "Margin", "Padding", "ColumnCount", "Dock", "AutoSize", "Name", "ImeMode", - "IntegralHeight", "Visible", "InitialImage", "AutoScaleDimensions", "FlowDirection", "RowCount", "ImageAlign", "WrapContents", - "Enabled", "TextAlign", "StartPosition", "SizeMode", "Multiline", "ScrollBars", "ItemHeight", "CellBorderStyle", "AutoSizeMode", - "Image", "AutoCompleteCustomSource", "AutoCompleteCustomSource1", "AutoCompleteCustomSource2", "BulletIndent", "Width", - "MinimumWidth", "AutoScroll", "ImageSize", "MaxLength", "BackgroundImageLayout", "ImageTransparentColor", "ImageIndex", - "SplitterDistance", "MaximumSize", "ThousandsSeparator", "RightToLeft", "TextImageRelation", "ContentAlignment", - "SelectedImageIndex", "HorizontalScrollbar", "CheckAlign", "RightToLeftLayout", "ShowShortcutKeys", "ShortcutKeys", - "ShortcutKeyDisplayString", "Localizable", "Icon", "Menu", "AutoScrollMinSize", "Items", "ScrollAlwaysVisible", - "Items1", "Items2", "Items3", "MaxDropDownItems" }; - private static bool IsI18nableProperty(string filename, string name) - { - foreach (string property in i18nYes) - { - if (name.EndsWith("." + property)) - { - // Keep these tags - return true; - } - } - - foreach (string property in i18nNo) - { - if (name.EndsWith("." + property)) - { - // Reject these tags - return false; - } - } - - // We haven't seen these tags before - keep them but issue a notification - Console.WriteLine(filename + ": " + name); - return true; - } - - private static bool ExcludeResx(string filePath) - { - return filePath.EndsWith(@"\Properties\Resources.resx") || - filePath.EndsWith(@"\Help\HelpManager.resx") || - filePath.EndsWith(@"\DotNetVnc\KeyMap.resx"); - } - - /// - /// Try from the immediate window e.g. - /// XenAdmin.ResxCheck.TrimJaResxs(@"C:\Documents and Settings\hwarrington\xenadmin-unstable.hg\XenAdmin") - /// - /// - private static void TrimJaResxs(string rootDir) - { - // Find all english resxs - List enResxFiles = new List(); - RecursiveGetResxFiles(new DirectoryInfo(rootDir), enResxFiles); - - List names = new List(); - - foreach (FileInfo enResxFile in enResxFiles) - { - if (ExcludeResx(enResxFile.FullName)) - { - continue; - } - - // Load the en resx - string enResxPath = enResxFile.FullName; - XmlDocument enXml = new XmlDocument(); - enXml.LoadXml(File.ReadAllText(enResxPath)); - XmlNodeList enDataNodes = enXml.GetElementsByTagName("data"); - - // Find the ja resx - string jaFilename = enResxPath.Substring(rootDir.Length); - jaFilename = jaFilename.Insert(jaFilename.Length - 5, ".ja"); - string jaResxPath = rootDir + "\\i18n\\ja" + jaFilename; - - if (!File.Exists(jaResxPath)) - { - // There is no ja resx file corresponding to the en resx. We need to check there are no i18nable tags - // in the en resx. - bool i18nRequired = false; - foreach (XmlNode enNode in enDataNodes) - { - if (IsI18nableProperty(enResxFile.Name, enNode.Attributes["name"].Value)) - { - Console.WriteLine(string.Format("{0} is missing. Tag {1} needs i18n. Copying en resx across.", jaFilename, enNode.Attributes["name"].Value)); - Directory.CreateDirectory(Path.GetDirectoryName(jaResxPath)); - File.Copy(enResxPath, jaResxPath); - i18nRequired = true; - break; - } - } - if (!i18nRequired) - { - continue; - } - } - - // Load the ja resx - XmlDocument jaXml = new XmlDocument(); - jaXml.LoadXml(File.ReadAllText(jaResxPath)); - XmlNodeList jaDataNodes = jaXml.GetElementsByTagName("data"); - // Take a copy of the jaDataNodes - List jaDataNodeList = new List(); - foreach (XmlNode node in jaDataNodes) - { - jaDataNodeList.Add(node); - } - - // Go through all the ja nodes, keeping only the ones where their values differ from the en original - // Don't bother to do this for the messages files. - if (enResxFile.Name != "Messages.resx" && enResxFile.Name != "FriendlyNames.resx" && - enResxFile.Name != "FriendlyNames.resx") - { - foreach (XmlNode jaNode in jaDataNodeList) - { - string jaDataName = jaNode.Attributes["name"].Value; - - if (!IsI18nableProperty(jaFilename, jaDataName)) - { - // Delete node - jaXml.GetElementsByTagName("root")[0].RemoveChild(jaNode); - continue; - } - - foreach (XmlNode enNode in enDataNodes) - { - if (enNode.Attributes["name"].Value == jaDataName) - { - if (enNode.InnerXml == jaNode.InnerXml) - { - // If node unchanged, delete it - jaXml.GetElementsByTagName("root")[0].RemoveChild(jaNode); - break; - } - } - } - } - } - - // Now add any nodes that are in en but not ja (as long as they are of the i18nable types). - foreach (XmlNode enNode in enDataNodes) - { - bool needToAdd = true; - - foreach (XmlNode jaNode in jaDataNodes) - { - if (enNode.Attributes["name"].Value == jaNode.Attributes["name"].Value) - { - needToAdd = false; - break; - } - } - - if (needToAdd && IsI18nableProperty(enResxFile.Name, enNode.Attributes["name"].Value)) - { - XmlNode n = jaXml.GetElementsByTagName("root")[0].AppendChild(jaXml.ImportNode(enNode, true)); - foreach (XmlNode child in n.ChildNodes) - { - if (child is XmlWhitespace) - continue; - if (child is XmlSignificantWhitespace) - continue; - else - child.InnerText += " (ja)"; - } - } - } - - XmlWriterSettings settings = new XmlWriterSettings(); - settings.CloseOutput = true; - settings.Indent = true; - XmlWriter writer = XmlWriter.Create(jaResxPath, settings); - jaXml.WriteContentTo(writer); - writer.Flush(); - writer.Close(); - } - - Console.WriteLine("Done"); - } - - /// - /// Checks I haven't screwed stuff up while changing the autogen resx stuff. - /// - public static void CheckNotBorked() - { - XmlDocument origXml = new XmlDocument(); - origXml.LoadXml(File.ReadAllText(@"C:\Documents and Settings\hwarrington\xenadmin-unstable.hg\XenAdmin\XenAPI\FriendlyNames.resx")); - - XmlDocument newXml = new XmlDocument(); - newXml.LoadXml(File.ReadAllText(@"Q:\local\scratch-2\hwarrington\build.hg\myrepos\api.hg\ocaml\idl\csharp_backend\autogen-gui\FriendlyNames.resx")); - - CheckAIncludesB(origXml, newXml); - CheckAIncludesB(newXml, origXml); - } - - private static XmlNode FindByName(XmlDocument doc, string name) - { - foreach (XmlNode node in doc.GetElementsByTagName("data")) - { - if (name == node.Attributes["name"].Value) - return node; - } - return null; - } - - private static void CheckAIncludesB(XmlDocument origXml, XmlDocument newXml) - { - XmlNodeList origDataNodes = origXml.GetElementsByTagName("data"); - - foreach (XmlNode oldNode in origDataNodes) - { - string name = oldNode.Attributes["name"].Value; - string oldValue = oldNode.InnerXml; - - XmlNode newNode = FindByName(newXml, name); - if (newNode == null) - { - throw new Exception(String.Format("Node with name {0} exists in old but not new!", name)); - } - string newValue = newNode.InnerXml; - if (newValue != oldValue) - { - throw new Exception(String.Format("Node with name {0} has value {1} in old but {2} in new!", name, oldValue, newValue)); - } - } - } - } -} diff --git a/devtools/ResxCheck/ResxCheck.csproj b/devtools/ResxCheck/ResxCheck.csproj deleted file mode 100644 index 8c7498347..000000000 --- a/devtools/ResxCheck/ResxCheck.csproj +++ /dev/null @@ -1,60 +0,0 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {B61063FC-FCCB-4D4D-BA7B-CB0E674F1B16} - Exe - Properties - ResxCheck - ResxCheck - v3.5 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - 3.5 - - - 3.5 - - - 3.5 - - - - - - - - - - - - \ No newline at end of file diff --git a/devtools/ResxCheck/ResxCheck.sln b/devtools/ResxCheck/ResxCheck.sln deleted file mode 100644 index d4fa05cab..000000000 --- a/devtools/ResxCheck/ResxCheck.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28010.2048 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResxCheck", "ResxCheck.csproj", "{B61063FC-FCCB-4D4D-BA7B-CB0E674F1B16}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B61063FC-FCCB-4D4D-BA7B-CB0E674F1B16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B61063FC-FCCB-4D4D-BA7B-CB0E674F1B16}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B61063FC-FCCB-4D4D-BA7B-CB0E674F1B16}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B61063FC-FCCB-4D4D-BA7B-CB0E674F1B16}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {CFE27DA8-1892-4DB4-B43C-8AA5BE017B52} - EndGlobalSection -EndGlobal diff --git a/devtools/check-roaming.sh b/devtools/check-roaming.sh deleted file mode 100755 index f891605da..000000000 --- a/devtools/check-roaming.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh - -# 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. - -set -eu - -echo "INFO: check roaming" -dir=$(readlink -f $(dirname "$0")) -src=$(readlink -f "$dir/../XenAdmin") - -notroaming=$(cat "$src/Properties/Settings.settings" | grep ' -u -pw [-p ] "); - Console.WriteLine("For help, use xe -s -u -pw [-p ] help"); - } -} - - -namespace thincli +namespace ThinCLI { - class MainClass - { + static class MainClass + { + public static void Main(string[] args) + { + var tCliProtocol = new thinCLIProtocol(Error, Usage, Debug, + Console.Write, Console.WriteLine, Console.ReadLine, + Environment.Exit, i => { }, new Config()); - - public static void Main(string[] args) - { - thinCLIProtocol tCLIprotocol = new thinCLIProtocol(new delegateGlobalError(Global.error), new delegateGlobalUsage(Global.usage), - new delegateGlobalDebug(Global.debug), new delegateConsoleWrite(delegate(string s) { Console.Write(s); }), - new delegateConsoleWriteLine(delegate(string s) { Console.WriteLine(s); }), - new delegateConsoleReadLine(delegate { return Console.ReadLine(); }), - new delegateExit(delegate(int i) { Environment.Exit(i); }), - new delegateProgress(delegate(int i) {}), - new Config()); + string body = ""; + char[] eqsep = {'='}; - String body = ""; - Char[] eqsep = {'='}; - for(int i=0; i -u -pw [-p ] "); + Console.WriteLine("For help, use xe -s -u -pw [-p ] help"); + } + } } diff --git a/xe/Xe.csproj b/xe/Xe.csproj index f57522b8d..fb8b47583 100755 --- a/xe/Xe.csproj +++ b/xe/Xe.csproj @@ -29,6 +29,7 @@ prompt 4 false + true pdbonly @@ -41,8 +42,6 @@ - - diff --git a/xva_verify/verify_main.cs b/xva_verify/verify_main.cs index 920c05c85..88cc2e314 100644 --- a/xva_verify/verify_main.cs +++ b/xva_verify/verify_main.cs @@ -34,78 +34,81 @@ using System.IO; using System.IO.Compression; using System.Text; -class MainClass +namespace xva_verify { - public static void Main(string[] args) + class MainClass { - Export.verbose_debugging = true; - if (args.Length < 1 || args.Length > 2) + public static void Main(string[] args) { - var sb = new StringBuilder(); - sb.AppendLine(); - sb.AppendLine("Usage").AppendLine(); - sb.AppendLine(" xva_verify [copy]").AppendLine(); - sb.AppendLine("where").AppendLine(); - sb.AppendLine(" The name of the archive file to verify. Use '-' to read from stdin."); - sb.AppendLine(" copy If specified, a copy of the archive file is created.").AppendLine(); - - Console.WriteLine(sb.ToString()); - Environment.Exit(1); - } - - try - { - string filename = args[0]; - - Stream g = null; - if (args.Length == 2) - g = new FileStream(args[1], FileMode.Create); - - Stream f = args[0].Equals("-") - ? Console.OpenStandardInput() - : new FileStream(filename, FileMode.Open, FileAccess.Read); - - // check for gzip compression ( only on seekable inputs - i.e. not the stdin stream ) - if (f.CanSeek) + Export.verbose_debugging = true; + if (args.Length < 1 || args.Length > 2) { - try - { - GZipStream zip = new GZipStream(f, CompressionMode.Decompress); - // try reading a byte - zip.ReadByte(); + var sb = new StringBuilder(); + sb.AppendLine(); + sb.AppendLine("Usage").AppendLine(); + sb.AppendLine(" xva_verify []").AppendLine(); + sb.AppendLine("where").AppendLine(); + sb.AppendLine(" The name of the archive file to verify. Use '-' to read from stdin."); + sb.AppendLine(" If specified, a copy of the archive file is created with this name.").AppendLine(); - // success - reset stream, use the gunzipped stream from now on - f.Seek(0, SeekOrigin.Begin); - f = new GZipStream(f, CompressionMode.Decompress); - } - catch (InvalidDataException) - { - // just reset the stream - Exception means the stream is not compressed - f.Seek(0, SeekOrigin.Begin); - } + Console.WriteLine(sb.ToString()); + Environment.Exit(1); + } + + try + { + string filename = args[0]; + + Stream g = null; + if (args.Length == 2) + g = new FileStream(args[1], FileMode.Create); + + Stream f = args[0].Equals("-") + ? Console.OpenStandardInput() + : new FileStream(filename, FileMode.Open, FileAccess.Read); + + // check for gzip compression (only on seekable inputs - i.e. not the stdin stream ) + if (f.CanSeek) + { + try + { + GZipStream zip = new GZipStream(f, CompressionMode.Decompress); + // try reading a byte + zip.ReadByte(); + + // success - reset stream, use the gunzipped stream from now on + f.Seek(0, SeekOrigin.Begin); + f = new GZipStream(f, CompressionMode.Decompress); + } + catch(InvalidDataException) + { + // just reset the stream - Exception means the stream is not compressed + f.Seek(0, SeekOrigin.Begin); + } + } + + new Export().verify(f, g, () => false); + } + catch(UnauthorizedAccessException) + { + Console.WriteLine("Permission denied, check access rights to file"); + } + catch(FileNotFoundException) + { + Console.WriteLine("File not found, verify filename is correct"); + } + catch(IOException) + { + Console.WriteLine("IO Exception, file may be truncated."); + } + catch(BlockChecksumFailed) + { + Console.WriteLine("Verification failed, file appears to be corrupt"); + } + catch(Exception e) + { + Console.WriteLine(e.Message); } - - new Export().verify(f, g, () => false); - } - catch (UnauthorizedAccessException) - { - Console.WriteLine("Permission denied, check access rights to file"); - } - catch (FileNotFoundException) - { - Console.WriteLine("File not found, verify filename is correct"); - } - catch (IOException) - { - Console.WriteLine("IO Exception, file may be truncated."); - } - catch (BlockChecksumFailed) - { - Console.WriteLine("Verification failed, file appears to be corrupt"); - } - catch (Exception e) - { - Console.WriteLine(e.Message); } } } diff --git a/xva_verify/xva_verify.csproj b/xva_verify/xva_verify.csproj index 5e33f9009..4a35d4345 100755 --- a/xva_verify/xva_verify.csproj +++ b/xva_verify/xva_verify.csproj @@ -11,7 +11,8 @@ xva_verify xva_verify ..\Branding\Images\AppIcon.ico - MainClass + + false v4.6 @@ -25,6 +26,7 @@ prompt 4 false + true pdbonly