we parse and save the storage type infos in PVE.Utils.storageformats
and can get them with PVE.Utils.getStorageFormat(type)
so that we do not have to hardcode the values

the returned object contains:
 * an array formats, which contains the file/volume formats, e.g. raw,
   qcow2, vmdk
 * a defaultFormat
 * the possible contents as array
 * a 'select' property which indicates, if we have to
   select an image instead of creating one (e.g. for iscsi)

Signed-off-by: Dominik Csapak <d.csa...@proxmox.com>
---
 www/manager6/Utils.js     | 55 +++++++++++++++++++++++++++++++++++++++++++++++
 www/manager6/Workspace.js |  4 ++++
 2 files changed, 59 insertions(+)

diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
index 78683e0c..0cc155f4 100644
--- a/www/manager6/Utils.js
+++ b/www/manager6/Utils.js
@@ -1371,6 +1371,59 @@ Ext.define('PVE.Utils', { utilities: {
        }
     },
 
+    setStorageFormats: function(types) {
+       /*jslint confusion: true*/
+       // format/select are functions elsewhere
+       var me = this;
+       var type,sf;
+       me.storageformats = {};
+       for (type in types) {
+           if (types.hasOwnProperty(type)) {
+               var st = types[type];
+               var format = {
+                   content: st.contents,
+                   formats: ['raw'],
+                   defaultFormat: 'raw',
+                   selecting: st.select === 1
+               };
+
+               if (st.format !== undefined) {
+                   // if we get formats, we want to have them
+                   format.formats = [];
+                   for (sf in st.format[0]) {
+                       if (st.format[0].hasOwnProperty(sf) &&
+                           sf !== 'subvol') { // we never need this format
+                           format.formats.push(sf);
+                       }
+                   }
+                   format.defaultFormat = st.format[1];
+               }
+
+               me.storageformats[type] = format;
+           }
+       }
+       /*jslint confusion: false*/
+    },
+
+    getStorageFormat: function(type) {
+       /*jslint confusion: true*/
+       // formats/select are functions elsewhere
+       var me = this;
+       if (me.storageformats[type] !== undefined) {
+           return me.storageformats[type];
+       } else {
+           return {
+               formats: {
+                   'qcow2':1,
+                   'raw':1,
+                   'vmdk':1
+               },
+               defaultFormat: 'raw',
+               select: 0
+           };
+       }
+    },
+
     singleton: true,
     constructor: function() {
        var me = this;
@@ -1409,6 +1462,8 @@ Ext.define('PVE.Utils', { utilities: {
        me.HostPort_match = new RegExp("^(" + IPV4_REGEXP + "|" + 
DnsName_REGEXP + ")(:\\d+)?$");
        me.HostPortBrackets_match = new RegExp("^\\[(?:" + IPV6_REGEXP + "|" + 
IPV4_REGEXP + "|" + DnsName_REGEXP + ")\\](:\\d+)?$");
        me.IP6_dotnotation_match = new RegExp("^" + IPV6_REGEXP + 
"(\\.\\d+)?$");
+
+       me.storageformats = {};
     }
 });
 
diff --git a/www/manager6/Workspace.js b/www/manager6/Workspace.js
index fdade908..1f64b3ff 100644
--- a/www/manager6/Workspace.js
+++ b/www/manager6/Workspace.js
@@ -155,6 +155,10 @@ Ext.define('PVE.StdWorkspace', {
                    if (data.cap) {
                        Ext.state.Manager.set('GuiCap', data.cap);
                    }
+
+                   if (data.storagetypes) {
+                       PVE.Utils.setStorageFormats(data.storagetypes);
+                   }
                }
            });
        }
-- 
2.11.0


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

Reply via email to