]> git.proxmox.com Git - pve-manager.git/blame - www/manager/ceph/Pool.js
disable animation of charts on load
[pve-manager.git] / www / manager / ceph / Pool.js
CommitLineData
c9163348
DM
1Ext.define('PVE.CephCreatePool', {
2 extend: 'PVE.window.Edit',
3 alias: ['widget.pveCephCreatePool'],
4
5 subject: 'Ceph Pool',
6
7 initComponent : function() {
8 /*jslint confusion: true */
9 var me = this;
10
11 if (!me.nodename) {
12 throw "no node name specified";
13 }
14
15 Ext.applyIf(me, {
16 create: true,
17 url: "/nodes/" + me.nodename + "/ceph/pools",
18 method: 'POST',
19 items: [
20 {
21 xtype: 'textfield',
22 fieldLabel: gettext('Name'),
23 name: 'name',
24 allowBlank: false
25 },
26 {
27 xtype: 'numberfield',
28 fieldLabel: gettext('Size'),
29 name: 'size',
30 value: 2,
31 minValue: 1,
32 maxValue: 3,
33 allowBlank: false
34 },
35 {
36 xtype: 'numberfield',
37 fieldLabel: gettext('Min. Size'),
38 name: 'min_size',
39 value: 1,
40 minValue: 1,
41 maxValue: 3,
42 allowBlank: false
43 },
44 {
45 xtype: 'numberfield',
46 fieldLabel: gettext('Crush RuleSet'),
47 name: 'crush_ruleset',
48 value: 0,
49 minValue: 0,
50 maxValue: 32768,
51 allowBlank: false
52 },
53 {
54 xtype: 'numberfield',
55 fieldLabel: 'pg_num',
56 name: 'pg_num',
57 value: 64,
58 minValue: 8,
59 maxValue: 32768,
60 allowBlank: false
61 }
62 ]
63 });
64
65 me.callParent();
66 }
67});
68
69Ext.define('PVE.node.CephPoolList', {
70 extend: 'Ext.grid.GridPanel',
71 alias: ['widget.pveNodeCephPoolList'],
72
73 initComponent: function() {
74 var me = this;
75
76 var nodename = me.pveSelNode.data.node;
77 if (!nodename) {
78 throw "no node name specified";
79 }
80
81 var sm = Ext.create('Ext.selection.RowModel', {});
82
83 var rstore = Ext.create('PVE.data.UpdateStore', {
84 interval: 3000,
85 storeid: 'ceph-pool-list',
86 model: 'ceph-pool-list',
87 proxy: {
88 type: 'pve',
89 url: "/api2/json/nodes/" + nodename + "/ceph/pools"
90 }
91 });
92
93 var store = Ext.create('PVE.data.DiffStore', { rstore: rstore });
94
95 PVE.Utils.monStoreErrors(me, rstore);
96
97 var create_btn = new Ext.Button({
98 text: gettext('Create'),
99 handler: function() {
100 var win = Ext.create('PVE.CephCreatePool', {
101 nodename: nodename
102 });
103 win.show();
104 }
105 });
106
107 var remove_btn = new PVE.button.Button({
108 text: gettext('Remove'),
109 selModel: sm,
110 disabled: true,
111 confirmMsg: function(rec) {
112 var msg = Ext.String.format(gettext('Are you sure you want to remove entry {0}'),
113 "'" + rec.data.pool_name + "'");
114 msg += " " + gettext('This will permanently erase all image data.');
115
116 return msg;
117 },
118 handler: function() {
119 var rec = sm.getSelection()[0];
120
121 if (!rec.data.pool_name) {
122 return;
123 }
124
125 PVE.Utils.API2Request({
126 url: "/nodes/" + nodename + "/ceph/pools/" +
127 rec.data.pool_name,
128 method: 'DELETE',
129 failure: function(response, opts) {
130 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
131 }
132 });
133 }
134 });
135
136 Ext.apply(me, {
137 store: store,
138 selModel: sm,
139 stateful: false,
140 tbar: [ create_btn, remove_btn ],
2bc255f1 141 features: [ { ftype: 'summary' } ],
c9163348
DM
142 columns: [
143 {
144 header: gettext('Name'),
145 width: 100,
146 sortable: true,
147 dataIndex: 'pool_name'
148 },
149 {
150 header: gettext('Size') + '/min',
151 width: 50,
152 sortable: false,
153 renderer: function(v, meta, rec) {
154 return v + '/' + rec.data.min_size;
155 },
156 dataIndex: 'size'
157 },
158 {
159 header: 'pg_num',
160 width: 100,
161 sortable: false,
162 dataIndex: 'pg_num'
163 },
164 {
165 header: 'ruleset',
166 width: 50,
167 sortable: false,
168 dataIndex: 'crush_ruleset'
169 },
170 {
171 header: gettext('Used'),
172 columns: [
173 {
174 header: '%',
175 width: 80,
176 sortable: true,
177 align: 'right',
178 renderer: Ext.util.Format.numberRenderer('0.00'),
2bc255f1
DM
179 dataIndex: 'percent_used',
180 summaryType: 'sum',
181 summaryRenderer: Ext.util.Format.numberRenderer('0.00')
c9163348
DM
182 },
183 {
184 header: gettext('Total'),
185 width: 100,
186 sortable: true,
187 renderer: PVE.Utils.render_size,
188 align: 'right',
2bc255f1
DM
189 dataIndex: 'bytes_used',
190 summaryType: 'sum',
191 summaryRenderer: PVE.Utils.render_size
c9163348
DM
192 }
193 ]
194 }
195 ],
196 listeners: {
197 show: rstore.startUpdate,
198 hide: rstore.stopUpdate,
199 destroy: rstore.stopUpdate
200 }
201 });
202
203 me.callParent();
204 }
205}, function() {
206
207 Ext.define('ceph-pool-list', {
208 extend: 'Ext.data.Model',
209 fields: [ 'pool_name',
210 { name: 'pool', type: 'integer'},
211 { name: 'size', type: 'integer'},
212 { name: 'min_size', type: 'integer'},
213 { name: 'pg_num', type: 'integer'},
214 { name: 'bytes_used', type: 'integer'},
215 { name: 'percent_used', type: 'number'},
216 { name: 'crush_ruleset', type: 'integer'}
217 ],
218 idProperty: 'pool_name'
219 });
220});