]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/ha/ResourceEdit.js
66de5041108383b1e47b0f88017c5d1a93da562c
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
: '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('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);
68 // value is a string above, but a number below
69 /*jslint confusion: true */
72 xtype
: me
.vmid
? 'displayfield' : 'pveGuestIDSelector',
74 fieldLabel
: (me
.vmid
&& me
.guestType
=== 'ct') ? 'CT' : 'VM',
76 loadNextGuestID
: false,
80 xtype
: 'pveIntegerField',
82 fieldLabel
: gettext('Max. Restart'),
89 xtype
: 'pveIntegerField',
91 fieldLabel
: gettext('Max. Relocate'),
98 /*jslint confusion: false */
102 xtype
: 'pveHAGroupSelector',
104 fieldLabel
: gettext('Group')
107 xtype
: 'pveKVComboBox',
110 fieldLabel
: gettext('Request State'),
112 ['started', 'started'],
113 ['stopped', 'stopped'],
114 ['disabled', 'disabled']
117 'change': function(field
, newValue
) {
118 if (newValue
=== 'disabled') {
119 disabledHint
.setVisible(true);
122 if (disabledHint
.isVisible()) {
123 disabledHint
.setVisible(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('Resource') + ': ' + gettext('Container') +
172 '/' + gettext('Virtual Machine'),
181 success: function(response
, options
) {
182 var values
= response
.result
.data
;
184 var regex
= /^(\S+):(\S+)$/;
185 var res
= regex
.exec(values
.sid
);
187 if (res
[1] !== 'vm' && res
[1] !== 'ct') {
188 throw "got unexpected resource type";
191 values
.vmid
= res
[2];
193 ipanel
.setValues(values
);