feat(xo-web/restore): support new mac addresses (#5697)
This commit is contained in:
parent
7c9850ada8
commit
f9b3a1f293
@ -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
|
||||
|
||||
|
@ -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',
|
||||
|
@ -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),
|
||||
})
|
||||
|
||||
|
@ -186,13 +186,13 @@ export default class Restore extends Component {
|
||||
body: <RestoreBackupsModalBody data={data} />,
|
||||
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: <RestoreBackupsBulkModalBody datas={datas} />,
|
||||
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())
|
||||
|
||||
|
@ -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 {
|
||||
<div>
|
||||
<Toggle iconSize={1} onChange={this.linkState('start')} /> {_('restoreVmBackupsStart', { nVms: 1 })}
|
||||
</div>
|
||||
<div>
|
||||
<Toggle
|
||||
iconSize={1}
|
||||
value={this.state.generateNewMacAddresses}
|
||||
onChange={this.toggleState('generateNewMacAddresses')}
|
||||
/>{' '}
|
||||
{_('generateNewMacAddress')}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
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 {
|
||||
<Toggle iconSize={1} onChange={this.linkState('start')} />{' '}
|
||||
{_('restoreVmBackupsStart', { nVms: datas.length })}
|
||||
</div>
|
||||
<div>
|
||||
<Toggle
|
||||
iconSize={1}
|
||||
value={this.state.generateNewMacAddresses}
|
||||
onChange={this.toggleState('generateNewMacAddresses')}
|
||||
/>{' '}
|
||||
{_('generateNewMacAddress')}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user