From f9b3a1f293066e6cead2637223d8e8092617fe41 Mon Sep 17 00:00:00 2001 From: Mathieu <70369997+MathieuRA@users.noreply.github.com> Date: Tue, 30 Mar 2021 17:48:45 +0200 Subject: [PATCH] feat(xo-web/restore): support new mac addresses (#5697) --- CHANGELOG.unreleased.md | 1 + packages/xo-web/src/common/intl/messages.js | 1 + packages/xo-web/src/common/xo/index.js | 3 ++- .../xo-web/src/xo-app/backup/restore/index.js | 10 ++++++---- .../restore/restore-backups-modal-body.js | 20 ++++++++++++++++++- 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.unreleased.md b/CHANGELOG.unreleased.md index 71a1a6f5b..1f3a171a1 100644 --- a/CHANGELOG.unreleased.md +++ b/CHANGELOG.unreleased.md @@ -7,6 +7,7 @@ - [Host/Load-balancer] Add a new anti-affinity mode (PR [#5652](https://github.com/vatesfr/xen-orchestra/pull/5652)) - [Plugins/perf-alert] Ability to choose all hosts, VMs and SRs [#2987](https://github.com/vatesfr/xen-orchestra/issues/2987) (PR [#5692](https://github.com/vatesfr/xen-orchestra/pull/5692)) +- [Backup restore] Ability to generate new MAC addresses (PR [#5697](https://github.com/vatesfr/xen-orchestra/pull/5697)) ### Bug fixes diff --git a/packages/xo-web/src/common/intl/messages.js b/packages/xo-web/src/common/intl/messages.js index 613af403b..35709f0c8 100644 --- a/packages/xo-web/src/common/intl/messages.js +++ b/packages/xo-web/src/common/intl/messages.js @@ -12,6 +12,7 @@ const messages = { errorPageNotFound: 'Page not found', errorNoSuchItem: 'No such item', errorUnknownItem: 'Unknown {type}', + generateNewMacAddress: 'Generate new MAC addresses', memoryFree: '{memoryFree} RAM free', utcDate: 'UTC date', utcTime: 'UTC time', diff --git a/packages/xo-web/src/common/xo/index.js b/packages/xo-web/src/common/xo/index.js index 54fd25a6a..3177c9715 100644 --- a/packages/xo-web/src/common/xo/index.js +++ b/packages/xo-web/src/common/xo/index.js @@ -2017,9 +2017,10 @@ export const runBackupNgJob = ({ force, ...params }) => { export const listVmBackups = remotes => _call('backupNg.listVmBackups', { remotes: resolveIds(remotes) }) -export const restoreBackup = (backup, sr, startOnRestore) => { +export const restoreBackup = (backup, sr, { generateNewMacAddresses = false, startOnRestore = false } = {}) => { const promise = _call('backupNg.importVmBackup', { id: resolveId(backup), + settings: { newMacAddresses: generateNewMacAddresses }, sr: resolveId(sr), }) diff --git a/packages/xo-web/src/xo-app/backup/restore/index.js b/packages/xo-web/src/xo-app/backup/restore/index.js index 1952b5056..1684df809 100644 --- a/packages/xo-web/src/xo-app/backup/restore/index.js +++ b/packages/xo-web/src/xo-app/backup/restore/index.js @@ -186,13 +186,13 @@ export default class Restore extends Component { body: , icon: 'restore', }) - .then(({ backup, sr, start }) => { + .then(({ backup, generateNewMacAddresses, sr, start }) => { if (backup == null || sr == null) { error(_('backupRestoreErrorTitle'), _('backupRestoreErrorMessage')) return } - return restoreBackup(backup, sr, start) + return restoreBackup(backup, sr, { generateNewMacAddresses, startOnRestore: start }) }, noop) .then(() => this._refreshBackupList()) @@ -211,14 +211,16 @@ export default class Restore extends Component { body: , icon: 'restore', }) - .then(({ sr, latest, start }) => { + .then(({ sr, generateNewMacAddresses, latest, start }) => { if (sr == null) { error(_('restoreVmBackupsBulkErrorTitle', 'restoreVmBackupsBulkErrorMessage')) return } const prop = latest ? 'last' : 'first' - return Promise.all(map(datas, data => restoreBackup(data[prop], sr, start))) + return Promise.all( + map(datas, data => restoreBackup(data[prop], sr, { generateNewMacAddresses, startOnRestore: start })) + ) }, noop) .then(() => this._refreshBackupList()) diff --git a/packages/xo-web/src/xo-app/backup/restore/restore-backups-modal-body.js b/packages/xo-web/src/xo-app/backup/restore/restore-backups-modal-body.js index dd3951724..83264dd83 100644 --- a/packages/xo-web/src/xo-app/backup/restore/restore-backups-modal-body.js +++ b/packages/xo-web/src/xo-app/backup/restore/restore-backups-modal-body.js @@ -9,6 +9,8 @@ import { SelectSr } from 'select-objects' const BACKUP_RENDERER = getRenderXoItemOfType('backup') export default class RestoreBackupsModalBody extends Component { + state = { generateNewMacAddresses: true } + get value() { return this.state } @@ -29,13 +31,21 @@ export default class RestoreBackupsModalBody extends Component {
{_('restoreVmBackupsStart', { nVms: 1 })}
+
+ {' '} + {_('generateNewMacAddress')} +
) } } export class RestoreBackupsBulkModalBody extends Component { - state = { latest: true } + state = { generateNewMacAddresses: true, latest: true } get value() { return this.state @@ -65,6 +75,14 @@ export class RestoreBackupsBulkModalBody extends Component { {' '} {_('restoreVmBackupsStart', { nVms: datas.length })} +
+ {' '} + {_('generateNewMacAddress')} +
) }