]>
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
.isCreate
);
17 PVE
.Utils
.delete_if_default(values
, 'max_restart', '1', me
.isCreate
);
18 PVE
.Utils
.delete_if_default(values
, 'max_relocate', '1', me
.isCreate
);
23 initComponent : function() {
25 var MIN_QUORUM_VOTES
= 3;
27 var disabledHint
= Ext
.createWidget({
28 xtype
: 'displayfield', // won't get submitted by default
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 value
: 'At least three quorum votes are recommended for reliable HA.',
43 PVE
.Utils
.API2Request({
44 url
: '/cluster/config/nodes',
46 failure: function(response
) {
47 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
49 success: function(response
) {
50 var nodes
= response
.result
.data
;
52 Ext
.Array
.forEach(nodes
, function(node
) {
53 var vote
= parseInt(node
.quorum_votes
, 10); // parse as base 10
54 votes
+= vote
|| 0; // parseInt might return NaN, which is false
57 if (votes
< MIN_QUORUM_VOTES
) {
58 fewVotesHint
.setVisible(true);
63 /*jslint confusion: true */
64 var vmidStore
= (me
.vmid
) ? {} : {
65 model
: 'PVEResources',
80 // value is a string above, but a number below
83 xtype
: me
.vmid
? 'displayfield' : 'vmComboSelector',
84 submitValue
: me
.isCreate
,
86 fieldLabel
: (me
.vmid
&& me
.guestType
=== 'ct') ? 'CT' : 'VM',
88 loadNextGuestID
: false,
93 xtype
: 'pveIntegerField',
95 fieldLabel
: gettext('Max. Restart'),
102 xtype
: 'pveIntegerField',
103 name
: 'max_relocate',
104 fieldLabel
: gettext('Max. Relocate'),
111 /*jslint confusion: false */
115 xtype
: 'pveHAGroupSelector',
117 fieldLabel
: gettext('Group')
120 xtype
: 'pveKVComboBox',
123 fieldLabel
: gettext('Request State'),
125 ['started', 'started'],
126 ['stopped', 'stopped'],
127 ['ignored', 'ignored'],
128 ['disabled', 'disabled']
131 'change': function(field
, newValue
) {
132 if (newValue
=== 'disabled') {
133 disabledHint
.setVisible(true);
136 if (disabledHint
.isVisible()) {
137 disabledHint
.setVisible(false);
150 fieldLabel
: gettext('Comment')
159 Ext
.define('PVE.ha.VMResourceEdit', {
160 extend
: 'PVE.window.Edit',
163 guestType
: undefined,
165 initComponent : function() {
168 me
.isCreate
= !me
.vmid
;
171 me
.url
= '/api2/extjs/cluster/ha/resources';
174 me
.url
= '/api2/extjs/cluster/ha/resources/' + me
.vmid
;
178 var ipanel
= Ext
.create('PVE.ha.VMResourceInputPanel', {
179 isCreate
: me
.isCreate
,
181 guestType
: me
.guestType
185 subject
: gettext('Resource') + ': ' + gettext('Container') +
186 '/' + gettext('Virtual Machine'),
195 success: function(response
, options
) {
196 var values
= response
.result
.data
;
198 var regex
= /^(\S+):(\S+)$/;
199 var res
= regex
.exec(values
.sid
);
201 if (res
[1] !== 'vm' && res
[1] !== 'ct') {
202 throw "got unexpected resource type";
205 values
.vmid
= res
[2];
207 ipanel
.setValues(values
);