diff --git a/packages/xo-web/src/icons.scss b/packages/xo-web/src/icons.scss
index d702e8ba3..04c853812 100644
--- a/packages/xo-web/src/icons.scss
+++ b/packages/xo-web/src/icons.scss
@@ -378,6 +378,11 @@
@extend .fa-folder;
}
+ &-health {
+ @extend .fa;
+ @extend .fa-heartbeat;
+ }
+
// Jobs
&-jobs {
@extend .fa;
diff --git a/packages/xo-web/src/xo-app/logs/backup-ng/log-alert-body.js b/packages/xo-web/src/xo-app/logs/backup-ng/log-alert-body.js
index f3848199d..1197f6e23 100644
--- a/packages/xo-web/src/xo-app/logs/backup-ng/log-alert-body.js
+++ b/packages/xo-web/src/xo-app/logs/backup-ng/log-alert-body.js
@@ -201,6 +201,23 @@ const SnapshotTask = ({ className, task }) => (
)
+const HealthCheckTask = ({ children, className, task }) => (
+
+ {task.message}
+ {children}
+
+
+
+
+)
+const HealthCheckVmStartTask = ({ children, className, task }) => (
+
+ {task.message}
+
+
+
+
+)
const RemoteTask = ({ children, className, task }) => (
@@ -234,7 +251,17 @@ const TransferMergeTask = ({ className, task }) => {
return (
- {task.message}
+ {task.message === 'transfer' ? (
+ task.parent?.message === 'health check' ? (
+
+ ) : (
+
+ )
+ ) : (
+
+ )}{' '}
+ {task.message}
+
@@ -263,6 +290,8 @@ const COMPONENT_BY_MESSAGE = {
snapshot: SnapshotTask,
merge: TransferMergeTask,
transfer: TransferMergeTask,
+ 'health check': HealthCheckTask,
+ vmstart: HealthCheckVmStartTask,
}
const TaskLi = ({ task, ...props }) => {
@@ -287,7 +316,20 @@ export default decorate([
addSubscriptions(({ id }) => ({
log: cb =>
subscribeBackupNgLogs(logs => {
- cb(logs[id])
+ const linkParent = parent => {
+ const { tasks } = parent
+ if (tasks !== undefined) {
+ for (const task of tasks) {
+ task.parent = parent
+ linkParent(task)
+ }
+ }
+ }
+ const log = logs[id]
+ if (log !== undefined) {
+ linkParent(log)
+ }
+ cb(log)
}),
})),
connectStore({
@@ -469,7 +511,13 @@ export default decorate([
{map(subTaskLog.tasks, subSubTaskLog => (
-
+
+
+ {map(subSubTaskLog.tasks, subSubSubTaskLog => (
+
+ ))}
+
+
))}