Example #1
0
        public HttpResponseMessage GenerateCSV()
        {
            //Initialize service and model properties
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());
            var sqlRepo           = new SqlServerRepository(connectionFactory);
            var svc   = new FileLatencyService(sqlRepo);
            var model = PopulateFileLatencyModelSettings();

            model.GridConditions.StartRow = 1;
            model.GridConditions.EndRow   = int.MaxValue;

            //Get the data
            model.GridConditions.EndRow   = 0;
            model.GridConditions.StartRow = 0;
            String fileData = GetFileLatencyCsvData(svc, model);

            //Serialize response
            HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK);

            message.Content = new StringContent(fileData);
            message.Content.Headers.ContentType                 = new System.Net.Http.Headers.MediaTypeHeaderValue("text/csv");
            message.Content.Headers.ContentDisposition          = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
            message.Content.Headers.ContentDisposition.FileName = string.Format("FileLatencyReport-{0}.csv", DateTime.Now.ToString("yyyyMMdd-HHmmss"));
            return(message);
        }
Example #2
0
        public override Response Execute()
        {
            // If we're already initialized (Test path)
            if (this.postInstallService != null)
            {
                return(this.ExecutePdb());
            }

            var logger              = new TextLogger();
            var connectionFactory   = new HelperConnectionFactory(this.Helper);
            var agentRepository     = new AgentRepository(connectionFactory);
            var agentManager        = this.Helper.GetServicesManager().CreateProxy <IAgentManager>(ExecutionIdentity.System);
            var agentManagerService = new AgentManagerService(agentManager, agentRepository, logger);

            var textLogger = new TextLogger();
            var resourceServerRepository = new ResourceServerRepository(connectionFactory);
            var refreshServerService     = new RefreshServerService(textLogger, resourceServerRepository);
            var serverRepository         = new ServerRepository(connectionFactory);
            var configurationRepository  = new ConfigurationRepository(connectionFactory);

            this.postInstallService = new PostInstallService(agentManagerService, refreshServerService, serverRepository, configurationRepository, logger);

            var response = this.ExecutePdb();

            agentManager?.Dispose();
            return(response);
        }
Example #3
0
        protected override void ExecutePdbAgent(CancellationToken cancellationToken)
        {
            var connectionFactory = new HelperConnectionFactory(this.Helper);
            var sqlService        = new SqlServerRepository(connectionFactory);
            var logger            = new CompositeLogger(new List <ILogger>()
            {
                new AgentLogger(this),
                new DatabaseLogger(sqlService.LogRepository, new LogService(sqlService.ConfigurationRepository, sqlService.LogRepository), this)
            });

            try
            {
                //can only debug, once the EDDSPerformance database exists... b/c the config key lives there
                sqlService.IfInDebugModeLaunchDebugger();

                using (var kernel = this.GetKernel())
                {
                    var managerLogic = kernel.Get <MetricSystemManagerAgentLogic>();
                    logger.WithClassName().LogVerbose($"Starting Manager Logic");
                    managerLogic.Execute(cancellationToken).GetAwaiter().GetResult();
                    logger.WithClassName().LogVerbose($"Finish Manager Logic, Start kernel dispose");
                }

                logger.WithClassName().LogVerbose($"Finish kernel Dispose");
            }
            catch (Exception ex)
            {
                logger.WithClassName().LogError($"Metric Manager Failed. Details: {ex.ToString()}");
            }
        }
Example #4
0
        protected override void ExecutePdbAgent(CancellationToken cancellationToken)
        {
            var connectionFactory = new HelperConnectionFactory(this.Helper);
            var sqlService        = new SqlServerRepository(connectionFactory);
            var logger            = new CompositeLogger(new List <ILogger>()
            {
                new AgentLogger(this),
                new DatabaseLogger(sqlService.LogRepository, new LogService(sqlService.ConfigurationRepository, sqlService.LogRepository), this)
            });

            try
            {
                //can only debug, once the EDDSPerformance database exists... b/c the config key lives there
                sqlService.IfInDebugModeLaunchDebugger();

                var eventSytemState             = sqlService.EventRepository.ReadEventSystemStateAsync().GetAwaiter().GetResult();
                var serversPendingQosDeployment = sqlService.PerformanceServerRepository.ReadServerPendingQosDeploymentAsync().GetAwaiter().GetResult();

                //If the event system is running normal and there are no servers pending qos deployment
                if (eventSytemState == EventSystemState.Normal && !serversPendingQosDeployment.Any())
                {
                    var qosManager = new QoSTaskManager(logger, sqlService, this);
                    qosManager.Run();
                }
            }
            catch (Exception ex)
            {
                logger.WithClassName().LogError($"QoS Manager Failed. Details: {ex.ToString()}");
            }
        }
