public static IRunnerData CreateTask(Duplicati.Server.Serialization.DuplicatiOperation operation, Duplicati.Server.Serialization.Interface.IBackup backup, IDictionary <string, string> extraOptions = null, string[] filterStrings = null) { return(new RunnerData() { Operation = operation, Backup = backup, ExtraOptions = extraOptions, FilterStrings = filterStrings }); }
private static void UpdateMetadata(Duplicati.Server.Serialization.Interface.IBackup backup, object o) { if (o is Duplicati.Library.Interface.IBasicResults) { var r = (Duplicati.Library.Interface.IBasicResults)o; backup.Metadata["LastDuration"] = r.Duration.ToString(); backup.Metadata["LastStarted"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).BeginTime.ToUniversalTime()); backup.Metadata["LastFinished"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).EndTime.ToUniversalTime()); } if (o is Duplicati.Library.Interface.IParsedBackendStatistics) { var r = (Duplicati.Library.Interface.IParsedBackendStatistics)o; UpdateMetadata(backup, r); } if (o is Duplicati.Library.Interface.IBackendStatsticsReporter) { var r = (Duplicati.Library.Interface.IBackendStatsticsReporter)o; if (r.BackendStatistics is Duplicati.Library.Interface.IParsedBackendStatistics) { UpdateMetadata(backup, (Duplicati.Library.Interface.IParsedBackendStatistics)r.BackendStatistics); } } if (o is Duplicati.Library.Interface.IBackupResults) { var r = (Duplicati.Library.Interface.IBackupResults)o; backup.Metadata["SourceFilesSize"] = r.SizeOfExaminedFiles.ToString(); backup.Metadata["SourceFilesCount"] = r.ExaminedFiles.ToString(); backup.Metadata["SourceSizeString"] = Duplicati.Library.Utility.Utility.FormatSizeString(r.SizeOfExaminedFiles); backup.Metadata["LastBackupStarted"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).BeginTime.ToUniversalTime()); backup.Metadata["LastBackupFinished"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).EndTime.ToUniversalTime()); if (r.FilesWithError > 0 || r.Warnings.Any()) { Program.DataConnection.RegisterNotification( NotificationType.Error, backup.IsTemporary ? "Warning" : string.Format("Warning while running {0}", backup.Name), r.FilesWithError > 0 ? string.Format("Errors affected {0} file(s) ", r.FilesWithError) : string.Format("Got {0} warning(s) ", r.Warnings.Count()) , null, backup.ID, "backup:show-log", (n, a) => { var existing = (a.Where(x => x.BackupID == backup.ID)).FirstOrDefault(); if (existing == null) { return(n); } if (existing.Type == NotificationType.Error) { return(existing); } return(n); } ); } } if (!backup.IsTemporary) { Program.DataConnection.SetMetadata(backup.Metadata, long.Parse(backup.ID), null); } System.Threading.Interlocked.Increment(ref Program.LastDataUpdateID); Program.StatusEventNotifyer.SignalNewEvent(); }
private static bool TestIfOptionApplies(Duplicati.Server.Serialization.Interface.IBackup backup, DuplicatiOperation mode, string filter) { //TODO: Implement to avoid warnings return(true); }
private static void UpdateMetadata(Duplicati.Server.Serialization.Interface.IBackup backup, Duplicati.Library.Interface.IBasicResults result) { if (result is Duplicati.Library.Interface.IRestoreResults) { var r = (Duplicati.Library.Interface.IRestoreResults)result; backup.Metadata["LastRestoreDuration"] = r.Duration.ToString(); backup.Metadata["LastRestoreStarted"] = Library.Utility.Utility.SerializeDateTime(result.BeginTime.ToUniversalTime()); backup.Metadata["LastRestoreFinished"] = Library.Utility.Utility.SerializeDateTime(result.EndTime.ToUniversalTime()); } if (result is Duplicati.Library.Interface.IParsedBackendStatistics) { var r = (Duplicati.Library.Interface.IParsedBackendStatistics)result; UpdateMetadata(backup, r); } if (result is Duplicati.Library.Interface.IBackendStatsticsReporter) { var r = (Duplicati.Library.Interface.IBackendStatsticsReporter)result; if (r.BackendStatistics is Duplicati.Library.Interface.IParsedBackendStatistics) { UpdateMetadata(backup, (Duplicati.Library.Interface.IParsedBackendStatistics)r.BackendStatistics); } } if (result is Duplicati.Library.Interface.ICompactResults) { UpdateLastCompactMetadata(backup, (Duplicati.Library.Interface.ICompactResults)result); } if (result is Duplicati.Library.Interface.IBackupResults) { var r = (Duplicati.Library.Interface.IBackupResults)result; backup.Metadata["SourceFilesSize"] = r.SizeOfExaminedFiles.ToString(); backup.Metadata["SourceFilesCount"] = r.ExaminedFiles.ToString(); backup.Metadata["SourceSizeString"] = Duplicati.Library.Utility.Utility.FormatSizeString(r.SizeOfExaminedFiles); backup.Metadata["LastBackupStarted"] = Library.Utility.Utility.SerializeDateTime(result.BeginTime.ToUniversalTime()); backup.Metadata["LastBackupFinished"] = Library.Utility.Utility.SerializeDateTime(result.EndTime.ToUniversalTime()); backup.Metadata["LastBackupDuration"] = r.Duration.ToString(); if (r.CompactResults != null) { UpdateLastCompactMetadata(backup, r.CompactResults); } if (r.FilesWithError > 0 || r.Warnings.Any() || r.Errors.Any()) { Program.DataConnection.RegisterNotification( r.FilesWithError == 0 && !r.Errors.Any() ? NotificationType.Warning : NotificationType.Error, backup.IsTemporary ? "Warning" : string.Format("Warning while running {0}", backup.Name), r.FilesWithError > 0 ? string.Format("Errors affected {0} file(s) ", r.FilesWithError) : (r.Errors.Any() ? string.Format("Got {0} error(s)", r.Errors.Count()) : string.Format("Got {0} warning(s)", r.Warnings.Count()) ) , null, backup.ID, "backup:show-log", null, null, null, (n, a) => { var existing = a.FirstOrDefault(x => x.BackupID == backup.ID); if (existing == null) { return(n); } if (existing.Type == NotificationType.Error) { return(existing); } return(n); } ); } } else if (result.ParsedResult != Library.Interface.ParsedResultType.Success) { var type = result.ParsedResult == Library.Interface.ParsedResultType.Warning ? NotificationType.Warning : NotificationType.Error; var title = result.ParsedResult == Library.Interface.ParsedResultType.Warning ? (backup.IsTemporary ? "Warning" : string.Format("Warning while running {0}", backup.Name)) : (backup.IsTemporary ? "Error" : string.Format("Error while running {0}", backup.Name)); var message = result.ParsedResult == Library.Interface.ParsedResultType.Warning ? string.Format("Got {0} warning(s)", result.Warnings.Count()) : string.Format("Got {0} error(s)", result.Errors.Count()); Program.DataConnection.RegisterNotification( type, title, message, null, backup.ID, "backup:show-log", null, null, "backup:show-log", (n, a) => n ); } if (!backup.IsTemporary) { Program.DataConnection.SetMetadata(backup.Metadata, long.Parse(backup.ID), null); } System.Threading.Interlocked.Increment(ref Program.LastDataUpdateID); Program.StatusEventNotifyer.SignalNewEvent(); }