The cpu and flags list we get from the backend got an architecture
parameter that we now use to filter the correct cpu models.

For the flags grid, we add an emptyText to show when there are no flags
available (e.g. currently this is the case for aarch64).

Signed-off-by: Dominik Csapak <[email protected]>
---
 www/manager6/form/CPUModelSelector.js  | 13 +++++++++++++
 www/manager6/form/VMCPUFlagSelector.js | 13 +++++++++++++
 www/manager6/qemu/CreateWizard.js      |  3 +++
 www/manager6/qemu/ProcessorEdit.js     | 19 +++++++++++++++++++
 4 files changed, 48 insertions(+)

diff --git a/www/manager6/form/CPUModelSelector.js 
b/www/manager6/form/CPUModelSelector.js
index 2ebd08eb..602706e7 100644
--- a/www/manager6/form/CPUModelSelector.js
+++ b/www/manager6/form/CPUModelSelector.js
@@ -40,6 +40,19 @@ Ext.define('PVE.form.CPUModelSelector', {
         width: 360,
     },
 
+    arch: undefined,
+
+    setArch: function (arch) {
+        let me = this;
+        me.arch = arch;
+        let params = {};
+        if (arch) {
+            params.arch = arch;
+        }
+        me.store.getProxy().setExtraParams(params);
+        me.store.reload();
+    },
+
     store: {
         autoLoad: true,
         model: 'PVE.data.CPUModel',
diff --git a/www/manager6/form/VMCPUFlagSelector.js 
b/www/manager6/form/VMCPUFlagSelector.js
index 922fcfa6..6e49ea45 100644
--- a/www/manager6/form/VMCPUFlagSelector.js
+++ b/www/manager6/form/VMCPUFlagSelector.js
@@ -16,6 +16,8 @@ Ext.define('PVE.form.VMCPUFlagSelector', {
 
     unkownFlags: [],
 
+    emptyText: gettext('No CPU flags available'),
+
     store: {
         type: 'store',
         fields: ['name', { name: 'state', defaultValue: '=' }, 'description'],
@@ -67,6 +69,17 @@ Ext.define('PVE.form.VMCPUFlagSelector', {
         return flags;
     },
 
+    setArch: function (arch) {
+        let me = this;
+        me.arch = arch;
+        let params = {};
+        if (arch) {
+            params.arch = arch;
+        }
+        me.store.getProxy().setExtraParams(params);
+        me.store.reload();
+    },
+
     // Adjusts the store for the current value and determines the unkown flags 
based on what the
     // store does not know.
     adjustStoreForValue: function () {
diff --git a/www/manager6/qemu/CreateWizard.js 
b/www/manager6/qemu/CreateWizard.js
index 1302d9dc..4bf9e00f 100644
--- a/www/manager6/qemu/CreateWizard.js
+++ b/www/manager6/qemu/CreateWizard.js
@@ -246,6 +246,9 @@ Ext.define('PVE.qemu.CreateWizard', {
             xtype: 'pveQemuProcessorPanel',
             insideWizard: true,
             title: gettext('CPU'),
+            bind: {
+                arch: '{current.architecture}',
+            },
         },
         {
             xtype: 'pveQemuMemoryPanel',
diff --git a/www/manager6/qemu/ProcessorEdit.js 
b/www/manager6/qemu/ProcessorEdit.js
index ffaf014e..e1383c3f 100644
--- a/www/manager6/qemu/ProcessorEdit.js
+++ b/www/manager6/qemu/ProcessorEdit.js
@@ -108,6 +108,15 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
 
     cpu: {},
 
+    arch: undefined,
+
+    setArch: function (arch) {
+        let me = this;
+        me.arch = arch;
+        me.lookup('cputype').setArch(arch);
+        me.lookup('cpuFlags').setArch(arch);
+    },
+
     column1: [
         {
             xtype: 'proxmoxintegerfield',
@@ -236,10 +245,12 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
     advancedColumnB: [
         {
             xtype: 'label',
+            reference: 'cpuFlagsLabel',
             text: 'Extra CPU Flags:',
         },
         {
             xtype: 'vmcpuflagselector',
+            reference: 'cpuFlags',
             name: 'flags',
         },
     ],
@@ -259,6 +270,12 @@ Ext.define('PVE.qemu.ProcessorEdit', {
 
     initComponent: function () {
         let me = this;
+
+        me.nodename = me.pveSelNode?.data.node;
+        if (!me.nodename) {
+            throw 'no nodename given';
+        }
+
         me.getViewModel().set('cgroupMode', me.cgroupMode);
 
         var ipanel = Ext.create('PVE.qemu.ProcessorInputPanel');
@@ -289,6 +306,8 @@ Ext.define('PVE.qemu.ProcessorEdit', {
                     }
                 }
                 me.setValues(data);
+                let arch = 
PVE.qemu.Architecture.getNodeArchitecture(data.arch, me.nodename);
+                ipanel.setArch(arch);
             },
         });
     },
-- 
2.47.3




Reply via email to