From: elhostis Date: Thu, 4 Apr 2013 10:02:28 +0000 (+0200) Subject: [FIX] ISSUE 70 - Jenkins need POST params and not GET params X-Git-Tag: v0.2.23~250^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c6fac28a494dd3729c05d15d4c5052d41d3b4930;p=tools%2Fpython-jenkinsapi.git [FIX] ISSUE 70 - Jenkins need POST params and not GET params --- diff --git a/jenkinsapi/jenkinsbase.py b/jenkinsapi/jenkinsbase.py index b17aab2..0e67644 100644 --- a/jenkinsapi/jenkinsbase.py +++ b/jenkinsapi/jenkinsbase.py @@ -1,3 +1,4 @@ +import urllib import urllib2 import logging import pprint @@ -86,10 +87,11 @@ class JenkinsBase(object): raise return result - def hit_url(self, url ): + def hit_url(self, url, params = None): fn_urlopen = self.get_jenkins_obj().get_opener() try: - stream = fn_urlopen( url ) + if params: stream = fn_urlopen( url, urllib.urlencode(params) ) + else: stream = fn_urlopen( url ) html_result = stream.read() except urllib2.HTTPError, e: log.debug( "Error reading %s" % url ) diff --git a/jenkinsapi/job.py b/jenkinsapi/job.py index 52b5b24..341721d 100644 --- a/jenkinsapi/job.py +++ b/jenkinsapi/job.py @@ -65,18 +65,20 @@ class Job(JenkinsBase): return self._element_tree def get_build_triggerurl(self, token=None, params=None): - if token is None and not params: + if token is None and params is None: extra = "build" elif params: if token: assert isinstance(token, str ), "token if provided should be a string." params['token'] = token - extra = "buildWithParameters?" + urllib.urlencode(params) + extra = "buildWithParameters" else: assert isinstance(token, str ), "token if provided should be a string." - extra = "build?" + urllib.urlencode({'token':token}) + params = dict() + params['token'] = token + extra = "build" buildurl = urlparse.urljoin( self.baseurl, extra ) - return buildurl + return buildurl, params def invoke(self, securitytoken=None, block=False, skip_if_running=False, invoke_pre_check_delay=3, invoke_block_delay=15, params=None): assert isinstance( invoke_pre_check_delay, (int, float) ) @@ -94,8 +96,8 @@ class Job(JenkinsBase): log.warn("Will re-schedule %s even though it is already running" % self.id() ) original_build_no = self.get_last_buildnumber() log.info( "Attempting to start %s on %s" % ( self.id(), repr(self.get_jenkins_obj()) ) ) - url = self.get_build_triggerurl(securitytoken, params) - html_result = self.hit_url(url) + url, params = self.get_build_triggerurl( securitytoken, params) + html_result = self.hit_url(url, params) assert len( html_result ) > 0 if invoke_pre_check_delay > 0: log.info("Waiting for %is to allow Jenkins to catch up" % invoke_pre_check_delay )