Merge pull request #3282 from verhoek/fix/last_succesful_run

Fix last succesful run
This commit is contained in:
Kenneth Skovhede
2018-06-26 12:08:07 +02:00
committed by GitHub
5 changed files with 32 additions and 27 deletions
-2
View File
@@ -18,8 +18,6 @@
//
#endregion
using System;
using System.Collections.Generic;
using System.Text;
namespace Duplicati.Library.Logging
{
@@ -904,7 +904,7 @@ namespace Duplicati.Library.Main.Operation
if ((currentAttr & System.IO.FileAttributes.ReadOnly) != 0) // clear readonly attribute
{
if (options.Dryrun)
Logging.Log.WriteDryrunMessage(LOGTAG, "WouldResetReadOnlyAttribyte", "Would reset read-only attribute on file: {0}", targetpath);
Logging.Log.WriteDryrunMessage(LOGTAG, "WouldResetReadOnlyAttribute", "Would reset read-only attribute on file: {0}", targetpath);
else m_systemIO.SetFileAttributes(targetpath, currentAttr & ~System.IO.FileAttributes.ReadOnly);
}
if (options.Dryrun)
+22 -22
View File
@@ -713,37 +713,38 @@ namespace Duplicati.Server
}
}
private static void UpdateMetadata(Duplicati.Server.Serialization.Interface.IBackup backup, object o)
private static void UpdateMetadata(Duplicati.Server.Serialization.Interface.IBackup backup, Duplicati.Library.Interface.IBasicResults result)
{
if (o is Duplicati.Library.Interface.IBasicResults)
if (result is Duplicati.Library.Interface.IRestoreResults)
{
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());
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 (o is Duplicati.Library.Interface.IParsedBackendStatistics)
if (result is Duplicati.Library.Interface.IParsedBackendStatistics)
{
var r = (Duplicati.Library.Interface.IParsedBackendStatistics)o;
var r = (Duplicati.Library.Interface.IParsedBackendStatistics)result;
UpdateMetadata(backup, r);
}
if (o is Duplicati.Library.Interface.IBackendStatsticsReporter)
if (result is Duplicati.Library.Interface.IBackendStatsticsReporter)
{
var r = (Duplicati.Library.Interface.IBackendStatsticsReporter)o;
var r = (Duplicati.Library.Interface.IBackendStatsticsReporter)result;
if (r.BackendStatistics is Duplicati.Library.Interface.IParsedBackendStatistics)
UpdateMetadata(backup, (Duplicati.Library.Interface.IParsedBackendStatistics)r.BackendStatistics);
}
if (o is Duplicati.Library.Interface.IBackupResults)
if (result is Duplicati.Library.Interface.IBackupResults)
{
var r = (Duplicati.Library.Interface.IBackupResults)o;
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(((Duplicati.Library.Interface.IBasicResults)o).BeginTime.ToUniversalTime());
backup.Metadata["LastBackupFinished"] = Library.Utility.Utility.SerializeDateTime(((Duplicati.Library.Interface.IBasicResults)o).EndTime.ToUniversalTime());
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.FilesWithError > 0 || r.Warnings.Any() || r.Errors.Any())
{
@@ -778,24 +779,23 @@ namespace Duplicati.Server
);
}
}
else if (o is Duplicati.Library.Interface.IBasicResults)
else
{
var r = (Duplicati.Library.Interface.IBasicResults)o;
if (r.ParsedResult != Library.Interface.ParsedResultType.Success)
if (result.ParsedResult != Library.Interface.ParsedResultType.Success)
{
var type = r.ParsedResult == Library.Interface.ParsedResultType.Warning
var type = result.ParsedResult == Library.Interface.ParsedResultType.Warning
? NotificationType.Warning
: NotificationType.Error;
var title = r.ParsedResult == Library.Interface.ParsedResultType.Warning
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 = r.ParsedResult == Library.Interface.ParsedResultType.Warning
? string.Format("Got {0} warning(s) ", r.Warnings.Count())
: string.Format("Got {0} error(s) ", r.Errors.Count());
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,
@@ -43,11 +43,12 @@
</dl>
<dl>
<dt translate>Last successful run:</dt>
<dt translate>Last successful backup:</dt>
<dd ng-hide="item.Backup.Metadata == null || item.Backup.Metadata.LastBackupFinished == null"
title="{{item.Backup.Metadata.LastBackupFinished | parsetimestamp }}"
translate translate-params-time="item.Backup.Metadata.LastBackupFinished | moment: 'calendar'"
translate-params-duration="formatDuration(item.Backup.Metadata.LastDuration)">{{time}} (took {{duration}})</dd>
translate-params-duration="formatDuration(item.Backup.Metadata.LastBackupDuration || item.Backup.Metadata.LastDuration)">{{time}} (took {{duration}})
</dd>
<dd>
<span ng-show="item.Backup.Metadata == null || item.Backup.Metadata.LastBackupFinished == null">{{'Never' | translate}} - </span><a href class="action-link" ng-click="doRun(item.Backup.ID)" translate>Run now</a>
</dd>
@@ -23,6 +23,12 @@
<div ng-hide="item.Backup.Metadata == null || item.Backup.Metadata.TargetSizeString == null" class="subtext" translate translate-n="parseInt(item.Backup.Metadata.BackupListCount)" translate-plural="{{item.Backup.Metadata.TargetSizeString}} / {{$count}} Versions">{{item.Backup.Metadata.TargetSizeString}} / {{$count}} Version</div>
<div ng-show="item.Backup.Metadata == null || item.Backup.Metadata.TargetSizeString == null" class="subtext" translate>Unknown backup size and versions</div>
<div ng-hide="item.Backup.Metadata == null || item.Backup.Metadata.LastRestoreFinished == null"
class="subtext"
translate translate-params-time="item.Backup.Metadata.LastRestoreFinished | moment: 'calendar'"
translate-params-duration="formatDuration(item.Backup.Metadata.LastRestoreDuration)">Last successful restore: {{time}} (took {{duration || '0 seconds'}})
</div>
</li>
</ul>