peoplegroup-connectors 0.1.25 → 0.1.30

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: b82bb7402d7a7f77279b5c9e93003b6731a090005a23f352eef0e3e78c40e6e7
4
- data.tar.gz: b9cef9752cd98dfbd93895077bf9bb0d5458c2a7381ba8c3c9c7340163658f62
3
+ metadata.gz: f994474d203d3b0378a04c12102c9be7c1f5f4348e7f9c3cea3c21102dceb75a
4
+ data.tar.gz: 033f8fcc352ef7fa070ca38794ec60426862863808506536a9f543fd34a819cb
5
5
  SHA512:
6
- metadata.gz: 7922255e4f0c772de67e426e2ff30612e84fe9b6885b7c0e772e3abc2b89c8f427c4686a4da4b21c9f743edb71725d6a60a059f57ddf552f1c5b087c844a0d75
7
- data.tar.gz: 6938b46769b98422d3d9c8fd815d0160e3ab0994b8677dbe4f2b03684aa123491457a6971ecbe6bafefccbda6bfb48b4015006dbd472508f37ce5b40557d10a0
6
+ metadata.gz: 4fac233e33783e75022e6d453e01ae27f550d1f66203378830e3eaa592cc3427a81a922cf9211e367905d3fa9ea7a51000f46576c4dbd0543adea8412f826df0
7
+ data.tar.gz: 7e79bb3ec0832fafc01cbc5aaa4e2a362e51d8a7367fcd4bceb8ba19dff59ed11bb665c48ca54069b76176e9b90446172366436650d234d4292c0e5fde4f87a8
@@ -5,6 +5,10 @@ require 'gitlab'
5
5
  module PeopleGroup
6
6
  module Connectors
7
7
  class GitLab
8
+ attr_accessor :client
9
+
10
+ MAX_RETRIES = 3
11
+
8
12
  API_URL = ENV['GITLAB_API_V4_URL'] || 'https://gitlab.com/api/v4'
9
13
 
10
14
  def initialize(token: ENV['GITLAB_API_TOKEN'])
@@ -14,7 +18,18 @@ module PeopleGroup
14
18
  def find_gitlabber(field, query)
15
19
  return if !query || query.empty?
16
20
 
17
- possible_members = @client.group_members('gitlab-com', query: query)
21
+ possible_members = retry_on_error { @client.group_members('gitlab-com', query: query) }
22
+ if field === :email
23
+ possible_members.first
24
+ else
25
+ possible_members.find { |team_member| team_member.public_send(field) === query }
26
+ end
27
+ end
28
+
29
+ def find_gitlabber_on(field, query, group)
30
+ return if !query || query.empty?
31
+
32
+ possible_members = retry_on_error { @client.group_members(group, query: query) }
18
33
  if field === :email
19
34
  possible_members.first
20
35
  else
@@ -22,31 +37,37 @@ module PeopleGroup
22
37
  end
23
38
  end
24
39
 
40
+ def remove_group_member(group, user_id)
41
+ retry_on_error { @client.remove_group_member(group, user_id) }
42
+ end
43
+
25
44
  def create_issue(project, title, options = {})
26
- @client.create_issue(project, title, options)
45
+ retry_on_error do
46
+ @client.create_issue(project, title, options)
47
+ end
27
48
  end
28
49
 
29
50
  def create_issue_note(project, id, text)
30
- @client.create_issue_note(project, id, text)
51
+ retry_on_error { @client.create_issue_note(project, id, text) }
31
52
  end
32
53
 
33
54
  def get_onboarding_issues(project, args)
34
- @client.issues(project, args).auto_paginate
55
+ retry_on_error { @client.issues(project, args).auto_paginate }
35
56
  end
36
57
 
37
58
  def get_issues(project, args)
38
- @client.issues(project, args).auto_paginate
59
+ retry_on_error { @client.issues(project, args).auto_paginate }
39
60
  end
40
61
 
41
62
  def find_or_create_epic(group_id, title, options = {})
42
63
  epic = find_epic(group_id, title)
43
64
  reopen_epic(epic) if epic && epic.state == 'closed'
44
65
  options[:confidential] = true
45
- epic || @client.create_epic(group_id, title, options)
66
+ epic || retry_on_error { @client.create_epic(group_id, title, options) }
46
67
  end
47
68
 
48
69
  def commit_new_files_to_new_merge_request(project_id, branch_name, new_files, commit_message, description = nil)
49
- @client.create_branch(project_id, branch_name, 'master')
70
+ retry_on_error { @client.create_branch(project_id, branch_name, 'master') }
50
71
  actions = []
51
72
  new_files.each do |file|
52
73
  actions << {
@@ -56,11 +77,11 @@ module PeopleGroup
56
77
  }
57
78
  end
58
79
 
59
- @client.create_commit(project_id, branch_name, commit_message, actions)
80
+ retry_on_error { @client.create_commit(project_id, branch_name, commit_message, actions) }
60
81
 
