예제 #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();
            }
        }
예제 #2
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);
        }
예제 #3
0
        private static void CheckXenCenterVersion()
        {
            if (!AllowUpdates || !Properties.Settings.Default.AllowXenCenterUpdates)
            {
                return;
            }

            XenCenterUpdateAlert alert = NewXenCenterVersionAlert(XenCenterVersions, true);

            if (alert != null)
            {
                Alert.AddAlert(alert);
            }
        }
예제 #4
0
 public XenCenterUpdateDecorator(OuputComponent ouputComponent, XenCenterUpdateAlert alert)
 {
     SetComponent(ouputComponent);
     this.alert = alert;
 }