avm-tools 0.114.1 → 0.114.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/avm/tools/version.rb +1 -1
- data/sub/avm-eac_redmine_base0/avm-eac_redmine_base0.gemspec +1 -0
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb +6 -10
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instance.rb +20 -0
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/rest_api.rb +11 -0
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/version.rb +1 -1
- data/sub/eac_rest/Gemfile +5 -0
- data/sub/eac_rest/eac_rest.gemspec +18 -0
- data/sub/eac_rest/lib/eac_rest/api.rb +39 -0
- data/sub/eac_rest/lib/eac_rest/entity.rb +16 -0
- data/sub/eac_rest/lib/eac_rest/request.rb +74 -0
- data/sub/eac_rest/lib/eac_rest/response.rb +72 -0
- data/sub/eac_rest/lib/eac_rest/version.rb +5 -0
- data/sub/eac_rest/lib/eac_rest.rb +7 -0
- data/sub/eac_rest/spec/rubocop_spec.rb +3 -0
- data/sub/eac_rest/spec/spec_helper.rb +4 -0
- metadata +15 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e2a7df849fd040b8e6fddad4e1c8507139926f0b587ceab796c1416fb9af873
|
4
|
+
data.tar.gz: 70eb055f94b37d37e05510563a654350137d0358283ad7d33a4d895110f1f2cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90be4e12df6cda16ffc88680a42a6d3dd118e96f97840cfb4a49b4418b76df1826485065ca069e3105d942136ed9273f03e9e15b340c4913abfeacae01ce1eba
|
7
|
+
data.tar.gz: 262a63d17a298911bef85e025b678779e8d7795e2376349128999fc50442275a0303bde419921e2799a3f8a9923366d3996c655ea032d909ca555f6b7d6892a5
|
data/lib/avm/tools/version.rb
CHANGED
@@ -16,6 +16,7 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.add_dependency 'avm-eac_ubuntu_base0', '~> 0.2'
|
17
17
|
s.add_dependency 'curb', '~> 0.9.10'
|
18
18
|
s.add_dependency 'eac_fs', '~> 0.4'
|
19
|
+
s.add_dependency 'eac_rest', '~> 0.4'
|
19
20
|
s.add_dependency 'eac_ruby_utils', '~> 0.68'
|
20
21
|
|
21
22
|
s.add_development_dependency 'eac_ruby_gem_support', '~> 0.4'
|
@@ -10,11 +10,13 @@ module Avm
|
|
10
10
|
class DataUnit < ::Avm::Data::Instance::Unit
|
11
11
|
common_constructor :instance
|
12
12
|
|
13
|
+
EXPORT_PATH = '/backup/export'
|
13
14
|
EXTENSION = '.tar'
|
15
|
+
IMPORT_PATH = '/backup/import.json'
|
14
16
|
|
15
17
|
def do_dump(data_path)
|
16
18
|
::File.open(data_path, 'wb') do |file|
|
17
|
-
file <<
|
19
|
+
file << export_request.response.body_data_or_raise
|
18
20
|
end
|
19
21
|
end
|
20
22
|
|
@@ -37,18 +39,12 @@ module Avm
|
|
37
39
|
true
|
38
40
|
end
|
39
41
|
|
40
|
-
def
|
41
|
-
|
42
|
+
def export_request
|
43
|
+
instance.rest_api.request(EXPORT_PATH)
|
42
44
|
end
|
43
45
|
|
44
46
|
def import_url
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
|
-
def url(path)
|
49
|
-
uri = ::Addressable::URI.parse(instance.read_entry('web.url')) + path
|
50
|
-
uri.query_values = { key: instance.read_entry('admin.api_key') }
|
51
|
-
uri.to_s
|
47
|
+
instance.rest_api.build_service_url(IMPORT_PATH).to_s
|
52
48
|
end
|
53
49
|
end
|
54
50
|
end
|
@@ -1,13 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'addressable/uri'
|
3
4
|
require 'avm/eac_redmine_base0/data_unit'
|
4
5
|
require 'avm/eac_redmine_base0/instances/docker_image'
|
6
|
+
require 'avm/eac_redmine_base0/rest_api'
|
5
7
|
require 'avm/eac_webapp_base0/instance'
|
6
8
|
require 'avm/eac_rails_base1/instance'
|
7
9
|
|
8
10
|
module Avm
|
9
11
|
module EacRedmineBase0
|
10
12
|
class Instance < ::Avm::EacRailsBase1::Instance
|
13
|
+
enable_simple_cache
|
14
|
+
|
11
15
|
FILES_UNITS = { files: 'files' }.freeze
|
12
16
|
|
13
17
|
def docker_image_class
|
@@ -32,6 +36,22 @@ module Avm
|
|
32
36
|
}
|
33
37
|
)
|
34
38
|
end
|
39
|
+
|
40
|
+
# @return [Addressable::URI]
|
41
|
+
def root_url
|
42
|
+
r = ::Addressable::URI.parse(read_entry(::Avm::Instances::EntryKeys::WEB_URL))
|
43
|
+
r.query_values = nil
|
44
|
+
r
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
# @return [Avm::EacRedmineBase0::RestApi]
|
50
|
+
def rest_api_uncached
|
51
|
+
url = root_url
|
52
|
+
url.query_values = { key: read_entry('api.key') }
|
53
|
+
::Avm::EacRedmineBase0::RestApi.new(url)
|
54
|
+
end
|
35
55
|
end
|
36
56
|
end
|
37
57
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push File.expand_path('lib', __dir__)
|
4
|
+
|
5
|
+
require 'eac_rest/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = 'eac_rest'
|
9
|
+
s.version = EacRest::VERSION
|
10
|
+
s.authors = ['Eduardo H. Bogoni']
|
11
|
+
s.summary = 'A REST helper for Ruby.'
|
12
|
+
|
13
|
+
s.files = Dir['{lib}/**/*']
|
14
|
+
|
15
|
+
s.add_dependency 'eac_ruby_utils', '~> 0.70'
|
16
|
+
|
17
|
+
s.add_development_dependency 'eac_ruby_gem_support', '~> 0.3'
|
18
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_rest/request'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module EacRest
|
7
|
+
# Abstract methods
|
8
|
+
# * self.issue_get_url_suffix(provider_issue_id)
|
9
|
+
class Api
|
10
|
+
require_sub __FILE__, include_modules: true
|
11
|
+
common_constructor :root_url, :username, :password, default: [nil, nil]
|
12
|
+
|
13
|
+
def request(service_url_suffix, headers = {}, &body_data_proc)
|
14
|
+
r = ::EacRest::Request.new(build_service_url(service_url_suffix),
|
15
|
+
body_data_proc)
|
16
|
+
headers.each { |name, value| r = r.header(name, value) }
|
17
|
+
r = r.autenticate(username, password) if username.present?
|
18
|
+
r
|
19
|
+
end
|
20
|
+
|
21
|
+
def request_json(service_url_suffix, headers = {}, &body_data_proc)
|
22
|
+
request(service_url_suffix, headers.merge('Accept' => 'application/json')) do |body_data|
|
23
|
+
r = ::JSON.parse(body_data)
|
24
|
+
r = body_data_proc.call(r) if body_data_proc
|
25
|
+
r
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# @return [Addressable::URI]
|
30
|
+
def build_service_url(suffix)
|
31
|
+
s = ::Addressable::URI.parse(suffix)
|
32
|
+
r = ::Addressable::URI.parse(root_url)
|
33
|
+
r.path += s.path
|
34
|
+
r.query_values = r.query_values(::Array).if_present([]) +
|
35
|
+
s.query_values(::Array).if_present([])
|
36
|
+
r
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EacRest
|
6
|
+
class Entity
|
7
|
+
enable_simple_cache
|
8
|
+
common_constructor :api, :data
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def from_array_data(api, array_data, *args)
|
12
|
+
array_data.map { |item_data| new(api, item_data, *args) }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'curb'
|
4
|
+
require 'eac_rest/response'
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
6
|
+
require 'ostruct'
|
7
|
+
|
8
|
+
module EacRest
|
9
|
+
class Request
|
10
|
+
COMMON_MODIFIERS = %w[auth body_data verb].freeze
|
11
|
+
HASH_MODIFIERS = %w[header].freeze
|
12
|
+
MODIFIERS = COMMON_MODIFIERS + HASH_MODIFIERS.map(&:pluralize)
|
13
|
+
|
14
|
+
enable_immutable
|
15
|
+
immutable_accessor(*COMMON_MODIFIERS, type: :common)
|
16
|
+
immutable_accessor(*HASH_MODIFIERS, type: :hash)
|
17
|
+
|
18
|
+
enable_listable
|
19
|
+
lists.add_symbol :verb, :get, :delete, :options, :post, :put
|
20
|
+
|
21
|
+
common_constructor :url, :body_data_proc, default: [nil]
|
22
|
+
|
23
|
+
def autenticate(username, password)
|
24
|
+
auth(::OpenStruct.new(username: username, password: password))
|
25
|
+
end
|
26
|
+
|
27
|
+
def immutable_constructor_args
|
28
|
+
[url, body_data_proc]
|
29
|
+
end
|
30
|
+
|
31
|
+
def response
|
32
|
+
::EacRest::Response.new(build_curl, body_data_proc)
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def build_curl
|
38
|
+
r = ::Curl::Easy.new(url)
|
39
|
+
MODIFIERS.each { |suffix| send("build_curl_#{suffix}", r) }
|
40
|
+
r
|
41
|
+
end
|
42
|
+
|
43
|
+
def build_curl_auth(curl)
|
44
|
+
auth.if_present do |a|
|
45
|
+
curl.http_auth_types = :basic
|
46
|
+
curl.username = a.username
|
47
|
+
curl.password = a.password
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def build_curl_body_data(curl)
|
52
|
+
www_form_body_data_encoded.if_present { |v| curl.post_body = v }
|
53
|
+
end
|
54
|
+
|
55
|
+
def build_curl_headers(curl)
|
56
|
+
curl.headers.merge!(headers)
|
57
|
+
end
|
58
|
+
|
59
|
+
def build_curl_verb(curl)
|
60
|
+
curl.set(
|
61
|
+
:customrequest,
|
62
|
+
verb.if_present(VERB_GET) { |v| self.class.lists.verb.value_validate!(v) }.to_s.upcase
|
63
|
+
)
|
64
|
+
end
|
65
|
+
|
66
|
+
def www_form_body_data_encoded
|
67
|
+
body_data.if_present do |v|
|
68
|
+
v = v.map { |k, vv| [k, vv] } if v.is_a?(::Hash)
|
69
|
+
v = URI.encode_www_form(v) if v.is_a?(::Array)
|
70
|
+
v.to_s
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/core_ext/hash/conversions'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
module EacRest
|
8
|
+
class Response < ::StandardError
|
9
|
+
common_constructor :curl, :body_data_proc
|
10
|
+
|
11
|
+
def body_data
|
12
|
+
r = performed_curl.headers['Accept'].if_present(body_str) do |v|
|
13
|
+
method_name = "body_data_from_#{v.parameterize.underscore}"
|
14
|
+
respond_to?(method_name) ? send(method_name) : body_str
|
15
|
+
end
|
16
|
+
r = body_data_proc.call(r) if body_data_proc.present?
|
17
|
+
r
|
18
|
+
end
|
19
|
+
|
20
|
+
def body_data_or_raise
|
21
|
+
raise_unless_200
|
22
|
+
|
23
|
+
body_data
|
24
|
+
end
|
25
|
+
|
26
|
+
delegate :body_str, :headers, to: :performed_curl
|
27
|
+
|
28
|
+
def body_str_or_raise
|
29
|
+
raise_unless_200
|
30
|
+
|
31
|
+
body_str
|
32
|
+
end
|
33
|
+
|
34
|
+
def raise_unless_200
|
35
|
+
return nil if status == 200
|
36
|
+
|
37
|
+
raise self
|
38
|
+
end
|
39
|
+
|
40
|
+
def status
|
41
|
+
performed_curl.status.to_i
|
42
|
+
end
|
43
|
+
|
44
|
+
delegate :url, to: :curl
|
45
|
+
|
46
|
+
def to_s
|
47
|
+
"URL: #{url}\nStatus: #{status}\nBody:\n\n#{body_str}"
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def body_data_from_application_json
|
53
|
+
::JSON.parse(body_str)
|
54
|
+
end
|
55
|
+
|
56
|
+
def body_data_from_application_xml
|
57
|
+
Hash.from_xml(body_str)
|
58
|
+
end
|
59
|
+
|
60
|
+
def perform
|
61
|
+
@perform ||= begin
|
62
|
+
curl.perform || raise("CURL perform failed for #{url}")
|
63
|
+
true
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def performed_curl
|
68
|
+
perform
|
69
|
+
curl
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: avm-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.114.
|
4
|
+
version: 0.114.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esquilo Azul Company
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-02-
|
11
|
+
date: 2022-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aranha-parsers
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0.
|
75
|
+
version: '0.4'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0.
|
82
|
+
version: '0.4'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: avm-eac_ruby_base1
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -510,6 +510,7 @@ files:
|
|
510
510
|
- sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/deploy.rb
|
511
511
|
- sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instance.rb
|
512
512
|
- sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/docker_image.rb
|
513
|
+
- sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/rest_api.rb
|
513
514
|
- sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/version.rb
|
514
515
|
- sub/avm-eac_redmine_base0/spec/rubocop_spec.rb
|
515
516
|
- sub/avm-eac_redmine_base0/spec/spec_helper.rb
|
@@ -1124,6 +1125,16 @@ files:
|
|
1124
1125
|
- sub/eac_git/vendor/git-subrepo/test/setup
|
1125
1126
|
- sub/eac_git/vendor/git-subrepo/test/status.t
|
1126
1127
|
- sub/eac_git/vendor/git-subrepo/test/submodule.t
|
1128
|
+
- sub/eac_rest/Gemfile
|
1129
|
+
- sub/eac_rest/eac_rest.gemspec
|
1130
|
+
- sub/eac_rest/lib/eac_rest.rb
|
1131
|
+
- sub/eac_rest/lib/eac_rest/api.rb
|
1132
|
+
- sub/eac_rest/lib/eac_rest/entity.rb
|
1133
|
+
- sub/eac_rest/lib/eac_rest/request.rb
|
1134
|
+
- sub/eac_rest/lib/eac_rest/response.rb
|
1135
|
+
- sub/eac_rest/lib/eac_rest/version.rb
|
1136
|
+
- sub/eac_rest/spec/rubocop_spec.rb
|
1137
|
+
- sub/eac_rest/spec/spec_helper.rb
|
1127
1138
|
- sub/eac_ruby_base0/Gemfile
|
1128
1139
|
- sub/eac_ruby_base0/eac_ruby_base0.gemspec
|
1129
1140
|
- sub/eac_ruby_base0/lib/eac_ruby_base0.rb
|