diff --git a/CHANGELOG.md b/CHANGELOG.md index c4a1f68b0..881e5eb51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,6 +55,7 @@ - [Backup Report] Log error when job failed [#3458](https://github.com/vatesfr/xen-orchestra/issues/3458) (PR [#3593](https://github.com/vatesfr/xen-orchestra/pull/3593)) - [Backup NG] Display logs for backup restoration [#2511](https://github.com/vatesfr/xen-orchestra/issues/2511) (PR [#3609](https://github.com/vatesfr/xen-orchestra/pull/3609)) - [XOA] Display product version and list of all installed packages [#3560](https://github.com/vatesfr/xen-orchestra/issues/3560) (PR [#3621](https://github.com/vatesfr/xen-orchestra/pull/3621)) +- [VM] Ability to set nested virtualization in settings [#3619](https://github.com/vatesfr/xen-orchestra/issues/3619) (PR [#3625](https://github.com/vatesfr/xen-orchestra/pull/3625)) ### Bug fixes diff --git a/packages/xo-server/src/api/vm.js b/packages/xo-server/src/api/vm.js index c6c7e630a..dd3ecfd14 100644 --- a/packages/xo-server/src/api/vm.js +++ b/packages/xo-server/src/api/vm.js @@ -614,6 +614,8 @@ set.params = { // Emulate HVM C000 PCI device for Windows Update to fetch or update PV drivers hasVendorDevice: { type: 'boolean', optional: true }, + expNestedHvm: { type: 'boolean', optional: true }, + // Move the vm In to/Out of Self Service resourceSet: { type: ['string', 'null'], optional: true }, diff --git a/packages/xo-server/src/xapi-object-to-xo.js b/packages/xo-server/src/xapi-object-to-xo.js index 10d0fc003..d0f34ed2f 100644 --- a/packages/xo-server/src/xapi-object-to-xo.js +++ b/packages/xo-server/src/xapi-object-to-xo.js @@ -302,7 +302,7 @@ const TRANSFORMS = { version: version && parseXml(version).docker_version, } })(), - + expNestedHvm: obj.platform['exp-nested-hvm'] === 'true', high_availability: obj.ha_restart_priority, memory: (function () { diff --git a/packages/xo-server/src/xapi/mixins/vm.js b/packages/xo-server/src/xapi/mixins/vm.js index f44751283..1cee89f2c 100644 --- a/packages/xo-server/src/xapi/mixins/vm.js +++ b/packages/xo-server/src/xapi/mixins/vm.js @@ -383,6 +383,14 @@ export default { hasVendorDevice: true, + expNestedHvm: { + set (expNestedHvm, vm) { + return this._updateObjectMapProperty(vm, 'platform', { + 'exp-nested-hvm': expNestedHvm ? 'true' : null, + }) + }, + }, + nicType: { set (nicType, vm) { return this._updateObjectMapProperty(vm, 'platform', { diff --git a/packages/xo-web/src/common/intl/messages.js b/packages/xo-web/src/common/intl/messages.js index 15899e937..ec416c315 100644 --- a/packages/xo-web/src/common/intl/messages.js +++ b/packages/xo-web/src/common/intl/messages.js @@ -1036,6 +1036,7 @@ const messages = { osKernel: 'OS kernel', autoPowerOn: 'Auto power on', ha: 'HA', + nestedVirt: 'Nested virtualization', vmAffinityHost: 'Affinity host', vmVga: 'VGA', vmVideoram: 'Video RAM', diff --git a/packages/xo-web/src/xo-app/vm/tab-advanced.js b/packages/xo-web/src/xo-app/vm/tab-advanced.js index c3868a636..0022e95b0 100644 --- a/packages/xo-web/src/xo-app/vm/tab-advanced.js +++ b/packages/xo-web/src/xo-app/vm/tab-advanced.js @@ -470,6 +470,16 @@ export default class TabAdvanced extends Component { /> + + {_('nestedVirt')} + + editVm(vm, { expNestedHvm: value })} + /> + + {_('ha')}