1
0
Fork 0
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:
Hugo Prudente 2023-03-26 08:31:06 +01:00 committed by GitHub
parent 997761878c
commit be7f11bf39
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 82 additions and 3 deletions

View file

@ -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).

View file

@ -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 = {

View file

@ -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 }}"