Hi,
I would like to be able to update an issue in Jira from a Python script using the REST api. I have the following piece of code, which enables me to extract the information of an existing issue, which works perfect:
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.
Community moderators have prevented the ability to post new answers.
Caveat: I didn't spend all that much time staring at things.
My thought is that opener.open is doing a GET rather than a POST, though I just looked at the impl of urllib and it says it does POST if you give a data thing to it... so I'm not sure.
Thoughts:
https://marketplace.atlassian.com/plugins/com.atlassian.jira.jira-python-rest Someone implemented a easy peesy(sp?) thing for doing all things rest against JIRA. It's actaully pretty sweet.
Also, I hated trying to use urllib. Requests made my life easier.
http://docs.python-requests.org/en/latest/
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.