gitlab-triage 1.15.0 → 1.16.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 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