Class: GitlabQuality::TestTooling::GitlabClient::IssuesClient
- Inherits:
-
GitlabClient
- Object
- GitlabClient
- GitlabQuality::TestTooling::GitlabClient::IssuesClient
show all
- Defined in:
- lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb
Overview
Constant Summary
collapse
- REPORTER_ACCESS_LEVEL =
20
Constants inherited
from GitlabClient
GitlabClient::MAX_RETRY_ATTEMPTS, GitlabClient::RETRY_BACK_OFF_DELAY
Instance Method Summary
collapse
-
#add_note_to_issue_discussion_as_thread(iid:, discussion_id:, note:) ⇒ Object
-
#assert_user_permission! ⇒ Object
-
#create_issue(title:, description:, labels:, issue_type: 'issue', assignee_id: nil, due_date: nil, confidential: false) ⇒ Object
-
#create_issue_discussion(iid:, note:) ⇒ Object
-
#create_issue_link(project:, issue_iid:, target_project_id:, target_issue_iid:, link_type: 'is_blocked_by') ⇒ Object
-
#create_issue_note(iid:, note:) ⇒ Object
-
#edit_issue(iid:, options: {}) ⇒ Object
-
#edit_issue_note(issue_iid:, note_id:, note:) ⇒ Object
-
#find_commit(project, sha) ⇒ Object
-
#find_commit_diff(project, sha) ⇒ Object
-
#find_commit_parent(project, sha) ⇒ Object
-
#find_deployments(project, environment:, status:, order_by: 'id', sort: 'desc') ⇒ Object
-
#find_issue_discussions(iid:) ⇒ Object
-
#find_issue_notes(iid:) ⇒ Object
-
#find_issues(iid: nil, options: {}, &select) ⇒ Object
-
#find_pipeline(project, pipeline_id) ⇒ Object
-
#find_user_id(username:) ⇒ Object
-
#get_note_award_emojis(issue_iid:, note_id:) ⇒ Object
-
#issue_links(project:, issue_iid:, options: {}) ⇒ Object
-
#related_merge_requests(iid:) ⇒ Object
-
#upload_file(file_fullpath:) ⇒ Object
#handle_gitlab_client_exceptions, #ignore_gitlab_client_exceptions, #initialize, #post_exception_to_slack
Instance Method Details
#add_note_to_issue_discussion_as_thread(iid:, discussion_id:, note:) ⇒ Object
144
145
146
147
148
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 144
def add_note_to_issue_discussion_as_thread(iid:, discussion_id:, note:)
handle_gitlab_client_exceptions do
client.add_note_to_issue_discussion_as_thread(project, iid, discussion_id, body: note)
end
end
|
#assert_user_permission! ⇒ Object
47
48
49
50
51
52
53
54
55
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 47
def assert_user_permission!
handle_gitlab_client_exceptions do
member = client.team_member(project, user.id)
abort_not_permitted(member.access_level) if member.access_level < REPORTER_ACCESS_LEVEL
end
rescue Gitlab::Error::NotFound
abort_member_not_found(user)
end
|
#create_issue(title:, description:, labels:, issue_type: 'issue', assignee_id: nil, due_date: nil, confidential: false) ⇒ Object
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 87
def create_issue(title:, description:, labels:, issue_type: 'issue', assignee_id: nil, due_date: nil, confidential: false)
attrs = {
issue_type: issue_type,
description: description,
labels: labels,
assignee_id: assignee_id,
due_date: due_date,
confidential: confidential
}.compact
handle_gitlab_client_exceptions do
client.create_issue(project, title, attrs)
end
end
|
#create_issue_discussion(iid:, note:) ⇒ Object
138
139
140
141
142
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 138
def create_issue_discussion(iid:, note:)
handle_gitlab_client_exceptions do
client.create_issue_discussion(project, iid, body: note)
end
end
|
#create_issue_link(project:, issue_iid:, target_project_id:, target_issue_iid:, link_type: 'is_blocked_by') ⇒ Object
102
103
104
105
106
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 102
def create_issue_link(project:, issue_iid:, target_project_id:, target_issue_iid:, link_type: 'is_blocked_by')
handle_gitlab_client_exceptions do
client.create_issue_link(project, issue_iid, target_project_id, target_issue_iid, link_type)
end
end
|
#create_issue_note(iid:, note:) ⇒ Object
120
121
122
123
124
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 120
def create_issue_note(iid:, note:)
handle_gitlab_client_exceptions do
client.create_issue_note(project, iid, note)
end
end
|
#edit_issue(iid:, options: {}) ⇒ Object
114
115
116
117
118
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 114
def edit_issue(iid:, options: {})
handle_gitlab_client_exceptions do
client.edit_issue(project, iid, options)
end
end
|
#edit_issue_note(issue_iid:, note_id:, note:) ⇒ Object
126
127
128
129
130
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 126
def edit_issue_note(issue_iid:, note_id:, note:)
handle_gitlab_client_exceptions do
client.edit_issue_note(project, issue_iid, note_id, note)
end
end
|
#find_commit(project, sha) ⇒ Object
169
170
171
172
173
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 169
def find_commit(project, sha)
handle_gitlab_client_exceptions do
client.commit(project, sha)
end
end
|
#find_commit_diff(project, sha) ⇒ Object
184
185
186
187
188
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 184
def find_commit_diff(project, sha)
handle_gitlab_client_exceptions do
client.commit_diff(project, sha)
end
end
|
#find_commit_parent(project, sha) ⇒ Object
175
176
177
178
179
180
181
182
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 175
def find_commit_parent(project, sha)
handle_gitlab_client_exceptions do
client.commit(project, sha).parent_ids.last
end
end
|
#find_deployments(project, environment:, status:, order_by: 'id', sort: 'desc') ⇒ Object
190
191
192
193
194
195
196
197
198
199
200
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 190
def find_deployments(project, environment:, status:, order_by: 'id', sort: 'desc')
handle_gitlab_client_exceptions do
client.deployments(
project,
environment: environment,
status: status,
order_by: order_by,
sort: sort
)
end
end
|
#find_issue_discussions(iid:) ⇒ Object
81
82
83
84
85
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 81
def find_issue_discussions(iid:)
handle_gitlab_client_exceptions do
client.issue_discussions(project, iid, order_by: 'created_at', sort: 'asc').auto_paginate
end
end
|
#find_issue_notes(iid:) ⇒ Object
69
70
71
72
73
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 69
def find_issue_notes(iid:)
handle_gitlab_client_exceptions do
client.issue_notes(project, iid, order_by: 'created_at', sort: 'asc', activity_filter: 'only_comments').auto_paginate
end
end
|
#find_issues(iid: nil, options: {}, &select) ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 57
def find_issues(iid: nil, options: {}, &select)
select ||= :itself
handle_gitlab_client_exceptions do
break [client.issue(project, iid)].select(&select) if iid
client.issues(project, options)
.auto_paginate
.select(&select)
end
end
|
#find_pipeline(project, pipeline_id) ⇒ Object
163
164
165
166
167
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 163
def find_pipeline(project, pipeline_id)
handle_gitlab_client_exceptions do
client.pipeline(project, pipeline_id)
end
end
|
#find_user_id(username:) ⇒ Object
150
151
152
153
154
155
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 150
def find_user_id(username:)
handle_gitlab_client_exceptions do
user = client.users(username: username)&.first
user['id'] unless user.nil?
end
end
|
#get_note_award_emojis(issue_iid:, note_id:) ⇒ Object
132
133
134
135
136
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 132
def get_note_award_emojis(issue_iid:, note_id:)
handle_gitlab_client_exceptions do
client.issue_note_award_emoji(project, issue_iid, note_id)
end
end
|
#issue_links(project:, issue_iid:, options: {}) ⇒ Object
108
109
110
111
112
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 108
def issue_links(project:, issue_iid:, options: {})
handle_gitlab_client_exceptions do
client.issue_links(project, issue_iid, options)
end
end
|
75
76
77
78
79
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 75
def related_merge_requests(iid:)
handle_gitlab_client_exceptions do
client.related_merge_requests(project, iid).auto_paginate
end
end
|
#upload_file(file_fullpath:) ⇒ Object
157
158
159
160
161
|
# File 'lib/gitlab_quality/test_tooling/gitlab_client/issues_client.rb', line 157
def upload_file(file_fullpath:)
ignore_gitlab_client_exceptions do
client.upload_file(project, file_fullpath)
end
end
|