mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Add worklog functionality to jira module (#6210)
community.general#6209 Add worklog functionality to jira
This commit is contained in:
parent
997761878c
commit
be7f11bf39
3 changed files with 82 additions and 3 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
minor_changes:
|
||||||
|
- jira - add worklog functionality (https://github.com/ansible-collections/community.general/issues/6209, https://github.com/ansible-collections/community.general/pull/6210).
|
|
@ -6,6 +6,7 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2020, Per Abildgaard Toft <per@minfejl.dk> Search and update function
|
# Copyright (c) 2020, Per Abildgaard Toft <per@minfejl.dk> Search and update function
|
||||||
# Copyright (c) 2021, Brandon McNama <brandonmcnama@outlook.com> Issue attachment functionality
|
# Copyright (c) 2021, Brandon McNama <brandonmcnama@outlook.com> Issue attachment functionality
|
||||||
|
# Copyright (c) 2022, Hugo Prudente <hugo.kenshin+oss@gmail.com> Worklog functionality
|
||||||
#
|
#
|
||||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
@ -40,9 +41,10 @@ options:
|
||||||
type: str
|
type: str
|
||||||
required: true
|
required: true
|
||||||
aliases: [ command ]
|
aliases: [ command ]
|
||||||
choices: [ attach, comment, create, edit, fetch, link, search, transition, update ]
|
choices: [ attach, comment, create, edit, fetch, link, search, transition, update, worklog ]
|
||||||
description:
|
description:
|
||||||
- The operation to perform.
|
- The operation to perform.
|
||||||
|
- C(worklog) was added in community.genereal 6.5.0.
|
||||||
|
|
||||||
username:
|
username:
|
||||||
type: str
|
type: str
|
||||||
|
@ -171,7 +173,6 @@ options:
|
||||||
- When passed to comment, the data structure is merged at the first level since community.general 4.6.0. Useful to add JIRA properties for example.
|
- When passed to comment, the data structure is merged at the first level since community.general 4.6.0. Useful to add JIRA properties for example.
|
||||||
- Note that JIRA may not allow changing field values on specific transitions or states.
|
- Note that JIRA may not allow changing field values on specific transitions or states.
|
||||||
default: {}
|
default: {}
|
||||||
|
|
||||||
jql:
|
jql:
|
||||||
required: false
|
required: false
|
||||||
description:
|
description:
|
||||||
|
@ -287,6 +288,47 @@ EXAMPLES = r"""
|
||||||
value:
|
value:
|
||||||
internal: true
|
internal: true
|
||||||
|
|
||||||
|
# Add an workog to an existing issue
|
||||||
|
- name: Worklog on issue
|
||||||
|
community.general.jira:
|
||||||
|
uri: '{{ server }}'
|
||||||
|
username: '{{ user }}'
|
||||||
|
password: '{{ pass }}'
|
||||||
|
issue: '{{ issue.meta.key }}'
|
||||||
|
operation: worklog
|
||||||
|
comment: A worklog added by Ansible
|
||||||
|
fields:
|
||||||
|
timeSpentSeconds: 12000
|
||||||
|
|
||||||
|
- name: Workflow on issue with comment restricted visibility
|
||||||
|
community.general.jira:
|
||||||
|
uri: '{{ server }}'
|
||||||
|
username: '{{ user }}'
|
||||||
|
password: '{{ pass }}'
|
||||||
|
issue: '{{ issue.meta.key }}'
|
||||||
|
operation: worklog
|
||||||
|
comment: A worklog added by Ansible
|
||||||
|
comment_visibility:
|
||||||
|
type: role
|
||||||
|
value: Developers
|
||||||
|
fields:
|
||||||
|
timeSpentSeconds: 12000
|
||||||
|
|
||||||
|
- name: Workflow on issue with comment property to mark it internal
|
||||||
|
community.general.jira:
|
||||||
|
uri: '{{ server }}'
|
||||||
|
username: '{{ user }}'
|
||||||
|
password: '{{ pass }}'
|
||||||
|
issue: '{{ issue.meta.key }}'
|
||||||
|
operation: worklog
|
||||||
|
comment: A worklog added by Ansible
|
||||||
|
fields:
|
||||||
|
properties:
|
||||||
|
- key: 'sd.public.comment'
|
||||||
|
value:
|
||||||
|
internal: true
|
||||||
|
timeSpentSeconds: 12000
|
||||||
|
|
||||||
# Assign an existing issue using edit
|
# Assign an existing issue using edit
|
||||||
- name: Assign an issue using free-form fields
|
- name: Assign an issue using free-form fields
|
||||||
community.general.jira:
|
community.general.jira:
|
||||||
|
@ -438,7 +480,7 @@ class JIRA(StateModuleHelper):
|
||||||
uri=dict(type='str', required=True),
|
uri=dict(type='str', required=True),
|
||||||
operation=dict(
|
operation=dict(
|
||||||
type='str',
|
type='str',
|
||||||
choices=['attach', 'create', 'comment', 'edit', 'update', 'fetch', 'transition', 'link', 'search'],
|
choices=['attach', 'create', 'comment', 'edit', 'update', 'fetch', 'transition', 'link', 'search', 'worklog'],
|
||||||
aliases=['command'], required=True
|
aliases=['command'], required=True
|
||||||
),
|
),
|
||||||
username=dict(type='str'),
|
username=dict(type='str'),
|
||||||
|
@ -481,6 +523,7 @@ class JIRA(StateModuleHelper):
|
||||||
('operation', 'attach', ['issue', 'attachment']),
|
('operation', 'attach', ['issue', 'attachment']),
|
||||||
('operation', 'create', ['project', 'issuetype', 'summary']),
|
('operation', 'create', ['project', 'issuetype', 'summary']),
|
||||||
('operation', 'comment', ['issue', 'comment']),
|
('operation', 'comment', ['issue', 'comment']),
|
||||||
|
('operation', 'workflow', ['issue', 'comment']),
|
||||||
('operation', 'fetch', ['issue']),
|
('operation', 'fetch', ['issue']),
|
||||||
('operation', 'transition', ['issue', 'status']),
|
('operation', 'transition', ['issue', 'status']),
|
||||||
('operation', 'link', ['linktype', 'inwardissue', 'outwardissue']),
|
('operation', 'link', ['linktype', 'inwardissue', 'outwardissue']),
|
||||||
|
@ -535,6 +578,22 @@ class JIRA(StateModuleHelper):
|
||||||
url = self.vars.restbase + '/issue/' + self.vars.issue + '/comment'
|
url = self.vars.restbase + '/issue/' + self.vars.issue + '/comment'
|
||||||
self.vars.meta = self.post(url, data)
|
self.vars.meta = self.post(url, data)
|
||||||
|
|
||||||
|
@cause_changes(on_success=True)
|
||||||
|
def operation_worklog(self):
|
||||||
|
data = {
|
||||||
|
'comment': self.vars.comment
|
||||||
|
}
|
||||||
|
# if comment_visibility is specified restrict visibility
|
||||||
|
if self.vars.comment_visibility is not None:
|
||||||
|
data['visibility'] = self.vars.comment_visibility
|
||||||
|
|
||||||
|
# Use 'fields' to merge in any additional data
|
||||||
|
if self.vars.fields:
|
||||||
|
data.update(self.vars.fields)
|
||||||
|
|
||||||
|
url = self.vars.restbase + '/issue/' + self.vars.issue + '/worklog'
|
||||||
|
self.vars.meta = self.post(url, data)
|
||||||
|
|
||||||
@cause_changes(on_success=True)
|
@cause_changes(on_success=True)
|
||||||
def operation_edit(self):
|
def operation_edit(self):
|
||||||
data = {
|
data = {
|
||||||
|
|
|
@ -67,6 +67,24 @@
|
||||||
that:
|
that:
|
||||||
- assign is changed
|
- assign is changed
|
||||||
|
|
||||||
|
- name: Worklog on issue
|
||||||
|
community.general.jira:
|
||||||
|
uri: '{{ server }}'
|
||||||
|
username: '{{ user }}'
|
||||||
|
password: '{{ pass }}'
|
||||||
|
issue: '{{ issue.meta.key }}'
|
||||||
|
operation: worklog
|
||||||
|
comment: Worklog
|
||||||
|
fields:
|
||||||
|
timeSpentSeconds: 1200
|
||||||
|
register: worklog
|
||||||
|
- name: assert worklog -> with comment
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- worklog is changed
|
||||||
|
- worklog.meta.comment == 'Worklog'
|
||||||
|
- worklog.meta.timeSpentSeconds == 1200
|
||||||
|
|
||||||
- name: transition -> Resolved with comment
|
- name: transition -> Resolved with comment
|
||||||
community.general.jira:
|
community.general.jira:
|
||||||
uri: "{{ uri }}"
|
uri: "{{ uri }}"
|
||||||
|
|
Loading…
Reference in a new issue