]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/ha/ResourceEdit.js
b3fc77261ee5778365749331da4185cffc058bca
1 Ext
.define('PVE.ha.VMResourceInputPanel', {
2 extend
: 'Proxmox.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 var vmidStore
= (me
.vmid
) ? {} : {
62 model
: 'PVEResources',
77 // value is a string above, but a number below
80 xtype
: me
.vmid
? 'displayfield' : 'vmComboSelector',
81 submitValue
: me
.isCreate
,
83 fieldLabel
: (me
.vmid
&& me
.guestType
=== 'ct') ? 'CT' : 'VM',
89 xtype
: 'proxmoxintegerfield',
91 fieldLabel
: gettext('Max. Restart'),
98 xtype
: 'proxmoxintegerfield',
100 fieldLabel
: gettext('Max. Relocate'),
110 xtype
: 'pveHAGroupSelector',
112 fieldLabel
: gettext('Group'),
115 xtype
: 'proxmoxKVComboBox',
118 fieldLabel
: gettext('Request State'),
120 ['started', 'started'],
121 ['stopped', 'stopped'],
122 ['ignored', 'ignored'],
123 ['disabled', 'disabled'],
126 'change': function(field
, newValue
) {
127 if (newValue
=== 'disabled') {
128 disabledHint
.setVisible(true);
131 if (disabledHint
.isVisible()) {
132 disabledHint
.setVisible(false);
145 fieldLabel
: gettext('Comment'),
154 Ext
.define('PVE.ha.VMResourceEdit', {
155 extend
: 'Proxmox.window.Edit',
158 guestType
: undefined,
161 initComponent : function() {
164 if (me
.isCreate
=== undefined) {
165 me
.isCreate
= !me
.vmid
;
169 me
.url
= '/api2/extjs/cluster/ha/resources';
172 me
.url
= '/api2/extjs/cluster/ha/resources/' + me
.vmid
;
176 var ipanel
= Ext
.create('PVE.ha.VMResourceInputPanel', {
177 isCreate
: me
.isCreate
,
179 guestType
: me
.guestType
,
183 subject
: gettext('Resource') + ': ' + gettext('Container') +
184 '/' + gettext('Virtual Machine'),
193 success: function(response
, options
) {
194 var values
= response
.result
.data
;
196 var regex
= /^(\S+):(\S+)$/;
197 var res
= regex
.exec(values
.sid
);
199 if (res
[1] !== 'vm' && res
[1] !== 'ct') {
200 throw "got unexpected resource type";
203 values
.vmid
= res
[2];
205 ipanel
.setValues(values
);