gitlab-triage 1.15.0 → 1.16.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2927188b4b24b36453f4bac48a82b9af7d2ddc33bb7b5219f533282da9e8370
4
- data.tar.gz: 8d35707ba7d219950ab3ba8dda852e89687f16b360cf1f368ae02038ff3ff7cb
3
+ metadata.gz: 843acca8deb39647c9cea0af3b5fbeb5bfd620c7cc00f007c1ad3c891db198f4
4
+ data.tar.gz: b0445de658103d20efa09b883f98360f1569ce7c0a9e03a8928431bb05b4e61f
5
5
  SHA512:
6
- metadata.gz: 12def4c673ceb025d1a286c9c10a53c410d037364865482b85500bff9215d6490e6d0fcc2737f859a8bbeeba5a302c5e2ff6cbddfc7bab1599e909c243240d67
7
- data.tar.gz: b98bbed0aabc5cf72595f5dbb3b60ce8d5bb25ad4af19aff1de46c34642ac15c7dc367db39ad1092833a97a923ac73957768bf14b5ed06ccb8bfd518e5fdbdc2
6
+ metadata.gz: fa98bec626946cfb312e48b6b0a5d7a06b5b47eda6d8caca6a2775a4d55c5cb1d1ffe97334fbae673da58a1ad324c3440a68be7d8665590e2bb536f11afb05df
7
+ data.tar.gz: '098cd6f58e0f2799911fed6650e0d729e9efd85721722340a5bd6215400dca2a3bef92f3d34c1e70ec306d49c1d1be15a27cb6d5d3d4ae055f406c3afb71cd35'
@@ -3,6 +3,7 @@ module Gitlab
3
3
  module Errors
4
4
  module Network
5
5
  InternalServerError = Class.new(StandardError)
6
+ TooManyRequests = Class.new(StandardError)
6
7
  UnexpectedResponse = Class.new(StandardError)
7
8
  end
8
9
  end
@@ -33,7 +33,9 @@ module Gitlab
33
33
  print '.'
34
34
  url = response.fetch(:next_page_url) { url }
35
35
 
36
- response = execute_with_retry([Net::ReadTimeout, Errors::Network::InternalServerError]) do
36
+ response = execute_with_retry(
37
+ exception_types: [Net::ReadTimeout, Errors::Network::InternalServerError],
38
+ backoff_exceptions: Errors::Network::TooManyRequests) do
37
39
  puts Gitlab::Triage::UI.debug "query_api: #{url}" if options.debug
38
40
 
39
41
  @adapter.get(token, url)
@@ -60,7 +62,9 @@ module Gitlab
60
62
  end
61
63
 
62
64
  def post_api(url, body)
63
- response = execute_with_retry(Net::ReadTimeout) do
65
+ response = execute_with_retry(
66
+ exception_types: Net::ReadTimeout,
67
+ backoff_exceptions: Errors::Network::TooManyRequests) do
64
68
  puts Gitlab::Triage::UI.debug "post_api: #{url}" if options.debug
65
69
 
66
70
  @adapter.post(token, url, body)
@@ -19,6 +19,7 @@ module Gitlab
19
19
 
20
20
  raise_on_unauthorized_error!(response)
21
21
  raise_on_internal_server_error!(response)
22
+ raise_on_too_many_requests!(response)
22
23
 
23
24
  {
24
25
  more_pages: (response.headers["x-next-page"].to_s != ""),
@@ -41,6 +42,7 @@ module Gitlab
41
42
 
42
43
  raise_on_unauthorized_error!(response)
43
44
  raise_on_internal_server_error!(response)
45
+ raise_on_too_many_requests!(response)
44
46
 
45
47
  {
46
48
  results: response.parsed_response,
@@ -67,6 +69,14 @@ module Gitlab
67
69
  raise Errors::Network::InternalServerError, 'Internal server error encountered!'
68
70
  end
69
71
 
72
+ def raise_on_too_many_requests!(response)
73
+ return unless response.response.is_a?(Net::HTTPTooManyRequests)
74
+
75
+ puts Gitlab::Triage::UI.debug response.inspect if options.debug
76
+
77
+ raise Errors::Network::TooManyRequests, 'Too many requests made!'
78
+ end
79
+
70
80
  def next_page_url(url, response)
71
81
  return unless response.headers['x-next-page'].present?
72
82
 
@@ -88,6 +88,8 @@ module Gitlab
88
88
 
89
89
  parser.parse!(argv)
90
90
 
91
+ options.source = nil if options.all
92
+
91
93
  options
92
94
  end
93
95
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'base'
4
+ require_relative 'epic'
4
5
  require_relative 'issue'
5
6
  require_relative 'merge_request'
6
7
  require_relative 'instance_version'
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative 'shared/issuable'
5
+
6
+ module Gitlab
7
+ module Triage
8
+ module Resource
9
+ class Epic < Base
10
+ include Shared::Issuable
11
+
12
+ def project_path
13
+ @project_path ||=
14
+ request_group(resource[:group_id])[:full_path]
15
+ end
16
+ alias_method :group_path, :project_path
17
+
18
+ def reference
19
+ '&'
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -2,23 +2,25 @@ module Gitlab
2
2
  module Triage
3
3
  module Retryable
4
4
  MAX_RETRIES = 3
5
+ BACK_OFF_SECONDS = 10
5
6
 
6
7
  attr_accessor :tries
7
8
 
8
- def execute_with_retry(exception_types = [StandardError])
9
+ def execute_with_retry(exception_types: [StandardError], backoff_exceptions: [])
9
10
  @tries = 0
10
11
 
11
12
  until maximum_retries_reached?
12
13
  begin
13
14
  @tries += 1
14
- result = yield
15
- break
15
+ return yield
16
16
  rescue *exception_types
17
17
  raise if maximum_retries_reached?
18
+ rescue *backoff_exceptions
19
+ raise if maximum_retries_reached?
20
+
21
+ sleep(BACK_OFF_SECONDS)
18
22
  end
19
23
  end
20
-
21
- result
22
24
  end
23
25
 
24
26
  private
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  module Triage
5
- VERSION = '1.15.0'
5
+ VERSION = '1.16.0'
6
6
  end
7
7
  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.15.0
4
+ version: 1.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-20 00:00:00.000000000 Z
11
+ date: 2021-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -214,6 +214,7 @@ files:
214
214
  - lib/gitlab/triage/policies_resources/summary_resources.rb
215
215
  - lib/gitlab/triage/resource/base.rb
216
216
  - lib/gitlab/triage/resource/context.rb
217
+ - lib/gitlab/triage/resource/epic.rb
217
218
  - lib/gitlab/triage/resource/instance_version.rb
218
219
  - lib/gitlab/triage/resource/issue.rb
219
220
  - lib/gitlab/triage/resource/label.rb