Use six.moves.urllib instead of urllib/urllib2/urlparse

In Python 3, these modules are reorganized.

Reviewed-By: David Kupka <dkupka@redhat.com>
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
Reviewed-By: Martin Basti <mbasti@redhat.com>
This commit is contained in:
Petr Viktorin
2015-09-14 12:52:29 +02:00
committed by Jan Cholasta
parent 7f1204a42c
commit 70b37a956c
18 changed files with 77 additions and 71 deletions

View File

@@ -25,11 +25,12 @@ import os
import re
import traceback
from urllib2 import urlparse
import ldap
import socket
import time
from six.moves.urllib.parse import urlparse
from ipapython import ipautil
from ipaserver.install import replication, dsinstance, installutils
from ipaserver.install import bindinstance, cainstance, certs
@@ -376,7 +377,7 @@ def get_ruv(realm, host, dirman_passwd, nolookup=False):
data = re.match('\{replica (\d+) (ldap://.*:\d+)\}(\s+\w+\s+\w*){0,1}', ruv)
if data:
rid = data.group(1)
(scheme, netloc, path, params, query, fragment) = urlparse.urlparse(data.group(2))
(scheme, netloc, path, params, query, fragment) = urlparse(data.group(2))
servers.append((netloc, rid))
else:
print("unable to decode: %s" % ruv)

View File

@@ -25,12 +25,12 @@ from __future__ import print_function
import sys
import os
import urlparse
import time
import tempfile
import gssapi
import SSSDConfig
from six.moves.urllib.parse import urlsplit
from optparse import OptionParser
from ipalib import api, errors
@@ -396,7 +396,7 @@ def main():
root_logger.debug('Executing DNS discovery')
if ret == ipadiscovery.NO_LDAP_SERVER:
root_logger.debug('Autodiscovery did not find LDAP server')
s = urlparse.urlsplit(api.env.xmlrpc_uri)
s = urlsplit(api.env.xmlrpc_uri)
server = [s.netloc]
root_logger.debug('Setting server to %s' % s.netloc)
else:

View File

