]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/ha/ResourceEdit.js
ha resource edit: adapt to new service state
[pve-manager.git] / www / manager6 / ha / ResourceEdit.js
1 Ext.define('PVE.ha.VMResourceInputPanel', {
2 extend: 'PVE.panel.InputPanel',
3 onlineHelp: 'ha_manager_service_operations',
4 vmid: undefined,
5
6 onGetValues: function(values) {
7 var me = this;
8
9 if (me.create) {
10 values.sid = values.vmid;
11 }
12
13
14 delete values.vmid;
15
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);
19
20 return values;
21 },
22
23 initComponent : function() {
24 var me = this;
25
26 var disabledHint = Ext.createWidget({
27 xtype: 'displayfield', //submitValue is false, so we don't get submitted
28 userCls: 'pve-hint',
29 value: gettext('Disabling the resource will stop the guest system. ' +
30 'See the online help for details.'),
31 hidden: true
32 });
33
34 me.column1 = [
35 {
36 xtype: me.vmid ? 'displayfield' : 'pveVMIDSelector',
37 name: 'vmid',
38 fieldLabel: 'VM ID',
39 value: me.vmid,
40 loadNextFreeVMID: false,
41 validateExists: true
42 },
43 {
44 xtype: 'pveIntegerField',
45 name: 'max_restart',
46 fieldLabel: gettext('Max. Restart'),
47 value: 1,
48 minValue: 0,
49 maxValue: 10,
50 allowBlank: false
51 },
52 {
53 xtype: 'pveIntegerField',
54 name: 'max_relocate',
55 fieldLabel: gettext('Max. Relocate'),
56 value: 1,
57 minValue: 0,
58 maxValue: 10,
59 allowBlank: false
60 }
61 ];
62
63 // value is expected to be integer as it's above, ignore that
64 /*jslint confusion: true */
65 me.column2 = [
66 {
67 xtype: 'pveHAGroupSelector',
68 name: 'group',
69 fieldLabel: gettext('Group')
70 },
71 {
72 xtype: 'pveKVComboBox',
73 name: 'state',
74 value: 'started',
75 fieldLabel: gettext('Request State'),
76 comboItems: [
77 ['started', gettext('Started')],
78 ['stopped', gettext('Stopped')],
79 ['disabled', gettext('Disabled')]
80 ],
81 listeners: {
82 'change': function(field, newValue) {
83 if (newValue === 'disabled') {
84 disabledHint.setVisible(true);
85 }
86 else {
87 if (disabledHint.isVisible()) {
88 disabledHint.setVisible(false);
89 }
90 }
91 }
92 }
93 },
94 disabledHint
95 ];
96 /*jslint confusion: false */
97
98 me.columnB = [
99 {
100 xtype: 'textfield',
101 name: 'comment',
102 fieldLabel: gettext('Comment')
103 }
104 ];
105
106 me.callParent();
107 }
108 });
109
110 Ext.define('PVE.ha.VMResourceEdit', {
111 extend: 'PVE.window.Edit',
112
113 vmid: undefined,
114
115 initComponent : function() {
116 var me = this;
117
118 me.create = !me.vmid;
119
120 if (me.create) {
121 me.url = '/api2/extjs/cluster/ha/resources';
122 me.method = 'POST';
123 } else {
124 me.url = '/api2/extjs/cluster/ha/resources/' + me.vmid;
125 me.method = 'PUT';
126 }
127
128 var ipanel = Ext.create('PVE.ha.VMResourceInputPanel', {
129 create: me.create,
130 vmid: me.vmid
131 });
132
133 Ext.apply(me, {
134 subject: gettext('VM Resource'),
135 isAdd: true,
136 items: [ ipanel ]
137 });
138
139 me.callParent();
140
141 if (!me.create) {
142 me.load({
143 success: function(response, options) {
144 var values = response.result.data;
145
146 var regex = /^(\S+):(\S+)$/;
147 var res = regex.exec(values.sid);
148
149 if (res[1] !== 'vm' && res[1] !== 'ct') {
150 throw "got unexpected resource type";
151 }
152
153 values.vmid = res[2];
154
155 ipanel.setValues(values);
156 }
157 });
158 }
159 }
160 });