]>
Commit | Line | Data |
---|---|---|
9b81768f DM |
1 | Ext.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 | ||
110 | Ext.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 | }); |