From 56114a7d18526f3c7ac8522c1eaf0bbf88bdb4af Mon Sep 17 00:00:00 2001 From: badrAZ Date: Mon, 17 Sep 2018 17:23:45 +0200 Subject: [PATCH] feat(xo-server-backup-report): ability to test the plugin (#3421) --- CHANGELOG.md | 2 ++ docs/assets/log-runId.png | Bin 0 -> 38910 bytes docs/backups.md | 6 ++++++ .../xo-server-backup-reports/src/index.js | 18 ++++++++++++++++++ 4 files changed, 26 insertions(+) create mode 100644 docs/assets/log-runId.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 50039acca..7e0a17eda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - [Backup NG form] improve schedule's form [#3138](https://github.com/vatesfr/xen-orchestra/issues/3138) (PR [#3359](https://github.com/vatesfr/xen-orchestra/pull/3359)) - [Backup NG Overview] Display transferred and merged data size for backup jobs [#3340](https://github.com/vatesfr/xen-orchestra/issues/3340) (PR [#3408](https://github.com/vatesfr/xen-orchestra/pull/3408)) - [VM] Display the PVHVM status [#3014](https://github.com/vatesfr/xen-orchestra/issues/3014) (PR [#3418](https://github.com/vatesfr/xen-orchestra/pull/3418)) +- [Backup reports] Ability to test the plugin (PR [#3421](https://github.com/vatesfr/xen-orchestra/pull/3421)) ### Bug fixes @@ -20,6 +21,7 @@ ### Released packages +- xo-server-backup-reports v0.14.0 - @xen-orchestra/async-map v0.0.0 - @xen-orchestra/mixin v0.0.0 - @xen-orchestra/emit-async v0.0.0 diff --git a/docs/assets/log-runId.png b/docs/assets/log-runId.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a641d593be5d4496c12cb174b524118773aef3 GIT binary patch literal 38910 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

kCf3e~BJUVOo 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

H%2>+|y)1fDQIRBE&g533#d?jP*JV%% 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 Logs are not "live" tasks. If you restart XOA during a backup, the log associated with the job will stay in orange (in progress), because it wasn't finished. It will stay forever unfinished because the job was cut in the middle. +## Backups execution + +Each backups' job execution is identified by a `runId`. You can find this `runId` in its detailed log. + +![](./assets/log-runId.png) + ## Consistent backup (with quiesce snapshots) All backup types rely on snapshots. But what about data consistency? By default, Xen Orchestra will try to take a **quiesced snapshot** every time a snapshot is done (and fall back to normal snapshots if it's not possible). diff --git a/packages/xo-server-backup-reports/src/index.js b/packages/xo-server-backup-reports/src/index.js index 1f10f939a..f968edfe8 100644 --- a/packages/xo-server-backup-reports/src/index.js +++ b/packages/xo-server-backup-reports/src/index.js @@ -30,6 +30,20 @@ export const configurationSchema = { }, } +export const testSchema = { + type: 'object', + + properties: { + runId: { + type: 'string', + description: `job's runId`, + }, + }, + + additionalProperties: false, + required: ['runId'], +} + // =================================================================== const ICON_FAILURE = '🚨' @@ -118,6 +132,10 @@ class BackupReportsXoPlugin { this._xo.on('job:terminated', this._report) } + test ({ runId }) { + return this._backupNgListener(undefined, undefined, undefined, runId) + } + unload () { this._xo.removeListener('job:terminated', this._report) }