Example #5
0
        public void Configuration(IAppBuilder app)
        {
            // Map Dashboard to the `http://<your-app>/hangfire` URL.
            //ConnectionService.SetConnectionString();
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());
            var configurationRepo = new ConfigurationRepository(connectionFactory);
            var queuePollInterval =
                Math.Max(
                    configurationRepo.ReadValue <int>(ConfigurationKeys.QueuePollInterval) ?? Defaults.Queuing.DefaultQueuePollInterval,
                    Defaults.Queuing.MinQueuePollInterval);
            var sqlHangfireOptions = new SqlServerStorageOptions
            {
                QueuePollInterval = TimeSpan.FromSeconds(queuePollInterval)
            };

            using (var conn = connectionFactory.GetEddsPerformanceConnection())
            {
                GlobalConfiguration.Configuration.UseSqlServerStorage(conn.ConnectionString, sqlHangfireOptions);
            }

            var options = new DashboardOptions
            {
                AppPath       = VirtualPathUtility.ToAbsolute("~"),
                Authorization = new[] { new AuthenticateUserAttribute() }
            };

            app.UseHangfireDashboard("/hangfire", options);
        }
        public HttpResponseMessage GenerateCSV()
        {
            //Initialize service and model properties
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());
            var sqlRepo           = new SqlServerRepository(connectionFactory);
            var svc = new UserExperienceService(sqlRepo);
            var qualityIndicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(new ConfigurationRepository(connectionFactory)));

            var model = PopulateServerModelSettings();

            model.GridConditions.StartRow = 1;
            model.GridConditions.EndRow   = int.MaxValue;
            //Get the data
            var fetchedData = FetchFileData(svc, model, qualityIndicatorService);

            //Serialize response
            var message = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(fetchedData)
            };

            message.Content.Headers.ContentType        = new System.Net.Http.Headers.MediaTypeHeaderValue("text/csv");
            message.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
            {
                FileName = $"UserExperienceServers-{DateTime.Now:yyyyMMdd-HHmmss}.csv"
            };
            return(message);
        }
Example #7
0
        public HttpResponseMessage ResetTuningForkLastRun(Boolean config)
        {
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());
            var sqlRepo           = new SqlServerRepository(connectionFactory);
            var svc = new EnvironmentCheckService(sqlRepo);

            //get data
            DateTime lastRunTime;

            if (config)
            {
                lastRunTime = svc.ResetTuningForkLastRun(ProcessControlId.EnvironmentCheckRelativityConfig, ProcessControlId.EnvironmentCheckSqlConfig);
            }
            else
            {
                lastRunTime = svc.ResetTuningForkLastRun(ProcessControlId.EnvironmentCheckServerInfo);
            }

            //Serialize response
            var json     = lastRunTime.ToJson();
            var response = Request.CreateResponse(HttpStatusCode.OK);

            response.Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
            return(response);
        }
        public HttpResponseMessage GenerateCSV()
        {
            //Initialize service and model properties
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());
            var sqlRepo           = new SqlServerRepository(connectionFactory);
            var reportRepository  = new LegacyRecoverabilityIntegrityReportRepository(connectionFactory);
            var svc = new BackupDbccService(sqlRepo, reportRepository);
            var qualityIndicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(new ConfigurationRepository(connectionFactory)));

            var model = PopulateModelSettings();

            model.GridConditions.StartRow = 1;
            model.GridConditions.EndRow   = int.MaxValue;
            //Get the data
            var fetchedData = FetchFileData(svc, model, qualityIndicatorService);

            //Serialize response
            HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK);

            message.Content = new StringContent(fetchedData);
            message.Content.Headers.ContentType                 = new System.Net.Http.Headers.MediaTypeHeaderValue("text/csv");
            message.Content.Headers.ContentDisposition          = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
            message.Content.Headers.ContentDisposition.FileName = string.Format("RecoveryObjectives-{0}.csv", DateTime.Now.ToString("yyyyMMdd-HHmmss"));
            return(message);
        }
        public ConfigurationController()
        {
            var helper            = ConnectionHelper.Helper();
            var connectionFactory = new HelperConnectionFactory(helper);
            var sqlRepo           = new SqlServerRepository(connectionFactory);

            this.configurationService = new PdbConfigurationService(sqlRepo, sqlRepo.ConfigurationRepository, sqlRepo.ProcessControlRepository);
        }
        public SystemLoadController()
        {
            // TODO - Get rid of inheritence
            this.requestService = new RequestService();
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());
            var sqlRepo           = new SqlServerRepository(connectionFactory);

            this.reportingService = new BestInServiceReportingService(sqlRepo);
        }
