Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- from jira.client import JIRA
- import logging
- class GraphItem:
- def __init__(self, in_issue, link_type, out_issue):
- self.in_issue = in_issue
- self.link_type = link_type
- self.out_issue = out_issue
- class IssueGraph:
- def __init__(self):
- logging.basicConfig(level=logging.INFO, format='%(funcName)-14s %(thread)-6d %(message)s')
- logging.info('Starting...')
- self.register = list()
- self.tracked = list()
- self.links = list()
- self.jac = JIRA(options={'server': 'http://10.4.3.1:89'}, basic_auth=('pm', 'ro'))
- def put_link(self, link):
- if link.id not in [item.id for item in self.links]:
- logging.info('Appending link %s to link register' % link.id)
- self.links.append(self.jac.issue_link(link.id))
- else:
- logging.info('Link %s already exists in link register' % link.id)
- def collect_links(self, key):
- logging.info('Looking for links for issue %s' % key)
- self.tracked.append(key)
- links = self.jac.issue(key).fields.issuelinks
- logging.info('Found %s links: %s' % (len(links), ', '.join(i.id for i in links)))
- for link in links:
- logging.info('processing link %s' % link.id)
- self.put_link(link)
- rel = None
- if hasattr(link, 'outwardIssue'):
- rel = link.outwardIssue.key
- else:
- rel = link.inwardIssue.key
- linked_issue = self.jac.issue(rel)
- if linked_issue.key not in self.tracked:
- return self.collect_links(linked_issue.key)
- else:
- logging.info('issue %s is already in tracked issues' % linked_issue.key)
- try:
- graph = IssueGraph()
- graph.collect_links('PMO-100')
- logging.info('saved %s links' % len(graph.links))
- for link in graph.links:
- logging.info('%s -> %s' % (link.outwardIssue.key, link.inwardIssue.key))
- exit(code=0)
- except Exception as e:
- print('exception: %s' % e.message)
- exit(code=-2)
Advertisement
Add Comment
Please, Sign In to add comment