refer http://confluence.atlassian.com/display/JIRA/Creating+a+SOAP+Client for more
#!/usr/bin/env python
import suds
class Jira(object):
'providing JIRA scripts'
relativePath='rpc/soap/jirasoapservice-v2?wsdl'
def __init__(self,server,user,passwd):
'Jira constructor'
self.url = server + '/' + self.relativePath
self.client = suds.client.Client(self.url)
self.auth = self.client.service.login(user,passwd)
def __del__(self):
'Jira destuctor'
self.client.service.logout(self.auth)
def addComments(self,issueID,comments):
'add comments'
#TODO, should support multiple line of comments
self.client.service.addComment(self.auth, issueID, {'body': comments})
def getIssueStatus(self,issueID):
'get Issue status, Resolved, Integrated, ...'
statusID = self.getIssue(issueID)['status']
return self.getStatuses()[statusID]
def getIssue(self,issueID):
'get JIRA issue object'
return self.client.service.getIssue(self.auth,issueID)def getStatuses(self):
'return dictionary type of status {/'1/':/'Open/',/'2/':/'In Progress/',...}'
statusDict={}
statuses=self.client.service.getStatuses(self.auth)for index in range(0,len(statuses)):
key=statuses[index]['id']
value=statuses[index]['name']
statusDict[str(key)] = valuereturn statusDict
def main():
#test constants
server='http://localhost:8080'
issueID='HUDGITTEST-3'
user='gitdev'
passwd='xxxxxx'#trial
jira=Jira(server,user,passwd)
issue=jira.getIssue(issueID)
print 'issue status: '+jira.getIssueStatus(issueID)
print '*'*60
#print issue
#print '*'*60
#print issue['status']
#for eachKey in issue:
# print eachKey,issue[eachKey]
#jira.addComments(issueID,'#1 comments added by script')
#statuses=jira.client.service.getStatuses(jira.auth)
#print statuses[0]['id'],statuses[0]['name']if __name__ == '__main__':
main()