]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/ha/ResourceEdit.js
Fix a race conditon provoking the error no such file '/pve-storage-content'
[pve-manager.git] / www / manager6 / ha / ResourceEdit.js
CommitLineData
9b81768f
DM
1Ext.define('PVE.ha.VMResourceInputPanel', {
2 extend: 'PVE.panel.InputPanel',
95cf0210 3 onlineHelp: 'ha_manager_resource_config',
9b81768f
DM
4 vmid: undefined,
5
6 onGetValues: function(values) {
7 var me = this;
8
9 if (me.create) {
10 values.sid = values.vmid;
11 }
12
9b81768f
DM
13
14 delete values.vmid;
15
fe4f00ad
TL
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);
b2f9a9e4 19
9b81768f
DM
20 return values;
21 },
22
23 initComponent : function() {
24 var me = this;
25
390b8555
EK
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
9b81768f
DM
34 me.column1 = [
35 {
ed416f20 36 xtype: me.vmid ? 'displayfield' : 'pveGuestIDSelector',
9b81768f 37 name: 'vmid',
ed416f20 38 fieldLabel: (me.vmid && me.guestType === 'ct') ? 'CT' : 'VM',
9b81768f 39 value: me.vmid,
ed416f20 40 loadNextGuestID: false,
9b81768f 41 validateExists: true
b2f9a9e4
TL
42 },
43 {
8a7e5598 44 xtype: 'pveIntegerField',
b2f9a9e4
TL
45 name: 'max_restart',
46 fieldLabel: gettext('Max. Restart'),
47 value: 1,
48 minValue: 0,
49 maxValue: 10,
50 allowBlank: false
51 },
52 {
8a7e5598 53 xtype: 'pveIntegerField',
b2f9a9e4
TL
54 name: 'max_relocate',
55 fieldLabel: gettext('Max. Relocate'),
56 value: 1,
57 minValue: 0,
58 maxValue: 10,
59 allowBlank: false
9b81768f
DM
60 }
61 ];
62
ecd45352
TL
63 // value is expected to be integer as it's above, ignore that
64 /*jslint confusion: true */
9b81768f
DM
65 me.column2 = [
66 {
67 xtype: 'pveHAGroupSelector',
68 name: 'group',
9b81768f
DM
69 fieldLabel: gettext('Group')
70 },
71 {
ecd45352
TL
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 ],
390b8555
EK
81 listeners: {
82 'change': function(field, newValue) {
ecd45352 83 if (newValue === 'disabled') {
390b8555
EK
84 disabledHint.setVisible(true);
85 }
86 else {
87 if (disabledHint.isVisible()) {
88 disabledHint.setVisible(false);
89 }
90 }
91 }
92 }
93 },
94 disabledHint
9b81768f 95 ];
ecd45352 96 /*jslint confusion: false */
9b81768f
DM
97
98 me.columnB = [
99 {
100 xtype: 'textfield',
101 name: 'comment',
102 fieldLabel: gettext('Comment')
103 }
104 ];
105
106 me.callParent();
107 }
108});
109
110Ext.define('PVE.ha.VMResourceEdit', {
111 extend: 'PVE.window.Edit',
112
113 vmid: undefined,
ed416f20 114 guestType: undefined,
9b81768f
DM
115
116 initComponent : function() {
117 var me = this;
118
119 me.create = !me.vmid;
120
121 if (me.create) {
122 me.url = '/api2/extjs/cluster/ha/resources';
123 me.method = 'POST';
124 } else {
125 me.url = '/api2/extjs/cluster/ha/resources/' + me.vmid;
126 me.method = 'PUT';
127 }
128
129 var ipanel = Ext.create('PVE.ha.VMResourceInputPanel', {
130 create: me.create,
ed416f20
EK
131 vmid: me.vmid,
132 guestType: me.guestType
9b81768f
DM
133 });
134
135 Ext.apply(me, {
ed416f20 136 subject: gettext('CT/VM Resource'),
9b81768f
DM
137 isAdd: true,
138 items: [ ipanel ]
139 });
140
141 me.callParent();
142
143 if (!me.create) {
144 me.load({
145 success: function(response, options) {
146 var values = response.result.data;
147
9b81768f
DM
148 var regex = /^(\S+):(\S+)$/;
149 var res = regex.exec(values.sid);
150
a764c5f7
DC
151 if (res[1] !== 'vm' && res[1] !== 'ct') {
152 throw "got unexpected resource type";
153 }
9b81768f
DM
154
155 values.vmid = res[2];
156
157 ipanel.setValues(values);
158 }
159 });
160 }
161 }
162});