I would like to be able to update an issue in Jira v5.1 from a Python script using the REST api. I have the following piece of code to extract the information of an existing issue, which works perfectly:
import urllib2
import urllib
import cookielib
import json
serverURL = 'http://jiraserver.com'
# Get the authentication cookie using the REST API
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
authURL = serverURL + '/rest/auth/latest/session'
creds = {'username' : jirauser, 'password' : passwd}
req = urllib2.Request(authURL)
req.add_data(json.dumps(creds))
req.add_header("Content-type", "application/json")
req.add_header("Accept", "application/json")
fp = opener.open(req)
fp.close()
queryURL = serverURL + '/rest/api/latest/issue/SANDBOX-150'
req = urllib2.Request(queryURL)
req.add_header("Content-type", "application/json")
req.add_header("Accept", "application/json")
fp = opener.open(req)
data = json.load(fp)
fp.close()
I would like to extend this to be able to update the same issue, and I have the following piece of code:
queryURL = serverURL + '/rest/api/latest/issue/SANDBOX-150'
issueUpdate = {
'update': {
'comment': [
{
'add': {
'body': 'this is a comment'
}
}
]
}
}
req = urllib2.Request(queryURL)
req.add_data(json.dumps(issueUpdate))
req.add_header("Content-type", "application/json")
req.add_header("Accept", "application/json")
fp = opener.open(req)
fp.close()
When I try to execute the code, I get the following error message:
File "/usr/lib64/python2.6/urllib2.py", line 397, in open
response = meth(req, response)
File "/usr/lib64/python2.6/urllib2.py", line 510, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib64/python2.6/urllib2.py", line 435, in error
return self._call_chain(*args)
File "/usr/lib64/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
File "/usr/lib64/python2.6/urllib2.py", line 518, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 405: Method Not Allowed
and the error points back to "fp = opener.open(req)" in my code.
I have tried to search the web to see if I could find out a solution but without luck. Does anyone know what I'm doing wrong?
Thanks and regards