parent
3bb7d2c294
commit
b475b265ae
@ -5,8 +5,9 @@ const { importDeltaVm } = require('./_deltaVm')
|
|||||||
const { Task } = require('./Task')
|
const { Task } = require('./Task')
|
||||||
|
|
||||||
exports.ImportVmBackup = class ImportVmBackup {
|
exports.ImportVmBackup = class ImportVmBackup {
|
||||||
constructor({ adapter, metadata, srUuid, xapi }) {
|
constructor({ adapter, metadata, srUuid, xapi, settings: { newMacAddresses } = {} }) {
|
||||||
this._adapter = adapter
|
this._adapter = adapter
|
||||||
|
this._importDeltaVmSettings = { newMacAddresses }
|
||||||
this._metadata = metadata
|
this._metadata = metadata
|
||||||
this._srUuid = srUuid
|
this._srUuid = srUuid
|
||||||
this._xapi = xapi
|
this._xapi = xapi
|
||||||
@ -37,6 +38,7 @@ exports.ImportVmBackup = class ImportVmBackup {
|
|||||||
const vmRef = isFull
|
const vmRef = isFull
|
||||||
? 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,
|
||||||
detectBase: false,
|
detectBase: false,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -140,6 +140,7 @@ declare namespace backup {
|
|||||||
function importVmBackup(_: {
|
function importVmBackup(_: {
|
||||||
backupId: string
|
backupId: string
|
||||||
remote: Remote
|
remote: Remote
|
||||||
|
settings?: { newMacAddresses?: boolean }
|
||||||
srUuid: string
|
srUuid: string
|
||||||
xapi: Xapi
|
xapi: Xapi
|
||||||
streamLogs: boolean = false
|
streamLogs: boolean = false
|
||||||
|
@ -177,10 +177,10 @@ export default class Backups {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
importVmBackup: [
|
importVmBackup: [
|
||||||
defer(($defer, { backupId, remote, srUuid, streamLogs = false, xapi: xapiOpts }) =>
|
defer(($defer, { backupId, remote, srUuid, settings, streamLogs = false, xapi: xapiOpts }) =>
|
||||||
Disposable.use(this.getAdapter(remote), this.getXapi(xapiOpts), async (adapter, xapi) => {
|
Disposable.use(this.getAdapter(remote), this.getXapi(xapiOpts), async (adapter, xapi) => {
|
||||||
const metadata = await adapter.readVmBackupMetadata(backupId)
|
const metadata = await adapter.readVmBackupMetadata(backupId)
|
||||||
const run = () => new ImportVmBackup({ adapter, metadata, srUuid, xapi }).run()
|
const run = () => new ImportVmBackup({ adapter, metadata, settings, srUuid, xapi }).run()
|
||||||
return streamLogs
|
return streamLogs
|
||||||
? runWithLogs(
|
? runWithLogs(
|
||||||
async (args, onLog) =>
|
async (args, onLog) =>
|
||||||
@ -205,6 +205,7 @@ export default class Backups {
|
|||||||
params: {
|
params: {
|
||||||
backupId: { type: 'string' },
|
backupId: { type: 'string' },
|
||||||
remote: { type: 'object' },
|
remote: { type: 'object' },
|
||||||
|
settings: { type: 'object' },
|
||||||
srUuid: { type: 'string' },
|
srUuid: { type: 'string' },
|
||||||
streamLogs: { type: 'boolean', optional: true },
|
streamLogs: { type: 'boolean', optional: true },
|
||||||
xapi: { type: 'object' },
|
xapi: { type: 'object' },
|
||||||
|
@ -25,4 +25,5 @@
|
|||||||
> 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/xapi minor
|
- @xen-orchestra/xapi minor
|
||||||
|
- @xen-orchestra/backups minor
|
||||||
- xo-server patch
|
- xo-server patch
|
||||||
|
@ -247,8 +247,8 @@ listVmBackups.params = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export function importVmBackup({ id, sr }) {
|
export function importVmBackup({ id, settings, sr }) {
|
||||||
return this.importVmBackupNg(id, sr)
|
return this.importVmBackupNg(id, sr, settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
importVmBackup.permission = 'admin'
|
importVmBackup.permission = 'admin'
|
||||||
@ -257,6 +257,9 @@ importVmBackup.params = {
|
|||||||
id: {
|
id: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
},
|
},
|
||||||
|
settings: {
|
||||||
|
type: 'object',
|
||||||
|
},
|
||||||
sr: {
|
sr: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
},
|
},
|
||||||
|
@ -447,7 +447,7 @@ export default class BackupNg {
|
|||||||
// ├─ task.start(message: 'transfer')
|
// ├─ task.start(message: 'transfer')
|
||||||
// │ └─ task.end(result: { id: string, size: number })
|
// │ └─ task.end(result: { id: string, size: number })
|
||||||
// └─ task.end
|
// └─ task.end
|
||||||
async importVmBackupNg(id: string, srId: string): Promise<string> {
|
async importVmBackupNg(id: string, srId: string, settings): Promise<string> {
|
||||||
const app = this._app
|
const app = this._app
|
||||||
const xapi = app.getXapi(srId)
|
const xapi = app.getXapi(srId)
|
||||||
const sr = xapi.getObject(srId)
|
const sr = xapi.getObject(srId)
|
||||||
@ -469,6 +469,7 @@ export default class BackupNg {
|
|||||||
url: remote.url,
|
url: remote.url,
|
||||||
options: remote.options,
|
options: remote.options,
|
||||||
},
|
},
|
||||||
|
settings,
|
||||||
srUuid: sr.uuid,
|
srUuid: sr.uuid,
|
||||||
streamLogs: true,
|
streamLogs: true,
|
||||||
xapi: {
|
xapi: {
|
||||||
@ -530,6 +531,7 @@ export default class BackupNg {
|
|||||||
new ImportVmBackup({
|
new ImportVmBackup({
|
||||||
adapter,
|
adapter,
|
||||||
metadata,
|
metadata,
|
||||||
|
settings,
|
||||||
srUuid: srId,
|
srUuid: srId,
|
||||||
xapi: await app.getXapi(srId),
|
xapi: await app.getXapi(srId),
|
||||||
}).run()
|
}).run()
|
||||||
|
Loading…
Reference in New Issue
Block a user