private void GeneratePatchSummary(List <XenServerPatchAlert> alerts, List <AlertFeatureValidator> validators, XenServerUpdateAlert updateAlert, XenCenterUpdateAlert xcupdateAlert) { OuputComponent oc = new OutputTextOuputComponent(XmlLocation, ServerVersion); XenCenterUpdateDecorator xcud = new XenCenterUpdateDecorator(oc, xcupdateAlert); XenServerUpdateDecorator xsud = new XenServerUpdateDecorator(xcud, updateAlert); PatchAlertDecorator pad = new PatchAlertDecorator(xsud, alerts); AlertFeatureValidatorDecorator afdCoreFields = new AlertFeatureValidatorDecorator(pad, validators.First(v => v is CorePatchDetailsValidator), "Core fields in patch checks:"); AlertFeatureValidatorDecorator afdPatchUrl = new AlertFeatureValidatorDecorator(afdCoreFields, validators.First(v => v is PatchURLValidator), "Required patch URL checks:"); AlertFeatureValidatorDecorator afdZipContents = new AlertFeatureValidatorDecorator(afdPatchUrl, validators.First(v => v is ZipContentsValidator), "Required patch zip content checks:"); if (CheckHotfixContents) { Output = afdZipContents.Generate().Insert(0, Output).ToString(); } else { Output = afdPatchUrl.Generate().Insert(0, Output).ToString(); } }
public void TestAlertWithHostsAndNoConnection() { XenServerVersion ver = new XenServerVersion("1.2.3", "name", true, "http://url", new List <XenServerPatch>(), new DateTime(2011, 4, 1).ToString(), "123"); XenServerUpdateAlert alert = new XenServerUpdateAlert(ver); alert.IncludeHosts(new List <Host>() { hostA.Object, hostB.Object }); IUnitTestVerifier validator = new VerifyGetters(alert); validator.Verify(new AlertClassUnitTestData { AppliesTo = "HostAName, HostBName", FixLinkText = "Go to Web Page", HelpID = "XenServerUpdateAlert", Description = "name is now available. Download the latest at the Citrix website.", HelpLinkText = "Help", Title = "name is now available", Priority = "Priority5" }); Assert.IsFalse(alert.CanIgnore); VerifyConnExpectations(Times.Never); VerifyHostsExpectations(Times.Once); }
private void RunTestsForGivenServerVersion(List <XenServerVersion> xenServerVersions, List <XenServerPatch> xenServerPatches, List <XenCenterVersion> xenCenterVersions) { CheckProvidedVersionNumber(xenServerVersions); Status = String.Format("Generating server {0} mock-ups...", ServerVersion); SetupMocks(xenServerPatches, xenServerVersions); Status = "Determining XenCenter update required..."; XenCenterUpdateAlert xcupdateAlert = XenAdmin.Core.Updates.NewXenCenterVersionAlert(xenCenterVersions, new Version(ServerVersion), false); Status = "Determining XenServer update required..."; XenServerUpdateAlert updateAlert = XenAdmin.Core.Updates.NewServerVersionAlert(xenServerVersions, false); Status = "Determining patches required..."; List <XenServerPatchAlert> patchAlerts = XenAdmin.Core.Updates.NewServerPatchesAlerts(xenServerVersions, xenServerPatches, false); //Build patch checks list List <AlertFeatureValidator> validators = new List <AlertFeatureValidator> { new CorePatchDetailsValidator(patchAlerts), new PatchURLValidator(patchAlerts), new ZipContentsValidator(patchAlerts) }; Status = "Running patch check(s), this may take some time..."; RunValidators(validators); Status = "Generating summary..."; GeneratePatchSummary(patchAlerts, validators, updateAlert, xcupdateAlert); }
public static void CheckServerVersion() { if (!AllowUpdates || !Properties.Settings.Default.AllowXenServerUpdates) { return; } XenServerUpdateAlert alert = NewServerVersionAlert(XenServerVersions, true); if (alert == null) { return; } Alert existingAlert = Alert.FindAlert(alert); if (existingAlert != null && alert.CanIgnore) { Alert.RemoveAlert(existingAlert); } else if (existingAlert != null) { ((XenServerUpdateAlert)existingAlert).CopyConnectionsAndHosts(alert); } else if (!alert.CanIgnore) { Alert.AddAlert(alert); } }
private static void CheckUpdate(XenServerUpdateAlert alert) { var existingAlert = FindUpdate(alert); if (existingAlert != null && alert.CanIgnore) { RemoveUpdate(existingAlert); } else if (existingAlert != null) { ((XenServerUpdateAlert)existingAlert).CopyConnectionsAndHosts(alert); } else if (!alert.CanIgnore) { AddUpate(alert); } }
private static void CheckUpdate(XenServerUpdateAlert alert) { var existingAlert = FindUpdate(a => a.Equals(alert)); if (existingAlert != null && alert.CanIgnore) { RemoveUpdate(existingAlert); } else if (existingAlert is XenServerUpdateAlert updAlert) { RemoveUpdate(updAlert); updAlert.CopyConnectionsAndHosts(alert); AddUpdate(updAlert); } else if (!alert.CanIgnore) { AddUpdate(alert); } }
public void TestAlertWithNullVersion() { XenServerUpdateAlert alert = new XenServerUpdateAlert(null); }
public XenServerUpdateDecorator(OuputComponent ouputComponent, XenServerUpdateAlert alert) { SetComponent(ouputComponent); this.alert = alert; }
public static XenServerUpdateAlert NewServerVersionAlert(List <XenServerVersion> xenServerVersions, bool checkAlertIsAlreadyDismissed) { if (Helpers.CommonCriteriaCertificationRelease) { return(null); } List <XenServerVersion> latestVersions = xenServerVersions.FindAll(item => item.Latest); if (latestVersions.Count == 0) { return(null); } XenServerVersion latestVersion = latestVersions[0]; for (int i = 1; i < latestVersions.Count; i++) { XenServerVersion version = latestVersions[i]; if (version.Version > latestVersion.Version) { latestVersion = version; } } XenServerUpdateAlert alert = new XenServerUpdateAlert(latestVersion); foreach (IXenConnection xc in ConnectionsManager.XenConnectionsCopy) { Host master = Helpers.GetMaster(xc); Pool pool = Helpers.GetPoolOfOne(xc); List <Host> hosts = xc.Cache.Hosts.ToList(); if (master == null || pool == null) { continue; } //check if the latest version has been already dismissed if (checkAlertIsAlreadyDismissed && GetLatestSeenVersion(pool).Contains(latestVersion.VersionAndOEM)) { return(null); } List <Host> outOfDateHosts = hosts.Where(host => new Version(Helpers.HostProductVersion(host)) < latestVersion.Version).ToList(); if (outOfDateHosts.Count == hosts.Count) { alert.IncludeConnection(xc); } else { alert.IncludeHosts(outOfDateHosts); } } if (alert.CanIgnore) { return(null); } return(alert); }