---
 www/manager6/Parser.js | 142 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 141 insertions(+), 1 deletion(-)

diff --git a/www/manager6/Parser.js b/www/manager6/Parser.js
index 5f15a76..68a6b70 100644
--- a/www/manager6/Parser.js
+++ b/www/manager6/Parser.js
@@ -5,6 +5,16 @@ Ext.define('PVE.Parser', { statics: {
 
     // this class only contains static functions
 
+    parseBoolean: function(value, default_value) {
+       if (!Ext.isDefined(value))
+           return default_value;
+       value = value.toLowerCase();
+       return value === 1 || value === '1' ||
+              value === 'on' ||
+              value === 'yes' ||
+              value === 'true';
+    },
+
     parseQemuNetwork: function(key, value) {
        if (!(key && value)) {
            return;
@@ -257,6 +267,73 @@ Ext.define('PVE.Parser', { statics: {
        return tmparray.join(',');
     },
 
+    parseLxcMountPoint: function(value) {
+       if (!value) {
+           return;
+       }
+
+       var res = {};
+
+       var errors = false;
+       Ext.Array.each(value.split(','), function(p) {
+           if (!p || p.match(/^\s*$/)) {
+               return; // continue
+           }
+           var match_res = p.match(/^([a-z_]+)=(\S+)$/);
+           if (!match_res) {
+               if (!p.match(/\=/)) {
+                   res.file = p;
+                   return; // continue
+               }
+               errors = true;
+               return false; // break
+           }
+           var k = match_res[1];
+           if (k === 'volume') {
+               k = 'file';
+           }
+
+           if (Ext.isDefined(res[k])) {
+               errors = true;
+               return false; // break
+           }
+
+           var v = match_res[2];
+
+           res[k] = v;
+       });
+
+       if (errors || !res.file) {
+           return;
+       }
+
+       var m = res.file.match(/^([a-z][a-z0-9\-\_\.]*[a-z0-9]):/);
+       if (m) {
+           res.storage = m[1];
+           res.type = 'volume';
+       } else if (res.file.match(/^\/dev\//)) {
+           res.type = 'device';
+       } else {
+           res.type = 'bind';
+       }
+
+       return res;
+    },
+
+    printLxcMountPoint: function(mp) {
+       var drivestr = mp.file;
+
+       Ext.Object.each(mp, function(key, value) {
+           if (!Ext.isDefined(value) || key === 'file' ||
+               key === 'type' || key === 'storage') {
+               return; // continue
+           }
+           drivestr += ',' + key + '=' + value;
+       });
+
+       return drivestr;
+    },
+
     parseStartup: function(value) {
        if (value === undefined) {
            return;
@@ -338,6 +415,69 @@ 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;
+       var optstr = '';
+
+       Ext.Object.each(cpu, function(key, value) {
+           if (!Ext.isDefined(value) || key === 'cputype') {
+               return; // continue
+           }
+           optstr += ',' + key + '=' + value;
+       });
+
+       if (!cpustr) {
+           if (optstr)
+               return 'kvm64' + optstr;
+           return;
+       }
+
+       return cpustr + optstr;
+    },
 }});
-- 
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