]> git.proxmox.com Git - pve-manager.git/commitdiff
add sheepdog storage panel
authorAlexandre Derumier <aderumier@odiso.com>
Fri, 17 Aug 2012 13:51:22 +0000 (15:51 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 23 Aug 2012 12:17:36 +0000 (14:17 +0200)
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
www/manager/Makefile
www/manager/dc/StorageView.js
www/manager/storage/SheepdogEdit.js [new file with mode: 0644]

index 286bc519929e4fd5a72af38a84961f115ba17209..1f94bd53a7abab13c2b549a447f35a9e385c45b7 100644 (file)
@@ -122,6 +122,7 @@ JSSRC=                                                      \
        storage/IScsiEdit.js                            \
        storage/LVMEdit.js                              \
        storage/RBDEdit.js                              \
+       storage/SheepdogEdit.js                         \
        dc/Summary.js                                   \
        dc/OptionView.js                                \
        dc/StorageView.js                               \
index 9d3dba871703c0ec1321887060d02e7b6bb2573b..a9473edfcdc0a06f95f2ec62c4e9d0a3f518160a 100644 (file)
@@ -42,6 +42,8 @@ Ext.define('PVE.dc.StorageView', {
                editor = 'PVE.storage.IScsiEdit';
            } else if (type === 'rbd') {
                editor = 'PVE.storage.RBDEdit';
+           } else if (type === 'sheepdog') {
+               editor = 'PVE.storage.SheepdogEdit';
            } else {
                return;
            }
@@ -140,6 +142,15 @@ Ext.define('PVE.dc.StorageView', {
                                    win.show();
                                }
                            },
+                           {
+                               text: 'Sheepdog',
+                               iconCls: 'pve-itype-icon-node',
+                               handler: function() {
+                                   var win = Ext.create('PVE.storage.SheepdogEdit', {});
+                                   win.on('destroy', reload);
+                                   win.show();
+                               }
+                           },
 
                        ]
                    })
diff --git a/www/manager/storage/SheepdogEdit.js b/www/manager/storage/SheepdogEdit.js
new file mode 100644 (file)
index 0000000..926a5ed
--- /dev/null
@@ -0,0 +1,113 @@
+Ext.define('PVE.storage.SheepdogInputPanel', {
+    extend: 'PVE.panel.InputPanel',
+
+    onGetValues: function(values) {
+       var me = this;
+
+       if (me.create) {
+           values.type = 'sheepdog';
+            values.content = 'images';
+
+       } else {
+           delete values.storage;
+       }
+
+       values.disable = values.enable ? 0 : 1;     
+       delete values.enable;
+
+       return values;
+    },
+
+    initComponent : function() {
+       var me = this;
+
+
+       me.column1 = [
+           {
+               xtype: me.create ? 'textfield' : 'displayfield',
+               name: 'storage',
+               height: 22, // hack: set same height as text fields
+               value: me.storageId || '',
+               fieldLabel: 'ID',
+               vtype: 'StorageId',
+               allowBlank: false
+           },
+           {
+               xtype: me.create ? 'textfield' : 'displayfield',
+               name: 'portal',
+               height: 22, // hack: set same height as text fields
+               value: '127.0.0.1:7000',
+               fieldLabel: gettext('Gateway'),
+               allowBlank: false
+           },
+       ];
+
+       me.column2 = [
+           {
+               xtype: 'pvecheckbox',
+               name: 'enable',
+               checked: true,
+               uncheckedValue: 0,
+               fieldLabel: gettext('Enable')
+           },
+       ];
+
+       if (me.create || me.storageId !== 'local') {
+           me.column2.unshift({
+               xtype: 'PVE.form.NodeSelector',
+               name: 'nodes',
+               fieldLabel: gettext('Nodes'),
+               emptyText: gettext('All') + ' (' + 
+                   gettext('No restrictions') +')',
+               multiSelect: true,
+               autoSelect: false
+           });
+       }
+
+       me.callParent();
+    }
+});
+
+Ext.define('PVE.storage.SheepdogEdit', {
+    extend: 'PVE.window.Edit',
+
+    initComponent : function() {
+       var me = this;
+       me.create = !me.storageId;
+
+       if (me.create) {
+            me.url = '/api2/extjs/storage';
+            me.method = 'POST';
+        } else {
+            me.url = '/api2/extjs/storage/' + me.storageId;
+            me.method = 'PUT';
+        }
+
+       var ipanel = Ext.create('PVE.storage.SheepdogInputPanel', {
+           create: me.create,
+           storageId: me.storageId
+       });
+
+       Ext.apply(me, {
+            subject: 'Sheepdog Storage',
+           isAdd: true,
+           items: [ ipanel ]
+       });
+       
+       me.callParent();
+
+        if (!me.create) {
+            me.load({
+                success:  function(response, options) {
+                    var values = response.result.data;
+                    if (values.nodes) {
+                        values.nodes = values.nodes.split(',');
+                    }
+                    values.enable = values.disable ? 0 : 1;
+                    ipanel.setValues(values);
+                }
+            });
+        }
+    }
+});