Example #11
0
        private BackupDbccService GetBackupDbccService()
        {
            var connectionFactory       = new HelperConnectionFactory(ConnectionHelper.Helper());
            var sqlRepo                 = new SqlServerRepository(connectionFactory);
            var toggleProvider          = new PdbSqlToggleProvider(connectionFactory);
            var reportRepositoryFactory = new RecoverabilityIntegrityReportReaderFactory(toggleProvider, connectionFactory);
            var reportRepository        = reportRepositoryFactory.Get();

            return(new BackupDbccService(sqlRepo, reportRepository));
        }
Example #12
0
        public HttpResponseMessage GenerateCSV()
        {
            //Initialize service and model properties
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());
            var sqlRepo           = new SqlServerRepository(connectionFactory);
            var svc   = new EnvironmentCheckService(sqlRepo);
            var model = PopulateModelSettings();

            model.GridConditions.StartRow = 1;
            model.GridConditions.EndRow   = int.MaxValue;

            //Get the data
            String fileData;

            if (model.ReportType == EnvironmentCheckReportType.Recommendations)
            {
                model = PopulateRecommendationModelSettings();
                model.GridConditions.EndRow   = 0;
                model.GridConditions.StartRow = 0;
                fileData = FetchFileRecommendationData(svc, model);
            }
            else if (model.ReportType == EnvironmentCheckReportType.Server)
            {
                model = PopulateServerModelSettings();
                model.GridConditions.EndRow   = 0;
                model.GridConditions.StartRow = 0;
                fileData = FetchFileServerData(svc, model);
            }
            else if (model.ReportType == EnvironmentCheckReportType.Database)
            {
                model = PopulateDatabaseModelSettings();
                model.GridConditions.EndRow   = 0;
                model.GridConditions.StartRow = 0;
                fileData = FetchFileDatabaseData(svc, model);
            }
            else
            {
                throw new Exception("Invalid report type.");
            }

            //Serialize response
            HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK);

            message.Content = new StringContent(fileData);
            message.Content.Headers.ContentType                 = new System.Net.Http.Headers.MediaTypeHeaderValue("text/csv");
            message.Content.Headers.ContentDisposition          = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
            message.Content.Headers.ContentDisposition.FileName = string.Format("EnvironmentCheck-{0}.csv", DateTime.Now.ToString("yyyyMMdd-HHmmss"));
            return(message);
        }
Example #13
0
        public HttpResponseMessage FileLatencyLastRun()
        {
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());
            var sqlRepo           = new SqlServerRepository(connectionFactory);
            var svc = new FileLatencyService(sqlRepo);

            //get data
            DateTime lastRunTime = svc.FileLatencyLastRun();

            //Serialize response
            var json     = lastRunTime.ToJson();
            var response = Request.CreateResponse(HttpStatusCode.OK);

            response.Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
            return(response);
        }
        public override Response Execute()
        {
            // Initialize
            this.logger.Clear();
            var response = new Response {
                Success = false, Message = ""
            };

            if (this.sqlServerRepository == null)
            {
                var connectionFactory = new HelperConnectionFactory(this.Helper);
                this.sqlServerRepository = new SqlServerRepository(connectionFactory);
            }

            // TODO -- Separate this logic to a separate service
            try
            {
                this.logger.LogVerbose($"Removing old application references");
                sqlServerRepository.DeploymentRepository.RemoveOldApplicationReferences();
                var activeWorkspaceId = this.Helper.GetActiveCaseID();
                if (activeWorkspaceId > 0)
                {
                    this.logger.LogVerbose($"Removing old agent guids from workspace {activeWorkspaceId}");
                    Guids.Agent.AgentGuidsToRemove.ForEach(guid =>
                    {
                        this.logger.LogVerbose($"Removing old agent guid {guid}");
                        sqlServerRepository.DeploymentRepository.RemoveOldApplicationReferencesFromWorkspace(guid, activeWorkspaceId);
                    });
                }

                this.logger.LogVerbose($"Removing old resource files");
                sqlServerRepository.DeploymentRepository.RemoveOldResourceFiles();                 // Clean out the dummy files if they still exist
            }
            catch (Exception ex)
            {
                this.logger.LogError($"Failed to execute {nameof(RemoveOldResourcesPostInstallEventHandler)}", ex);
                response.Message = this.logger.Text;
                return(response);
            }

            response.Success = true;
            response.Message = "Removed old resource files.";
            return(response);
        }
