post should be get_opener() first
authorAnrs Hu <anders.x.hu@gmail.com>
Thu, 31 May 2012 07:04:26 +0000 (15:04 +0800)
committerAnrs Hu <anders.x.hu@gmail.com>
Thu, 31 May 2012 07:04:26 +0000 (15:04 +0800)
jenkinsapi/jenkins.py
jenkinsapi/jenkinsbase.py

index 8548275b9167d3f63a6ccd1e93766cab63ba6cd9..27707bd5229d06e788d8d87fee19f23933652eb2 100644 (file)
@@ -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)
 
index 684170f8842a5c555db06d7cfbf71c0930b57543..97b81e325d20b130a676473d1f488df108e7e9da 100644 (file)
@@ -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