]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/form/NodeSelector.js
1 Ext
.define('PVE.form.NodeSelector', {
2 extend
: 'Proxmox.form.ComboGrid',
3 alias
: ['widget.pveNodeSelector'],
5 // invalidate nodes which are offline
6 onlineValidator
: false,
10 // do not allow those nodes (array)
11 disallowedNodes
: undefined,
13 // only allow those nodes (array)
14 allowedNodes
: undefined,
15 // set default value to empty array, else it inits it with
16 // null and after the store load it is an empty array,
17 // triggering dirtychange
22 fields
: ['node', 'cpu', 'maxcpu', 'mem', 'maxmem', 'uptime'],
25 url
: '/api2/json/nodes',
42 header
: gettext('Node'),
49 header
: gettext('Memory usage') + " %",
50 renderer
: PVE
.Utils
.render_mem_usage_percent
,
56 header
: gettext('CPU usage'),
57 renderer
: Proxmox
.Utils
.render_cpu
,
65 validator: function(value
) {
67 if (!me
.onlineValidator
|| (me
.allowBlank
&& !value
)) {
71 let offline
= [], notAllowed
= [];
72 Ext
.Array
.each(value
.split(/\s*,\s*/), function(node
) {
73 let rec
= me
.store
.findRecord(me
.valueField
, node
, 0, false, true, true);
74 if (!(rec
&& rec
.data
) || rec
.data
.status
!== 'online') {
76 } else if (me
.allowedNodes
&& !Ext
.Array
.contains(me
.allowedNodes
, node
)) {
77 notAllowed
.push(node
);
81 if (value
&& notAllowed
.length
!== 0) {
82 return "Node " + notAllowed
.join(', ') + " is not allowed for this action!";
84 if (value
&& offline
.length
!== 0) {
85 return "Node " + offline
.join(', ') + " seems to be offline!";
90 initComponent: function() {
93 if (me
.selectCurNode
&& PVE
.curSelectedNode
&& PVE
.curSelectedNode
.data
.node
) {
94 me
.preferredValue
= PVE
.curSelectedNode
.data
.node
;
100 me
.getStore().addFilter(new Ext
.util
.Filter({ // filter out disallowed nodes
101 filterFn
: (item
) => !(me
.disallowedNodes
&& me
.disallowedNodes
.includes(item
.data
.node
)),
104 me
.mon(me
.getStore(), 'load', () => me
.isValid());