@@ -27,7 +27,6 @@ try:
import os
import time
import socket
import urlparse
import tempfile
import getpass
from ConfigParser import RawConfigParser
@@ -38,6 +37,7 @@ try:
import nss.nss as nss
import SSSDConfig
from six.moves.urllib.parse import urlparse, urlunparse
from ipapython.ipa_log_manager import standard_logging_setup, root_logger
from ipaclient import ipadiscovery
@@ -1877,7 +1877,7 @@ def get_ca_certs_from_file(url):
'''
try:
parsed = urlparse.urlparse(url, 'file')
parsed = urlparse(url, 'file')
except Exception:
raise errors.FileError(reason="unable to parse file url '%s'" % url)
@@ -2014,16 +2014,16 @@ def get_ca_certs(fstore, options, server, basedn, realm):
ca_file = CACERT + ".new"
def ldap_url():
return urlparse.urlunparse(('ldap', ipautil.format_netloc(server),
'', '', '', ''))
return urlunparse(('ldap', ipautil.format_netloc(server),
'', '', '', ''))
def file_url():
return urlparse.urlunparse(('file', '', options.ca_cert_file,
'', '', ''))
return urlunparse(('file', '', options.ca_cert_file,
'', '', ''))
def http_url():
return urlparse.urlunparse(('http', ipautil.format_netloc(server),
'/ipa/config/ca.crt', '', '', ''))
return urlunparse(('http', ipautil.format_netloc(server),
'/ipa/config/ca.crt', '', '', ''))
interactive = not options.unattended

View File

@@ -20,7 +20,8 @@
import os
import tempfile
import shutil
import urlparse
from six.moves.urllib.parse import urlsplit
from ipapython import (admintool, ipautil, ipaldap, sysrestore, dogtag,
certmonger, certdb)
@@ -51,7 +52,7 @@ class CertUpdate(admintool.AdminTool):
api.bootstrap(context='cli_installer')
api.finalize()
server = urlparse.urlsplit(api.env.jsonrpc_uri).hostname
server = urlsplit(api.env.jsonrpc_uri).hostname
ldap = ipaldap.IPAdmin(server)
tmpdir = tempfile.mkdtemp(prefix="tmp-")

View File

@@ -29,7 +29,6 @@ of the process.
For the per-request thread-local information, see `ipalib.request`.
"""
import urlparse
from ConfigParser import RawConfigParser, ParsingError
from types import NoneType
import os
@@ -37,6 +36,7 @@ from os import path
import sys
import six
from six.moves.urllib.parse import urlparse, urlunparse
from ipapython.dn import DN
from ipalib.base import check_name
@@ -559,9 +559,9 @@ class Env(object):
xmlrpc_uri = defaults.get('xmlrpc_uri')
if xmlrpc_uri:
(scheme, netloc, uripath, params, query, fragment
) = urlparse.urlparse(xmlrpc_uri)
) = urlparse(xmlrpc_uri)
uripath = uripath.replace('/xml', '/json', 1)
self.jsonrpc_uri = urlparse.urlunparse((
self.jsonrpc_uri = urlunparse((
scheme, netloc, uripath, params, query, fragment))
self._merge(**defaults)

View File

@@ -31,14 +31,11 @@ from ipapython.nsslib import NSSConnection
import base64
import uuid
import urllib
import urllib2
import httplib
import urlparse
import qrcode
import os
import six
from six.moves import urllib
if six.PY3:
unicode = str
@@ -339,8 +336,8 @@ class otptoken_add(LDAPCreate):
args['counter'] = entry_attrs['ipatokenhotpcounter']
# Build the URI
label = urllib.quote(entry_attrs['ipatokenuniqueid'])
parameters = urllib.urlencode(args)
label = urllib.parse.quote(entry_attrs['ipatokenuniqueid'])
parameters = urllib.parse.urlencode(args)
uri = u'otpauth://%s/%s:%s?%s' % (options['type'], issuer, label, parameters)
setattr(context, 'uri', uri)
@@ -479,14 +476,14 @@ class otptoken_remove_managedby(LDAPRemoveMember):
member_attributes = ['managedby']
class HTTPSHandler(urllib2.HTTPSHandler):
class HTTPSHandler(urllib.request.HTTPSHandler):
"Opens SSL HTTPS connections that perform hostname validation."
def __init__(self, **kwargs):
self.__kwargs = kwargs
# Can't use super() because the parent is an old-style class.
urllib2.HTTPSHandler.__init__(self)
urllib.request.HTTPSHandler.__init__(self)
def __inner(self, host, **kwargs):
tmp = self.__kwargs.copy()
@@ -496,6 +493,7 @@ class HTTPSHandler(urllib2.HTTPSHandler):
return NSSConnection(host, **tmp)
def https_open(self, req):
# pylint: disable=no-member
return self.do_open(self.__inner, req)
@register()
@@ -519,10 +517,12 @@ class otptoken_sync(Local):
status = {'result': {self.header: 'unknown'}}
# Get the sync URI.
segments = list(urlparse.urlparse(self.api.env.xmlrpc_uri))
segments = list(urllib.parse.urlparse(self.api.env.xmlrpc_uri))
assert segments[0] == 'https' # Ensure encryption.
segments[2] = segments[2].replace('/xml', '/session/sync_token')
sync_uri = urlparse.urlunparse(segments)
# urlunparse *can* take one argument
# pylint: disable=too-many-function-args
sync_uri = urllib.parse.urlunparse(segments)
# Prepare the query.
query = {k: v for k, v in kwargs.items()
@@ -531,14 +531,14 @@ class otptoken_sync(Local):
obj = self.api.Object.otptoken
query['token'] = DN((obj.primary_key.name, args[0]),
obj.container_dn, self.api.env.basedn)
query = urllib.urlencode(query)
query = urllib.parse.urlencode(query)
# Sync the token.
# pylint: disable=E1101
handler = HTTPSHandler(dbdir=paths.IPA_NSSDB_DIR,
tls_version_min=api.env.tls_version_min,
tls_version_max=api.env.tls_version_max)
rsp = urllib2.build_opener(handler).open(sync_uri, query)
rsp = urllib.request.build_opener(handler).open(sync_uri, query)
if rsp.getcode() == 200:
status['result'][self.header] = rsp.info().get(self.header, 'unknown')
rsp.close()

View File

@@ -37,10 +37,8 @@ import datetime
import os
import locale
import base64
import urllib
import json
import socket
from urllib2 import urlparse
from xmlrpclib import (Binary, Fault, DateTime, dumps, loads, ServerProxy,
Transport, ProtocolError, MININT, MAXINT)
@@ -49,6 +47,7 @@ from dns import resolver, rdatatype
from dns.exception import DNSException
from nss.error import NSPRError
import six
from six.moves import urllib
from ipalib.backend import Connectible
from ipalib.constants import LDAP_GENERALIZED_TIME_FORMAT
@@ -720,7 +719,7 @@ class RPCClient(Connectible):
"""
# the configured URL defines what we use for the discovered servers
(scheme, netloc, path, params, query, fragment
) = urlparse.urlparse(rpc_uri)
) = urllib.parse.urlparse(rpc_uri)
servers = []
name = '_ldap._tcp.%s.' % self.env.domain
@@ -828,9 +827,11 @@ class RPCClient(Connectible):
setattr(context, 'session_cookie', session_cookie.http_cookie())
# Form the session URL by substituting the session path into the original URL
scheme, netloc, path, params, query, fragment = urlparse.urlparse(original_url)
scheme, netloc, path, params, query, fragment = urllib.parse.urlparse(original_url)
path = self.session_path
session_url = urlparse.urlunparse((scheme, netloc, path, params, query, fragment))
# urlencode *can* take one argument
# pylint: disable=too-many-function-args
session_url = urllib.parse.urlunparse((scheme, netloc, path, params, query, fragment))
return session_url
@@ -1019,7 +1020,7 @@ class xmlclient(RPCClient):
class JSONServerProxy(object):
def __init__(self, uri, transport, encoding, verbose, allow_none):
split_uri = urllib.urlsplit(uri)
split_uri = urllib.parse.urlsplit(uri)
if split_uri.scheme not in ("http", "https"):
raise IOError("unsupported XML-RPC protocol")
self.__host = split_uri.netloc

View File

@@ -21,7 +21,8 @@ import random
import os
import re
import time
from urllib2 import urlparse
from six.moves.urllib.parse import urlparse
from ipalib import errors
from ipalib.text import _
@@ -1085,7 +1086,7 @@ class MemcacheSessionManager(SessionManager):
expiration = None;
cookie = Cookie(self.session_cookie_name, session_id,
domain=urlparse.urlparse(api.env.xmlrpc_uri).netloc,
domain=urlparse(api.env.xmlrpc_uri).netloc,
path=url_path, httponly=True, secure=True,
expires=expiration)
if add_header:

View File

@@ -29,12 +29,12 @@ import os
import stat
import socket
import sys
import urllib
import base64
from subprocess import CalledProcessError
from nss.error import NSPRError
from pyasn1.error import PyAsn1Error
from six.moves import urllib
from ipapython.ipa_log_manager import root_logger, log_mgr
from ipapython import ipautil
@@ -215,11 +215,11 @@ class RedHatTaskNamespace(BaseTaskNamespace):
"Failed to decode certificate \"%s\": %s", nickname, e)
continue
label = urllib.quote(nickname)
subject = urllib.quote(subject)
issuer = urllib.quote(issuer)
serial_number = urllib.quote(serial_number)
public_key_info = urllib.quote(public_key_info)
label = urllib.parse.quote(nickname)
subject = urllib.parse.quote(subject)
issuer = urllib.parse.quote(issuer)
serial_number = urllib.parse.quote(serial_number)
public_key_info = urllib.parse.quote(public_key_info)
cert = base64.b64encode(cert)
cert = x509.make_pem(cert)
@@ -255,7 +255,7 @@ class RedHatTaskNamespace(BaseTaskNamespace):
"Failed to encode extended key usage for \"%s\": %s",
nickname, e)
continue
value = urllib.quote(ext_key_usage)
value = urllib.parse.quote(ext_key_usage)
obj = ("[p11-kit-object-v1]\n"
"class: x-certificate-extension\n"
"label: \"ExtendedKeyUsage for %(label)s\"\n"

View File

@@ -25,10 +25,10 @@ from dns.exception import DNSException
from ipapython.dn import DN
from ipaplatform.paths import paths
import dns.name
from six.moves.urllib.parse import urlsplit
import socket
import re
import urlparse
class IPAConfigError(Exception):
def __init__(self, msg=''):
@@ -163,7 +163,7 @@ def __parse_config(discover_server = True):
if discover_server:
try:
s = p.get("global", "xmlrpc_uri")
server = urlparse.urlsplit(s)
server = urlsplit(s)
config.default_server.append(server.netloc)
except:
pass

View File

@@ -21,10 +21,10 @@ import re
import time
import datetime
import email.utils
from urllib2 import urlparse
from calendar import timegm
import six
from six.moves.urllib.parse import urlparse
from ipapython.ipa_log_manager import log_mgr
@@ -540,7 +540,7 @@ class Cookie(object):
received from.
'''
scheme, domain, path, params, query, fragment = urlparse.urlparse(url)
scheme, domain, path, params, query, fragment = urlparse(url)
if self.domain is None:
self.domain = domain.lower()
@@ -642,7 +642,7 @@ class Cookie(object):
cookie_name = self.key
url_scheme, url_domain, url_path, url_params, url_query, url_fragment = urlparse.urlparse(url)
url_scheme, url_domain, url_path, url_params, url_query, url_fragment = urlparse(url)
cookie_expiration = self.get_expiration()
if cookie_expiration is not None:

