]>
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',
6 onlineHelp
: 'pve_ceph_pools',
14 fieldLabel
: gettext('Name'),
19 xtype
: 'proxmoxintegerfield',
20 fieldLabel
: gettext('Size'),
28 xtype
: 'proxmoxintegerfield',
29 fieldLabel
: gettext('Min. Size'),
37 xtype
: 'pveCephRuleSelector',
38 fieldLabel
: 'Crush Rule', // do not localize
43 xtype
: 'proxmoxintegerfield',
53 fieldLabel
: gettext('Add Storages'),
57 initComponent : function() {
58 /*jslint confusion: true */
62 throw "no node name specified";
66 url
: "/nodes/" + me
.nodename
+ "/ceph/pools",
76 Ext
.define('PVE.node.CephPoolList', {
77 extend
: 'Ext.grid.GridPanel',
78 alias
: 'widget.pveNodeCephPoolList',
80 onlineHelp
: 'chapter_pveceph',
82 stateId
: 'grid-ceph-pools',
83 bufferedRenderer
: false,
84 features
: [ { ftype
: 'summary'} ],
87 header
: gettext('Name'),
90 dataIndex
: 'pool_name'
93 header
: gettext('Size') + '/min',
96 renderer: function(v
, meta
, rec
) {
97 return v
+ '/' + rec
.data
.min_size
;
111 dataIndex
: 'crush_rule'
117 dataIndex
: 'crush_rule_name'
120 header
: gettext('Used'),
127 renderer
: Ext
.util
.Format
.numberRenderer('0.00'),
128 dataIndex
: 'percent_used',
130 summaryRenderer
: Ext
.util
.Format
.numberRenderer('0.00')
133 header
: gettext('Total'),
136 renderer
: PVE
.Utils
.render_size
,
138 dataIndex
: 'bytes_used',
140 summaryRenderer
: PVE
.Utils
.render_size
145 initComponent: function() {
148 var nodename
= me
.pveSelNode
.data
.node
;
150 throw "no node name specified";
153 var sm
= Ext
.create('Ext.selection.RowModel', {});
155 var rstore
= Ext
.create('Proxmox.data.UpdateStore', {
157 storeid
: 'ceph-pool-list' + nodename
,
158 model
: 'ceph-pool-list',
161 url
: "/api2/json/nodes/" + nodename
+ "/ceph/pools"
165 var store
= Ext
.create('PVE.data.DiffStore', { rstore
: rstore
});
167 PVE
.Utils
.monStoreErrors(me
, rstore
);
169 var create_btn
= new Ext
.Button({
170 text
: gettext('Create'),
171 handler: function() {
172 var win
= Ext
.create('PVE.CephCreatePool', {
176 win
.on('destroy', function() {
182 var destroy_btn
= Ext
.create('Proxmox.button.Button', {
183 text
: gettext('Destroy'),
186 handler: function() {
187 var rec
= sm
.getSelection()[0];
189 if (!rec
.data
.pool_name
) {
192 var base_url
= '/nodes/' + nodename
+ '/ceph/pools/' +
195 var win
= Ext
.create('PVE.window.SafeDestroy', {
201 item
: { type
: 'CephPool', id
: rec
.data
.pool_name
}
203 win
.on('destroy', function() {
212 tbar
: [ create_btn
, destroy_btn
],
214 activate
: rstore
.startUpdate
,
215 destroy
: rstore
.stopUpdate
223 Ext
.define('ceph-pool-list', {
224 extend
: 'Ext.data.Model',
225 fields
: [ 'pool_name',
226 { name
: 'pool', type
: 'integer'},
227 { name
: 'size', type
: 'integer'},
228 { name
: 'min_size', type
: 'integer'},
229 { name
: 'pg_num', type
: 'integer'},
230 { name
: 'bytes_used', type
: 'integer'},
231 { name
: 'percent_used', type
: 'number'},
232 { name
: 'crush_rule', type
: 'integer'},
233 { name
: 'crush_rule_name', type
: 'string'}
235 idProperty
: 'pool_name'
239 Ext
.define('PVE.form.CephRuleSelector', {
240 extend
: 'Ext.form.field.ComboBox',
241 alias
: 'widget.pveCephRuleSelector',
245 displayField
: 'name',
249 initComponent: function() {
253 throw "no nodename given";
256 var store
= Ext
.create('Ext.data.Store', {
261 url
: '/api2/json/nodes/' + me
.nodename
+ '/ceph/rules'
272 callback: function(rec
, op
, success
){
273 if (success
&& rec
.length
> 0) {