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); }
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); }
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()}"); } }
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()}"); } }
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); }
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); }
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)); }
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); }
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); }
} // 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); }
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); }
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); } }
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); }