feat(vm.deltaCopy): force param to bypass VDI chains check (#592)
This commit is contained in:
parent
1ded2f8101
commit
68a94da44c
@ -755,11 +755,12 @@ exports.importDeltaBackup = importDeltaBackup
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
deltaCopy = ({ vm, sr }) -> @deltaCopyVm(vm, sr)
|
||||
deltaCopy = ({ force, vm, sr }) -> @deltaCopyVm(vm, sr, force)
|
||||
|
||||
deltaCopy.params = {
|
||||
id: { type: 'string' },
|
||||
sr: { type: 'string' }
|
||||
sr: { type: 'string' },
|
||||
force: { type: 'boolean', optional: true }
|
||||
}
|
||||
|
||||
deltaCopy.resolve = {
|
||||
|
@ -781,12 +781,17 @@ export default class Xapi extends XapiBase {
|
||||
@cancellable
|
||||
@deferrable.onFailure
|
||||
async exportDeltaVm ($onFailure, $cancelToken, vmId, baseVmId = undefined, {
|
||||
snapshotNameLabel = undefined,
|
||||
bypassVdiChainsCheck = false,
|
||||
|
||||
// Contains a vdi.$id set of vmId.
|
||||
fullVdisRequired = [],
|
||||
disableBaseTags = false
|
||||
|
||||
disableBaseTags = false,
|
||||
snapshotNameLabel = undefined
|
||||
} = {}) {
|
||||
this._assertHealthyVdiChains(this.getObject(vmId))
|
||||
if (!bypassVdiChainsCheck) {
|
||||
this._assertHealthyVdiChains(this.getObject(vmId))
|
||||
}
|
||||
|
||||
const vm = await this.snapshotVm(vmId)
|
||||
$onFailure(() => this._deleteVm(vm))
|
||||
|
@ -398,7 +398,7 @@ export default class {
|
||||
// -----------------------------------------------------------------
|
||||
|
||||
@deferrable.onFailure
|
||||
async deltaCopyVm ($onFailure, srcVm, targetSr) {
|
||||
async deltaCopyVm ($onFailure, srcVm, targetSr, force = false) {
|
||||
const srcXapi = this._xo.getXapi(srcVm)
|
||||
const targetXapi = this._xo.getXapi(targetSr)
|
||||
|
||||
@ -420,6 +420,7 @@ export default class {
|
||||
const dstVm = await (async () => {
|
||||
const { cancel, token } = CancelToken.source()
|
||||
const delta = await srcXapi.exportDeltaVm(token, srcVm.$id, localBaseUuid, {
|
||||
bypassVdiChainsCheck: force,
|
||||
snapshotNameLabel: `XO_DELTA_EXPORT: ${targetSr.name_label} (${targetSr.uuid})`
|
||||
})
|
||||
$onFailure(() => srcXapi.deleteVm(delta.vm.uuid))
|
||||
|
Loading…
Reference in New Issue
Block a user