]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/dc/MetricServerView.js
1 Ext
.define('PVE.dc.MetricServerView', {
2 extend
: 'Ext.grid.Panel',
3 alias
: ['widget.pveMetricServerView'],
6 stateId
: 'grid-metricserver',
9 xclass
: 'Ext.app.ViewController',
11 render_type: function(value
) {
13 case 'influxdb': return "InfluxDB";
14 case 'graphite': return "Graphite";
15 default: return Proxmox
.Utils
.unknownText
;
19 editWindow: function(xtype
, id
) {
21 Ext
.create(`PVE.dc.${xtype}Edit`, {
25 destroy
: () => me
.reload(),
30 addServer: function(button
) {
31 this.editWindow(button
.text
);
34 editServer: function() {
36 let view
= me
.getView();
37 let selection
= view
.getSelection();
38 if (!selection
|| selection
.length
< 1) {
42 let cfg
= selection
[0].data
;
44 let xtype
= me
.render_type(cfg
.type
);
45 me
.editWindow(xtype
, cfg
.id
);
49 this.getView().getStore().load();
58 url
: '/api2/json/cluster/metrics/server',
64 text
: gettext('Name'),
69 text
: gettext('Type'),
72 renderer
: 'render_type',
75 text
: gettext('Enabled'),
78 renderer
: Proxmox
.Utils
.format_neg_boolean
,
81 text
: gettext('Server'),
86 text
: gettext('Port'),
98 iconCls
: 'fa fa-fw fa-bar-chart',
103 iconCls
: 'fa fa-fw fa-bar-chart',
104 handler
: 'addServer',
109 text
: gettext('Edit'),
110 xtype
: 'proxmoxButton',
111 handler
: 'editServer',
115 xtype
: 'proxmoxStdRemoveButton',
116 baseurl
: `/api2/extjs/cluster/metrics/server`,
122 itemdblclick
: 'editServer',
125 initComponent: function() {
130 Proxmox
.Utils
.monStoreErrors(me
, me
.getStore());
134 Ext
.define('PVE.dc.MetricServerBaseEdit', {
135 extend
: 'Proxmox.window.Edit',
136 mixins
: ['Proxmox.Mixin.CBind'],
138 cbindData: function() {
140 me
.isCreate
= !me
.serverid
;
141 me
.serverid
= me
.serverid
|| "";
142 me
.url
= `/api2/extjs/cluster/metrics/server/${me.serverid}`;
143 me
.method
= me
.isCreate
? 'POST' : 'PUT';
145 me
.subject
= `${me.subject}: ${me.serverid}`;
150 submitUrl: function(url
, values
) {
151 return this.isCreate
? `${url}/${values.id}` : url
;
154 initComponent: function() {
161 success: function(response
, options
) {
162 let values
= response
.result
.data
;
163 values
.enable
= !values
.disable
;
164 me
.down('inputpanel').setValues(values
);
171 Ext
.define('PVE.dc.InfluxDBEdit', {
172 extend
: 'PVE.dc.MetricServerBaseEdit',
173 mixins
: ['Proxmox.Mixin.CBind'],
175 onlineHelp
: 'metric_server_influxdb',
179 cbindData: function() {
182 me
.tokenEmptyText
= me
.isCreate
? '' : gettext('unchanged');
190 isCreate
: '{isCreate}',
192 onGetValues: function(values
) {
194 values
.disable
= values
.enable
? 0 : 1;
195 delete values
.enable
;
196 PVE
.Utils
.delete_if_default(values
, 'verify-certificate', '1', me
.isCreate
);
206 submitValue
: '{isCreate}',
210 xtype
: 'pmxDisplayEditField',
212 fieldLabel
: gettext('Name'),
215 editable
: '{isCreate}',
220 xtype
: 'proxmoxtextfield',
222 fieldLabel
: gettext('Server'),
226 xtype
: 'proxmoxintegerfield',
228 fieldLabel
: gettext('Port'),
235 xtype
: 'proxmoxKVComboBox',
236 name
: 'influxdbproto',
237 fieldLabel
: gettext('Protocol'),
238 value
: '__default__',
240 deleteEmpty
: '{!isCreate}',
243 ['__default__', 'UDP'],
248 change: function(field
, value
) {
250 let view
= me
.up('inputpanel');
251 let isUdp
= value
!== 'http' && value
!== 'https';
252 view
.down('field[name=organization]').setDisabled(isUdp
);
253 view
.down('field[name=bucket]').setDisabled(isUdp
);
254 view
.down('field[name=token]').setDisabled(isUdp
);
255 view
.down('field[name=api-path-prefix]').setDisabled(isUdp
);
256 view
.down('field[name=mtu]').setDisabled(!isUdp
);
257 view
.down('field[name=timeout]').setDisabled(isUdp
);
258 view
.down('field[name=max-body-size]').setDisabled(isUdp
);
259 view
.down('field[name=verify-certificate]').setDisabled(value
!== 'https');
269 fieldLabel
: gettext('Enabled'),
275 xtype
: 'proxmoxtextfield',
276 name
: 'organization',
277 fieldLabel
: gettext('Organization'),
278 emptyText
: 'proxmox',
281 deleteEmpty
: '{!isCreate}',
285 xtype
: 'proxmoxtextfield',
287 fieldLabel
: gettext('Bucket'),
288 emptyText
: 'proxmox',
291 deleteEmpty
: '{!isCreate}',
295 xtype
: 'proxmoxtextfield',
297 fieldLabel
: gettext('Token'),
303 disabled
: '{!isCreate}',
304 emptyText
: '{tokenEmptyText}',
311 xtype
: 'proxmoxtextfield',
312 name
: 'api-path-prefix',
313 fieldLabel
: gettext('API Path Prefix'),
317 deleteEmpty
: '{!isCreate}',
321 xtype
: 'proxmoxintegerfield',
323 fieldLabel
: gettext('Timeout (s)'),
326 deleteEmpty
: '{!isCreate}',
332 xtype
: 'proxmoxcheckbox',
333 name
: 'verify-certificate',
334 fieldLabel
: gettext('Verify Certificate'),
343 xtype
: 'proxmoxintegerfield',
344 name
: 'max-body-size',
345 fieldLabel
: gettext('Batch Size (b)'),
347 emptyText
: '25000000',
350 deleteEmpty
: '{!isCreate}',
354 xtype
: 'proxmoxintegerfield',
361 deleteEmpty
: '{!isCreate}',
369 Ext
.define('PVE.dc.GraphiteEdit', {
370 extend
: 'PVE.dc.MetricServerBaseEdit',
371 mixins
: ['Proxmox.Mixin.CBind'],
373 onlineHelp
: 'metric_server_graphite',
381 onGetValues: function(values
) {
382 values
.disable
= values
.enable
? 0 : 1;
383 delete values
.enable
;
393 submitValue
: '{isCreate}',
397 xtype
: 'pmxDisplayEditField',
399 fieldLabel
: gettext('Name'),
402 editable
: '{isCreate}',
407 xtype
: 'proxmoxtextfield',
409 fieldLabel
: gettext('Server'),
418 fieldLabel
: gettext('Enabled'),
424 xtype
: 'proxmoxintegerfield',
426 fieldLabel
: gettext('Port'),
433 fieldLabel
: gettext('Path'),
434 xtype
: 'proxmoxtextfield',
435 emptyText
: 'proxmox',
438 deleteEmpty
: '{!isCreate}',
445 xtype
: 'proxmoxKVComboBox',
447 fieldLabel
: gettext('Protocol'),
448 value
: '__default__',
450 deleteEmpty
: '{!isCreate}',
453 ['__default__', 'UDP'],
457 change: function(field
, value
) {
459 me
.up('inputpanel').down('field[name=timeout]').setDisabled(value
!== 'tcp');
460 me
.up('inputpanel').down('field[name=mtu]').setDisabled(value
=== 'tcp');
468 xtype
: 'proxmoxintegerfield',
475 deleteEmpty
: '{!isCreate}',
479 xtype
: 'proxmoxintegerfield',
481 fieldLabel
: gettext('TCP Timeout'),
484 deleteEmpty
: '{!isCreate}',