]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/ceph/OSD.js
added basic ability to install ceph via gui
[pve-manager.git] / www / manager6 / ceph / OSD.js
index 24d984962f9c8e761dfbe58d31c43c0c6e0c9a7b..cb3d5f0d17102932ed394b36b52163053c23dbfb 100644 (file)
@@ -1,78 +1,3 @@
-Ext.define('PVE.form.CephDiskSelector', {
-    extend: 'Proxmox.form.ComboGrid',
-    alias: ['widget.pveCephDiskSelector'],
-
-    diskType: 'journal_disks',
-
-    valueField: 'devpath',
-    displayField: 'devpath',
-    emptyText: gettext('No Disks unused'),
-    listConfig: {
-       columns: [
-           {
-               header: gettext('Device'),
-               width: 80,
-               sortable: true,
-               dataIndex: 'devpath'
-           },
-           {
-               header: gettext('Size'),
-               width: 60,
-               sortable: false,
-               renderer: Proxmox.Utils.format_size,
-               dataIndex: 'size'
-           },
-           {
-               header: gettext('Serial'),
-               flex: 1,
-               sortable: true,
-               dataIndex: 'serial'
-           }
-       ]
-    },
-    initComponent: function() {
-       var me = this;
-
-       var nodename = me.nodename;
-       if (!nodename) {
-           throw "no node name specified";
-       }
-
-       var store = Ext.create('Ext.data.Store', {
-           filterOnLoad: true,
-           model: 'ceph-disk-list',
-           proxy: {
-                type: 'pve',
-                url: "/api2/json/nodes/" + nodename + "/ceph/disks",
-               extraParams: { type: me.diskType }
-           },
-           sorters: [
-               {
-                   property : 'devpath',
-                   direction: 'ASC'
-               }
-           ]
-       });
-
-       Ext.apply(me, {
-           store: store
-       });
-
-        me.callParent();
-
-       store.load();
-    }
-}, function() {
-
-    Ext.define('ceph-disk-list', {
-       extend: 'Ext.data.Model',
-       fields: [ 'devpath', 'used', { name: 'size', type: 'number'},
-                 {name: 'osdid', type: 'number'},
-                 'vendor', 'model', 'serial'],
-       idProperty: 'devpath'
-    });
-});
-
 Ext.define('PVE.CephCreateOsd', {
     extend: 'Proxmox.window.Edit',
     alias: ['widget.pveCephCreateOsd'],
@@ -97,7 +22,7 @@ Ext.define('PVE.CephCreateOsd', {
            method: 'POST',
            items: [
                {
-                   xtype: 'pveCephDiskSelector',
+                   xtype: 'pveDiskSelector',
                    name: 'dev',
                    nodename: me.nodename,
                    diskType: 'unused',
@@ -105,7 +30,7 @@ Ext.define('PVE.CephCreateOsd', {
                    allowBlank: false
                },
                {
-                   xtype: 'pveCephDiskSelector',
+                   xtype: 'pveDiskSelector',
                    name: 'journal_dev',
                    nodename: me.nodename,
                    diskType: 'journal_disks',
@@ -356,7 +281,14 @@ Ext.define('PVE.node.CephOsdTree', {
                waitMsgTarget: me,
                method: 'GET',
                failure: function(response, opts) {
-                   Proxmox.Utils.setErrorMask(me, response.htmlStatus);
+                   var msg = response.htmlStatus;
+                   PVE.Utils.showCephInstallOrMask(me, msg, me.pveSelNode.data.node,
+                       function(win){
+                           me.mon(win, 'cephInstallWindowClosed', function(){
+                               reload();
+                           });
+                       }
+                   );
                },
                success: function(response, opts) {
                    sm.deselectAll();
@@ -438,6 +370,12 @@ Ext.define('PVE.node.CephOsdTree', {
            handler: function(){ service_cmd('stop'); }
        });
 
+       var restart_btn = new Ext.Button({
+           text: gettext('Restart'),
+           disabled: true,
+           handler: function(){ service_cmd('restart'); }
+       });
+
        var osd_out_btn = new Ext.Button({
            text: 'Out',
            disabled: true,
@@ -503,6 +441,7 @@ Ext.define('PVE.node.CephOsdTree', {
            if (!rec) {
                start_btn.setDisabled(true);
                stop_btn.setDisabled(true);
+               restart_btn.setDisabled(true);
                remove_btn.setDisabled(true);
                osd_out_btn.setDisabled(true);
                osd_in_btn.setDisabled(true);
@@ -513,6 +452,7 @@ Ext.define('PVE.node.CephOsdTree', {
 
            start_btn.setDisabled(!(isOsd && (rec.data.status !== 'up')));
            stop_btn.setDisabled(!(isOsd && (rec.data.status !== 'down')));
+           restart_btn.setDisabled(!(isOsd && (rec.data.status !== 'down')));
            remove_btn.setDisabled(!(isOsd && (rec.data.status === 'down')));
 
            osd_out_btn.setDisabled(!(isOsd && rec.data['in']));
@@ -529,7 +469,7 @@ Ext.define('PVE.node.CephOsdTree', {
        });
 
        Ext.apply(me, {
-           tbar: [ create_btn, reload_btn, noout_btn, '->', osd_label, start_btn, stop_btn, osd_out_btn, osd_in_btn, remove_btn ],
+           tbar: [ create_btn, reload_btn, noout_btn, '->', osd_label, start_btn, stop_btn, restart_btn, osd_out_btn, osd_in_btn, remove_btn ],
            rootVisible: false,
            useArrows: true,
            fields: ['name', 'type', 'status', 'host', 'in', 'id' ,