]>
git.proxmox.com Git - pve-manager-legacy.git/blob - www/manager/dc/HAConfig.js
c77c42dc86ab8338b98e12c2758100702b3f75a2
1 /*jslint confusion: true */
2 Ext
.define('PVE.dc.vmHAServiceEdit', {
3 extend
: 'PVE.window.Edit',
5 initComponent : function() {
8 me
.create
= me
.vmid
? false : true;
12 me
.url
= "/cluster/ha/groups/pvevm:" + me
.vmid
;
16 me
.url
= "/cluster/ha/groups";
21 subject
: gettext('HA managed VM/CT'),
25 xtype
: me
.create
? 'pveVMIDSelector' : 'displayfield',
35 fieldLabel
: 'autostart'
48 Ext
.define('PVE.dc.HAConfig', {
49 extend
: 'Ext.panel.Panel',
50 alias
: 'widget.pveDcHAConfig',
52 clusterInfo
: {}, // reload store data here
57 var getClusterInfo = function(conf
) {
61 if (!(conf
&& conf
.children
&& conf
.children
[0])) {
65 var cluster
= conf
.children
[0];
67 if (cluster
.text
!== 'cluster' || !cluster
.config_version
) {
71 info
.version
= cluster
.config_version
;
73 Ext
.Array
.each(cluster
.children
, function(item
) {
74 if (item
.text
=== 'fencedevices') {
75 // fixme: make sure each node uses at least one fence device
76 info
.fenceDevices
= true;
77 } else if (item
.text
=== 'rm') {
85 PVE
.Utils
.API2Request({
86 url
: '/cluster/ha/config',
89 failure: function(response
, opts
) {
91 PVE
.Utils
.setErrorMask(me
, response
.htmlStatus
);
93 success: function(response
, opts
) {
94 me
.clusterInfo
= getClusterInfo(response
.result
.data
);
96 me
.setDisabled(!me
.clusterInfo
.version
);
98 me
.addMenu
.setDisabled(!me
.clusterInfo
.version
);
100 // note: this modifies response.result.data
101 me
.treePanel
.setRootNode(response
.result
.data
);
102 me
.treePanel
.expandAll();
105 if (response
.result
.changes
) {
106 me
.commitBtn
.setDisabled(false);
107 me
.revertBtn
.setDisabled(false);
108 me
.diffPanel
.setVisible(true);
109 me
.diffPanel
.update("<pre>" + Ext
.htmlEncode(response
.result
.changes
) + "</pre>");
111 me
.commitBtn
.setDisabled(true);
112 me
.revertBtn
.setDisabled(true);
113 me
.diffPanel
.setVisible(false);
114 me
.diffPanel
.update('');
120 initComponent: function() {
123 me
.commitBtn
= new PVE
.button
.Button({
124 text
: gettext('Activate'),
126 confirmMsg: function () {
127 return gettext('Are you sure you want to activate your changes');
129 handler: function(btn
, event
) {
130 PVE
.Utils
.API2Request({
131 url
: '/cluster/ha/changes',
134 callback: function() {
137 failure: function (response
, opts
) {
138 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
144 me
.revertBtn
= new PVE
.button
.Button({
145 text
: gettext('Revert changes'),
147 confirmMsg: function () {
148 return gettext('Are you sure you want to revert your changes');
150 handler: function(btn
, event
) {
151 PVE
.Utils
.API2Request({
152 url
: '/cluster/ha/changes',
155 callback: function() {
158 failure: function (response
, opts
) {
159 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
165 me
.addMenu
= new Ext
.button
.Button({
166 text
: gettext('Add'),
168 menu
: new Ext
.menu
.Menu({
171 text
: gettext('HA managed VM/CT'),
172 handler: function() {
173 var win
= Ext
.create('PVE.dc.vmHAServiceEdit', {});
175 win
.on('destroy', me
.reload
, me
);
179 text
: gettext('Failover Domain'),
180 handler: function() {
181 Ext
.Msg
.alert(gettext('Error'), "not implemented - sorry");
188 me
.treePanel
= Ext
.create('Ext.tree.Panel', {
193 fields
: ['text', 'id', 'vmid', 'name' ],
204 renderer: function(value
, metaData
, record
) {
206 Ext
.Object
.each(record
.raw
, function(key
, value
) {
207 if (key
=== 'id' || key
=== 'text') {
210 text
+= Ext
.htmlEncode(key
) + '="' +
211 Ext
.htmlEncode(value
) + '" ';
220 var run_editor = function() {
221 var rec
= me
.treePanel
.selModel
.getSelection()[0];
222 if (rec
&& rec
.data
.text
=== 'pvevm') {
223 var win
= Ext
.create('PVE.dc.vmHAServiceEdit', {
227 win
.on('destroy', me
.reload
, me
);
231 me
.editBtn
= new Ext
.button
.Button({
232 text
: gettext('Edit'),
237 me
.removeBtn
= new Ext
.button
.Button({
238 text
: gettext('Remove'),
240 handler: function() {
241 var rec
= me
.treePanel
.selModel
.getSelection()[0];
242 if (rec
&& rec
.data
.text
=== 'pvevm') {
243 var groupid
= 'pvevm:' + rec
.data
.vmid
;
244 PVE
.Utils
.API2Request({
245 url
: '/cluster/ha/groups/' + groupid
,
248 callback: function() {
251 failure: function (response
, opts
) {
252 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
260 me
.diffPanel
= Ext
.create('Ext.panel.Panel', {
266 tbar
: [ gettext('Pending changes') ],
274 tbar
: [ me
.addMenu
, me
.removeBtn
, me
.editBtn
, me
.revertBtn
, me
.commitBtn
],
275 items
: [ me
.treePanel
, me
.diffPanel
]
280 me
.on('show', me
.reload
);
282 me
.treePanel
.on("selectionchange", function(sm
, selected
) {
283 var rec
= selected
[0];
284 if (rec
&& rec
.data
.text
=== 'pvevm') {
285 me
.editBtn
.setDisabled(false);
286 me
.removeBtn
.setDisabled(false);
288 me
.editBtn
.setDisabled(true);
289 me
.removeBtn
.setDisabled(true);
294 me
.treePanel
.on("itemdblclick", function(v
, record
) {