You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by sp...@apache.org on 2022/05/23 01:49:16 UTC
[apisix] branch master updated: feat(ops): use lua libs to backup config file insteadof shell command (#7048)
This is an automated email from the ASF dual-hosted git repository.
spacewander pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git
The following commit(s) were added to refs/heads/master by this push:
new 38b0938e7 feat(ops): use lua libs to backup config file insteadof shell command (#7048)
38b0938e7 is described below
commit 38b0938e79759070942c9715a5f76ce6d5d0c62b
Author: kwanhur <hu...@163.com>
AuthorDate: Mon May 23 09:49:12 2022 +0800
feat(ops): use lua libs to backup config file insteadof shell command (#7048)
Signed-off-by: kwanhur <hu...@163.com>
Co-authored-by: Alex Zhang <to...@apache.org>
---
apisix/cli/ops.lua | 47 ++++++++++++++++++++++++++---------------------
apisix/cli/util.lua | 14 --------------
2 files changed, 26 insertions(+), 35 deletions(-)
diff --git a/apisix/cli/ops.lua b/apisix/cli/ops.lua
index f72ea42cb..6c5ff7675 100644
--- a/apisix/cli/ops.lua
+++ b/apisix/cli/ops.lua
@@ -25,6 +25,7 @@ local profile = require("apisix.core.profile")
local template = require("resty.template")
local argparse = require("argparse")
local pl_path = require("pl.path")
+local lfs = require("lfs")
local signal = require("posix.signal")
local errno = require("posix.errno")
@@ -38,6 +39,7 @@ local tonumber = tonumber
local io_open = io.open
local execute = os.execute
local os_rename = os.rename
+local os_remove = os.remove
local table_insert = table.insert
local getenv = os.getenv
local max = math.max
@@ -469,9 +471,8 @@ Please modify "admin_key" in conf/config.yaml .
-- Therefore we need to check the absolute version instead
cert_path = pl_path.abspath(cert_path)
- local ok, err = util.is_file_exist(cert_path)
- if not ok then
- util.die(err, "\n")
+ if not pl_path.exists(cert_path) then
+ util.die("certificate path", cert_path, "doesn't exist\n")
end
yaml_conf.apisix.ssl.ssl_trusted_certificate = cert_path
@@ -763,16 +764,19 @@ local function start(env, ...)
if customized_yaml then
profile.apisix_home = env.apisix_home .. "/"
local local_conf_path = profile:yaml_path("config")
+ local local_conf_path_bak = local_conf_path .. ".bak"
- local err = util.execute_cmd_with_error("mv " .. local_conf_path .. " "
- .. local_conf_path .. ".bak")
- if #err > 0 then
- util.die("failed to mv config to backup, error: ", err)
+ local ok, err = os_rename(local_conf_path, local_conf_path_bak)
+ if not ok then
+ util.die("failed to backup config, error: ", err)
end
- err = util.execute_cmd_with_error("ln " .. customized_yaml .. " " .. local_conf_path)
- if #err > 0 then
- util.execute_cmd("mv " .. local_conf_path .. ".bak " .. local_conf_path)
- util.die("failed to link customized config, error: ", err)
+ local ok, err1 = lfs.link(customized_yaml, local_conf_path)
+ if not ok then
+ ok, err = os_rename(local_conf_path_bak, local_conf_path)
+ if not ok then
+ util.die("failed to recover original config file, error: ", err)
+ end
+ util.die("failed to link customized config, error: ", err1)
end
print("Use customized yaml: ", customized_yaml)
@@ -787,15 +791,15 @@ end
local function cleanup()
local local_conf_path = profile:yaml_path("config")
- local bak_exist = io_open(local_conf_path .. ".bak")
- if bak_exist then
- local err = util.execute_cmd_with_error("rm " .. local_conf_path)
- if #err > 0 then
+ local local_conf_path_bak = local_conf_path .. ".bak"
+ if pl_path.exists(local_conf_path_bak) then
+ local ok, err = os_remove(local_conf_path)
+ if not ok then
print("failed to remove customized config, error: ", err)
end
- err = util.execute_cmd_with_error("mv " .. local_conf_path .. ".bak " .. local_conf_path)
- if #err > 0 then
- util.die("failed to mv original config file, error: ", err)
+ ok, err = os_rename(local_conf_path_bak, local_conf_path)
+ if not ok then
+ util.die("failed to recover original config file, error: ", err)
end
end
end
@@ -804,9 +808,10 @@ end
local function test(env, backup_ngx_conf)
-- backup nginx.conf
local ngx_conf_path = env.apisix_home .. "/conf/nginx.conf"
- local ngx_conf_exist = util.is_file_exist(ngx_conf_path)
+ local ngx_conf_path_bak = ngx_conf_path .. ".bak"
+ local ngx_conf_exist = pl_path.exists(ngx_conf_path)
if ngx_conf_exist then
- local ok, err = os_rename(ngx_conf_path, ngx_conf_path .. ".bak")
+ local ok, err = os_rename(ngx_conf_path, ngx_conf_path_bak)
if not ok then
util.die("failed to backup nginx.conf, error: ", err)
end
@@ -820,7 +825,7 @@ local function test(env, backup_ngx_conf)
-- restore nginx.conf
if ngx_conf_exist then
- local ok, err = os_rename(ngx_conf_path .. ".bak", ngx_conf_path)
+ local ok, err = os_rename(ngx_conf_path_bak, ngx_conf_path)
if not ok then
util.die("failed to restore original nginx.conf, error: ", err)
end
diff --git a/apisix/cli/util.lua b/apisix/cli/util.lua
index bab857d9d..daadee51e 100644
--- a/apisix/cli/util.lua
+++ b/apisix/cli/util.lua
@@ -121,18 +121,4 @@ function _M.write_file(file_path, data)
end
-function _M.is_file_exist(file_path)
- local file, err = open(file_path)
- if not file then
- return false, "failed to open file: "
- .. file_path
- .. ", error info: "
- .. err
- end
-
- file:close()
- return true
-end
-
-
return _M