61
82
  options = { source_branch: branch_name, target_branch: 'master', remove_source_branch: true }
62
83
  options[:description] = description if description
63
- @client.create_merge_request(project_id, commit_message, options)
84
+ retry_on_error { @client.create_merge_request(project_id, commit_message, options) }
64
85
  end
65
86
 
66
87
  def commit_change_to_new_merge_request_v2(project_id, branch_name, commit_message, description = nil, files_to_delete = [], files_to_update = [])
@@ -85,16 +106,16 @@ module PeopleGroup
85
106
 
86
107
  return unless actions.any?
87
108
 
88
- @client.create_branch(project_id, branch_name, 'master')
89
- @client.create_commit(project_id, branch_name, commit_message, actions)
109
+ retry_on_error { @client.create_branch(project_id, branch_name, 'master') }
110
+ retry_on_error { @client.create_commit(project_id, branch_name, commit_message, actions) }
90
111
 
91
112
  options = { source_branch: branch_name, target_branch: 'master', remove_source_branch: true }
92
113
  options[:description] = description if description
93
- @client.create_merge_request(project_id, commit_message, options)
114
+ retry_on_error { @client.create_merge_request(project_id, commit_message, options) }
94
115
  end
95
116
 
96
117
  def commit_change_to_new_merge_request(project_id, branch_name, file_path, file_with_change, commit_message, description = nil)
97
- @client.create_branch(project_id, branch_name, 'master')
118
+ retry_on_error { @client.create_branch(project_id, branch_name, 'master') }
98
119
  actions = [
99
120
  {
100
121
  action: 'update',
@@ -102,49 +123,59 @@ module PeopleGroup
102
123
  content: file_with_change
103
124
  }
104
125
  ]
105
- @client.create_commit(project_id, branch_name, commit_message, actions)
126
+ retry_on_error { @client.create_commit(project_id, branch_name, commit_message, actions) }
106
127
 
107
128
  options = { source_branch: branch_name, target_branch: 'master', remove_source_branch: true }
108
129
  options[:description] = description if description
109
- @client.create_merge_request(project_id, commit_message, options)
130
+ retry_on_error { @client.create_merge_request(project_id, commit_message, options) }
110
131
  end
111
132
 
112
133
  def create_epic_note(group_id, epic_id, text)
113
- @client.create_epic_note(group_id, epic_id, text)
134
+ retry_on_error { @client.create_epic_note(group_id, epic_id, text) }
114
135
  end
115
136
 
116
137
  def get_epics(group_id, options = {})
117
- @client.epics(group_id, options).auto_paginate
138
+ retry_on_error { @client.epics(group_id, options).auto_paginate }
118
139
  end
119
140
 
120
141
  def get_issue_epics(group_id, epic_iid)
121
- @client.epic_issues(group_id, epic_iid)
142
+ retry_on_error { @client.epic_issues(group_id, epic_iid) }
122
143
  end
123
144
 
124
145
  private
125
146
 
147
+ def retry_on_error
148
+ retries = 0
149
+
150
+ begin
151
+ yield
152
+ rescue Gitlab::Error::InternalServerError
153
+ retry if (retries += 1) < MAX_RETRIES
154
+ end
155
+ end
156
+
126
157
  def find_epic(group_id, title)
127
158
  args = {
128
159
  search: title
129
160
  }
130
- epics = @client.epics(group_id, args).auto_paginate
161
+ epics = retry_on_error { @client.epics(group_id, args).auto_paginate }
131
162
  epics.first
132
163
  end
133
164
 
134
165
  def create_branch(project_id, branch_name)
135
- @client.create_branch(project_id, branch_name, 'master')
166
+ retry_on_error { @client.create_branch(project_id, branch_name, 'master') }
136
167
  end
137
168
 
138
169
  def create_merge_request(project_id, title, options = {})
139
- @client.create_merge_request(project_id, title, options)
170
+ retry_on_error { @client.create_merge_request(project_id, title, options) }
140
171
  end
141
172
 
142
173
  def create_commit(project_id, branch, commit_message, actions)
143
- @client.create_commit(project_id, branch, commit_message, actions, {})
174
+ retry_on_error { @client.create_commit(project_id, branch, commit_message, actions, {}) }
144
175
  end
145
176
 
146
177
  def reopen_epic(epic)
147
- @client.edit_epic(epic.group_id, epic.iid, { state_event: 'reopen' })
178
+ retry_on_error { @client.edit_epic(epic.group_id, epic.iid, { state_event: 'reopen' }) }
148
179
  end
149
180
  end
150
181
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module PeopleGroup
4
4
  module Connectors
5
- VERSION = '0.1.25'
5
+ VERSION = '0.1.30'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peoplegroup-connectors
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.25
4
+ version: 0.1.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - lien van den steen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-02 00:00:00.000000000 Z
11
+ date: 2021-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gitlab