]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/ceph/Pool.js
1 Ext
.define('PVE.CephCreatePool', {
2 extend
: 'PVE.window.Edit',
3 alias
: 'widget.pveCephCreatePool',
13 fieldLabel
: gettext('Name'),
18 xtype
: 'pveIntegerField',
19 fieldLabel
: gettext('Size'),
27 xtype
: 'pveIntegerField',
28 fieldLabel
: gettext('Min. Size'),
36 xtype
: 'pveCephRuleSelector',
37 fieldLabel
: 'Crush Rule', // do not localize
42 xtype
: 'pveIntegerField',
52 fieldLabel
: gettext('Add Storages'),
56 initComponent : function() {
57 /*jslint confusion: true */
61 throw "no node name specified";
65 url
: "/nodes/" + me
.nodename
+ "/ceph/pools",
75 Ext
.define('PVE.node.CephPoolList', {
76 extend
: 'Ext.grid.GridPanel',
77 alias
: 'widget.pveNodeCephPoolList',
79 onlineHelp
: 'chapter_pveceph',
81 stateId
: 'grid-ceph-pools',
82 bufferedRenderer
: false,
83 features
: [ { ftype
: 'summary'} ],
86 header
: gettext('Name'),
89 dataIndex
: 'pool_name'
92 header
: gettext('Size') + '/min',
95 renderer: function(v
, meta
, rec
) {
96 return v
+ '/' + rec
.data
.min_size
;
110 dataIndex
: 'crush_rule'
116 dataIndex
: 'crush_rule_name'
119 header
: gettext('Used'),
126 renderer
: Ext
.util
.Format
.numberRenderer('0.00'),
127 dataIndex
: 'percent_used',
129 summaryRenderer
: Ext
.util
.Format
.numberRenderer('0.00')
132 header
: gettext('Total'),
135 renderer
: PVE
.Utils
.render_size
,
137 dataIndex
: 'bytes_used',
139 summaryRenderer
: PVE
.Utils
.render_size
144 initComponent: function() {
147 var nodename
= me
.pveSelNode
.data
.node
;
149 throw "no node name specified";
152 var sm
= Ext
.create('Ext.selection.RowModel', {});
154 var rstore
= Ext
.create('PVE.data.UpdateStore', {
156 storeid
: 'ceph-pool-list' + nodename
,
157 model
: 'ceph-pool-list',
160 url
: "/api2/json/nodes/" + nodename
+ "/ceph/pools"
164 var store
= Ext
.create('PVE.data.DiffStore', { rstore
: rstore
});
166 PVE
.Utils
.monStoreErrors(me
, rstore
);
168 var create_btn
= new Ext
.Button({
169 text
: gettext('Create'),
170 handler: function() {
171 var win
= Ext
.create('PVE.CephCreatePool', {
175 win
.on('destroy', function() {
181 var remove_btn
= Ext
.create('PVE.button.Button', {
182 text
: gettext('Remove'),
185 handler: function() {
186 var rec
= sm
.getSelection()[0];
188 if (!rec
.data
.pool_name
) {
191 var base_url
= '/nodes/' + nodename
+ '/ceph/pools/' +
194 var win
= Ext
.create('PVE.window.SafeDestroy', {
200 item
: { type
: 'CephPool', id
: rec
.data
.pool_name
}
202 win
.on('destroy', function() {
211 tbar
: [ create_btn
, remove_btn
],
213 activate
: rstore
.startUpdate
,
214 destroy
: rstore
.stopUpdate
222 Ext
.define('ceph-pool-list', {
223 extend
: 'Ext.data.Model',
224 fields
: [ 'pool_name',
225 { name
: 'pool', type
: 'integer'},
226 { name
: 'size', type
: 'integer'},
227 { name
: 'min_size', type
: 'integer'},
228 { name
: 'pg_num', type
: 'integer'},
229 { name
: 'bytes_used', type
: 'integer'},
230 { name
: 'percent_used', type
: 'number'},
231 { name
: 'crush_rule', type
: 'integer'},
232 { name
: 'crush_rule_name', type
: 'string'}
234 idProperty
: 'pool_name'
238 Ext
.define('PVE.form.CephRuleSelector', {
239 extend
: 'Ext.form.field.ComboBox',
240 alias
: 'widget.pveCephRuleSelector',
244 displayField
: 'name',
248 initComponent: function() {
252 throw "no nodename given";
255 var store
= Ext
.create('Ext.data.Store', {
260 url
: '/api2/json/nodes/' + me
.nodename
+ '/ceph/rules'
271 callback: function(rec
, op
, success
){
272 if (success
&& rec
.length
> 0) {