Example #15
0
        }                                                                        // Only used for 'AdminScriptsInstalled'
        #endregion

        public AdministrationInstall()
        {
            //register the prerender event
            this.PreRender += Page_PreRender;
            var logger = new TextLogger();

            _pageModel = new AdministrationInstallationModel();

            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());

            this.sqlServerRepository = new SqlServerRepository(connectionFactory);
            _serverRepository        = new ServerRepository(connectionFactory);
            var databaseDeployer = new DatabaseDeployer(
                new DatabaseMigratorFactory(connectionFactory),
                new ExceptionMigrationResultHandler(logger));
            var administrationInstallationRepository = new AdministrationInstallationRepository(connectionFactory);
            var refreshServerService = new RefreshServerService(logger, new ResourceServerRepository(connectionFactory));

            _service     = new AdministrationInstallationService(databaseDeployer, _serverRepository, refreshServerService, administrationInstallationRepository);
            _authService = new AuthenticationServiceFactory().GetService();
        }
        public override Response Execute()
        {
            // Initialize application install service -- TODO -- use DI to create kernel and get correct implementation
            if (this.parallelizationInstallationService == null)
            {
                // Build up application installation service
                var logger                         = new TextLogger();
                var connectionFactory              = new HelperConnectionFactory(this.Helper);
                var sqlRepo                        = new SqlServerRepository(connectionFactory);
                var hashConverter                  = new LegacyHashConversionService();
                var tabRepository                  = new TabRepository(connectionFactory);
                var relativityOneService           = new RelativityOneService(sqlRepo.ConfigurationRepository);
                var tabService                     = new TabService(tabRepository, relativityOneService);
                var databaseMigratorFactory        = new DatabaseMigratorFactory(connectionFactory);
                var databaseDeployer               = new DatabaseDeployer(databaseMigratorFactory, new ErrorOnlyMigrationResultHandler(logger));
                var applicationInstallationService = new ApplicationInstallationService(connectionFactory, sqlRepo, hashConverter, tabService, databaseDeployer, logger);

                var toggleProvider         = new PdbSqlToggleProvider(connectionFactory);
                var forceDeparallelization = toggleProvider.IsEnabled <DatabaseDeploymentDeparallelizationToggle>();
                if (forceDeparallelization)
                {
                    // Build up the service that checks for version
                    var versionCheckService = new VersionCheckService(new PdbVersionRepository(connectionFactory), logger);
                    this.parallelizationInstallationService = new SingletonDatabaseInstallationService(applicationInstallationService, versionCheckService, new TimeService(), logger);
                }
                else
                {
                    // Build up the service that actually runs the install process
                    this.parallelizationInstallationService = new DefaultDatabaseInstallationService(applicationInstallationService);
                }
            }

            // Install the application
            var appInstallResponse = this.parallelizationInstallationService.InstallApplication(this.Helper.GetActiveCaseID()).GetAwaiter().GetResult();

            // Return response
            return(new Response {
                Message = appInstallResponse.Message, Success = appInstallResponse.Success
            });
        }
        public void LogToErrorTable(Exception ex, string Url)
        {
            try
            {
                var helper            = _helper ?? ConnectionHelper.Helper();
                var connectionFactory = new HelperConnectionFactory(helper);
                var repo =
                    new LogRepository(connectionFactory);

                Task.Run(() => repo.Create(new LogEntry()
                {
                    OtherVars       = $"URL: {Url} | Error: {ex.Message} | StackTrace: {ex.StackTrace}",
                    Module          = "HTTPRequest",
                    LogTimestampUtc = DateTime.UtcNow
                })).Wait();
            }
            catch (Exception loggingEx)
            {
                Trace.WriteLine($"Original Error: {ex.ToString()}");
                Trace.WriteLine($"Error while logging: {loggingEx.ToString()}");
            }
        }
        public override Response Execute()
        {
            // Initialize
            if (this.preInstallService != null)
            {
                return(this.ExecutePDB());
            }

            var logger              = new TextLogger();
            var connectionFactory   = new HelperConnectionFactory(this.Helper);
            var agentRepository     = new AgentRepository(connectionFactory);
            var agentManagerProxy   = this.Helper.GetServicesManager().CreateProxy <IAgentManager>(ExecutionIdentity.System);
            var agentManagerService = new AgentManagerService(agentManagerProxy, agentRepository, logger);

            this.preInstallService = new PreInstallService(agentManagerService);


            var response = this.ExecutePDB();

            agentManagerProxy?.Dispose();
            return(response);
        }
