]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/storage/RBDEdit.js
35568b9854e8d04d6520f804c886c80d0475af3d
1 Ext
.define('PVE.storage.Ceph.Model', {
2 extend
: 'Ext.app.ViewModel',
3 alias
: 'viewmodel.cephstorage',
8 namespacePresent
: false,
12 Ext
.define('PVE.storage.Ceph.Controller', {
13 extend
: 'PVE.controller.StorageEdit',
14 alias
: 'controller.cephstorage',
18 afterrender
: 'queryMonitors',
20 'textfield[name=username]': {
21 disable
: 'resetField',
23 'displayfield[name=monhost]': {
24 enable
: 'queryMonitors',
26 'textfield[name=monhost]': {
27 disable
: 'resetField',
30 'textfield[name=namespace]': {
31 change
: 'updateNamespaceHint',
34 resetField: function(field
) {
37 updateNamespaceHint: function(field
, newVal
, oldVal
) {
38 this.getViewModel().set('namespacePresent', newVal
);
40 queryMonitors: function(field
, newVal
, oldVal
) {
41 // we get called with two signatures, the above one for a field
42 // change event and the afterrender from the view, this check only
43 // can be true for the field change one and omit the API request if
44 // pveceph got unchecked - as it's not needed there.
45 if (field
&& !newVal
&& oldVal
) {
48 var view
= this.getView();
49 var vm
= this.getViewModel();
50 if (!(view
.isCreate
|| vm
.get('pveceph'))) {
51 return; // only query on create or if editing a pveceph store
54 var monhostField
= this.lookupReference('monhost');
56 Proxmox
.Utils
.API2Request({
57 url
: '/api2/json/nodes/localhost/ceph/mon',
60 callback: function(options
, success
, response
) {
61 var data
= response
.result
.data
;
62 if (response
.status
=== 200) {
63 if (data
.length
> 0) {
64 var monhost
= Ext
.Array
.pluck(data
, 'name').sort().join(',');
65 monhostField
.setValue(monhost
);
66 monhostField
.resetOriginalValue();
68 vm
.set('pvecephPossible', true);
71 vm
.set('pveceph', false);
74 vm
.set('pveceph', false);
75 vm
.set('pvecephPossible', false);
82 Ext
.define('PVE.storage.RBDInputPanel', {
83 extend
: 'PVE.panel.StorageBase',
84 controller
: 'cephstorage',
86 onlineHelp
: 'ceph_rados_block_devices',
92 setValues: function(values
) {
94 this.viewModel
.set('pveceph', false);
95 this.lookupReference('pvecephRef').setValue(false);
96 this.lookupReference('pvecephRef').resetOriginalValue();
98 if (values
.namespace) {
99 this.getViewModel().set('namespacePresent', true);
101 this.callParent([values
]);
104 initComponent: function() {
108 me
.nodename
= 'localhost';
116 xtype
: 'pveCephPoolSelector',
117 nodename
: me
.nodename
,
120 disabled
: '{!pveceph}',
121 submitValue
: '{pveceph}',
122 hidden
: '{!pveceph}',
124 fieldLabel
: gettext('Pool'),
131 disabled
: '{pveceph}',
132 submitValue
: '{!pveceph}',
135 fieldLabel
: gettext('Pool'),
140 xtype
: 'displayfield',
141 nodename
: me
.nodename
,
143 fieldLabel
: gettext('Pool'),
154 disabled
: '{pveceph}',
155 submitValue
: '{!pveceph}',
159 fieldLabel
: 'Monitor(s)',
163 xtype
: 'displayfield',
164 reference
: 'monhost',
166 disabled
: '{!pveceph}',
167 hidden
: '{!pveceph}',
170 fieldLabel
: 'Monitor(s)',
173 xtype
: me
.isCreate
? 'textfield' : 'displayfield',
176 disabled
: '{pveceph}',
177 submitValue
: '{!pveceph}',
180 fieldLabel
: gettext('User name'),
187 xtype
: 'pveContentTypeSelector',
188 cts
: ['images', 'rootdir'],
189 fieldLabel
: gettext('Content'),
196 xtype
: 'proxmoxcheckbox',
205 xtype
: 'proxmoxcheckbox',
207 reference
: 'pvecephRef',
209 disabled
: '{!pvecephPossible}',
215 hidden
: !me
.isCreate
,
216 boxLabel
: gettext('Use Proxmox VE managed hyper-converged ceph pool'),
220 me
.advancedColumn1
= [
222 xtype
: 'pmxDisplayEditField',
223 editable
: me
.isCreate
,
226 fieldLabel
: gettext('Namespace'),
230 me
.advancedColumn2
= [
232 xtype
: 'displayfield',
233 name
: 'namespace-hint',
235 value
: gettext('RBD namespaces must be created manually!'),
237 hidden
: '{!namespacePresent}',