]>
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
;
14 PVE
.Utils
.delete_if_default(values
, 'group', '', me
.isCreate
);
15 PVE
.Utils
.delete_if_default(values
, 'max_restart', '1', me
.isCreate
);
16 PVE
.Utils
.delete_if_default(values
, 'max_relocate', '1', me
.isCreate
);
21 initComponent : function() {
23 var MIN_QUORUM_VOTES
= 3;
25 var disabledHint
= Ext
.createWidget({
26 xtype
: 'displayfield', // won't get submitted by default
28 value
: 'Disabling the resource will stop the guest system. ' +
29 'See the online help for details.',
33 var fewVotesHint
= Ext
.createWidget({
34 itemId
: 'fewVotesHint',
35 xtype
: 'displayfield',
37 value
: 'At least three quorum votes are recommended for reliable HA.',
41 Proxmox
.Utils
.API2Request({
42 url
: '/cluster/config/nodes',
44 failure: function(response
) {
45 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
47 success: function(response
) {
48 var nodes
= response
.result
.data
;
50 Ext
.Array
.forEach(nodes
, function(node
) {
51 var vote
= parseInt(node
.quorum_votes
, 10); // parse as base 10
52 votes
+= vote
|| 0; // parseInt might return NaN, which is false
55 if (votes
< MIN_QUORUM_VOTES
) {
56 fewVotesHint
.setVisible(true);
61 /*jslint confusion: true */
62 var vmidStore
= (me
.vmid
) ? {} : {
63 model
: 'PVEResources',
78 // value is a string above, but a number below
81 xtype
: me
.vmid
? 'displayfield' : 'vmComboSelector',
82 submitValue
: me
.isCreate
,
84 fieldLabel
: (me
.vmid
&& me
.guestType
=== 'ct') ? 'CT' : 'VM',
86 loadNextGuestID
: false,
91 xtype
: 'proxmoxintegerfield',
93 fieldLabel
: gettext('Max. Restart'),
100 xtype
: 'proxmoxintegerfield',
101 name
: 'max_relocate',
102 fieldLabel
: gettext('Max. Relocate'),
109 /*jslint confusion: false */
113 xtype
: 'pveHAGroupSelector',
115 fieldLabel
: gettext('Group')
118 xtype
: 'pveKVComboBox',
121 fieldLabel
: gettext('Request State'),
123 ['started', 'started'],
124 ['stopped', 'stopped'],
125 ['ignored', 'ignored'],
126 ['disabled', 'disabled']
129 'change': function(field
, newValue
) {
130 if (newValue
=== 'disabled') {
131 disabledHint
.setVisible(true);
134 if (disabledHint
.isVisible()) {
135 disabledHint
.setVisible(false);
148 fieldLabel
: gettext('Comment')
157 Ext
.define('PVE.ha.VMResourceEdit', {
158 extend
: 'PVE.window.Edit',
161 guestType
: undefined,
164 initComponent : function() {
167 if (me
.isCreate
=== undefined) {
168 me
.isCreate
= !me
.vmid
;
172 me
.url
= '/api2/extjs/cluster/ha/resources';
175 me
.url
= '/api2/extjs/cluster/ha/resources/' + me
.vmid
;
179 var ipanel
= Ext
.create('PVE.ha.VMResourceInputPanel', {
180 isCreate
: me
.isCreate
,
182 guestType
: me
.guestType
186 subject
: gettext('Resource') + ': ' + gettext('Container') +
187 '/' + gettext('Virtual Machine'),
196 success: function(response
, options
) {
197 var values
= response
.result
.data
;
199 var regex
= /^(\S+):(\S+)$/;
200 var res
= regex
.exec(values
.sid
);
202 if (res
[1] !== 'vm' && res
[1] !== 'ct') {
203 throw "got unexpected resource type";
206 values
.vmid
= res
[2];
208 ipanel
.setValues(values
);