diff options
| author | Steven Barth <steven@midlink.org> | 2008-09-07 14:17:29 +0000 |
|---|---|---|
| committer | Steven Barth <steven@midlink.org> | 2008-09-07 14:17:29 +0000 |
| commit | 37b79596bbc79b33d7ae7e84dfe763b730ecdc59 (patch) | |
| tree | 9fd47c31b33e32ca02c7aa8a43817e653d6ff2bd /modules | |
| parent | 0d12944af59532749fc3626f5a23f69a590ac2bf (diff) | |
Backported UCI-Dependency Tracking and Responsiveness Improvements
Diffstat (limited to 'modules')
8 files changed, 111 insertions, 109 deletions
diff --git a/modules/admin-full/luasrc/controller/admin/system.lua b/modules/admin-full/luasrc/controller/admin/system.lua index 6cf951a154..5d64336e03 100644 --- a/modules/admin-full/luasrc/controller/admin/system.lua +++ b/modules/admin-full/luasrc/controller/admin/system.lua @@ -182,7 +182,7 @@ end function action_upgrade() require("luci.model.uci") - local ret = nil + local ret local plat = luci.fs.mtime("/lib/upgrade/platform.sh") local tmpfile = "/tmp/firmware.img" local broadcom = os.execute('grep brcm_ /lib/upgrade/platform.sh >/dev/null 2>&1') == 0 @@ -208,7 +208,9 @@ function action_upgrade() local keepcfg = keep_avail and luci.http.formvalue("keepcfg") if plat and fname then - ret = luci.sys.flash(tmpfile, keepcfg and _keep_pattern()) + ret = function() + return luci.sys.flash(tmpfile, keepcfg and _keep_pattern()) + end end luci.template.render("admin_system/upgrade", {sysupgrade=plat, ret=ret, keep_avail=keep_avail}) @@ -224,4 +226,4 @@ function _keep_pattern() end end return kpattern -end
\ No newline at end of file +end diff --git a/modules/admin-full/luasrc/controller/admin/uci.lua b/modules/admin-full/luasrc/controller/admin/uci.lua index 88c37d6506..53b3464f6b 100644 --- a/modules/admin-full/luasrc/controller/admin/uci.lua +++ b/modules/admin-full/luasrc/controller/admin/uci.lua @@ -24,27 +24,23 @@ function index() end function convert_changes(changes) - local ret = {} + local util = require "luci.util" + + local ret for r, tbl in pairs(changes) do for s, os in pairs(tbl) do for o, v in pairs(os) do - local val, str - if (v == "") then - str = "-" - val = "" - else - str = "" - val = "="..luci.util.pcdata(v) - end - str = r.."."..s - if o ~= ".type" then - str = str.."."..o - end - table.insert(ret, str..val) + ret = (ret and ret.."\n" or "") .. "%s%s.%s%s%s" % { + v == "" and "-" or "", + r, + s, + o ~= ".type" and "."..o or "", + v ~= "" and "="..util.pcdata(v) or "" + } end end end - return table.concat(ret, "\n") + return ret end function action_changes() @@ -54,52 +50,38 @@ end function action_apply() local path = luci.dispatcher.context.path - - local output = "" local uci = luci.model.uci.cursor() local changes = uci:changes() - - if changes then - local com = {} - local run = {} - - -- Collect files to be applied and commit changes - for r, tbl in pairs(changes) do - if r then - if path[#path] ~= "apply" then - uci:load(r) - uci:commit(r) - uci:unload(r) - end - if luci.config.uci_oncommit and luci.config.uci_oncommit[r] then - run[luci.config.uci_oncommit[r]] = true - end - end - end - - -- Search for post-commit commands - for cmd, i in pairs(run) do - output = output .. cmd .. ":\n" .. luci.util.exec(cmd) .. "\n" + local reload = {} + + -- Collect files to be applied and commit changes + for r, tbl in pairs(changes) do + table.insert(reload, r) + if path[#path] ~= "apply" then + uci:load(r) + uci:commit(r) + uci:unload(r) end end + local function _reload() + local cmd = uci:apply(reload, true) + return io.popen(cmd) + end - luci.template.render("admin_uci/apply", {changes=convert_changes(changes), output=output}) + luci.template.render("admin_uci/apply", {changes=convert_changes(changes), reload=_reload}) end function action_revert() local uci = luci.model.uci.cursor() local changes = uci:changes() - if changes then - local revert = {} - - -- Collect files to be reverted - for r, tbl in pairs(changes) do - uci:load(r) - uci:revert(r) - uci:unload(r) - end + + -- Collect files to be reverted + for r, tbl in pairs(changes) do + uci:load(r) + uci:revert(r) + uci:unload(r) end luci.template.render("admin_uci/revert", {changes=convert_changes(changes)}) diff --git a/modules/admin-full/luasrc/view/admin_system/upgrade.htm b/modules/admin-full/luasrc/view/admin_system/upgrade.htm index e0fbb93326..a3d97d6497 100644 --- a/modules/admin-full/luasrc/view/admin_system/upgrade.htm +++ b/modules/admin-full/luasrc/view/admin_system/upgrade.htm @@ -34,7 +34,13 @@ $Id$ </div> </form> <% elseif ret then %> - <% if ret == 0 then %> + <p><%:a_s_flash_received%></p> + <p><%:a_s_flash_inprogress%></p> + +<!-- <%=string.rep(" ", 2048)%> --> + <% %> + <% local ret = ret() + if ret == 0 then %> <div class="ok"><%:a_s_flash_flashed%></div> <% else %> <div class="error"><%:a_s_flash_flasherr%>! (<%:code%> <%=ret%>)</div> @@ -42,4 +48,5 @@ $Id$ <% else %> <div class="error"><%:a_s_flash_notimplemented%></div> <% end %> -<%+footer%>
\ No newline at end of file +<%+footer%> +<% if ret == 0 then luci.sys.reboot() end %> diff --git a/modules/admin-full/luasrc/view/admin_uci/apply.htm b/modules/admin-full/luasrc/view/admin_uci/apply.htm index e280947282..9a9a063f1d 100644 --- a/modules/admin-full/luasrc/view/admin_uci/apply.htm +++ b/modules/admin-full/luasrc/view/admin_uci/apply.htm @@ -16,5 +16,14 @@ $Id$ <h1><%:config%></h1> <p><%:uci_applied%>:</p> <code><%=(changes or "-")%> -<%=output%></code> + +<% +local fp = reload() +local line = fp:read() +while line do + write(line.."\n") + line = fp:read() +end +fp:close() +%></code> <%+footer%>
\ No newline at end of file diff --git a/modules/admin-mini/luasrc/controller/mini/system.lua b/modules/admin-mini/luasrc/controller/mini/system.lua index c3910a3020..6d16ef8650 100644 --- a/modules/admin-mini/luasrc/controller/mini/system.lua +++ b/modules/admin-mini/luasrc/controller/mini/system.lua @@ -105,7 +105,9 @@ function action_upgrade() local keepcfg = keep_avail and luci.http.formvalue("keepcfg") if plat and fname then - ret = luci.sys.flash(tmpfile, keepcfg and _keep_pattern()) + ret = function() + return luci.sys.flash(tmpfile, keepcfg and _keep_pattern()) + end end luci.template.render("mini/upgrade", {sysupgrade=plat, ret=ret, keep_avail=keep_avail}) @@ -121,4 +123,4 @@ function _keep_pattern() end end return kpattern -end
\ No newline at end of file +end diff --git a/modules/admin-mini/luasrc/controller/mini/uci.lua b/modules/admin-mini/luasrc/controller/mini/uci.lua index a5b3402add..4e920563ac 100644 --- a/modules/admin-mini/luasrc/controller/mini/uci.lua +++ b/modules/admin-mini/luasrc/controller/mini/uci.lua @@ -20,31 +20,27 @@ function index() entry({"mini", "uci"}, nil, i18n("config")) entry({"mini", "uci", "changes"}, call("action_changes"), i18n("changes"), 30) entry({"mini", "uci", "revert"}, call("action_revert"), i18n("revert"), 20) - entry({"mini", "uci", "apply"}, call("action_apply"), i18n("saveapply"), 10) + entry({"mini", "uci", "saveapply"}, call("action_apply"), i18n("saveapply"), 10) end function convert_changes(changes) - local ret = {} + local util = require "luci.util" + + local ret for r, tbl in pairs(changes) do for s, os in pairs(tbl) do for o, v in pairs(os) do - local val, str - if (v == "") then - str = "-" - val = "" - else - str = "" - val = "="..luci.util.pcdata(v) - end - str = r.."."..s - if o ~= ".type" then - str = str.."."..o - end - table.insert(ret, str..val) + ret = (ret and ret.."\n" or "") .. "%s%s.%s%s%s" % { + v == "" and "-" or "", + r, + s, + o ~= ".type" and "."..o or "", + v ~= "" and "="..util.pcdata(v) or "" + } end end end - return table.concat(ret, "\n") + return ret end function action_changes() @@ -53,49 +49,37 @@ function action_changes() end function action_apply() + local path = luci.dispatcher.context.path local uci = luci.model.uci.cursor() local changes = uci:changes() - local output = "" - - if changes then - local com = {} - local run = {} - - -- Collect files to be applied and commit changes - for r, tbl in pairs(changes) do - if r then - uci:load(r) - uci:commit(r) - uci:unload(r) - if luci.config.uci_oncommit and luci.config.uci_oncommit[r] then - run[luci.config.uci_oncommit[r]] = true - end - end - end - - -- Search for post-commit commands - for cmd, i in pairs(run) do - output = output .. cmd .. ":\n" .. luci.util.exec(cmd) .. "\n" - end + local reload = {} + + -- Collect files to be applied and commit changes + for r, tbl in pairs(changes) do + table.insert(reload, r) + uci:load(r) + uci:commit(r) + uci:unload(r) end - - luci.template.render("mini/uci_apply", {changes=convert_changes(changes), output=output}) + local function _reload() + local cmd = uci:apply(reload, true) + return io.popen(cmd) + end + + luci.template.render("mini/uci_apply", {changes=convert_changes(changes), reload=_reload}) end function action_revert() local uci = luci.model.uci.cursor() local changes = uci:changes() - if changes then - local revert = {} - - -- Collect files to be reverted - for r, tbl in pairs(changes) do - uci:load(r) - uci:revert(r) - uci:unload(r) - end + + -- Collect files to be reverted + for r, tbl in pairs(changes) do + uci:load(r) + uci:revert(r) + uci:unload(r) end luci.template.render("mini/uci_revert", {changes=convert_changes(changes)}) diff --git a/modules/admin-mini/luasrc/view/mini/uci_apply.htm b/modules/admin-mini/luasrc/view/mini/uci_apply.htm index e280947282..9a9a063f1d 100644 --- a/modules/admin-mini/luasrc/view/mini/uci_apply.htm +++ b/modules/admin-mini/luasrc/view/mini/uci_apply.htm @@ -16,5 +16,14 @@ $Id$ <h1><%:config%></h1> <p><%:uci_applied%>:</p> <code><%=(changes or "-")%> -<%=output%></code> + +<% +local fp = reload() +local line = fp:read() +while line do + write(line.."\n") + line = fp:read() +end +fp:close() +%></code> <%+footer%>
\ No newline at end of file diff --git a/modules/admin-mini/luasrc/view/mini/upgrade.htm b/modules/admin-mini/luasrc/view/mini/upgrade.htm index e0fbb93326..a3d97d6497 100644 --- a/modules/admin-mini/luasrc/view/mini/upgrade.htm +++ b/modules/admin-mini/luasrc/view/mini/upgrade.htm @@ -34,7 +34,13 @@ $Id$ </div> </form> <% elseif ret then %> - <% if ret == 0 then %> + <p><%:a_s_flash_received%></p> + <p><%:a_s_flash_inprogress%></p> + +<!-- <%=string.rep(" ", 2048)%> --> + <% %> + <% local ret = ret() + if ret == 0 then %> <div class="ok"><%:a_s_flash_flashed%></div> <% else %> <div class="error"><%:a_s_flash_flasherr%>! (<%:code%> <%=ret%>)</div> @@ -42,4 +48,5 @@ $Id$ <% else %> <div class="error"><%:a_s_flash_notimplemented%></div> <% end %> -<%+footer%>
\ No newline at end of file +<%+footer%> +<% if ret == 0 then luci.sys.reboot() end %> |
