add daemon control button

This commit is contained in:
sbwml 2022-09-02 15:27:26 +08:00
parent 394498b14d
commit c3af521bee
2 changed files with 63 additions and 3 deletions

View File

@ -4,8 +4,14 @@ Copyright 2019 lisaac <https://github.com/lisaac/luci-app-dockerman>
]]-- ]]--
local docker = require "luci.model.docker" local docker = require "luci.model.docker"
local uci = (require "luci.model.uci").cursor()
local m, s, o local m, s, o, lost_state
local dk = docker.new()
if dk:_ping().code ~= 200 then
lost_state = true
end
function byte_format(byte) function byte_format(byte)
local suff = {"B", "KB", "MB", "GB", "TB"} local suff = {"B", "KB", "MB", "GB", "TB"}
@ -31,6 +37,52 @@ docker_info_table['7DockerRootDir'] = {_key=translate("Docker Root Dir"),_value=
docker_info_table['8IndexServerAddress'] = {_key=translate("Index Server Address"),_value='-'} docker_info_table['8IndexServerAddress'] = {_key=translate("Index Server Address"),_value='-'}
docker_info_table['9RegistryMirrors'] = {_key=translate("Registry Mirrors"),_value='-'} docker_info_table['9RegistryMirrors'] = {_key=translate("Registry Mirrors"),_value='-'}
if nixio.fs.access("/usr/bin/dockerd") and not uci:get_bool("dockerd", "dockerman", "remote_endpoint") then
s = m:section(SimpleSection)
s.template = "dockerman/apply_widget"
s.err=docker:read_status()
s.err=s.err and s.err:gsub("\n","<br>"):gsub(" ","&nbsp;")
if s.err then
docker:clear_status()
end
s = m:section(Table,{{}})
s.notitle=true
s.rowcolors=false
s.template = "cbi/nullsection"
o = s:option(Button, "_start")
o.template = "dockerman/cbi/inlinebutton"
o.inputtitle = lost_state and translate("Start") or translate("Stop")
o.inputstyle = lost_state and "add" or "remove"
o.forcewrite = true
o.write = function(self, section)
docker:clear_status()
if lost_state then
docker:append_status("Docker daemon: starting")
luci.util.exec("/etc/init.d/dockerd start")
else
docker:append_status("Docker daemon: stopping")
luci.util.exec("/etc/init.d/dockerd stop")
end
docker:clear_status()
luci.http.redirect(luci.dispatcher.build_url("admin/docker/overview"))
end
o = s:option(Button, "_restart")
o.template = "dockerman/cbi/inlinebutton"
o.inputtitle = translate("Restart")
o.inputstyle = "reload"
o.forcewrite = true
o.write = function(self, section)
docker:clear_status()
docker:append_status("Docker daemon: restarting")
luci.util.exec("/etc/init.d/dockerd restart")
docker:clear_status()
luci.http.redirect(luci.dispatcher.build_url("admin/docker/overview"))
end
end
s = m:section(Table, docker_info_table) s = m:section(Table, docker_info_table)
s:option(DummyValue, "_key", translate("Info")) s:option(DummyValue, "_key", translate("Info"))
s:option(DummyValue, "_value") s:option(DummyValue, "_value")
@ -45,8 +97,7 @@ s.images_total = '-'
s.networks_total = '-' s.networks_total = '-'
s.volumes_total = '-' s.volumes_total = '-'
if docker.new():_ping().code == 200 then if not lost_state then
local dk = docker.new()
local containers_list = dk.containers:list({query = {all=true}}).body local containers_list = dk.containers:list({query = {all=true}}).body
local images_list = dk.images:list().body local images_list = dk.images:list().body
local vol = dk.volumes:list() local vol = dk.volumes:list()
@ -85,6 +136,8 @@ if docker.new():_ping().code == 200 then
s.images_total = tostring(#images_list) s.images_total = tostring(#images_list)
s.networks_total = tostring(#networks_list) s.networks_total = tostring(#networks_list)
s.volumes_total = tostring(#volumes_list) s.volumes_total = tostring(#volumes_list)
else
docker_info_table['3ServerVersion']._value = translate("Cannot connect to Docker daemon. Is the docker daemon running?")
end end
return m return m

View File

@ -745,6 +745,7 @@ msgstr "资源"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:227 #: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:227
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:202 #: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:202
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:74
msgid "Restart" msgid "Restart"
msgstr "重启" msgstr "重启"
@ -795,6 +796,7 @@ msgstr ""
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:218 #: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:218
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:193 #: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:193
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:55
msgid "Start" msgid "Start"
msgstr "启动" msgstr "启动"
@ -815,6 +817,7 @@ msgstr "状态"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:236 #: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua:236
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:211 #: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/containers.lua:211
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:55
msgid "Stop" msgid "Stop"
msgstr "停止" msgstr "停止"
@ -951,3 +954,7 @@ msgid ""
msgstr "" msgstr ""
"按下导入按钮时既可以将本地镜像文件加载到系统上也可以从远程下载有效的Tar格" "按下导入按钮时既可以将本地镜像文件加载到系统上也可以从远程下载有效的Tar格"
"式的镜像文件。" "式的镜像文件。"
#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:140
msgid "Cannot connect to Docker daemon. Is the docker daemon running?"
msgstr "无法连接到 Docker 守护进程Docker 是否已启动?"