Example #19
0
        public HttpResponseMessage Search(int id)
        {
            //Initialize service and model properties
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());
            var sqlRepo           = new SqlServerRepository(connectionFactory);
            var svc   = new UserExperienceService(sqlRepo);
            var model = PopulateSearchModelSettings(id);

            var session = (HttpSessionState)GetSession();

            session[DataTableSessionConstants.UserExperienceSearchState] = model;

            //Get the data
            var dtResponse = FetchSearchGridData(svc, model);

            //Serialize response
            var json     = dtResponse.ToJson();
            var response = Request.CreateResponse(HttpStatusCode.OK);

            response.Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
            return(response);
        }
        public HttpResponseMessage Waits()
        {
            //Initialize service and model properties
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());
            var sqlRepo           = new SqlServerRepository(connectionFactory);
            var svc   = new SystemLoadService(sqlRepo);
            var model = PopulateServerModelSettings();
            var qualityIndicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(new ConfigurationRepository(connectionFactory)));

            var session = (HttpSessionState)GetSession();

            session[DataTableSessionConstants.SystemLoadWaitsState] = model;

            //Get the data
            var dtResponse = FetchServerGridData(svc, model, qualityIndicatorService);

            //Serialize response
            var json     = dtResponse.ToJson();
            var response = Request.CreateResponse(HttpStatusCode.OK);

            response.Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
            return(response);
        }
