Guest User

Untitled

a guest
Apr 12th, 2013
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.10 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from jira.client import JIRA
  3. import logging
  4.  
  5.  
  6. class GraphItem:
  7.  
  8.     def __init__(self, in_issue, link_type, out_issue):
  9.         self.in_issue = in_issue
  10.         self.link_type = link_type
  11.         self.out_issue = out_issue
  12.  
  13.  
  14. class IssueGraph:
  15.  
  16.     def __init__(self):
  17.         logging.basicConfig(level=logging.INFO, format='%(funcName)-14s %(thread)-6d %(message)s')
  18.         logging.info('Starting...')
  19.         self.register = list()
  20.         self.tracked = list()
  21.         self.links = list()
  22.         self.jac = JIRA(options={'server': 'http://10.4.3.1:89'}, basic_auth=('pm', 'ro'))
  23.  
  24.     def put_link(self, link):
  25.         if link.id not in [item.id for item in self.links]:
  26.             logging.info('Appending link %s to link register' % link.id)
  27.             self.links.append(self.jac.issue_link(link.id))
  28.         else:
  29.             logging.info('Link %s already exists in link register' % link.id)
  30.  
  31.  
  32.     def collect_links(self, key):
  33.         logging.info('Looking for links for issue %s' % key)
  34.         self.tracked.append(key)
  35.         links = self.jac.issue(key).fields.issuelinks
  36.         logging.info('Found %s links: %s' % (len(links), ', '.join(i.id for i in links)))
  37.         for link in links:
  38.             logging.info('processing link %s' % link.id)
  39.             self.put_link(link)
  40.             rel = None
  41.             if hasattr(link, 'outwardIssue'):
  42.                 rel = link.outwardIssue.key
  43.             else:
  44.                 rel = link.inwardIssue.key
  45.             linked_issue = self.jac.issue(rel)
  46.             if linked_issue.key not in self.tracked:
  47.                 return self.collect_links(linked_issue.key)
  48.             else:
  49.                 logging.info('issue %s is already in tracked issues' % linked_issue.key)
  50.  
  51. try:
  52.     graph = IssueGraph()
  53.     graph.collect_links('PMO-100')
  54.     logging.info('saved %s links' % len(graph.links))
  55.     for link in graph.links:
  56.         logging.info('%s -> %s' % (link.outwardIssue.key, link.inwardIssue.key))
  57.     exit(code=0)
  58. except Exception as e:
  59.     print('exception: %s' % e.message)
  60.     exit(code=-2)
Advertisement
Add Comment
Please, Sign In to add comment