An interface is provided to support obtaining the real path of the
/srv/initrd/deps and pkg program.
Example:
Input:
curl -H 'Content-Type: Application/json' -XPOST '172.17.0.1:8101/locate_files'
-d '{"deps_files": ["/srv/initrd/deps/nfs/openeuler/aarch64/20.03/perf/perf.cgz"],
"pkg_files": ["/srv/initrd/pkg/nfs/openeuler/aarch64/20.03/plzip/latest.cgz",
"/srv/initrd/pkg/nfs/openeuler/aarch64/20.03/stream/latest.cgz"]}'
Output:
{"deps_files":["/srv/initrd/deps/nfs/openeuler/aarch64/20.03/perf/perf_20201104.cgz"],
"pkg_files":["/srv/initrd/pkg/nfs/openeuler/aarch64/20.03/plzip/1-4.cgz",
"/srv/initrd/pkg/nfs/openeuler/aarch64/20.03/stream/1-1.cgz"]}
Signed-off-by: Cao Xueliang <caoxl78320(a)163.com>
---
container/assistant/routes.rb | 31 +++++++++++++++++++++++
container/assistant/views/locate_files.rb | 19 ++++++++++++++
2 files changed, 50 insertions(+)
create mode 100755 container/assistant/routes.rb
create mode 100644 container/assistant/views/locate_files.rb
diff --git a/container/assistant/routes.rb b/container/assistant/routes.rb
new file mode 100755
index 0000000..54d3670
--- /dev/null
+++ b/container/assistant/routes.rb
@@ -0,0 +1,31 @@
+#!/usr/bin/env ruby
+# SPDX-License-Identifier: MulanPSL-2.0+
+# Copyright (c) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+# frozen_string_literal: true
+
+require 'sinatra'
+require 'json'
+require 'open3'
+
+require_relative './views/locate_files'
+
+set :bind, '0.0.0.0'
+set :port, 8101
+
+post '/locate_files' do
+ request.body.rewind
+
+ begin
+ data = JSON.parse request.body.read
+ rescue JSON::ParserError
+ return [400, 'parse json params error']
+ end
+
+ begin
+ result = locate_files(data)
+ rescue StandardError => e
+ return [400, e.backtrace.inspect]
+ end
+
+ [200, result.to_json]
+end
diff --git a/container/assistant/views/locate_files.rb b/container/assistant/views/locate_files.rb
new file mode 100644
index 0000000..9699128
--- /dev/null
+++ b/container/assistant/views/locate_files.rb
@@ -0,0 +1,19 @@
+# SPDX-License-Identifier: MulanPSL-2.0+
+# Copyright (c) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+# frozen_string_literal: true
+
+def locate_files(data)
+ result = {}
+
+ data.each do |key, value|
+ temp = []
+ value.each do |val|
+ val = val.strip
+ temp << File.realpath(val) if File.exist?(val)
+ end
+
+ result.merge!({ "#{key}": temp })
+ end
+
+ return result
+end
--
2.23.0