diff --git a/pkg/harvester/config/feature-flags.js b/pkg/harvester/config/feature-flags.js index 1f305d04..9b91f63a 100644 --- a/pkg/harvester/config/feature-flags.js +++ b/pkg/harvester/config/feature-flags.js @@ -37,7 +37,9 @@ const FEATURE_FLAGS = { 'liveMigrationProgress' ], 'v1.5.1': [], - 'v1.6.0': [] + 'v1.6.0': [ + 'vmMachineTypes' + ] }; const generateFeatureFlags = () => { diff --git a/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue b/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue index 26fb9bd5..12632d31 100644 --- a/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue +++ b/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue @@ -114,13 +114,11 @@ export default { }, machineTypeOptions() { - return [{ - label: 'None', - value: '' - }, { - label: 'q35', - value: 'q35' - }]; + return this.machineTypes.map((type) => { + if (!type) return { label: 'None', value: '' }; + + return { label: type, value: type }; + }); }, templateOptions() { diff --git a/pkg/harvester/mixins/harvester-vm/index.js b/pkg/harvester/mixins/harvester-vm/index.js index 479b4e35..3d7879e0 100644 --- a/pkg/harvester/mixins/harvester-vm/index.js +++ b/pkg/harvester/mixins/harvester-vm/index.js @@ -157,6 +157,7 @@ export default { diskRows: [], networkRows: [], machineType: '', + machineTypes: [], secretName: '', secretRef: null, showAdvanced: false, @@ -295,6 +296,9 @@ export default { async created() { await this.$store.dispatch(`${ this.inStore }/findAll`, { type: SECRET }); + const machineTypes = this.value.vmMachineTypesFeatureEnabled ? await this.$store.dispatch('harvester/request', { url: '/v1/harvester/clusters/local?link=machineTypes' }) : ['']; + + this.machineTypes = machineTypes; this.getInitConfig({ value: this.value, init: this.isCreate }); }, @@ -331,7 +335,8 @@ export default { const maintenanceStrategy = vm.metadata.labels?.[HCI_ANNOTATIONS.VM_MAINTENANCE_MODE_STRATEGY] || 'Migrate'; const runStrategy = spec.runStrategy || 'RerunOnFailure'; - const machineType = value.machineType; + const machineType = spec.template.spec.domain?.machine?.type || this.machineTypes[0]; + const cpu = spec.template.spec.domain?.cpu?.cores; const memory = spec.template.spec.domain.resources.limits.memory; const reservedMemory = vm.metadata?.annotations?.[HCI_ANNOTATIONS.VM_RESERVED_MEMORY]; diff --git a/pkg/harvester/models/kubevirt.io.virtualmachine.js b/pkg/harvester/models/kubevirt.io.virtualmachine.js index 441eccbb..d85ea8ea 100644 --- a/pkg/harvester/models/kubevirt.io.virtualmachine.js +++ b/pkg/harvester/models/kubevirt.io.virtualmachine.js @@ -1205,6 +1205,10 @@ export default class VirtVm extends HarvesterResource { return this.$rootGetters['harvester-common/getFeatureEnabled']('thirdPartyStorage'); } + get vmMachineTypesFeatureEnabled() { + return this.$rootGetters['harvester-common/getFeatureEnabled']('vmMachineTypes'); + } + setInstanceLabels(val) { if ( !this.spec?.template?.metadata?.labels ) { set(this, 'spec.template.metadata.labels', {});