NetworkView: add apply config button

when the host has ifupdown2 installed, we can hot apply the config
add a button to do this

if the user does not meet the requirements, the api call
will show why and throw an error (without changing anything)

the button has to be enabled via 'showApplyBtn', because for now,
we do not want it for pmg

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2019-10-29 12:08:48 +01:00 committed by Thomas Lamprecht
parent f32aa3df74
commit 21cd6c09e2

View File

@ -20,6 +20,8 @@ Ext.define('Proxmox.node.NetworkView', {
// order is always the same // order is always the same
types: ['bridge', 'bond', 'ovs'], types: ['bridge', 'bond', 'ovs'],
showApplyBtn: false,
initComponent : function() { initComponent : function() {
var me = this; var me = this;
@ -45,6 +47,7 @@ Ext.define('Proxmox.node.NetworkView', {
var reload = function() { var reload = function() {
var changeitem = me.down('#changes'); var changeitem = me.down('#changes');
var apply_btn = me.down('#apply');
Proxmox.Utils.API2Request({ Proxmox.Utils.API2Request({
url: baseUrl, url: baseUrl,
failure: function(response, opts) { failure: function(response, opts) {
@ -60,9 +63,11 @@ Ext.define('Proxmox.node.NetworkView', {
if (changes === undefined || changes === '') { if (changes === undefined || changes === '') {
changes = gettext("No changes"); changes = gettext("No changes");
changeitem.setHidden(true); changeitem.setHidden(true);
apply_btn.setDisabled(true);
} else { } else {
changeitem.update("<pre>" + Ext.htmlEncode(changes) + "</pre>"); changeitem.update("<pre>" + Ext.htmlEncode(changes) + "</pre>");
changeitem.setHidden(false); changeitem.setHidden(false);
apply_btn.setDisabled(false);
} }
} }
}); });
@ -118,6 +123,32 @@ Ext.define('Proxmox.node.NetworkView', {
} }
}); });
var apply_btn = Ext.create('Proxmox.button.Button', {
text: gettext('Apply Configuration'),
itemId: 'apply',
disabled: true,
hidden: !me.showApplyBtn,
handler: function() {
Proxmox.Utils.API2Request({
url: baseUrl,
method: 'PUT',
waitMsgTarget: me,
success: function(response, opts) {
var upid = response.result.data;
var win = Ext.create('Proxmox.window.TaskProgress', {
taskDone: reload,
upid: upid
});
win.show();
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
}
});
var set_button_status = function() { var set_button_status = function() {
var grid = me.down('gridpanel'); var grid = me.down('gridpanel');
var sm = grid.getSelectionModel(); var sm = grid.getSelectionModel();
@ -265,7 +296,9 @@ Ext.define('Proxmox.node.NetworkView', {
} }
}, },
edit_btn, edit_btn,
del_btn del_btn,
' ',
apply_btn
], ],
items: [ items: [
{ {
@ -383,7 +416,7 @@ Ext.define('Proxmox.node.NetworkView', {
itemId: 'changes', itemId: 'changes',
tbar: [ tbar: [
gettext('Pending changes') + ' (' + gettext('Pending changes') + ' (' +
gettext('Please reboot to activate changes') + ')' gettext('Please reboot or apply to activate changes') + ')'
], ],
split: true, split: true,
bodyPadding: 5, bodyPadding: 5,