]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/ha/ResourceEdit.js
1 Ext
.define('PVE.ha.VMResourceInputPanel', {
2 extend
: 'PVE.panel.InputPanel',
3 onlineHelp
: 'ha_manager_resource_config',
6 onGetValues: function(values
) {
10 values
.sid
= values
.vmid
;
16 PVE
.Utils
.delete_if_default(values
, 'group', '', me
.create
);
17 PVE
.Utils
.delete_if_default(values
, 'max_restart', '1', me
.create
);
18 PVE
.Utils
.delete_if_default(values
, 'max_relocate', '1', me
.create
);
23 initComponent : function() {
25 var MIN_QUORUM_VOTES
= 3;
27 var disabledHint
= Ext
.createWidget({
28 xtype
: 'displayfield', //submitValue is false, so we don't get submitted
30 value
: gettext('Disabling the resource will stop the guest system. ' +
31 'See the online help for details.'),
35 var fewVotesHint
= Ext
.createWidget({
36 itemId
: 'fewVotesHint',
37 xtype
: 'displayfield',
39 updateValue: function(votes
) {
41 me
.setValue(gettext('You need at least three quorum votes for a reliable HA cluster. ' +
42 'See the online help for details. Current votes: ') + votes
);
47 PVE
.Utils
.API2Request({
48 url
: '/cluster/config/nodes',
50 failure: function(response
) {
51 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
53 success: function(response
) {
54 var nodes
= response
.result
.data
;
56 Ext
.Array
.forEach(nodes
, function(node
) {
57 var vote
= parseInt(node
.quorum_votes
, 10); // parse as base 10
58 votes
+= vote
|| 0; // parseInt might return NaN, which is false
61 if (votes
< MIN_QUORUM_VOTES
) {
62 fewVotesHint
.updateValue(votes
);
63 fewVotesHint
.setVisible(true);
70 xtype
: me
.vmid
? 'displayfield' : 'pveGuestIDSelector',
72 fieldLabel
: (me
.vmid
&& me
.guestType
=== 'ct') ? 'CT' : 'VM',
74 loadNextGuestID
: false,
78 xtype
: 'pveIntegerField',
80 fieldLabel
: gettext('Max. Restart'),
87 xtype
: 'pveIntegerField',
89 fieldLabel
: gettext('Max. Relocate'),
97 // value is expected to be integer as it's above, ignore that
98 /*jslint confusion: true */
101 xtype
: 'pveHAGroupSelector',
103 fieldLabel
: gettext('Group')
106 xtype
: 'pveKVComboBox',
109 fieldLabel
: gettext('Request State'),
111 ['started', gettext('Started')],
112 ['stopped', gettext('Stopped')],
113 ['disabled', gettext('Disabled')]
116 'change': function(field
, newValue
) {
117 if (newValue
=== 'disabled') {
118 disabledHint
.setVisible(true);
121 if (disabledHint
.isVisible()) {
122 disabledHint
.setVisible(false);
130 /*jslint confusion: false */
136 fieldLabel
: gettext('Comment')
145 Ext
.define('PVE.ha.VMResourceEdit', {
146 extend
: 'PVE.window.Edit',
149 guestType
: undefined,
151 initComponent : function() {
154 me
.create
= !me
.vmid
;
157 me
.url
= '/api2/extjs/cluster/ha/resources';
160 me
.url
= '/api2/extjs/cluster/ha/resources/' + me
.vmid
;
164 var ipanel
= Ext
.create('PVE.ha.VMResourceInputPanel', {
167 guestType
: me
.guestType
171 subject
: gettext('CT/VM Resource'),
180 success: function(response
, options
) {
181 var values
= response
.result
.data
;
183 var regex
= /^(\S+):(\S+)$/;
184 var res
= regex
.exec(values
.sid
);
186 if (res
[1] !== 'vm' && res
[1] !== 'ct') {
187 throw "got unexpected resource type";
190 values
.vmid
= res
[2];
192 ipanel
.setValues(values
);