]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/ceph/Pool.js
1 // Ext.create is a function, but
2 // we defined create a bool in PVE.window.Edit
3 /*jslint confusion: true*/
4 Ext
.define('PVE.CephCreatePool', {
5 extend
: 'PVE.window.Edit',
6 alias
: ['widget.pveCephCreatePool'],
14 fieldLabel
: gettext('Name'),
19 xtype
: 'pveIntegerField',
20 fieldLabel
: gettext('Size'),
28 xtype
: 'pveIntegerField',
29 fieldLabel
: gettext('Min. Size'),
37 xtype
: 'pveIntegerField',
38 fieldLabel
: gettext('Crush RuleSet'),
39 name
: 'crush_ruleset',
46 xtype
: 'pveIntegerField',
55 initComponent : function() {
56 /*jslint confusion: true */
60 throw "no node name specified";
64 url
: "/nodes/" + me
.nodename
+ "/ceph/pools"
71 Ext
.define('PVE.node.CephPoolList', {
72 extend
: 'Ext.grid.GridPanel',
73 alias
: ['widget.pveNodeCephPoolList'],
75 onlineHelp
: 'chapter_pveceph',
77 bufferedRenderer
: false,
78 features
: [ { ftype
: 'summary'} ],
81 header
: gettext('Name'),
84 dataIndex
: 'pool_name'
87 header
: gettext('Size') + '/min',
90 renderer: function(v
, meta
, rec
) {
91 return v
+ '/' + rec
.data
.min_size
;
105 dataIndex
: 'crush_ruleset'
108 header
: gettext('Used'),
115 renderer
: Ext
.util
.Format
.numberRenderer('0.00'),
116 dataIndex
: 'percent_used',
118 summaryRenderer
: Ext
.util
.Format
.numberRenderer('0.00')
121 header
: gettext('Total'),
124 renderer
: PVE
.Utils
.render_size
,
126 dataIndex
: 'bytes_used',
128 summaryRenderer
: PVE
.Utils
.render_size
133 initComponent: function() {
136 var nodename
= me
.pveSelNode
.data
.node
;
138 throw "no node name specified";
141 var sm
= Ext
.create('Ext.selection.RowModel', {});
143 var rstore
= Ext
.create('PVE.data.UpdateStore', {
145 storeid
: 'ceph-pool-list' + nodename
,
146 model
: 'ceph-pool-list',
149 url
: "/api2/json/nodes/" + nodename
+ "/ceph/pools"
153 var store
= Ext
.create('PVE.data.DiffStore', { rstore
: rstore
});
155 PVE
.Utils
.monStoreErrors(me
, rstore
);
157 var create_btn
= new Ext
.Button({
158 text
: gettext('Create'),
159 handler: function() {
160 var win
= Ext
.create('PVE.CephCreatePool', {
167 var remove_btn
= new PVE
.button
.Button({
168 text
: gettext('Remove'),
171 confirmMsg: function(rec
) {
172 var msg
= Ext
.String
.format(gettext('Are you sure you want to remove entry {0}'),
173 "'" + rec
.data
.pool_name
+ "'");
174 msg
+= " " + gettext('This will permanently erase all data.');
178 handler: function() {
179 var rec
= sm
.getSelection()[0];
181 if (!rec
.data
.pool_name
) {
185 PVE
.Utils
.API2Request({
186 url
: "/nodes/" + nodename
+ "/ceph/pools/" +
189 failure: function(response
, opts
) {
190 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
199 tbar
: [ create_btn
, remove_btn
],
201 activate
: rstore
.startUpdate
,
202 destroy
: rstore
.stopUpdate
210 Ext
.define('ceph-pool-list', {
211 extend
: 'Ext.data.Model',
212 fields
: [ 'pool_name',
213 { name
: 'pool', type
: 'integer'},
214 { name
: 'size', type
: 'integer'},
215 { name
: 'min_size', type
: 'integer'},
216 { name
: 'pg_num', type
: 'integer'},
217 { name
: 'bytes_used', type
: 'integer'},
218 { name
: 'percent_used', type
: 'number'},
219 { name
: 'crush_ruleset', type
: 'integer'}
221 idProperty
: 'pool_name'