python-jenkins-developers team mailing list archive
-
python-jenkins-developers team
-
Mailing list archive
-
Message #00084
[Merge] lp:~soren/python-jenkins/add-crumb into lp:python-jenkins
Soren Hansen has proposed merging lp:~soren/python-jenkins/add-crumb into lp:python-jenkins.
Requested reviews:
Python Jenkins Developers (python-jenkins-developers)
For more details, see:
https://code.launchpad.net/~soren/python-jenkins/add-crumb/+merge/188155
Should actually fix bug #811044
--
https://code.launchpad.net/~soren/python-jenkins/add-crumb/+merge/188155
Your team Python Jenkins Developers is requested to review the proposed merge of lp:~soren/python-jenkins/add-crumb into lp:python-jenkins.
=== modified file 'jenkins/__init__.py'
--- jenkins/__init__.py 2013-08-14 11:57:11 +0000
+++ jenkins/__init__.py 2013-09-27 20:20:09 +0000
@@ -58,6 +58,7 @@
LAUNCHER_WINDOWS_SERVICE = 'hudson.os.windows.ManagedWindowsServiceLauncher'
INFO = 'api/json'
+CRUMB_URL = 'crumbIssuer/api/json'
JOB_INFO = 'job/%(name)s/api/json?depth=0'
JOB_NAME = 'job/%(name)s/api/json?tree=name'
Q_INFO = 'queue/api/json?depth=0'
@@ -154,6 +155,13 @@
else:
self.auth = None
+ def add_crumb(self, req):
+ response = self.jenkins_open(urllib2.Request(
+ self.server + CRUMB_URL), add_crumb=False)
+ if response:
+ data = json.loads(response)
+ req.add_header(data['crumbRequestField'], data['crumb'])
+
def get_job_info(self, name):
'''
Get job information dictionary.
@@ -200,14 +208,17 @@
for k, v in self.get_job_info(job_name).iteritems():
print k, v
- def jenkins_open(self, req):
+ def jenkins_open(self, req, add_crumb=True):
'''
+
Utility routine for opening an HTTP request to a Jenkins server. This
should only be used to extends the :class:`Jenkins` API.
'''
try:
if self.auth:
req.add_header('Authorization', self.auth)
+ if add_crumb:
+ self.add_crumb(req)
return urllib2.urlopen(req).read()
except urllib2.HTTPError, e:
# Jenkins's funky authentication means its nigh impossible to
Follow ups