feat(backups): clean up other schedules snapshots (#5949)

Fixes xoa-support#4129
This commit is contained in:
Florent BEAUCHAMP 2021-10-14 14:44:40 +02:00 committed by GitHub
parent f9734d202b
commit 84dccd800f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 8 deletions

View File

@ -1,5 +1,6 @@
const assert = require('assert') const assert = require('assert')
const findLast = require('lodash/findLast.js') const findLast = require('lodash/findLast.js')
const groupBy = require('lodash/groupBy.js')
const ignoreErrors = require('promise-toolbox/ignoreErrors.js') const ignoreErrors = require('promise-toolbox/ignoreErrors.js')
const keyBy = require('lodash/keyBy.js') const keyBy = require('lodash/keyBy.js')
const mapValues = require('lodash/mapValues.js') const mapValues = require('lodash/mapValues.js')
@ -284,17 +285,28 @@ exports.VmBackup = class VmBackup {
} }
async _removeUnusedSnapshots() { async _removeUnusedSnapshots() {
// TODO: handle all schedules (no longer existing schedules default to 0 retention) const jobSettings = this.job.settings
const { scheduleId } = this
const scheduleSnapshots = this._jobSnapshots.filter(_ => _.other_config['xo:backup:schedule'] === scheduleId)
const baseVmRef = this._baseVm?.$ref const baseVmRef = this._baseVm?.$ref
const { config } = this
const baseSettings = {
...config.defaultSettings,
...config.metadata.defaultSettings,
...jobSettings[''],
}
const snapshotsPerSchedule = groupBy(this._jobSnapshots, _ => _.other_config['xo:backup:schedule'])
const xapi = this._xapi const xapi = this._xapi
await asyncMap(getOldEntries(this._settings.snapshotRetention, scheduleSnapshots), ({ $ref }) => { await asyncMap(Object.entries(snapshotsPerSchedule), ([scheduleId, snapshots]) => {
if ($ref !== baseVmRef) { const settings = {
return xapi.VM_destroy($ref) ...baseSettings,
...jobSettings[scheduleId],
...jobSettings[this.vm.uuid],
} }
return asyncMap(getOldEntries(settings.snapshotRetention, snapshots), ({ $ref }) => {
if ($ref !== baseVmRef) {
return xapi.VM_destroy($ref)
}
})
}) })
} }

View File

@ -13,6 +13,8 @@
> Users must be able to say: “I had this issue, happy to know it's fixed” > Users must be able to say: “I had this issue, happy to know it's fixed”
- [Backups] Delete unused snapshots related to other schedules (even no longer existing) (PR [#5949](https://github.com/vatesfr/xen-orchestra/pull/5949))
### Packages to release ### Packages to release
> Packages will be released in the order they are here, therefore, they should > Packages will be released in the order they are here, therefore, they should
@ -30,5 +32,7 @@
> >
> In case of conflict, the highest (lowest in previous list) `$version` wins. > In case of conflict, the highest (lowest in previous list) `$version` wins.
- @xen-orchestra/backup minor
- @xen-orchestra/proxy minor - @xen-orchestra/proxy minor
- xo-server patch
- xo-web minor - xo-web minor