gitlab-triage 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|