avmtrf1-tools 0.29.0 → 0.32.0
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/avmtrf1/check_point/session.rb +10 -9
- data/lib/avmtrf1/esosti/instance/changed.rb +8 -5
- data/lib/avmtrf1/executables.rb +10 -2
- data/lib/avmtrf1/forponto/user/month.rb +1 -1
- data/lib/avmtrf1/inventario_sistemas.rb +40 -0
- data/lib/avmtrf1/inventario_sistemas/parser.rb +42 -0
- data/lib/avmtrf1/inventario_sistemas/parser/body.rb +27 -0
- data/lib/avmtrf1/inventario_sistemas/parser/body_row.rb +12 -0
- data/lib/avmtrf1/inventario_sistemas/parser/header.rb +38 -0
- data/lib/avmtrf1/inventario_sistemas/parser/header_column.rb +27 -0
- data/lib/avmtrf1/inventario_sistemas/site_build.rb +71 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base.rb +41 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/elements.rb +54 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/layout.rb +55 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/stylesheet.css +57 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/index.rb +20 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/sistema.rb +62 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/sistemas_index.rb +31 -0
- data/lib/avmtrf1/patches/eac_launcher/git/base.rb +0 -15
- data/lib/avmtrf1/redmine/instance.rb +2 -1
- data/lib/avmtrf1/rest_provider/instance.rb +13 -55
- data/lib/avmtrf1/rest_provider/instance/issues.rb +30 -0
- data/lib/avmtrf1/rest_provider/request.rb +44 -0
- data/lib/avmtrf1/rest_provider/response.rb +77 -0
- data/lib/avmtrf1/tools/application.rb +13 -0
- data/lib/avmtrf1/tools/runner.rb +16 -26
- data/lib/avmtrf1/tools/runner/check_point.rb +1 -1
- data/lib/avmtrf1/tools/runner/check_point/login.rb +1 -1
- data/lib/avmtrf1/tools/runner/esosti.rb +1 -1
- data/lib/avmtrf1/tools/runner/esosti/changed.rb +7 -2
- data/lib/avmtrf1/tools/runner/esosti/fetch.rb +7 -2
- data/lib/avmtrf1/tools/runner/esosti/request.rb +88 -0
- data/lib/avmtrf1/tools/runner/forponto.rb +1 -1
- data/lib/avmtrf1/tools/runner/forponto/espelho.rb +1 -1
- data/lib/avmtrf1/tools/runner/forponto/marcacoes.rb +1 -1
- data/lib/avmtrf1/tools/runner/forponto/resumos.rb +1 -1
- data/lib/avmtrf1/tools/runner/forponto/saldo.rb +1 -1
- data/lib/avmtrf1/tools/runner/git.rb +1 -1
- data/lib/avmtrf1/tools/runner/git/issues_check.rb +1 -1
- data/lib/avmtrf1/tools/runner/git/push_large.rb +1 -1
- data/lib/avmtrf1/tools/runner/inventario_sistemas.rb +71 -0
- data/lib/avmtrf1/tools/runner/openvpn.rb +38 -0
- data/lib/avmtrf1/tools/runner/oracle.rb +1 -1
- data/lib/avmtrf1/tools/runner/oracle/query.rb +1 -1
- data/lib/avmtrf1/tools/runner/oracle/source_get.rb +1 -1
- data/lib/avmtrf1/tools/runner/oracle/user_clear.rb +1 -1
- data/lib/avmtrf1/tools/runner/php.rb +8 -15
- data/lib/avmtrf1/tools/runner/php/docker.rb +19 -29
- data/lib/avmtrf1/tools/runner/red.rb +1 -1
- data/lib/avmtrf1/tools/runner/trf1_dspace_base0.rb +1 -1
- data/lib/avmtrf1/tools/runner/trf1_dspace_base0/deploy.rb +3 -3
- data/lib/avmtrf1/tools/version.rb +1 -1
- data/lib/avmtrf1/trf1_dspace_base0/deploy.rb +3 -3
- metadata +56 -10
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Avmtrf1
|
4
|
+
class InventarioSistemas
|
5
|
+
class SiteBuild
|
6
|
+
class HtmlPageBase
|
7
|
+
module Layout
|
8
|
+
def metadata_info
|
9
|
+
"<div class='input_metadata'>" \
|
10
|
+
"Extraído de <strong>#{site.input_file.basename}</strong>." \
|
11
|
+
'</div>'
|
12
|
+
end
|
13
|
+
|
14
|
+
def output_body
|
15
|
+
<<HTML
|
16
|
+
<body><div id="top">
|
17
|
+
#{output_navbar}
|
18
|
+
<h1>#{site_title}</h1>
|
19
|
+
#{metadata_info}
|
20
|
+
</div><div id="inner">
|
21
|
+
<h2>#{title}</h2>
|
22
|
+
#{output_inner_content}
|
23
|
+
</div></body>
|
24
|
+
HTML
|
25
|
+
end
|
26
|
+
|
27
|
+
def output_content
|
28
|
+
"<html>\n" + output_header + output_body + '</html>'
|
29
|
+
end
|
30
|
+
|
31
|
+
def output_header
|
32
|
+
<<HTML
|
33
|
+
<head>
|
34
|
+
<meta charset="UTF-8">
|
35
|
+
<title>#{site_title} - #{title}</title>
|
36
|
+
<style>
|
37
|
+
#{::File.read(::File.join(__dir__, 'stylesheet.css'))}
|
38
|
+
</style>
|
39
|
+
</head>
|
40
|
+
HTML
|
41
|
+
end
|
42
|
+
|
43
|
+
def output_navbar
|
44
|
+
'<nav>' + output_navbar_path(false) + '</nav>'
|
45
|
+
end
|
46
|
+
|
47
|
+
def output_navbar_path(links)
|
48
|
+
(parent.present? ? parent.output_navbar_path(true) + NAVBAR_SEPARATOR : '') +
|
49
|
+
(links ? self_html_link : title)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
body, #top, #top * {
|
2
|
+
padding: 0;
|
3
|
+
margin: 0;
|
4
|
+
box-sizing: border-box;
|
5
|
+
}
|
6
|
+
|
7
|
+
#top * {
|
8
|
+
padding: 0.3em;
|
9
|
+
}
|
10
|
+
|
11
|
+
#inner {
|
12
|
+
margin: 0.3em;
|
13
|
+
}
|
14
|
+
|
15
|
+
nav {
|
16
|
+
padding: 0.2em;
|
17
|
+
}
|
18
|
+
|
19
|
+
a {
|
20
|
+
color: blue;
|
21
|
+
}
|
22
|
+
|
23
|
+
a:visited {
|
24
|
+
color: darkblue;
|
25
|
+
}
|
26
|
+
|
27
|
+
h1 {
|
28
|
+
text-align: right;
|
29
|
+
background-color: lightyellow;
|
30
|
+
}
|
31
|
+
|
32
|
+
.input_metadata {
|
33
|
+
text-align: right;
|
34
|
+
background-color: lightblue;
|
35
|
+
}
|
36
|
+
|
37
|
+
table {
|
38
|
+
border: thin solid black;
|
39
|
+
border-collapse: collapse;
|
40
|
+
}
|
41
|
+
|
42
|
+
.odd {
|
43
|
+
background-color: lightgray;
|
44
|
+
}
|
45
|
+
|
46
|
+
td, th {
|
47
|
+
border-left: thin solid black;
|
48
|
+
}
|
49
|
+
|
50
|
+
th {
|
51
|
+
border-bottom: thin solid black;
|
52
|
+
}
|
53
|
+
|
54
|
+
nav, nav a, nav a:visited, th {
|
55
|
+
background-color: black;
|
56
|
+
color: white;
|
57
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'avmtrf1/inventario_sistemas/site_build/html_page_base'
|
5
|
+
|
6
|
+
module Avmtrf1
|
7
|
+
class InventarioSistemas
|
8
|
+
class SiteBuild
|
9
|
+
class Index < ::Avmtrf1::InventarioSistemas::SiteBuild::HtmlPageBase
|
10
|
+
def output_inner_content
|
11
|
+
['<ul>', "<li>#{site.sistemas_index.self_html_link}</li>", '</ul>'].join("\n")
|
12
|
+
end
|
13
|
+
|
14
|
+
def title
|
15
|
+
'Índice'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'avmtrf1/inventario_sistemas/parser/header_column'
|
5
|
+
require 'avmtrf1/inventario_sistemas/site_build/html_page_base'
|
6
|
+
|
7
|
+
module Avmtrf1
|
8
|
+
class InventarioSistemas
|
9
|
+
class SiteBuild
|
10
|
+
class Sistema < ::Avmtrf1::InventarioSistemas::SiteBuild::HtmlPageBase
|
11
|
+
attr_reader :raw_row
|
12
|
+
|
13
|
+
def initialize(site, parent, raw_row)
|
14
|
+
super(site, parent)
|
15
|
+
@raw_row = raw_row
|
16
|
+
end
|
17
|
+
|
18
|
+
def id
|
19
|
+
nome.parameterize
|
20
|
+
end
|
21
|
+
|
22
|
+
def gestor
|
23
|
+
column_value('gestor na jf1', 'unidade')
|
24
|
+
end
|
25
|
+
|
26
|
+
def nome
|
27
|
+
column_value('sistema', 'sigla')
|
28
|
+
end
|
29
|
+
|
30
|
+
def producao
|
31
|
+
html_linkfy(column_value('ambientes', 'produção – serv. ap'))
|
32
|
+
end
|
33
|
+
|
34
|
+
def responsavel
|
35
|
+
%w[unidade seção nome]
|
36
|
+
.map { |sub| column_value('responsável pelo desenvolvimento', sub) }
|
37
|
+
.reject(&:blank?).join(' » ')
|
38
|
+
end
|
39
|
+
|
40
|
+
def output_inner_content
|
41
|
+
column_values = site.parser.header_columns.map { |c| [c.key, column_value(c)] }
|
42
|
+
'<h3>Detalhes</h3>' + html_table(%w[Campo Valor], column_values)
|
43
|
+
end
|
44
|
+
|
45
|
+
def title
|
46
|
+
nome
|
47
|
+
end
|
48
|
+
|
49
|
+
def column_value(main, sub = nil)
|
50
|
+
column = if main.is_a?(::Avmtrf1::InventarioSistemas::Parser::HeaderColumn)
|
51
|
+
main
|
52
|
+
else
|
53
|
+
site.column(main, sub)
|
54
|
+
end
|
55
|
+
raise 'Out of bound' if column.index >= raw_row.count
|
56
|
+
|
57
|
+
raw_row[column.index]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'avmtrf1/inventario_sistemas/site_build/html_page_base'
|
5
|
+
|
6
|
+
module Avmtrf1
|
7
|
+
class InventarioSistemas
|
8
|
+
class SiteBuild
|
9
|
+
class SistemasIndex < ::Avmtrf1::InventarioSistemas::SiteBuild::HtmlPageBase
|
10
|
+
def output_inner_content
|
11
|
+
output_count + output_list
|
12
|
+
end
|
13
|
+
|
14
|
+
def title
|
15
|
+
'Sistemas'
|
16
|
+
end
|
17
|
+
|
18
|
+
def output_count
|
19
|
+
"<p>Quantidade: #{site.sistemas.count}</p>"
|
20
|
+
end
|
21
|
+
|
22
|
+
def output_list
|
23
|
+
html_table(
|
24
|
+
%w[Nome Produção Responsável Gestor],
|
25
|
+
site.sistemas.map { |s| [s.self_html_link, s.producao, s.responsavel, s.gestor] }
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -16,21 +16,6 @@ module Avmtrf1
|
|
16
16
|
end
|
17
17
|
|
18
18
|
module InstanceMethods
|
19
|
-
def execute(*args)
|
20
|
-
args, options = build_args(args)
|
21
|
-
::EacRubyUtils::Envs.local.command(*args).execute(options)
|
22
|
-
end
|
23
|
-
|
24
|
-
def system(*args)
|
25
|
-
args, options = build_args(args)
|
26
|
-
::EacRubyUtils::Envs.local.command(*args).system(options)
|
27
|
-
end
|
28
|
-
|
29
|
-
def command(*args)
|
30
|
-
args, _options = build_args(args)
|
31
|
-
::EacRubyUtils::Envs.local.command(*args)
|
32
|
-
end
|
33
|
-
|
34
19
|
def status_files
|
35
20
|
execute!('-c', 'core.quotepath=off', 'status', '--porcelain').each_line.map do |line|
|
36
21
|
parse_status_file(line)
|
@@ -31,7 +31,8 @@ module Avmtrf1
|
|
31
31
|
private
|
32
32
|
|
33
33
|
def issue_statuses
|
34
|
-
|
34
|
+
request_json('/issue_statuses').response.body_data_or_raise.fetch('issue_statuses')
|
35
|
+
.map do |data|
|
35
36
|
::Avmtrf1::Redmine::Entities::IssueStatus.new(self, data)
|
36
37
|
end
|
37
38
|
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'avmtrf1/rest_provider/request'
|
3
4
|
require 'curb'
|
4
|
-
require '
|
5
|
-
require 'avmtrf1/jira/entities/issue'
|
6
|
-
require 'eac_ruby_utils/console/speaker'
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
7
6
|
|
8
7
|
module Avmtrf1
|
9
8
|
module RestProvider
|
@@ -12,60 +11,19 @@ module Avmtrf1
|
|
12
11
|
# * self.build_service_url(service_url_suffix)
|
13
12
|
# * self.issue_get_url_suffix(provider_issue_id)
|
14
13
|
class Instance
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
def find_issue(global_issue_id)
|
26
|
-
parsed = self.class.parse_issue_id(global_issue_id)
|
27
|
-
parsed.present? ? issue(parsed.provider_issue_id) : nil
|
28
|
-
end
|
29
|
-
|
30
|
-
def issue(provider_issue_id)
|
31
|
-
data = request(issue_get_url_suffix(provider_issue_id))
|
32
|
-
data = issue_class.parse_data(data) if issue_class.respond_to?(:parse_data)
|
33
|
-
data.present? ? issue_class.new(self, data) : nil
|
34
|
-
end
|
35
|
-
|
36
|
-
def request(service_url_suffix)
|
37
|
-
url = build_service_url(service_url_suffix)
|
38
|
-
infov 'URL', url
|
39
|
-
c = ::Curl::Easy.new(url)
|
40
|
-
c.http_auth_types = :basic
|
41
|
-
c.username = username
|
42
|
-
c.password = password
|
43
|
-
c.headers['Accept'] = 'application/json'
|
44
|
-
curl_perform(c)
|
45
|
-
end
|
46
|
-
|
47
|
-
def issue_class
|
48
|
-
"#{self.class.name.deconstantize}::Entities::Issue".constantize
|
49
|
-
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
def curl_perform(curl)
|
54
|
-
raise 'Curl failed' unless curl.perform
|
55
|
-
|
56
|
-
infov 'Return status', curl.status
|
57
|
-
return JSON.parse(curl.body_str) if curl.status.to_i == 200
|
58
|
-
|
59
|
-
raise curl_raise_message(curl)
|
14
|
+
require_sub __FILE__, include_modules: true
|
15
|
+
common_constructor :root_url, :username, :password
|
16
|
+
|
17
|
+
def request(service_url_suffix, headers = {}, &body_data_proc)
|
18
|
+
r = Avmtrf1::RestProvider::Request.new(build_service_url(service_url_suffix),
|
19
|
+
body_data_proc)
|
20
|
+
headers.each { |name, value| r.header(name, value) }
|
21
|
+
r.autenticate(username, password)
|
22
|
+
r
|
60
23
|
end
|
61
24
|
|
62
|
-
def
|
63
|
-
|
64
|
-
"#{curl.url} returned #{curl.status.to_i}:
|
65
|
-
#{'=' * 10}
|
66
|
-
#{curl.body_str}
|
67
|
-
#{'=' * 10}"
|
68
|
-
MESSAGE
|
25
|
+
def request_json(service_url_suffix, headers = {}, &body_data_proc)
|
26
|
+
request(service_url_suffix, headers.merge('Accept' => 'application/json'), &body_data_proc)
|
69
27
|
end
|
70
28
|
end
|
71
29
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Avmtrf1
|
4
|
+
module RestProvider
|
5
|
+
class Instance
|
6
|
+
module Issues
|
7
|
+
def find_issue(global_issue_id)
|
8
|
+
parsed = self.class.parse_issue_id(global_issue_id)
|
9
|
+
parsed.present? ? issue(parsed.provider_issue_id) : nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def issue(provider_issue_id)
|
13
|
+
issue_request(provider_issue_id).response.body_data_or_raise
|
14
|
+
end
|
15
|
+
|
16
|
+
# @return [Avmtrf1::RestProvider::Request]
|
17
|
+
def issue_request(provider_issue_id)
|
18
|
+
request_json(issue_get_url_suffix(provider_issue_id)) do |data|
|
19
|
+
data = issue_class.parse_data(data) if issue_class.respond_to?(:parse_data)
|
20
|
+
data.present? ? issue_class.new(self, data) : nil
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def issue_class
|
25
|
+
"#{self.class.name.deconstantize}::Entities::Issue".constantize
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avmtrf1/rest_provider/response'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
require 'ostruct'
|
6
|
+
|
7
|
+
module Avmtrf1
|
8
|
+
module RestProvider
|
9
|
+
class Request
|
10
|
+
common_constructor :url, :body_data_proc, default: [nil]
|
11
|
+
|
12
|
+
def autenticate(username, password)
|
13
|
+
self.auth = ::OpenStruct.new(username: username, password: password)
|
14
|
+
end
|
15
|
+
|
16
|
+
def header(name, value)
|
17
|
+
headers[name.to_s] = value
|
18
|
+
end
|
19
|
+
|
20
|
+
def response
|
21
|
+
::Avmtrf1::RestProvider::Response.new(build_curl, body_data_proc)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
attr_accessor :auth
|
27
|
+
|
28
|
+
def build_curl
|
29
|
+
r = ::Curl::Easy.new(url)
|
30
|
+
auth.if_present do |a|
|
31
|
+
r.http_auth_types = :basic
|
32
|
+
r.username = a.username
|
33
|
+
r.password = a.password
|
34
|
+
end
|
35
|
+
r.headers.merge!(headers)
|
36
|
+
r
|
37
|
+
end
|
38
|
+
|
39
|
+
def headers
|
40
|
+
@headers ||= {}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,77 @@
|
|
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 Avmtrf1
|
8
|
+
module RestProvider
|
9
|
+
class Response < ::StandardError
|
10
|
+
common_constructor :curl, :body_data_proc
|
11
|
+
|
12
|
+
def body_data
|
13
|
+
r = performed_curl.headers['Accept'].if_present(body_str) do |v|
|
14
|
+
send("body_data_from_#{v.parameterize.underscore}")
|
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
|
+
def body_str
|
27
|
+
performed_curl.body_str
|
28
|
+
end
|
29
|
+
|
30
|
+
def body_str_or_raise
|
31
|
+
raise_unless_200
|
32
|
+
|
33
|
+
body_str
|
34
|
+
end
|
35
|
+
|
36
|
+
def raise_unless_200
|
37
|
+
return nil if status == 200
|
38
|
+
|
39
|
+
raise self
|
40
|
+
end
|
41
|
+
|
42
|
+
def status
|
43
|
+
performed_curl.status.to_i
|
44
|
+
end
|
45
|
+
|
46
|
+
def url
|
47
|
+
curl.url
|
48
|
+
end
|
49
|
+
|
50
|
+
def to_s
|
51
|
+
"URL: #{url}\nStatus: #{status}\nBody:\n\n#{body_str}"
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def body_data_from_application_json
|
57
|
+
::JSON.parse(body_str)
|
58
|
+
end
|
59
|
+
|
60
|
+
def body_data_from_application_xml
|
61
|
+
Hash.from_xml(body_str)
|
62
|
+
end
|
63
|
+
|
64
|
+
def perform
|
65
|
+
@perform ||= begin
|
66
|
+
curl.perform || raise("CURL perform failed for #{url}")
|
67
|
+
true
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def performed_curl
|
72
|
+
perform
|
73
|
+
curl
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|