Revert "chore(backups/DeltaReplication): unify base VM detection" (#5861)

This reverts commit 9139c5e9d6.
See https://xcp-ng.org/forum/topic/4817
This commit is contained in:
Pierre Donias 2021-07-30 14:55:00 +02:00 committed by GitHub
parent 175be44823
commit 4f53555f09
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 16 deletions

View File

@ -44,6 +44,7 @@ exports.ImportVmBackup = class ImportVmBackup {
? await xapi.VM_import(backup, srRef) ? await xapi.VM_import(backup, srRef)
: await importDeltaVm(backup, await xapi.getRecord('SR', srRef), { : await importDeltaVm(backup, await xapi.getRecord('SR', srRef), {
...this._importDeltaVmSettings, ...this._importDeltaVmSettings,
detectBase: false,
}) })
await Promise.all([ await Promise.all([

View File

@ -143,14 +143,7 @@ exports.importDeltaVm = defer(async function importDeltaVm(
$defer, $defer,
deltaVm, deltaVm,
sr, sr,
{ { cancelToken = CancelToken.none, detectBase = true, mapVdisSrs = {}, newMacAddresses = false } = {}
// can be set to a specific VM
baseVm = false,
cancelToken = CancelToken.none,
mapVdisSrs = {},
newMacAddresses = false,
} = {}
) { ) {
const { version } = deltaVm const { version } = deltaVm
if (compareVersions(version, '1.0.0') < 0) { if (compareVersions(version, '1.0.0') < 0) {
@ -160,8 +153,16 @@ exports.importDeltaVm = defer(async function importDeltaVm(
const vmRecord = deltaVm.vm const vmRecord = deltaVm.vm
const xapi = sr.$xapi const xapi = sr.$xapi
if (!(baseVm === false || TAG_BASE_DELTA in vmRecord.other_config)) { let baseVm
baseVm = undefined if (detectBase) {
const remoteBaseVmUuid = vmRecord.other_config[TAG_BASE_DELTA]
if (remoteBaseVmUuid) {
baseVm = find(xapi.objects.all, obj => (obj = obj.other_config) && obj[TAG_COPY_SRC] === remoteBaseVmUuid)
if (!baseVm) {
throw new Error(`could not find the base VM (copy of ${remoteBaseVmUuid})`)
}
}
} }
const baseVdis = {} const baseVdis = {}
@ -230,7 +231,7 @@ exports.importDeltaVm = defer(async function importDeltaVm(
const vdi = vdiRecords[vdiRef] const vdi = vdiRecords[vdiRef]
let newVdi let newVdi
const remoteBaseVdiUuid = baseVm && vdi.other_config[TAG_BASE_DELTA] const remoteBaseVdiUuid = detectBase && vdi.other_config[TAG_BASE_DELTA]
if (remoteBaseVdiUuid) { if (remoteBaseVdiUuid) {
const baseVdi = find(baseVdis, vdi => vdi.other_config[TAG_COPY_SRC] === remoteBaseVdiUuid) const baseVdi = find(baseVdis, vdi => vdi.other_config[TAG_COPY_SRC] === remoteBaseVdiUuid)
if (!baseVdi) { if (!baseVdi) {

View File

@ -12,8 +12,6 @@ const { MixinReplicationWriter } = require('./_MixinReplicationWriter.js')
const { listReplicatedVms } = require('./_listReplicatedVms.js') const { listReplicatedVms } = require('./_listReplicatedVms.js')
exports.DeltaReplicationWriter = class DeltaReplicationWriter extends MixinReplicationWriter(AbstractDeltaWriter) { exports.DeltaReplicationWriter = class DeltaReplicationWriter extends MixinReplicationWriter(AbstractDeltaWriter) {
#baseVm
async checkBaseVdis(baseUuidToSrcVdi, baseVm) { async checkBaseVdis(baseUuidToSrcVdi, baseVm) {
const sr = this._sr const sr = this._sr
const replicatedVm = listReplicatedVms(sr.$xapi, this._backup.job.id, sr.uuid, this._backup.vm.uuid).find( const replicatedVm = listReplicatedVms(sr.$xapi, this._backup.job.id, sr.uuid, this._backup.vm.uuid).find(
@ -23,8 +21,6 @@ exports.DeltaReplicationWriter = class DeltaReplicationWriter extends MixinRepli
return baseUuidToSrcVdi.clear() return baseUuidToSrcVdi.clear()
} }
this.#baseVm = replicatedVm
const xapi = replicatedVm.$xapi const xapi = replicatedVm.$xapi
const replicatedVdis = new Set( const replicatedVdis = new Set(
await asyncMap(await replicatedVm.$getDisks(), async vdiRef => { await asyncMap(await replicatedVm.$getDisks(), async vdiRef => {
@ -92,7 +88,6 @@ exports.DeltaReplicationWriter = class DeltaReplicationWriter extends MixinRepli
targetVmRef = await importDeltaVm( targetVmRef = await importDeltaVm(
{ {
__proto__: deltaExport, __proto__: deltaExport,
baseVm: this.#baseVm,
vm: { vm: {
...deltaExport.vm, ...deltaExport.vm,
tags: [...deltaExport.vm.tags, 'Continuous Replication'], tags: [...deltaExport.vm.tags, 'Continuous Replication'],