public bool Upgrade(MonitoringInstance instance)
        {
            ZipInfo.ValidateZip();

            var checkLicenseResult = CheckLicenseIsValid();

            if (!checkLicenseResult.Valid)
            {
                logger.Error($"Upgrade aborted - {checkLicenseResult.Message}");
                return(false);
            }

            instance.ReportCard = new ReportCard();

            var restartService = instance.Service.Status == ServiceControllerStatus.Running;

            if (!instance.TryStopService())
            {
                logger.Error("Service failed to stop or service stop timed out");
                return(false);
            }

            try
            {
                var backupFile = instance.BackupAppConfig();
                try
                {
                    instance.UpgradeFiles(ZipInfo.FilePath);
                }
                finally
                {
                    instance.RestoreAppConfig(backupFile);
                }

                instance.SetupInstance();

                if (instance.ReportCard.HasErrors)
                {
                    foreach (var error in instance.ReportCard.Errors)
                    {
                        logger.Error(error);
                    }

                    return(false);
                }

                if (restartService && !instance.TryStartService())
                {
                    logger.Error("Service failed to start after update - please check configuration for {0}", instance.Name);
                    return(false);
                }
            }
            catch (Exception ex)
            {
                logger.Error("Upgrade Failed: {0}", ex.Message);
                return(false);
            }

            return(true);
        }
        public MonitoringEditViewModel(MonitoringInstance instance)
        {
            DisplayName   = "EDIT MONITORING INSTANCE";
            SelectLogPath = new SelectPathCommand(p => LogPath = p, isFolderPicker: true, defaultPath: LogPath);

            InstanceName = instance.Name;
            Description  = instance.Description;

            var userAccount = UserAccount.ParseAccountName(instance.ServiceAccount);

            UseSystemAccount  = userAccount.IsLocalSystem();
            UseServiceAccount = userAccount.IsLocalService();

            UseProvidedAccount = !(UseServiceAccount || UseSystemAccount);

            if (UseProvidedAccount)
            {
                ServiceAccount = instance.ServiceAccount;
            }

            HostName           = instance.HostName;
            PortNumber         = instance.Port.ToString();
            LogPath            = instance.LogPath;
            ErrorQueueName     = instance.ErrorQueue;
            SelectedTransport  = instance.TransportPackage;
            ConnectionString   = instance.ConnectionString;
            MonitoringInstance = instance;
        }
示例#3
0
        internal ReportCard Update(MonitoringInstance instance, bool startService)
        {
            try
            {
                instance.ReportCard = new ReportCard();
                instance.ValidateChanges();
                if (instance.ReportCard.HasErrors)
                {
                    instance.ReportCard.Status = Status.FailedValidation;
                    return(instance.ReportCard);
                }

                if (!instance.TryStopService())
                {
                    instance.ReportCard.Errors.Add("Service failed to stop");
                    instance.ReportCard.Status = Status.Failed;
                    return(instance.ReportCard);
                }

                instance.ApplyConfigChange();
                if (!instance.ReportCard.HasErrors)
                {
                    if (startService && !instance.TryStartService())
                    {
                        instance.ReportCard.Warnings.Add($"Service did not start after changes - please check configuration for {instance.Name}");
                    }
                }
                instance.ReportCard.SetStatus();
                return(instance.ReportCard);
            }
            finally
            {
                instance.Reload();
            }
        }
 public void UpdateInstanceFromViewModel(MonitoringInstance instance)
 {
     instance.HostName         = HostName;
     instance.Port             = Convert.ToInt32(PortNumber);
     instance.LogPath          = LogPath;
     instance.ErrorQueue       = ErrorQueueName;
     instance.ConnectionString = ConnectionString;
 }
示例#5
0
        protected override void ProcessFtp(ISourceFactory downloaders)
        {
            var instance = new MonitoringInstance(TaskPoolScheduler.Default, Config, downloaders, new DeleteArchiving());

            if (instance.Start())
            {
                log.Info("Press enter to stop monitoring...");
                System.Console.ReadLine();
                instance.Stop();
            }
        }
        public void SetUp()
        {
            scheduler               = new TestScheduler();
            monitoringConfig        = new MonitoringConfig();
            monitoringConfig.Scan   = 1;
            monitoringConfig.Known  = new PredefinedCameraConfig();
            monitoringConfig.Output = new OutputConfig();
            archiving               = new Mock <IDeleteArchiving>();
            mockDestinationFactory  = new Mock <ISourceFactory>();
            ftpDownloader           = new Mock <IDownloader>();

            mockDestinationFactory.Setup(item => item.GetSources(It.IsAny <IHostManager>()))
            .Returns(new[] { ftpDownloader.Object });
            instance = CreateMonitoringInstance();
        }
示例#7
0
        internal bool Update(MonitoringInstance instance, bool startService)
        {
            instance.ReportCard = new ReportCard();
            instance.ValidateChanges();
            if (instance.ReportCard.HasErrors)
            {
                foreach (var error in instance.ReportCard.Errors)
                {
                    logger.Error(error);
                }

                return(false);
            }

            try
            {
                if (!instance.TryStopService())
                {
                    logger.Error("Service failed to stop");
                    return(false);
                }

                instance.ApplyConfigChange();
                if (instance.ReportCard.HasErrors)
                {
                    foreach (var error in instance.ReportCard.Errors)
                    {
                        logger.Error(error);
                    }

                    return(false);
                }

                if (startService && !instance.TryStartService())
                {
                    logger.Error("Service failed to start after changes - please check configuration for {0}", instance.Name);
                    return(false);
                }
            }
            catch (Exception ex)
            {
                logger.Error("Update failed: {0}", ex.Message);
                return(false);
            }

            return(true);
        }
        public static PsMonitoringService FromInstance(MonitoringInstance instance)
        {
            var result = new PsMonitoringService
            {
                Name                 = instance.Name,
                Url                  = instance.Url,
                HostName             = instance.HostName,
                Port                 = instance.Port,
                InstallPath          = instance.InstallPath,
                LogPath              = instance.LogPath,
                TransportPackageName = instance.TransportPackage.Name,
                ConnectionString     = instance.ConnectionString,
                ErrorQueue           = instance.ErrorQueue,
                ServiceAccount       = instance.ServiceAccount,
                Version              = instance.Version
            };

            return(result);
        }