From c0e381eda04244846d2737e712d0a88cfd647558 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 2 Oct 2021 19:51:41 +0800 Subject: [PATCH] update-10.02 --- luci-app-dockerman/Makefile | 2 +- .../luasrc/controller/dockerman.lua | 23 +++++++++++++++---- .../luasrc/model/cbi/dockerman/containers.lua | 7 +++--- .../luasrc/model/cbi/dockerman/images.lua | 10 +++++--- .../luasrc/model/cbi/dockerman/overview.lua | 7 +++--- .../luasrc/model/cbi/dockerman/volumes.lua | 16 ++++++++++--- .../dockerman/containers_running_stats.htm | 10 +++++++- .../luasrc/view/dockerman/volume_size.htm | 21 +++++++++++++++++ 8 files changed, 76 insertions(+), 20 deletions(-) create mode 100644 luci-app-dockerman/luasrc/view/dockerman/volume_size.htm diff --git a/luci-app-dockerman/Makefile b/luci-app-dockerman/Makefile index 08e292772..51dfa5c09 100644 --- a/luci-app-dockerman/Makefile +++ b/luci-app-dockerman/Makefile @@ -14,7 +14,7 @@ PKG_LICENSE:=AGPL-3.0 PKG_MAINTAINER:=lisaac \ Florian Eckert -PKG_VERSION:=v0.5.24 +PKG_VERSION:=v0.5.25 include $(TOPDIR)/feeds/luci/luci.mk diff --git a/luci-app-dockerman/luasrc/controller/dockerman.lua b/luci-app-dockerman/luasrc/controller/dockerman.lua index 90aaec4e4..380c964d4 100644 --- a/luci-app-dockerman/luasrc/controller/dockerman.lua +++ b/luci-app-dockerman/luasrc/controller/dockerman.lua @@ -45,15 +45,17 @@ function index() entry({"admin", "docker", "newnetwork"}, form("dockerman/newnetwork")).leaf=true entry({"admin", "docker", "container"}, form("dockerman/container")).leaf=true + entry({"admin", "docker", "call"}, call("action_call_docker")).leaf=true + entry({"admin", "docker", "container_stats"}, call("action_get_container_stats")).leaf=true entry({"admin", "docker", "containers_stats"}, call("action_get_containers_stats")).leaf=true - + entry({"admin", "docker", "get_system_df"}, call("action_get_system_df")).leaf=true entry({"admin", "docker", "container_get_archive"}, call("download_archive")).leaf=true entry({"admin", "docker", "container_put_archive"}, call("upload_archive")).leaf=true - entry({"admin","docker","container_list_file"},call("list_file")).leaf=true - entry({"admin","docker","container_remove_file"},call("remove_file")).leaf=true - entry({"admin","docker","container_rename_file"},call("rename_file")).leaf=true - entry({"admin","docker","container_export"},call("export_container")).leaf=true + entry({"admin", "docker", "container_list_file"}, call("list_file")).leaf=true + entry({"admin", "docker", "container_remove_file"}, call("remove_file")).leaf=true + entry({"admin", "docker", "container_rename_file"}, call("rename_file")).leaf=true + entry({"admin", "docker", "container_export"}, call("export_container")).leaf=true entry({"admin", "docker", "images_save"}, call("save_images")).leaf=true entry({"admin", "docker", "images_load"}, call("load_images")).leaf=true entry({"admin", "docker", "images_import"}, call("import_images")).leaf=true @@ -63,6 +65,17 @@ function index() entry({"admin", "docker", "confirm"}, call("action_confirm")).leaf=true end +function action_call_docker() + +end + +function action_get_system_df() + local res = docker.new():df() + luci.http.status(res.code, res.message) + luci.http.prepare_content("application/json") + luci.http.write_json(res.body) +end + function scandir(id, directory) local cmd_docker = luci.util.exec("command -v docker"):match("^.+docker") or nil if not cmd_docker or cmd_docker:match("^%s+$") then diff --git a/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua b/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua index 470d0c5fa..47f634f8b 100644 --- a/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua +++ b/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua @@ -26,8 +26,7 @@ else res = dk.containers:list({ query = { - all = true, - size = true + all = true } }) if res and res.code and res.code < 300 then @@ -90,7 +89,9 @@ function get_containers() data[index]["_image"] = iv.RepoTags and iv.RepoTags[1] or (iv.RepoDigests[1]:gsub("(.-)@.+", "%1") .. ":<none>") end end - data[index]["_id_name"] = ''.. data[index]["_name"] .. "
ID: " .. data[index]["_id"] .. "

Image: " .. (data[index]["_image"] or "<none>") .. "
Size: " .. docker.byte_format(v['SizeRw']).. '/'.. docker.byte_format(v['SizeRootFs']) .. "" + data[index]["_id_name"] = ''.. data[index]["_name"] .. "
ID: " .. data[index]["_id"] + .. "

