---
 www/manager/Parser.js             | 59 ++++++++++++++++++++++++++++++++++++++-
 www/manager/qemu/ProcessorEdit.js | 23 +++++++++++++--
 2 files changed, 78 insertions(+), 4 deletions(-)

diff --git a/www/manager/Parser.js b/www/manager/Parser.js
index 5f15a76..90c98c7 100644
--- a/www/manager/Parser.js
+++ b/www/manager/Parser.js
@@ -338,6 +338,63 @@ Ext.define('PVE.Parser', { statics: {
        });
 
        return res;
-    }
+    },
+
+    parseQemuCpu: function(value) {
+       if (!value) {
+           return;
+       }
+
+       var res = {};
+
+       var errors = false;
+       Ext.Array.each(value.split(','), function(p) {
+           if (!p || p.match(/^\s*$/)) {
+               return; // continue
+           }
+
+           if (!p.match(/=/)) {
+               if (Ext.isDefined(res['cpu'])) {
+                   errors = true;
+                   return false; // break
+               }
+               res.cputype = p;
+               return; // continue
+           }
+
+           var match_res = p.match(/^([a-z_]+)=(\S+)$/);
+           if (!match_res) {
+               errors = true;
+               return false; // break
+           }
+
+           var k = match_res[1];
+           if (Ext.isDefined(res[k])) {
+               errors = true;
+               return false; // break
+           }
+
+           res[k] = match_res[2];
+       });
+
+       if (errors || !res.cputype) {
+           return;
+       }
+
+       return res;
+    },
+
+    printQemuCpu: function(cpu) {
+       var cpustr = cpu.cputype;
+
+       Ext.Object.each(cpu, function(key, value) {
+           if (!Ext.isDefined(value) || key === 'cputype') {
+               return; // continue
+           }
+           cpustr += ',' + key + '=' + value;
+       });
+
+       return cpustr;
+    },
 
 }});
diff --git a/www/manager/qemu/ProcessorEdit.js 
b/www/manager/qemu/ProcessorEdit.js
index 4bb3d92..bec77d9 100644
--- a/www/manager/qemu/ProcessorEdit.js
+++ b/www/manager/qemu/ProcessorEdit.js
@@ -2,6 +2,14 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
     extend: 'PVE.panel.InputPanel',
     alias: 'widget.PVE.qemu.ProcessorInputPanel',
 
+    onGetValues: function(values) {
+       var me = this;
+       me.cpu.cputype = values['cputype'];
+       return {
+           cpu: PVE.Parser.printQemuCpu(me.cpu)
+       };
+    },
+
     initComponent : function() {
        var me = this;
 
@@ -51,7 +59,7 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
        me.column2 = [
            {
                xtype: 'CPUModelSelector',
-               name: 'cpu',
+               name: 'cputype',
                value: '',
                fieldLabel: gettext('Type')
            },
@@ -74,13 +82,22 @@ Ext.define('PVE.qemu.ProcessorEdit', {
     initComponent : function() {
        var me = this;
        
+       var ipanel = Ext.create('PVE.qemu.ProcessorInputPanel')
+
        Ext.apply(me, {
            subject: gettext('Processors'),
-           items: Ext.create('PVE.qemu.ProcessorInputPanel')
+           items: ipanel
        });
 
        me.callParent();
 
-       me.load();
+       me.load({
+           success: function(response, options) {
+               var value = response.result.data['cpu'];
+               var cpu = PVE.Parser.parseQemuCpu(value);
+               ipanel.cpu = cpu;
+               me.setValues({ cputype: cpu.cputype });
+           }
+       });
     }
 });
-- 
2.1.4


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to