luci-mod-network: add bridge interface migration
LuCI now supports the updated UCI syntax for bridges that requires:
1. device section for L2
2. interface section for L3
Check for legacy syntax usage and offser user a migration to allow
changing network config.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
(cherry picked from commit bca76a7673
)
This commit is contained in:
parent
660156e166
commit
5356e3fa25
1 changed files with 45 additions and 0 deletions
|
@ -298,7 +298,52 @@ return view.extend({
|
|||
]);
|
||||
},
|
||||
|
||||
interfaceWithIfnameSections: function() {
|
||||
return uci.sections('network', 'interface').filter(function(ns) {
|
||||
return ns.type == 'bridge' && !ns.ports && ns.ifname;
|
||||
});
|
||||
},
|
||||
|
||||
handleMigration: function(ev) {
|
||||
var interfaces = this.interfaceWithIfnameSections();
|
||||
var tasks = [];
|
||||
|
||||
interfaces.forEach(function(ns) {
|
||||
var device_name = 'br-' + ns['.name'];
|
||||
|
||||
tasks.push(uci.callAdd('network', 'device', null, {
|
||||
'name': device_name,
|
||||
'type': 'bridge',
|
||||
'ports': L.toArray(ns.ifname)
|
||||
}));
|
||||
|
||||
tasks.push(uci.callSet('network', ns['.name'], {
|
||||
'type': '',
|
||||
'ifname': device_name
|
||||
}));
|
||||
});
|
||||
|
||||
return Promise.all(tasks)
|
||||
.then(L.bind(ui.changes.init, ui.changes))
|
||||
.then(L.bind(ui.changes.apply, ui.changes));
|
||||
},
|
||||
|
||||
renderMigration: function() {
|
||||
ui.showModal(_('Network bridge configuration migration'), [
|
||||
E('p', _('The existing network configuration needs to be changed for LuCI to function properly.')),
|
||||
E('p', _('Upon pressing "Continue", bridges configuration will be moved from "interface" sections to "device" sections the network will be restarted to apply the updated configuration.')),
|
||||
E('div', { 'class': 'right' },
|
||||
E('button', {
|
||||
'class': 'btn cbi-button-action important',
|
||||
'click': ui.createHandlerFn(this, 'handleMigration')
|
||||
}, _('Continue')))
|
||||
]);
|
||||
},
|
||||
|
||||
render: function(data) {
|
||||
if (this.interfaceWithIfnameSections().length)
|
||||
return this.renderMigration();
|
||||
|
||||
var dslModemType = data[0],
|
||||
netDevs = data[1],
|
||||
m, s, o;
|
||||
|
|
Loading…
Reference in a new issue