Example #21
0
        public HttpResponseMessage Hours()
        {
            //Initialize service and model properties
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());
            var svc = this.GetBackupDbccService();
            var qualityIndicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(new ConfigurationRepository(connectionFactory)));

            var model = PopulateHoursModelSettings();

            var session = (HttpSessionState)GetSession();

            session[DataTableSessionConstants.RecoverabilityIntegrityState] = model;

            //Get the data
            // Pass QualityService
            var dtResponse = FetchHoursGridData(svc, model, qualityIndicatorService);

            //Serialize response
            var json     = dtResponse.ToJson();
            var response = Request.CreateResponse(HttpStatusCode.OK);

            response.Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
            return(response);
        }
        public HttpResponseMessage Scores()
        {
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());
            var sqlRepo           = new SqlServerRepository(connectionFactory);
            var svc = new BestInServiceReportingService(sqlRepo);

            var queryParams = this.requestService.GetQueryParamsDecoded(Request);
            var conditions  = PopulateCommonGridConditions(queryParams);

            var scores = svc.GetScoreHistory(conditions.StartDate.GetValueOrDefault(), conditions.EndDate.GetValueOrDefault(), conditions.SelectedServers);

            var hours = scores.OrderBy(x => x.SummaryDayHour)
                        .Select(x => x.SummaryDayHour)
                        .Distinct();
            var model = new ScoreChartViewModel
            {
                Labels = hours.Select(x => x.AddMinutes(conditions.TimezoneOffset).ToString("g"))
            };

            var dataSets = (from score in scores
                            group score by score.ServerArtifactId into serverScores
                            orderby serverScores.Key
                            select new ScoreChartDataSet
            {
                label = "Quarterly Uptime Score",
                data = from hour in hours select(int?)
                           (serverScores.FirstOrDefault(x => x.SummaryDayHour.Equals(hour))
                           ?? new ScoreChartModel()).UptimeScore,
                sample = from hour in hours
                         select(bool?) false
            }).ToArray();

            int max = 0, min = 100;

            for (var i = 0; i < dataSets.Count(); i++)
            {
                var localMin = dataSets[i].data.Min(x => x.GetValueOrDefault(100));
                if (localMin < min)
                {
                    min = localMin;
                }
                var localMax = dataSets[i].data.Max(x => x.GetValueOrDefault(100));
                if (localMax > max)
                {
                    max = localMax;
                }

                var color = ChartColorExtensions.ChartColorHex(i);
                dataSets[i].pointColor  = color;
                dataSets[i].strokeColor = color;
            }
            if (min > max)
            {
                min = max;
            }

            model.DataSets = dataSets.Take(1);
            model.MinValue = min;
            model.MaxValue = max;

            //Serialize response
            var json     = model.ToJson();
            var response = Request.CreateResponse(HttpStatusCode.OK);

            response.Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
            return(response);
        }
        public async Task <HttpResponseMessage> Log(LogLevel logLevel)
        {
            //Initialize service and model properties
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());
            var logRepo           = new LogRepository(connectionFactory);
            var configRepo        = new ConfigurationRepository(connectionFactory);
            var configLogSize     = await configRepo.ReadValueAsync <int>(ConfigurationKeys.LogFileSize);

            var logFileSize = Math.Max(configLogSize ?? Defaults.Log.DefaultLogFileSize, Defaults.Log.MinLogFileSize);
            var logLevelVal = logLevel == LogLevel.Errors ? 2 : (logLevel == LogLevel.Warnings ? 5 : 10);
            var logEntries  = await logRepo.ReadLastAsync(logFileSize, logLevelVal);

            //Get the data
            using (var sw = new System.IO.StringWriter())
            {
                var heaaderArr = new string[]
                {
                    "Log Id",
                    "Log Timestamp Utc",
                    "Module",
                    "Task Completed",
                    "Other Vars",
                    "Next Task",
                    "Agent Id",
                    "Log Level",
                    "Event Id",
                    "Event Type",
                    "Event Status",
                    "Event Time Stamp",
                    "Event Delay",
                    "Previous Event",
                    "Event Last Updated",
                    "Event Retries",
                    "Event Execution Time",
                    "Event Hour Id"
                };
                sw.WriteLine(string.Join(",", heaaderArr));
                foreach (var row in logEntries)
                {
                    sw.WriteCsvSafeLine(new[]
                    {
                        row.GrLogId.ToString(),
                        row.LogTimestampUtc.ToString(CultureInfo.InvariantCulture),
                        row.Module,
                        row.TaskCompleted,
                        row.OtherVars,
                        row.NextTask,
                        row.AgentId?.ToString(),
                        row.LogLevel?.ToString(),
                        row.EventId.ToString(),
                        row.EventType?.ToString(),
                        row.EventStatus?.ToString(),
                        row.EventTimeStamp?.ToString(CultureInfo.InvariantCulture),
                        row.EventDelay?.ToString(),
                        row.PreviousEventId?.ToString(),
                        row.EventLastUpdated?.ToString(CultureInfo.InvariantCulture),
                        row.EventRetries?.ToString(),
                        row.EventExecutionTime?.ToString(),
                        row.EventHourId?.ToString()
                    });
                }

                //Serialize response
                var message = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(sw.ToString())
                };
                message.Content.Headers.ContentType        = new System.Net.Http.Headers.MediaTypeHeaderValue("text/csv");
                message.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
                {
                    FileName = $"Log-{DateTime.UtcNow:yyyyMMdd-HHmmss}.csv"
                };
                return(message);
            }
        }
Example #24
0
 public void Setup()
 {
     this.helperMock        = new Mock <IHelper>();
     this.connectionFactory = new HelperConnectionFactory(this.helperMock.Object);
 }
        // Used by Relativity
        public BackfillController()
        {
            var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper());

            _sqlRepo = new SqlServerRepository(connectionFactory);
        }