]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/ceph/FS.js
1 Ext
.define('PVE.CephCreateFS', {
2 extend
: 'Proxmox.window.Edit',
3 alias
: 'widget.pveCephCreateFS',
6 onlineHelp
: 'pveceph_fs_create',
12 setFSName: function(fsName
) {
15 if (fsName
=== '' || fsName
=== undefined) {
19 me
.url
= "/nodes/" + me
.nodename
+ "/ceph/fs/" + fsName
;
25 fieldLabel
: gettext('Name'),
29 change: function(f
, value
) {
30 this.up('pveCephCreateFS').setFSName(value
);
33 submitValue
: false, // already encoded in apicall URL
37 xtype
: 'proxmoxintegerfield',
38 fieldLabel
: 'Placement Groups',
47 xtype
: 'proxmoxcheckbox',
48 fieldLabel
: gettext('Add as Storage'),
53 'data-qtip': gettext('Add the new CephFS to the cluster storage configuration.'),
58 initComponent : function() {
62 throw "no node name specified";
70 Ext
.define('PVE.NodeCephFSPanel', {
71 extend
: 'Ext.panel.Panel',
72 xtype
: 'pveNodeCephFSPanel',
73 mixins
: ['Proxmox.Mixin.CBind'],
75 title
: gettext('CephFS'),
76 onlineHelp
: 'pveceph_fs',
82 nodename
: '{nodename}',
89 cephfsConfigured
: false,
93 canCreateFS: function(get) {
94 return (!get('cephfsConfigured') && get('mdsCount') > 0);
102 emptyText
: Ext
.String
.format(gettext('No {0} configured.'), 'CephFS'),
104 xclass
: 'Ext.app.ViewController',
106 init: function(view
) {
107 view
.rstore
= Ext
.create('Proxmox.data.UpdateStore', {
112 storeid
: 'pve-ceph-fs',
115 url
: '/api2/json/nodes/' + view
.nodename
+ '/ceph/fs',
117 model
: 'pve-ceph-fs',
119 view
.setStore(Ext
.create('Proxmox.data.DiffStore', {
126 var regex
= new RegExp("not (installed|initialized)", "i");
127 PVE
.Utils
.handleStoreErrorOrMask(view
, view
.rstore
, regex
, function(me
, error
){
128 me
.rstore
.stopUpdate();
129 PVE
.Utils
.showCephInstallOrMask(me
.ownerCt
, error
.statusText
, view
.nodename
,
131 me
.mon(win
, 'cephInstallWindowClosed', function(){
132 me
.rstore
.startUpdate();
137 view
.rstore
.on('load', this.onLoad
, this);
138 view
.on('destroy', view
.rstore
.stopUpdate
);
141 onCreate: function() {
142 var view
= this.getView();
143 view
.rstore
.stopUpdate();
144 var win
= Ext
.create('PVE.CephCreateFS', {
146 nodename
: view
.nodename
,
148 destroy: function() {
149 view
.rstore
.startUpdate();
155 onLoad: function(store
, records
, success
) {
156 var vm
= this.getViewModel();
157 if (!(success
&& records
&& records
.length
> 0)) {
158 vm
.set('cephfsConfigured', false);
161 vm
.set('cephfsConfigured', true);
166 text
: gettext('Create CephFS'),
167 reference
: 'createButton',
170 // only one CephFS per Ceph cluster makes sense for now
171 disabled
: '{!canCreateFS}',
177 header
: gettext('Name'),
184 dataIndex
: 'data_pool',
187 header
: 'Metadata Pool',
189 dataIndex
: 'metadata_pool',
193 nodename
: '{nodename}',
197 xtype
: 'pveNodeCephServiceList',
198 title
: gettext('Metadata Servers'),
199 stateId
: 'grid-ceph-mds',
201 storeLoadCallback: function(store
, records
, success
) {
202 var vm
= this.getViewModel();
203 if (!success
|| !records
) {
204 vm
.set('mdsCount', 0);
207 vm
.set('mdsCount', records
.length
);
210 nodename
: '{nodename}',
215 Ext
.define('pve-ceph-fs', {
216 extend
: 'Ext.data.Model',
217 fields
: [ 'name', 'data_pool', 'metadata_pool' ],
220 url
: "/api2/json/nodes/localhost/ceph/fs",