View File

@@ -22,10 +22,10 @@ import os
import httplib
import xml.dom.minidom
import ConfigParser
from urllib import urlencode
import nss.nss as nss
import six
from six.moves.urllib.parse import urlencode
from ipalib import api, errors
from ipalib.errors import NetworkError

View File

@@ -27,7 +27,6 @@ import os, sys, traceback
import copy
import stat
import shutil
import urllib2
import socket
import struct
from types import *
@@ -45,6 +44,7 @@ from dns import resolver, rdatatype
from dns.exception import DNSException
import six
from six.moves import input
from six.moves import urllib
from ipapython.ipa_log_manager import *
from ipapython import ipavalidate
@@ -391,7 +391,7 @@ def nolog_replace(string, nolog):
if not isinstance(value, six.string_types):
continue
quoted = urllib2.quote(value)
quoted = urllib.parse.quote(value)
shquoted = shell_quote(value)
for nolog_value in (shquoted, value, quoted):
string = string.replace(nolog_value, 'XXXXXXXX')

View File

@@ -38,11 +38,12 @@ import sys
import syslog
import time
import tempfile
import urllib
import xml.dom.minidom
import shlex
import pipes
from six.moves import urllib
from ipalib import api
from ipalib import pkcs10, x509
from ipalib import errors
@@ -846,7 +847,7 @@ class CAInstance(DogtagInstance):
params['op'] = 'approve'
params['submit'] = 'submit'
params['requestNotes'] = ''
params = urllib.urlencode(params)
params = urllib.parse.urlencode(params)
# Now issue the RA certificate.
args = [
@@ -1074,7 +1075,7 @@ class CAInstance(DogtagInstance):
# Send the request to the CA
conn = httplib.HTTPConnection(
self.fqdn, self.dogtag_constants.UNSECURE_PORT)
params = urllib.urlencode({'profileId': 'caServerCert',
params = urllib.parse.urlencode({'profileId': 'caServerCert',
'cert_request_type': 'pkcs10',
'requestor_name': 'IPA Installer',
'cert_request': csr,

View File

@@ -244,13 +244,13 @@ from lxml import etree
import os
import tempfile
import time
import urllib2
import pki
from pki.client import PKIConnection
import pki.crypto as cryptoutil
from pki.kra import KRAClient
import six
from six.moves import urllib
from ipalib import Backend
from ipapython.dn import DN
@@ -1843,21 +1843,21 @@ class ra(rabase.rabase):
url = 'http://%s/ca/rest/certs/search?size=%d' % (ipautil.format_netloc(self.ca_host, ipapython.dogtag.configured_constants().UNSECURE_PORT), options.get('sizelimit', 100))
opener = urllib2.build_opener()
opener = urllib.request.build_opener()
opener.addheaders = [('Accept-Encoding', 'gzip, deflate'),
('User-Agent', 'IPA')]
req = urllib2.Request(url=url, data=payload, headers={'Content-Type': 'application/xml'})
req = urllib.request.Request(url=url, data=payload, headers={'Content-Type': 'application/xml'})
try:
response = opener.open(req)
except urllib2.HTTPError, e:
except urllib.error.HTTPError as e:
self.debug('HTTP Response code: %d' % e.getcode())
if e.getcode() == 501:
self.raise_certificate_operation_error('find',
detail=_('find not supported on CAs upgraded from 9 to 10'))
self.raise_certificate_operation_error('find',
detail=e.msg)
except urllib2.URLError, e:
except urllib.error.URLError as e:
self.raise_certificate_operation_error('find',
detail=e.reason)
@@ -1866,7 +1866,7 @@ class ra(rabase.rabase):
parser = etree.XMLParser()
try:
doc = etree.fromstring(data[0], parser)
except etree.XMLSyntaxError, e:
except etree.XMLSyntaxError as e:
self.raise_certificate_operation_error('find',
detail=e.msg)

View File

@@ -27,7 +27,6 @@ from xml.sax.saxutils import escape
from xmlrpclib import Fault
import os
import datetime
import urlparse
import json
import traceback
import gssapi
@@ -37,6 +36,7 @@ import ldap.controls
from pyasn1.type import univ, namedtype
from pyasn1.codec.ber import encoder
import six
from six.moves.urllib.parse import parse_qs
from ipalib import plugable, errors
from ipalib.capabilities import VERSION_WITHOUT_CAPABILITIES
@@ -225,9 +225,7 @@ def extract_query(environ):
elif environ['REQUEST_METHOD'] == 'GET':
qstr = environ['QUERY_STRING']
if qstr:
query = dict(nicify_query(
urlparse.parse_qs(qstr)#, keep_blank_values=True)
))
query = dict(nicify_query(parse_qs(qstr))) # keep_blank_values=True)
else:
query = {}
environ['wsgi.query'] = query
@@ -892,7 +890,7 @@ class login_password(Backend, KerberosSession, HTTP_Status):
return self.bad_request(environ, start_response, "HTTP request method must be POST")
try:
query_dict = urlparse.parse_qs(query_string)
query_dict = parse_qs(query_string)
except Exception as e:
return self.bad_request(environ, start_response, "cannot parse query data")
@@ -1013,7 +1011,7 @@ class change_password(Backend, HTTP_Status):
return self.bad_request(environ, start_response, "HTTP request method must be POST")
try:
query_dict = urlparse.parse_qs(query_string)
query_dict = parse_qs(query_string)
except Exception as e:
return self.bad_request(environ, start_response, "cannot parse query data")
@@ -1115,7 +1113,7 @@ class sync_token(Backend, HTTP_Status):
# Parse the query string to a dictionary.
try:
query_dict = urlparse.parse_qs(query_string)
query_dict = parse_qs(query_string)
except Exception as e:
return self.bad_request(environ, start_response, "cannot parse query data")
data = {}

View File

@@ -20,9 +20,10 @@
Base class for HTTP request tests
"""
import urllib
import httplib
from six.moves import urllib
from ipalib import api
class Unauthorized_HTTP_test(object):
@@ -41,7 +42,9 @@ class Unauthorized_HTTP_test(object):
:param key When not None, overrides default app_uri
"""
if params is not None:
params = urllib.urlencode(params, True)
# urlencode *can* take two arguments
# pylint: disable=too-many-function-args
params = urllib.parse.urlencode(params, True)
url = 'https://' + self.host + self.app_uri
headers = {'Content-Type' : self.content_type,

View File

@@ -53,7 +53,7 @@ try:
NO_YAML = False
except ImportError:
NO_YAML = True
from urllib2 import URLError
from six.moves.urllib.error import URLError
from ipaplatform.paths import paths
ENV_MAP = {