]> git.proxmox.com Git - pve-manager.git/blame - www/manager/storage/NFSEdit.js
vzdump: add new 'remove' flag to disable automatic file removal
[pve-manager.git] / www / manager / storage / NFSEdit.js
CommitLineData
aff192e6
DM
1Ext.define('PVE.storage.NFSScan', {
2 extend: 'Ext.form.field.ComboBox',
3 alias: 'widget.pveNFSScan',
4
5 queryParam: 'server',
6
7 doRawQuery: function() {
8 },
9
10 onTriggerClick: function() {
11 var me = this;
12
13 if (!me.queryCaching || me.lastQuery !== me.nfsServer) {
14 me.store.removeAll();
15 }
16
17 me.allQuery = me.nfsServer;
18
19 me.callParent();
20 },
21
22 setServer: function(server) {
23 var me = this;
24
25 me.nfsServer = server;
26 },
27
28 initComponent : function() {
29 var me = this;
30
31 if (!me.nodename) {
32 me.nodename = 'localhost';
33 }
34
35 var store = Ext.create('Ext.data.Store', {
36 fields: [ 'path', 'options' ],
37 proxy: {
38 type: 'pve',
39 url: '/api2/json/nodes/' + me.nodename + '/scan/nfs'
40 }
41 });
42
43 Ext.apply(me, {
44 store: store,
45 valueField: 'path',
46 displayField: 'path',
47 matchFieldWidth: false,
48 listConfig: {
49 loadingText: 'Scanning...',
50 width: 350
51 }
52 });
53
54 me.callParent();
55 }
56});
57
58Ext.define('PVE.storage.NFSInputPanel', {
59 extend: 'PVE.panel.InputPanel',
60
61 onGetValues: function(values) {
62 var me = this;
63
64 if (me.create) {
65 values.type = 'nfs';
d07264e6
DM
66 // hack: for now we always create nvf v3
67 // fixme: make this configurable
68 values.options = 'vers=3';
aff192e6
DM
69 } else {
70 delete values.storage;
71 }
72
73 values.disable = values.enable ? 0 : 1;
74 delete values.enable;
75
76 return values;
77 },
78
79 initComponent : function() {
80 var me = this;
81
82
83 me.column1 = [
84 {
85 xtype: me.create ? 'textfield' : 'displayfield',
86 name: 'storage',
87 height: 22, // hack: set same height as text fields
88 value: me.storageId || '',
86d09374 89 fieldLabel: 'ID',
aff192e6
DM
90 vtype: 'StorageId',
91 allowBlank: false
92 },
93 {
94 xtype: me.create ? 'textfield' : 'displayfield',
95 height: 22, // hack: set same height as text fields
96 name: 'server',
97 value: '',
86d09374 98 fieldLabel: gettext('Server'),
aff192e6
DM
99 allowBlank: false,
100 listeners: {
101 change: function(f, value) {
102 if (me.create) {
103 var exportField = me.down('field[name=export]');
104 exportField.setServer(value);
105 exportField.setValue('');
106 }
107 }
108 }
109 },
110 {
111 xtype: me.create ? 'pveNFSScan' : 'displayfield',
112 height: 22, // hack: set same height as text fields
113 name: 'export',
114 value: '',
115 fieldLabel: 'Export',
116 allowBlank: false
117 },
118 {
119 xtype: 'pveContentTypeSelector',
120 name: 'content',
121 value: 'images',
c5125d5a 122 multiSelect: true,
81e94b6d 123 fieldLabel: gettext('Content'),
aff192e6
DM
124 allowBlank: false
125 }
126 ];
127
128 me.column2 = [
129 {
130 xtype: 'PVE.form.NodeSelector',
131 name: 'nodes',
86d09374
DM
132 fieldLabel: gettext('Nodes'),
133 emptyText: gettext('All') + ' (' +
134 gettext('No restrictions') +')',
aff192e6
DM
135 multiSelect: true,
136 autoSelect: false
137 },
138 {
139 xtype: 'pvecheckbox',
140 name: 'enable',
141 checked: true,
142 uncheckedValue: 0,
86d09374 143 fieldLabel: gettext('Enable')
899b8373
DM
144 },
145 {
146 xtype: 'numberfield',
147 fieldLabel: gettext('Max Backups'),
148 name: 'maxfiles',
149 minValue: 0,
150 maxValue: 365,
151 value: me.create ? '1' : undefined,
152 allowBlank: false
aff192e6
DM
153 }
154 ];
155
156 me.callParent();
157 }
158});
159
160Ext.define('PVE.storage.NFSEdit', {
161 extend: 'PVE.window.Edit',
162
163 initComponent : function() {
164 var me = this;
165
166 me.create = !me.storageId;
167
168 if (me.create) {
169 me.url = '/api2/extjs/storage';
170 me.method = 'POST';
171 } else {
172 me.url = '/api2/extjs/storage/' + me.storageId;
173 me.method = 'PUT';
174 }
175
176 var ipanel = Ext.create('PVE.storage.NFSInputPanel', {
177 create: me.create,
178 storageId: me.storageId
179 });
180
58eb5905
DM
181 Ext.apply(me, {
182 subject: 'NFS share',
183 isAdd: true,
184 items: [ ipanel ]
185 });
aff192e6
DM
186
187 me.callParent();
188
189 if (!me.create) {
190 me.load({
191 success: function(response, options) {
192 var values = response.result.data;
193 var ctypes = values.content || '';
194
c5125d5a
DM
195 values.content = ctypes.split(',');
196
aff192e6
DM
197 if (values.nodes) {
198 values.nodes = values.nodes.split(',');
199 }
200 values.enable = values.disable ? 0 : 1;
201 ipanel.setValues(values);
202 }
203 });
204 }
205 }
206});