From fbd5b7e407741f22107be50e854458066e4f6da6 Mon Sep 17 00:00:00 2001 From: Lars Hupfeldt Date: Thu, 13 Feb 2014 20:24:20 +0100 Subject: [PATCH] urllib compatibility --- jenkinsapi/api.py | 7 ++++++- jenkinsapi/fingerprint.py | 11 ++++++++--- jenkinsapi/jenkins.py | 15 +++++++++++---- jenkinsapi/job.py | 8 +++++++- jenkinsapi/node.py | 9 +++++++-- jenkinsapi/utils/requester.py | 8 +++++++- jenkinsapi/view.py | 9 +++++++-- 7 files changed, 53 insertions(+), 14 deletions(-) diff --git a/jenkinsapi/api.py b/jenkinsapi/api.py index 948f4de..156f3ac 100644 --- a/jenkinsapi/api.py +++ b/jenkinsapi/api.py @@ -8,7 +8,12 @@ import os import time import logging -from urllib2 import urlparse +try: + from urllib import parse as urlparse +except ImportError: + # Python3 + from urllib2 import urlparse + from jenkinsapi import constants from jenkinsapi.jenkins import Jenkins from jenkinsapi.artifact import Artifact diff --git a/jenkinsapi/fingerprint.py b/jenkinsapi/fingerprint.py index 9a98914..271415a 100644 --- a/jenkinsapi/fingerprint.py +++ b/jenkinsapi/fingerprint.py @@ -5,7 +5,12 @@ Module for jenkinsapi Fingerprint from jenkinsapi.jenkinsbase import JenkinsBase from jenkinsapi.custom_exceptions import ArtifactBroken -import urllib2 +try: + from urllib2 import HTTPError +except ImportError: + # Python3 + from urllib.error import HTTPError + import re import logging @@ -45,7 +50,7 @@ class Fingerprint(JenkinsBase): try: self.poll() self.unknown = False - except urllib2.HTTPError as err: + except HTTPError as err: # We can't really say anything about the validity of # fingerprints not found -- but the artifact can still # exist, so it is not possible to definitely say they are @@ -86,7 +91,7 @@ class Fingerprint(JenkinsBase): assert self.valid() except AssertionError: raise ArtifactBroken("Artifact %s seems to be broken, check %s" % (self.id_, self.baseurl)) - except urllib2.HTTPError: + except HTTPError: raise ArtifactBroken("Unable to validate artifact id %s using %s" % (self.id_, self.baseurl)) return True diff --git a/jenkinsapi/jenkins.py b/jenkinsapi/jenkins.py index 01fbf07..d917111 100644 --- a/jenkinsapi/jenkins.py +++ b/jenkinsapi/jenkins.py @@ -4,9 +4,16 @@ Module for jenkinsapi Jenkins object import json -import urllib + +try: + import urlparse + from urllib import quote as urlquote, urlencode +except ImportError: + # Python3 + import urllib.parse as urlparse + from urllib.parse import quote as urlquote, urlencode + import logging -import urlparse from jenkinsapi import config from jenkinsapi.executors import Executors @@ -227,7 +234,7 @@ class Jenkins(JenkinsBase): def get_node_url(self, nodename=""): """Return the url for nodes""" - url = urlparse.urljoin(self.base_server_url(), 'computer/%s' % urllib.quote(nodename)) + url = urlparse.urljoin(self.base_server_url(), 'computer/%s' % urlquote(nodename)) return url def get_queue_url(self): @@ -299,7 +306,7 @@ class Jenkins(JenkinsBase): 'launcher': {'stapler-class': 'hudson.slaves.JNLPLauncher'} }) } - url = self.get_node_url() + "doCreateItem?%s" % urllib.urlencode(params) + url = self.get_node_url() + "doCreateItem?%s" % urlencode(params) self.requester.get_and_confirm_status(url) return Node(nodename=name, baseurl=self.get_node_url(nodename=name), jenkins_obj=self) diff --git a/jenkinsapi/job.py b/jenkinsapi/job.py index b1668d0..ae3abc2 100644 --- a/jenkinsapi/job.py +++ b/jenkinsapi/job.py @@ -4,7 +4,13 @@ Module for jenkinsapi Job import json import logging -import urlparse + +try: + import urlparse +except ImportError: + # Python3 + import urllib.parse as urlparse + import xml.etree.ElementTree as ET from collections import defaultdict from time import sleep diff --git a/jenkinsapi/node.py b/jenkinsapi/node.py index 8c5a6da..02d0de6 100644 --- a/jenkinsapi/node.py +++ b/jenkinsapi/node.py @@ -4,7 +4,12 @@ Module for jenkinsapi Node class from jenkinsapi.jenkinsbase import JenkinsBase import logging -import urllib + +try: + from urllib import quote as urlquote +except ImportError: + # Python3 + from urllib.parse import quote as urlquote log = logging.getLogger(__name__) @@ -88,7 +93,7 @@ class Node(JenkinsBase): : param message: optional string can be used to explain why you are taking this node offline """ initial_state = self.is_temporarily_offline() - url = self.baseurl + "/toggleOffline?offlineMessage=" + urllib.quote(message) + url = self.baseurl + "/toggleOffline?offlineMessage=" + urlquote(message) html_result = self.jenkins.requester.get_and_confirm_status(url) self.poll() log.debug(html_result) diff --git a/jenkinsapi/utils/requester.py b/jenkinsapi/utils/requester.py index 0460b99..2116c91 100644 --- a/jenkinsapi/utils/requester.py +++ b/jenkinsapi/utils/requester.py @@ -3,7 +3,13 @@ Module for jenkinsapi requester (which is a wrapper around python-requests) """ import requests -import urlparse + +try: + import urlparse +except ImportError: + # Python3 + import urllib.parse as urlparse + from jenkinsapi.custom_exceptions import JenkinsAPIException # import logging diff --git a/jenkinsapi/view.py b/jenkinsapi/view.py index 3371800..9afd42f 100644 --- a/jenkinsapi/view.py +++ b/jenkinsapi/view.py @@ -1,7 +1,12 @@ """ Module for jenkinsapi views """ -import urllib +try: + from urllib import urlencode +except ImportError: + # Python3 + from urllib.parse import urlencode + import logging from jenkinsapi.jenkinsbase import JenkinsBase @@ -142,7 +147,7 @@ class View(JenkinsBase): data[job.name] = 'on' data['json'] = data.copy() - data = urllib.urlencode(data) + data = urlencode(data) self.get_jenkins_obj().requester.post_and_confirm_status( '%s/configSubmit' % self.baseurl, data=data) self.poll() -- 2.34.1