]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/ceph/FS.js
1 /*jslint confusion: true */
2 Ext
.define('PVE.CephCreateFS', {
3 extend
: 'Proxmox.window.Edit',
4 alias
: 'widget.pveCephCreateFS',
7 //onlineHelp: 'pve_ceph_fs',
13 setFSName: function(fsName
) {
16 if (fsName
=== '' || fsName
=== undefined) {
20 me
.url
= "/nodes/" + me
.nodename
+ "/ceph/fs/" + fsName
;
26 fieldLabel
: gettext('Name'),
30 change: function(f
, value
) {
31 this.up('pveCephCreateFS').setFSName(value
);
34 submitValue
: false, // already encoded in apicall URL
38 xtype
: 'proxmoxintegerfield',
48 xtype
: 'proxmoxcheckbox',
49 fieldLabel
: gettext('Add Storage'),
55 initComponent : function() {
59 throw "no node name specified";
67 Ext
.define('PVE.CephCreateMDS', {
68 extend
: 'Proxmox.window.Edit',
69 alias
: 'widget.pveCephCreateMDS',
72 //onlineHelp: 'pve_ceph_mds',
78 setNode: function(nodename
) {
81 me
.nodename
= nodename
;
82 me
.url
= "/nodes/" + nodename
+ "/ceph/mds/" + nodename
;
87 xtype
: 'pveNodeSelector',
88 fieldLabel
: gettext('Node'),
93 change: function(f
, value
) {
94 this.up('pveCephCreateMDS').setNode(value
);
100 initComponent : function() {
104 throw "no node name specified";
106 me
.setNode(me
.nodename
);
112 Ext
.define('PVE.NodeCephFSPanel', {
113 extend
: 'Ext.panel.Panel',
114 xtype
: 'pveNodeCephFSPanel',
115 mixins
: ['Proxmox.Mixin.CBind'],
117 title
: gettext('CephFS'),
118 onlineHelp
: 'chapter_pvecm',
124 nodename
: '{nodename}'
131 cephfsConfigured
: false,
135 canCreateFS: function(get) {
136 return (!get('cephfsConfigured') && get('mdsCount') > 0);
144 emptyText
: Ext
.String
.format(gettext('No {0} configured.'), 'CephFS'),
146 xclass
: 'Ext.app.ViewController',
148 init: function(view
) {
149 view
.rstore
= Ext
.create('Proxmox.data.UpdateStore', {
154 storeid
: 'pve-ceph-fs',
157 view
.setStore(Ext
.create('Proxmox.data.DiffStore', {
164 Proxmox
.Utils
.monStoreErrors(view
, view
.rstore
);
165 view
.rstore
.on('load', this.onLoad
, this);
166 view
.on('destroy', view
.rstore
.stopUpdate
);
169 onCreate: function() {
170 var view
= this.getView();
171 view
.rstore
.stopUpdate();
172 var win
= Ext
.create('PVE.CephCreateFS', {
174 nodename
: view
.nodename
,
176 destroy: function() {
177 view
.rstore
.startUpdate();
183 onLoad: function(store
, records
, success
) {
184 var vm
= this.getViewModel();
185 if (!(success
&& records
&& records
.length
> 0)) {
186 vm
.set('cephfsConfigured', false);
189 vm
.set('cephfsConfigured', true);
194 text
: gettext('Create CephFS'),
195 reference
: 'createButton',
198 // only one CephFS per Ceph cluster makes sense for now
199 disabled
: '{!canCreateFS}'
205 header
: gettext('Name'),
212 dataIndex
: 'data_pool'
215 header
: 'Metadata Pool',
217 dataIndex
: 'metadata_pool'
221 nodename
: '{nodename}'
226 title
: gettext('Metadata Servers'),
227 emptyText
: Ext
.String
.format(gettext('No {0} configured.'), 'MDS'),
229 xclass
: 'Ext.app.ViewController',
231 init: function(view
) {
232 view
.rstore
= Ext
.create('Proxmox.data.UpdateStore', {
237 storeid
: 'pve-ceph-mds',
238 model
: 'pve-ceph-mds'
240 view
.setStore(Ext
.create('Proxmox.data.DiffStore', {
247 Proxmox
.Utils
.monStoreErrors(view
, view
.rstore
);
248 view
.rstore
.on('load', this.onLoad
, this);
249 view
.on('destroy', view
.rstore
.stopUpdate
);
251 onLoad: function(store
, records
, success
) {
252 var vm
= this.getViewModel();
253 if (!success
|| !records
) {
254 vm
.set('mdsCount', 0);
257 vm
.set('mdsCount', records
.length
);
259 onCreateMDS: function() {
260 var view
= this.getView();
261 view
.rstore
.stopUpdate();
262 var win
= Ext
.create('PVE.CephCreateMDS', {
264 nodename
: view
.nodename
,
266 destroy: function() {
267 view
.rstore
.startUpdate();
275 text
: gettext('Create MDS'),
276 reference
: 'createButton',
277 handler
: 'onCreateMDS'
280 text
: gettext('Destroy MDS'),
281 xtype
: 'proxmoxStdRemoveButton',
282 getUrl: function(rec
) {
283 if (!rec
.data
.host
) {
284 Ext
.Msg
.alert(gettext('Error'), "entry has no host");
287 return "/nodes/" + rec
.data
.host
+ "/ceph/mds/" + rec
.data
.name
;
289 callback: function(options
, success
, response
) {
291 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
294 var upid
= response
.result
.data
;
295 var win
= Ext
.create('Proxmox.window.TaskProgress', { upid
: upid
});
302 header
: gettext('Name'),
307 header
: gettext('Host'),
312 header
: gettext('Address'),
317 header
: gettext('State'),
323 nodename
: '{nodename}'
328 Ext
.define('pve-ceph-mds', {
329 extend
: 'Ext.data.Model',
330 fields
: [ 'name', 'host', 'addr', 'state' ],
333 url
: "/api2/json/nodes/localhost/ceph/mds"
337 Ext
.define('pve-ceph-fs', {
338 extend
: 'Ext.data.Model',
339 fields
: [ 'name', 'data_pool', 'metadata_pool' ],
342 url
: "/api2/json/nodes/localhost/ceph/fs"