Image: " .. (data[index]["_image"] or "<none>") + .. "
" if type(v.Mounts) == "table" and next(v.Mounts) then for _, v2 in pairs(v.Mounts) do diff --git a/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua b/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua index 55b9147b5..c3d3eab0d 100644 --- a/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua +++ b/luci-app-dockerman/luasrc/model/cbi/dockerman/images.lua @@ -12,10 +12,14 @@ local m, s, o if dk:_ping().code ~= 200 then lost_state = true else - res = dk:df() + res = dk.images:list() if res and res.code and res.code < 300 then - images = res.body.Images - containers = res.body.Containers + images = res.body + end + + res = dk.containers:list({ query = { all = true } }) + if res and res.code and res.code < 300 then + containers = res.body end end diff --git a/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua b/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua index 3b64b8dd8..c91f349ce 100644 --- a/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua +++ b/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua @@ -103,10 +103,9 @@ s.volumes_total = '-' -- local socket = luci.model.uci.cursor():get("dockerd", "dockerman", "socket_path") if not lost_state then - local res = dk:df() - local containers_list = res.body.Containers - local images_list = res.body.Images - local vol = res.body.Volumes + local containers_list = dk.containers:list({query = {all=true}}).body + local images_list = dk.images:list().body + local vol = dk.volumes:list() local volumes_list = vol and vol.body and vol.body.Volumes or {} local networks_list = dk.networks:list().body or {} local docker_info = dk:info() diff --git a/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua b/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua index 0301af22d..43e6bda3a 100644 --- a/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua +++ b/luci-app-dockerman/luasrc/model/cbi/dockerman/volumes.lua @@ -41,7 +41,7 @@ function get_volumes() end end data[index]["_created"] = v.CreatedAt - data[index]["_size"] = docker.byte_format(v.UsageData and v.UsageData.Size or nil) + data[index]["_size"] = "-" end return data @@ -49,10 +49,18 @@ end if dk:_ping().code ~= 200 then lost_state = true else - res = dk:df() + res = dk.volumes:list() if res and res.code and res.code <300 then volumes = res.body.Volumes - containers = res.body.Containers + end + + res = dk.containers:list({ + query = { + all=true + } + }) + if res and res.code and res.code <300 then + containers = res.body end end @@ -61,6 +69,7 @@ local volume_list = not lost_state and get_volumes() or {} m = SimpleForm("docker", translate("Docker - Volumes")) m.submit=false m.reset=false +m:append(Template("dockerman/volume_size")) s = m:section(Table, volume_list, translate("Volumes overview")) @@ -78,6 +87,7 @@ o = s:option(DummyValue, "_containers", translate("Containers")) o.rawhtml = true o = s:option(DummyValue, "_mountpoint", translate("Mount Point")) o = s:option(DummyValue, "_size", translate("Size")) +o.rawhtml = true o = s:option(DummyValue, "_created", translate("Created")) s = m:section(SimpleSection) diff --git a/luci-app-dockerman/luasrc/view/dockerman/containers_running_stats.htm b/luci-app-dockerman/luasrc/view/dockerman/containers_running_stats.htm index c2835499c..d88e28be9 100644 --- a/luci-app-dockerman/luasrc/view/dockerman/containers_running_stats.htm +++ b/luci-app-dockerman/luasrc/view/dockerman/containers_running_stats.htm @@ -9,10 +9,18 @@ } fnWindowLoad = function () { + XHR.get('<%=luci.dispatcher.build_url("admin/docker/get_system_df")%>/', null, (x, info)=>{ + if(!info || !info.Containers || !info.Containers.forEach) return + info.Containers.forEach(item=>{ + const size_c = document.getElementsByClassName("container_size_" + item.Id) + size_c[0].title = "RW Size: " + niceBytes(item.SizeRw) + " / RootFS Size(Include Image): " + niceBytes(item.SizeRootFs) + size_c[0].innerText = "Size: " + niceBytes(item.SizeRw) + "/" + niceBytes(item.SizeRootFs) + }) + }) let lines = document.querySelectorAll('[id^=cbi-containers-]') let last_bw_tx = {} let last_bw_rx = {} - let interval = 5 + let interval = 30 let containers = [] lines.forEach((item) => { let containerId = item.id.match(/cbi-containers-.+_id_(.*)/) diff --git a/luci-app-dockerman/luasrc/view/dockerman/volume_size.htm b/luci-app-dockerman/luasrc/view/dockerman/volume_size.htm new file mode 100644 index 000000000..dc024734b --- /dev/null +++ b/luci-app-dockerman/luasrc/view/dockerman/volume_size.htm @@ -0,0 +1,21 @@ + \ No newline at end of file