diff --git a/packages/xo-server/src/api/vm.js b/packages/xo-server/src/api/vm.js index 933a1f744..0e6009a85 100644 --- a/packages/xo-server/src/api/vm.js +++ b/packages/xo-server/src/api/vm.js @@ -456,7 +456,7 @@ export async function migrate ({ if (mapVdisSrs) { mapVdisSrsXapi = {} forEach(mapVdisSrs, (srId, vdiId) => { - const vdiXapiId = this.getObject(vdiId, 'VDI')._xapiId + const vdiXapiId = this.getObject(vdiId, ['VDI', 'VDI-snapshot'])._xapiId mapVdisSrsXapi[vdiXapiId] = this.getObject(srId, 'SR')._xapiId return permissions.push([srId, 'administrate']) }) diff --git a/packages/xo-server/src/xapi/index.js b/packages/xo-server/src/xapi/index.js index c9229e627..46f3be50d 100644 --- a/packages/xo-server/src/xapi/index.js +++ b/packages/xo-server/src/xapi/index.js @@ -19,6 +19,7 @@ import { every, find, filter, + flatMap, flatten, groupBy, includes, @@ -1149,7 +1150,8 @@ export default class Xapi extends XapiBase { // VDIs/SRs mapping const vdis = {} const defaultSr = host.$pool.$default_SR - for (const vbd of vm.$VBDs) { + const vbds = flatMap(vm.$snapshots, '$VBDs').concat(vm.$VBDs) + for (const vbd of vbds) { const vdi = vbd.$VDI if (vbd.type === 'Disk') { vdis[vdi.$ref] =