Beispiel #1
0
        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();
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        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);
            }
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
 public void TestAlertWithNullVersion()
 {
     XenServerUpdateAlert alert = new XenServerUpdateAlert(null);
 }
 public XenServerUpdateDecorator(OuputComponent ouputComponent, XenServerUpdateAlert alert)
 {
     SetComponent(ouputComponent);
     this.alert = alert;
 }
Beispiel #9
0
        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);
        }