]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/ceph/Config.js
copy ceph/Config.js from manager to manager6
[pve-manager.git] / www / manager6 / ceph / Config.js
1 Ext.define('PVE.node.CephConfig', {
2 extend: 'Ext.panel.Panel',
3 alias: ['widget.pveNodeCephConfig'],
4
5 load: function() {
6 var me = this;
7
8 PVE.Utils.API2Request({
9 url: me.url,
10 waitMsgTarget: me,
11 failure: function(response, opts) {
12 me.update(gettext('Error') + " " + response.htmlStatus);
13 },
14 success: function(response, opts) {
15 var data = response.result.data;
16 me.update(Ext.htmlEncode(data));
17 }
18 });
19 },
20
21 initComponent: function() {
22 var me = this;
23
24 var nodename = me.pveSelNode.data.node;
25 if (!nodename) {
26 throw "no node name specified";
27 }
28
29 Ext.apply(me, {
30 url: '/nodes/' + nodename + '/ceph/config',
31 bodyStyle: 'white-space:pre',
32 bodyPadding: 5,
33 autoScroll: true,
34 listeners: {
35 show: function() {
36 me.load();
37 }
38 }
39 });
40
41 me.callParent();
42
43 me.load();
44 }
45 });
46
47 Ext.define('PVE.node.Ceph', {
48 extend: 'Ext.tab.Panel',
49 alias: ['widget.pveNodeCeph'],
50
51 getHState: function(itemId) {
52 /*jslint confusion: true */
53 var me = this;
54
55 if (!itemId) {
56 itemId = me.getActiveTab().itemId;
57 }
58
59 var first = me.items.get(0);
60 var ntab;
61
62 // Note: '' is alias for first tab.
63 if (itemId === first.itemId) {
64 ntab = 'ceph';
65 } else {
66 ntab = 'ceph-' + itemId;
67 }
68
69 return { value: ntab };
70 },
71
72 initComponent: function() {
73 var me = this;
74
75 var nodename = me.pveSelNode.data.node;
76 if (!nodename) {
77 throw "no node name specified";
78 }
79
80 if (!me.phstateid) {
81 throw "no parent history state specified";
82 }
83
84 var sp = Ext.state.Manager.getProvider();
85 var state = sp.get(me.phstateid);
86 var hsregex = /^ceph-(\S+)$/;
87
88 if (state && state.value) {
89 var res = hsregex.exec(state.value);
90 if (res && res[1]) {
91 me.activeTab = res[1];
92 }
93 }
94
95 Ext.apply(me, {
96 plain: true,
97 tabPosition: 'bottom',
98 defaults: {
99 border: false,
100 pveSelNode: me.pveSelNode
101 },
102 items: [
103 {
104 xtype: 'pveNodeCephStatus',
105 title: gettext('Status'),
106 itemId: 'status'
107 },
108 {
109 xtype: 'pveNodeCephConfig',
110 title: gettext('Config'),
111 itemId: 'config'
112 },
113 {
114 xtype: 'pveNodeCephMonList',
115 title: gettext('Monitor'),
116 itemId: 'monlist'
117 },
118 {
119 xtype: 'pveNodeCephDiskList',
120 title: gettext('Disks'),
121 itemId: 'disklist'
122 },
123 {
124 xtype: 'pveNodeCephOsdTree',
125 title: 'OSD',
126 itemId: 'osdtree'
127 },
128 {
129 xtype: 'pveNodeCephPoolList',
130 title: gettext('Pools'),
131 itemId: 'pools'
132 },
133 {
134 title: 'Crush',
135 xtype: 'pveNodeCephCrushMap',
136 itemId: 'crushmap'
137 },
138 {
139 title: gettext('Log'),
140 itemId: 'log',
141 xtype: 'pveLogView',
142 url: "/api2/extjs/nodes/" + nodename + "/ceph/log"
143 }
144 ],
145 listeners: {
146 afterrender: function(tp) {
147 var first = tp.items.get(0);
148 if (first) {
149 first.fireEvent('show', first);
150 }
151 },
152 tabchange: function(tp, newcard, oldcard) {
153 var state = me.getHState(newcard.itemId);
154 sp.set(me.phstateid, state);
155 }
156 }
157 });
158
159 me.callParent();
160
161 var statechange = function(sp, key, state) {
162 if ((key === me.phstateid) && state) {
163 var first = me.items.get(0);
164 var atab = me.getActiveTab().itemId;
165 var res = hsregex.exec(state.value);
166 var ntab = (res && res[1]) ? res[1] : first.itemId;
167 if (ntab && (atab != ntab)) {
168 me.setActiveTab(ntab);
169 }
170 }
171 };
172
173 me.mon(sp, 'statechange', statechange);
174 }
175 });