public string SaveBackup() { ReportPlaybackOptions config = _config.GetReportPlaybackOptions(); if (string.IsNullOrEmpty(config.BackupPath)) { return("No backup path set"); } DirectoryInfo fi = new DirectoryInfo(config.BackupPath); _logger.Info("Backup Path : " + config.BackupPath + " attributes : " + fi.Attributes + " exists : " + fi.Exists); if (fi.Exists == false || (fi.Attributes & FileAttributes.Directory) != FileAttributes.Directory) { return("Backup path does not exist or is not a directory"); } ActivityRepository repository = new ActivityRepository(_logger, _config.ApplicationPaths, _fileSystem); string raw_data = repository.ExportRawData(); String fileName = "PlaybackReportingBackup-" + DateTime.Now.ToString("yyyyMMdd-HHmmss") + ".tsv"; string backup_file = Path.Combine(fi.FullName, fileName); _logger.Info("Backup Path Final : " + backup_file); try { System.IO.File.WriteAllText(backup_file, raw_data); } catch (Exception e) { return(e.Message); } FileInfo[] files = fi.GetFiles("PlaybackReportingBackup-*.tsv"); int max_files = config.MaxBackupFiles; int files_to_delete = files.Length - max_files; _logger.Info("Backup Files Counts Current: " + files.Length + " Max:" + max_files + " ToDelete:" + files_to_delete); if (files_to_delete > 0) { List <string> file_paths = new List <string>(); foreach (FileInfo file_info in files) { file_paths.Add(file_info.FullName); _logger.Info("Existing Backup Files Before: " + file_info.Name); } file_paths.Sort(); for (int file_index = 0; file_index < files_to_delete; file_index++) { FileInfo del_file = new FileInfo(file_paths[file_index]); _logger.Info("Deleting backup file : " + del_file.FullName); del_file.Delete(); } } return("Backup saved : " + fileName); }
public async System.Threading.Tasks.Task Execute(CancellationToken cancellationToken, IProgress <double> progress) { await System.Threading.Tasks.Task.Run(() => { _logger.Info("Playback Reporting Data Trim"); ReportPlaybackOptions config = _config.GetReportPlaybackOptions(); int max_data_age = config.MaxDataAge; _logger.Info("MaxDataAge : " + max_data_age); if (max_data_age == -1) { _logger.Info("Keep data forever, not doing any data cleanup"); return; } else if (max_data_age == 0) { _logger.Info("Removing all data"); Repository.DeleteOldData(null); } else { DateTime del_defore = DateTime.Now.AddMonths(max_data_age * -1); Repository.DeleteOldData(del_defore); } }, cancellationToken); }
public static void SaveReportPlaybackOptions(this IConfigurationManager manager, ReportPlaybackOptions options) { manager.SaveConfiguration("playback_reporting", options); }