Skip to content

Commit c3de69a

Browse files
mjticemjtice
andauthored
New action 'get_issue_links' (#69)
* New action get_issue_links * overarching get_issue action can call get_issue_links * added get_issue_links to README * add get_issue_links to formatters and adjust priority * bump pack version * fixing formatting --------- Co-authored-by: mjtice <[email protected]>
1 parent 8643af4 commit c3de69a

File tree

8 files changed

+65
-5
lines changed

8 files changed

+65
-5
lines changed

CHANGES.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Change Log
22

3+
## 2.6.0
4+
5+
- Add new ``jira.get_issue_links`` action
6+
7+
- Evaluate if an issue has a priority set before attempting to get the priority
8+
39
## 2.5.1
410

511
- Improve handling of `priority` field in update_field_value action to address [#65]

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ The sensor monitors for new tickets and sends a trigger into the system whenever
125125
* ``get_issue`` - Retrieve information about a particular JIRA issue.
126126
* ``get_issue_attachments`` - Retrieve attachments for a particular JIRA issue.
127127
* ``get_issue_comments`` - Retrieve comments for a particular JIRA issue.
128+
* ``get_issue_links`` - Retrieve linked issues for a particular JIRA issue.
128129
* ``link_issue`` - Link one JIRA issue to another JIRA issue.
129130
* ``search_issues`` - Search JIRA issues with a JQL query.
130131
* ``transition_issue`` - Do a transition on a JIRA issue / ticket.

actions/get_issue.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88

99
class GetJiraIssueAction(BaseJiraAction):
1010
def run(self, issue_key, include_comments=False, include_attachments=False,
11-
include_customfields=False, include_components=False, include_subtasks=False):
11+
include_customfields=False, include_components=False, include_subtasks=False,
12+
include_links=False):
1213
issue = self._client.issue(issue_key)
1314
result = to_issue_dict(issue=issue, include_comments=include_comments,
1415
include_attachments=include_attachments,
1516
include_customfields=include_customfields,
1617
include_components=include_components,
17-
include_subtasks=include_subtasks)
18+
include_subtasks=include_subtasks,
19+
include_links=include_links)
1820
return result

actions/get_issue.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,8 @@ parameters:
3434
description: True to include custom fields.
3535
required: true
3636
default: false
37+
include_links:
38+
type: boolean
39+
description: True to include linked issues.
40+
required: true
41+
default: false

actions/get_issue_links.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from lib.base import BaseJiraAction
2+
from lib.formatters import to_links_dict
3+
4+
__all__ = [
5+
'GetJiraIssueLinksAction'
6+
]
7+
8+
9+
class GetJiraIssueLinksAction(BaseJiraAction):
10+
def run(self, issue_key):
11+
issue = self._client.issue(issue_key)
12+
13+
result = [to_links_dict(i) for i in issue.fields.issuelinks]
14+
return result

actions/get_issue_links.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
name: get_issue_links
3+
runner_type: python-script
4+
description: Retrieve links for a particular JIRA issue.
5+
enabled: true
6+
entry_point: get_issue_links.py
7+
parameters:
8+
issue_key:
9+
type: string
10+
description: Issue key (e.g. PROJECT-1000).
11+
required: true

actions/lib/formatters.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55

66

77
def to_issue_dict(issue, include_comments=False, include_attachments=False,
8-
include_customfields=False, include_components=False, include_subtasks=False):
8+
include_customfields=False, include_components=False, include_subtasks=False,
9+
include_links=False):
910
"""
1011
:rtype: ``dict``
1112
"""
@@ -34,7 +35,7 @@ def to_issue_dict(issue, include_comments=False, include_attachments=False,
3435
'summary': issue.fields.summary,
3536
'description': issue.fields.description,
3637
'status': issue.fields.status.name,
37-
'priority': issue.fields.priority.name,
38+
'priority': issue.fields.priority.name if hasattr(issue.fields, 'priority') else None,
3839
'resolution': resolution,
3940
'labels': issue.fields.labels if hasattr(issue.fields, 'labels') else [],
4041
'reporter': reporter,
@@ -71,6 +72,9 @@ def to_issue_dict(issue, include_comments=False, include_attachments=False,
7172
if include_subtasks:
7273
result['subtasks'] = [to_subtask_dict(s) for s in issue.fields.subtasks]
7374

75+
if include_links:
76+
result['links'] = [to_links_dict(i) for i in issue.fields.issuelinks]
77+
7478
return result
7579

7680

@@ -121,6 +125,23 @@ def to_attachment_dict(attachment):
121125
return result
122126

123127

128+
def to_links_dict(issue):
129+
"""
130+
:rtype: ``dict``
131+
"""
132+
result = {
133+
'id': issue.raw.get('id'),
134+
'key': issue.raw.get('outwardIssue', issue.raw.get('inwardIssue')).get('key'),
135+
'summary': issue.raw.get('outwardIssue', issue.raw.get('inwardIssue'))
136+
.get('fields').get('summary'),
137+
'status': issue.raw.get('outwardIssue', issue.raw.get('inwardIssue')).get('fields')
138+
.get('status').get('name'),
139+
'type': issue.raw.get('type').get('outward') if issue.raw.get('outwardIssue')
140+
else issue.raw.get('type').get('inward'),
141+
}
142+
return result
143+
144+
124145
def fmt_field_value(field, value):
125146
"""
126147
Returns specific field values in formats required by JIRA

pack.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ keywords:
66
- issues
77
- ticket management
88
- project management
9-
version: 2.5.1
9+
version: 2.6.0
1010
python_versions:
1111
- "3"
1212
author : StackStorm, Inc.

0 commit comments

Comments
 (0)