gitlab-triage 1.1.1 → 1.2.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/gitlab/triage/engine.rb +3 -5
- data/lib/gitlab/triage/filters/ruby_conditions_filter.rb +1 -1
- data/lib/gitlab/triage/network.rb +22 -2
- data/lib/gitlab/triage/network_adapters/httparty_adapter.rb +22 -6
- data/lib/gitlab/triage/network_adapters/test_adapter.rb +8 -2
- data/lib/gitlab/triage/option_parser.rb +1 -1
- data/lib/gitlab/triage/options.rb +2 -1
- data/lib/gitlab/triage/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd48e4232bda87bda7044a5453a42c0a39b29ebe69cd5953048df8dd577c872f
|
4
|
+
data.tar.gz: d14d0e432023d50f6a11fcf3ff8ec223c3235ac5c53191cf2dd5babfbaeaa10b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9aa0e6f1062e6c39785b020c23c0c382a2387446fe77e29dd154cbe6530ee4cd6f873da842ab1abae04e2516cd4a7a2c070019ef8ebdce63b16eeb9becb5b5cb
|
7
|
+
data.tar.gz: 67fbbe46988133f88de13d8e066eb61da9cfbf025d1c4cd622a97e4c41420838a4d27ce1300fc88cacbb70a2447c46b3af84d342405206cd578c40b59d250dd0
|
data/lib/gitlab/triage/engine.rb
CHANGED
@@ -39,7 +39,7 @@ module Gitlab
|
|
39
39
|
|
40
40
|
assert_project_id!
|
41
41
|
assert_token!
|
42
|
-
|
42
|
+
require_ruby_files
|
43
43
|
end
|
44
44
|
|
45
45
|
def perform
|
@@ -75,10 +75,8 @@ module Gitlab
|
|
75
75
|
raise ArgumentError, 'A token is needed (pass it with the `--token` option)!'
|
76
76
|
end
|
77
77
|
|
78
|
-
def
|
79
|
-
|
80
|
-
|
81
|
-
require options.require
|
78
|
+
def require_ruby_files
|
79
|
+
options.require_files.each(&method(:require))
|
82
80
|
end
|
83
81
|
|
84
82
|
def resource_rules
|
@@ -10,6 +10,7 @@ module Gitlab
|
|
10
10
|
include Retryable
|
11
11
|
|
12
12
|
TokenNotFound = Class.new(StandardError)
|
13
|
+
MINIMUM_RATE_LIMIT = 25
|
13
14
|
|
14
15
|
attr_reader :options, :adapter
|
15
16
|
|
@@ -44,6 +45,9 @@ module Gitlab
|
|
44
45
|
else
|
45
46
|
resources << results
|
46
47
|
end
|
48
|
+
|
49
|
+
rate_limit_debug(response) if options.debug
|
50
|
+
rate_limit_wait(response)
|
47
51
|
end while response.delete(:more_pages)
|
48
52
|
|
49
53
|
resources.map!(&:with_indifferent_access)
|
@@ -52,14 +56,18 @@ module Gitlab
|
|
52
56
|
end
|
53
57
|
|
54
58
|
def post_api(url, body)
|
55
|
-
execute_with_retry(Net::ReadTimeout) do
|
59
|
+
response = execute_with_retry(Net::ReadTimeout) do
|
56
60
|
puts Gitlab::Triage::UI.debug "post_api: #{url}" if options.debug
|
57
61
|
|
58
62
|
@adapter.post(token, url, body)
|
59
63
|
end
|
60
64
|
|
65
|
+
rate_limit_debug(response) if options.debug
|
66
|
+
rate_limit_wait(response)
|
67
|
+
|
68
|
+
response.delete(:results).with_indifferent_access
|
61
69
|
rescue Net::ReadTimeout
|
62
|
-
|
70
|
+
{}
|
63
71
|
end
|
64
72
|
|
65
73
|
private
|
@@ -67,6 +75,18 @@ module Gitlab
|
|
67
75
|
def token
|
68
76
|
options.token || raise(TokenNotFound)
|
69
77
|
end
|
78
|
+
|
79
|
+
def rate_limit_debug(response)
|
80
|
+
rate_limit_infos = "Rate limit remaining: #{response[:ratelimit_remaining]} (reset at #{response[:ratelimit_reset_at]})"
|
81
|
+
puts Gitlab::Triage::UI.debug "rate_limit_infos: #{rate_limit_infos}"
|
82
|
+
end
|
83
|
+
|
84
|
+
def rate_limit_wait(response)
|
85
|
+
return unless response.delete(:ratelimit_remaining) < MINIMUM_RATE_LIMIT
|
86
|
+
|
87
|
+
puts Gitlab::Triage::UI.debug "Rate limit almost exceeded, sleeping for #{response[:ratelimit_reset_at] - Time.now} seconds" if options.debug
|
88
|
+
sleep(1) until Time.now >= response[:ratelimit_reset_at]
|
89
|
+
end
|
70
90
|
end
|
71
91
|
end
|
72
92
|
end
|
@@ -16,20 +16,19 @@ module Gitlab
|
|
16
16
|
}
|
17
17
|
)
|
18
18
|
|
19
|
-
|
20
|
-
puts Gitlab::Triage::UI.debug response.inspect if options.debug
|
21
|
-
raise 'The provided token is unauthorized!'
|
22
|
-
end
|
19
|
+
raise_on_unauthorized_error!(response)
|
23
20
|
|
24
21
|
{
|
25
22
|
more_pages: (response.headers["x-next-page"].to_s != ""),
|
26
23
|
next_page_url: url + "&page=#{response.headers['x-next-page']}",
|
27
|
-
results: response.parsed_response
|
24
|
+
results: response.parsed_response,
|
25
|
+
ratelimit_remaining: response.headers["ratelimit-remaining"].to_i,
|
26
|
+
ratelimit_reset_at: Time.at(response.headers["ratelimit-reset"].to_i)
|
28
27
|
}
|
29
28
|
end
|
30
29
|
|
31
30
|
def post(token, url, body)
|
32
|
-
HTTParty.post(
|
31
|
+
response = HTTParty.post(
|
33
32
|
url,
|
34
33
|
body: body.to_json,
|
35
34
|
headers: {
|
@@ -37,6 +36,23 @@ module Gitlab
|
|
37
36
|
'PRIVATE-TOKEN' => token
|
38
37
|
}
|
39
38
|
)
|
39
|
+
|
40
|
+
raise_on_unauthorized_error!(response)
|
41
|
+
|
42
|
+
{
|
43
|
+
results: response.parsed_response,
|
44
|
+
ratelimit_remaining: response.headers["ratelimit-remaining"].to_i,
|
45
|
+
ratelimit_reset_at: Time.at(response.headers["ratelimit-reset"].to_i)
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def raise_on_unauthorized_error!(response)
|
52
|
+
return unless response.response.is_a?(Net::HTTPUnauthorized)
|
53
|
+
|
54
|
+
puts Gitlab::Triage::UI.debug response.inspect if options.debug
|
55
|
+
raise 'The provided token is unauthorized!'
|
40
56
|
end
|
41
57
|
end
|
42
58
|
end
|
@@ -20,12 +20,18 @@ module Gitlab
|
|
20
20
|
{
|
21
21
|
more_pages: false,
|
22
22
|
next_page_url: nil,
|
23
|
-
results: results
|
23
|
+
results: results,
|
24
|
+
ratelimit_remaining: 600,
|
25
|
+
ratelimit_reset_at: Time.now
|
24
26
|
}
|
25
27
|
end
|
26
28
|
|
27
29
|
def post(token, url, body)
|
28
|
-
|
30
|
+
{
|
31
|
+
results: {},
|
32
|
+
ratelimit_remaining: 600,
|
33
|
+
ratelimit_reset_at: Time.now
|
34
|
+
}
|
29
35
|
end
|
30
36
|
end
|
31
37
|
end
|
@@ -8,7 +8,7 @@ module Gitlab
|
|
8
8
|
:token,
|
9
9
|
:debug,
|
10
10
|
:host_url,
|
11
|
-
:
|
11
|
+
:require_files,
|
12
12
|
:api_version
|
13
13
|
) do
|
14
14
|
def initialize(*args)
|
@@ -18,6 +18,7 @@ module Gitlab
|
|
18
18
|
self.host_url ||= 'https://gitlab.com'
|
19
19
|
self.api_version ||= 'v4'
|
20
20
|
self.source ||= 'projects'
|
21
|
+
self.require_files ||= []
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab-triage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitLab
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|