From: Anrs Hu Date: Thu, 31 May 2012 07:04:26 +0000 (+0800) Subject: post should be get_opener() first X-Git-Tag: v0.2.23~289^2~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0c28a6be86f4693c32079709c19bdfdbf2623e64;p=tools%2Fpython-jenkinsapi.git post should be get_opener() first --- diff --git a/jenkinsapi/jenkins.py b/jenkinsapi/jenkins.py index 8548275..27707bd 100644 --- a/jenkinsapi/jenkins.py +++ b/jenkinsapi/jenkins.py @@ -40,7 +40,7 @@ class Jenkins(JenkinsBase): self.proxyport = proxyport self.proxyuser = proxyuser self.proxypass = proxypass - JenkinsBase.__init__(self, baseurl, poll=not formauth) + JenkinsBase.__init__(self, baseurl, formauth=formauth) def get_proxy_auth(self): return self.proxyhost, self.proxyport, self.proxyuser, self.proxypass @@ -149,7 +149,10 @@ class Jenkins(JenkinsBase): :param newjobname: name of new job, str :return: new Job obj """ - copy_job_url = "%screateItem?name=%s&mode=copy&from=%s" % (self.baseurl, newjobname, jobname) + qs = urllib.urlencode({'name': newjobname, + 'mode': 'copy', + 'from': jobname}) + copy_job_url = urlparse.urljoin(self.baseurl, "createItem?%s" % qs) self.post_data(copy_job_url, '') return Jenkins(self.baseurl).get_job(newjobname) diff --git a/jenkinsapi/jenkinsbase.py b/jenkinsapi/jenkinsbase.py index 684170f..97b81e3 100644 --- a/jenkinsapi/jenkinsbase.py +++ b/jenkinsapi/jenkinsbase.py @@ -23,12 +23,13 @@ class JenkinsBase(object): def __str__(self): raise NotImplemented - def __init__(self, baseurl, poll=True): + def __init__(self, baseurl, poll=True, formauth=False): """ Initialize a jenkins connection """ self.baseurl = baseurl - if poll: + self.formauth = formauth + if poll and not self.formauth: try: self.poll() except urllib2.HTTPError, hte: @@ -74,8 +75,8 @@ class JenkinsBase(object): def post_data(self, url, content): try: - request = urllib2.Request(url, content) - result = urllib2.urlopen(request).read().strip() + urlopen = self.get_jenkins_obj().get_opener() + return urlopen(url, data=content).read().strip() except urllib2.HTTPError, e: log.warn("Error post data %s" % url) log.exception(e) @@ -91,4 +92,4 @@ class JenkinsBase(object): log.debug( "Error reading %s" % url ) log.exception(e) raise - return html_result \ No newline at end of file + return html_result