-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'],
method: 'POST',
items: [
{
- xtype: 'pveCephDiskSelector',
+ xtype: 'pveDiskSelector',
name: 'dev',
nodename: me.nodename,
diskType: 'unused',
allowBlank: false
},
{
- xtype: 'pveCephDiskSelector',
+ xtype: 'pveDiskSelector',
name: 'journal_dev',
nodename: me.nodename,
diskType: 'journal_disks',
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();
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,
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);
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']));
});
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' ,