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))
|
- [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))
|
- [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
|
### Bug fixes
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ const messages = {
|
|||||||
errorPageNotFound: 'Page not found',
|
errorPageNotFound: 'Page not found',
|
||||||
errorNoSuchItem: 'No such item',
|
errorNoSuchItem: 'No such item',
|
||||||
errorUnknownItem: 'Unknown {type}',
|
errorUnknownItem: 'Unknown {type}',
|
||||||
|
generateNewMacAddress: 'Generate new MAC addresses',
|
||||||
memoryFree: '{memoryFree} RAM free',
|
memoryFree: '{memoryFree} RAM free',
|
||||||
utcDate: 'UTC date',
|
utcDate: 'UTC date',
|
||||||
utcTime: 'UTC time',
|
utcTime: 'UTC time',
|
||||||
|
@ -2017,9 +2017,10 @@ export const runBackupNgJob = ({ force, ...params }) => {
|
|||||||
|
|
||||||
export const listVmBackups = remotes => _call('backupNg.listVmBackups', { remotes: resolveIds(remotes) })
|
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', {
|
const promise = _call('backupNg.importVmBackup', {
|
||||||
id: resolveId(backup),
|
id: resolveId(backup),
|
||||||
|
settings: { newMacAddresses: generateNewMacAddresses },
|
||||||
sr: resolveId(sr),
|
sr: resolveId(sr),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -186,13 +186,13 @@ export default class Restore extends Component {
|
|||||||
body: <RestoreBackupsModalBody data={data} />,
|
body: <RestoreBackupsModalBody data={data} />,
|
||||||
icon: 'restore',
|
icon: 'restore',
|
||||||
})
|
})
|
||||||
.then(({ backup, sr, start }) => {
|
.then(({ backup, generateNewMacAddresses, sr, start }) => {
|
||||||
if (backup == null || sr == null) {
|
if (backup == null || sr == null) {
|
||||||
error(_('backupRestoreErrorTitle'), _('backupRestoreErrorMessage'))
|
error(_('backupRestoreErrorTitle'), _('backupRestoreErrorMessage'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
return restoreBackup(backup, sr, start)
|
return restoreBackup(backup, sr, { generateNewMacAddresses, startOnRestore: start })
|
||||||
}, noop)
|
}, noop)
|
||||||
.then(() => this._refreshBackupList())
|
.then(() => this._refreshBackupList())
|
||||||
|
|
||||||
@ -211,14 +211,16 @@ export default class Restore extends Component {
|
|||||||
body: <RestoreBackupsBulkModalBody datas={datas} />,
|
body: <RestoreBackupsBulkModalBody datas={datas} />,
|
||||||
icon: 'restore',
|
icon: 'restore',
|
||||||
})
|
})
|
||||||
.then(({ sr, latest, start }) => {
|
.then(({ sr, generateNewMacAddresses, latest, start }) => {
|
||||||
if (sr == null) {
|
if (sr == null) {
|
||||||
error(_('restoreVmBackupsBulkErrorTitle', 'restoreVmBackupsBulkErrorMessage'))
|
error(_('restoreVmBackupsBulkErrorTitle', 'restoreVmBackupsBulkErrorMessage'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const prop = latest ? 'last' : 'first'
|
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)
|
}, noop)
|
||||||
.then(() => this._refreshBackupList())
|
.then(() => this._refreshBackupList())
|
||||||
|
|
||||||
|
@ -9,6 +9,8 @@ import { SelectSr } from 'select-objects'
|
|||||||
const BACKUP_RENDERER = getRenderXoItemOfType('backup')
|
const BACKUP_RENDERER = getRenderXoItemOfType('backup')
|
||||||
|
|
||||||
export default class RestoreBackupsModalBody extends Component {
|
export default class RestoreBackupsModalBody extends Component {
|
||||||
|
state = { generateNewMacAddresses: true }
|
||||||
|
|
||||||
get value() {
|
get value() {
|
||||||
return this.state
|
return this.state
|
||||||
}
|
}
|
||||||
@ -29,13 +31,21 @@ export default class RestoreBackupsModalBody extends Component {
|
|||||||
<div>
|
<div>
|
||||||
<Toggle iconSize={1} onChange={this.linkState('start')} /> {_('restoreVmBackupsStart', { nVms: 1 })}
|
<Toggle iconSize={1} onChange={this.linkState('start')} /> {_('restoreVmBackupsStart', { nVms: 1 })}
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<Toggle
|
||||||
|
iconSize={1}
|
||||||
|
value={this.state.generateNewMacAddresses}
|
||||||
|
onChange={this.toggleState('generateNewMacAddresses')}
|
||||||
|
/>{' '}
|
||||||
|
{_('generateNewMacAddress')}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class RestoreBackupsBulkModalBody extends Component {
|
export class RestoreBackupsBulkModalBody extends Component {
|
||||||
state = { latest: true }
|
state = { generateNewMacAddresses: true, latest: true }
|
||||||
|
|
||||||
get value() {
|
get value() {
|
||||||
return this.state
|
return this.state
|
||||||
@ -65,6 +75,14 @@ export class RestoreBackupsBulkModalBody extends Component {
|
|||||||
<Toggle iconSize={1} onChange={this.linkState('start')} />{' '}
|
<Toggle iconSize={1} onChange={this.linkState('start')} />{' '}
|
||||||
{_('restoreVmBackupsStart', { nVms: datas.length })}
|
{_('restoreVmBackupsStart', { nVms: datas.length })}
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<Toggle
|
||||||
|
iconSize={1}
|
||||||
|
value={this.state.generateNewMacAddresses}
|
||||||
|
onChange={this.toggleState('generateNewMacAddresses')}
|
||||||
|
/>{' '}
|
||||||
|
{_('generateNewMacAddress')}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user