peoplegroup-connectors 0.1.21 → 0.1.28

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: a7c2cd36966b5ee976f81e53150257aecb72cf423ca7b45ea90e0a24ec45e2e8
4
- data.tar.gz: 4dae4fecfd2e942bfd39775e3f32fb1875e9f4b4a6e107148ccac9c047e48c31
3
+ metadata.gz: c51711afa3c65e5a9c502191e2be499379f23874fcd9dc2474e47c4cbb9d05f0
4
+ data.tar.gz: e25cfbb760e93545fd6d45bd623cf56353405172bd068bbda26446e9986b89db
5
5
  SHA512:
6
- metadata.gz: d637c670afa1999c55401d0bba8ba93000a8ee93c5402ac29e4486541206bd26ab1a6c42afb9d2c5ae44b6e820874ea01d839bf5336c61ee40dd18cb5a7b00b8
7
- data.tar.gz: bf02e6c981836a92dbf937251b85c6ece2b39942be0495c8293452d3e5241a616140ed855bdc5185ca8bbf1667fb524822e04a207cbbbbfeceef6a5d8ffb0eb1
6
+ metadata.gz: a884ff041804f3fa6036d600f5b5ea23eb9ef93c962c1593eb8402b0815605af3888f5e5102eefeda630da7a4e6f9a18dd0a77f4f9db6c33286a1af6b99529d5
7
+ data.tar.gz: 585534f1e50e37783be491281aeeeb6cfcc3cc7498889d83ca0e8a511ab0968c516146b2608fae2d71d6b72d6917e3f607d0138a8995bcd66fc14256aa3a4230
@@ -98,6 +98,10 @@ module PeopleGroup
98
98
  @client.employee.table_data(employee_id, 'customEquity')
99
99
  end
100
100
 
101
+ def add_job_details(employee_id, data)
102
+ @client.employee.add_table_row(employee_id, 'jobInfo', data)
103
+ end
104
+
101
105
  def update_job_details(employee_id, data)
102
106
  current_data = job_details(employee_id) # it should only be one row as we just created this user
103
107
  row_id = current_data.first.dig('id')
@@ -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
@@ -33,8 +33,8 @@ module PeopleGroup
33
33
  @client.chat_getPermalink(channel: channel, message_ts: timestamp)
34
34
  end
35
35
 
36
- def send_message(channel:, text:, as_user: true, attachments: [], thread_ts: nil, reply_broadcast: false)
37
- @client.chat_postMessage(channel: channel, text: text, as_user: true, attachments: attachments, unfurl_links: false, thread_ts: thread_ts, reply_broadcast: reply_broadcast)
36
+ def send_message(channel:, text: '', as_user: true, attachments: [], thread_ts: nil, reply_broadcast: false, formatted_message: [])
37
+ @client.chat_postMessage(channel: channel, text: text, as_user: true, attachments: attachments, unfurl_links: false, thread_ts: thread_ts, reply_broadcast: reply_broadcast, blocks: formatted_message)
38
38
  end
39
39
 
40
40
  def update_message(channel:, timestamp:, text:, attachments: [])
@@ -2,6 +2,6 @@
2
2
 
3
3
  module PeopleGroup
4
4
  module Connectors
5
- VERSION = '0.1.21'
5
+ VERSION = '0.1.28'
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.21
4
+ version: 0.1.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - lien van den steen
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-18 00:00:00.000000000 Z
11
+ date: 2021-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gitlab
@@ -173,7 +173,7 @@ metadata:
173
173
  homepage_uri: https://gitlab.com/gitlab-com/people-group/peopleops-eng/connectors-gem
174
174
  source_code_uri: https://gitlab.com/gitlab-com/people-group/peopleops-eng/connectors-gem
175
175
  changelog_uri: https://gitlab.com/gitlab-com/people-group/peopleops-eng/connectors-gem
176
- post_install_message:
176
+ post_install_message:
177
177
  rdoc_options: []
178
178
  require_paths:
179
179
  - lib
@@ -189,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
189
  version: '0'
190
190
  requirements: []
191
191
  rubygems_version: 3.1.4
192
- signing_key:
192
+ signing_key:
193
193
  specification_version: 4
194
194
  summary: Library for our shared connectors.
195
195
  test_files: []