diff --git a/luasrc/model/cbi/dockerman/overview.lua b/luasrc/model/cbi/dockerman/overview.lua index dd4828b..3bd4a6f 100644 --- a/luasrc/model/cbi/dockerman/overview.lua +++ b/luasrc/model/cbi/dockerman/overview.lua @@ -4,8 +4,14 @@ Copyright 2019 lisaac ]]-- 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) 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['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","
"):gsub(" "," ") + 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:option(DummyValue, "_key", translate("Info")) s:option(DummyValue, "_value") @@ -45,8 +97,7 @@ s.images_total = '-' s.networks_total = '-' s.volumes_total = '-' -if docker.new():_ping().code == 200 then - local dk = docker.new() +if not lost_state then local containers_list = dk.containers:list({query = {all=true}}).body local images_list = dk.images:list().body local vol = dk.volumes:list() @@ -85,6 +136,8 @@ if docker.new():_ping().code == 200 then s.images_total = tostring(#images_list) s.networks_total = tostring(#networks_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 return m diff --git a/po/zh_Hans/dockerman.po b/po/zh_Hans/dockerman.po index 7403424..fab9507 100644 --- a/po/zh_Hans/dockerman.po +++ b/po/zh_Hans/dockerman.po @@ -745,6 +745,7 @@ msgstr "资源" #: 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/overview.lua:74 msgid "Restart" 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/containers.lua:193 +#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:55 msgid "Start" 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/containers.lua:211 +#: applications/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua:55 msgid "Stop" msgstr "停止" @@ -951,3 +954,7 @@ msgid "" msgstr "" "按下导入按钮时,既可以将本地镜像文件加载到系统上,也可以从远程下载有效的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 是否已启动?"